Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Murillo MaletGermanyAsiya Javayant NEGOTIATION
Ivar PaprockiAustraliaStephen Shaw NEW
Chavez BriddickCanadaAmy Elsner PROPOSAL
Leja CaldareraCanadaXuxue Feng NEW
Munro FerenczFranceXuxue Feng NEGOTIATION
Alejandro PerinFranceOnyama Limba PROPOSAL
Wickens NestleRussiaAnna Fali UNQUALIFIED
Chavez BriddickJapanAnna Fali NEW
Aruna FigeroaArgentinaStephen Shaw NEW
Costa DilliardItalyStephen Shaw QUALIFIED
Leja CaldareraSpainOnyama Limba NEW
Stacey MacleadUnited KingdomAsiya Javayant QUALIFIED
Tony FollerUnited KingdomIvan Magalhaes UNQUALIFIED
Isabel BowleyArgentinaAsiya Javayant UNQUALIFIED
Jennifer AmigonJapanAsiya Javayant QUALIFIED
Ashley DoeIndiaElwin Sharvill UNQUALIFIED
Sinclair WaycottUnited KingdomOnyama Limba PROPOSAL
Murillo MaletUnited KingdomAsiya Javayant RENEWAL
Nicolas IturbideIndiaAnna Fali RENEWAL
Aika InouyeCanadaAsiya Javayant NEW
Stacey MacleadArgentinaStephen Shaw PROPOSAL
Silvio SlusarskiItalyElwin Sharvill QUALIFIED
Salvatore StockhamGermanyBernardo Dominic PROPOSAL
Leja CaldareraSpainBernardo Dominic RENEWAL
Stacey MacleadBrazilOnyama Limba NEW
Maria MarrierRussiaAnna Fali PROPOSAL
Leon OldroydRussiaStephen Shaw RENEWAL
Ashley DoeIndiaIvan Magalhaes RENEWAL
Nicolas IturbideUnited KingdomIoni Bowcher NEW
Greenwood BologniaArgentinaElwin Sharvill UNQUALIFIED
Tony FollerRussiaOnyama Limba NEW
David DarakjySpainXuxue Feng UNQUALIFIED
Aditya KuskoArgentinaAsiya Javayant NEGOTIATION
Julie StensethArgentinaXuxue Feng UNQUALIFIED
Claire TollnerItalyOnyama Limba PROPOSAL
Smith GlickCanadaIoni Bowcher NEGOTIATION
Clifford RimCanadaOnyama Limba QUALIFIED
Costa DilliardJapanIvan Magalhaes QUALIFIED
Maria MarrierBrazilAmy Elsner QUALIFIED
Ricardo GauchoBrazilAsiya Javayant NEGOTIATION
Kaitlin OstroskySpainStephen Shaw RENEWAL
Deepesh ChuiJapanIoni Bowcher NEGOTIATION
Arvin AlbaresCanadaAnna Fali RENEWAL
Chavez BriddickAustraliaIoni Bowcher UNQUALIFIED
Maria MarrierGermanyAsiya Javayant PROPOSAL
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Greenwood BologniaArgentinaAnna Fali NEGOTIATION
Mujtaba NickaSpainStephen Shaw NEGOTIATION
Salvatore StockhamFranceAsiya Javayant QUALIFIED
Wickens NestleSpainIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Morrow RutaJapanIoni Bowcher PROPOSAL
Silvio SlusarskiRussiaAsiya Javayant RENEWAL
Greenwood BologniaArgentinaXuxue Feng UNQUALIFIED
Adams MorascaSpainBernardo Dominic UNQUALIFIED
Aika InouyeBrazilOnyama Limba RENEWAL
James ButtJapanAsiya Javayant PROPOSAL
Leja CaldareraRussiaBernardo Dominic RENEWAL
Leja CaldareraSpainAmy Elsner NEGOTIATION
Stacey MacleadJapanStephen Shaw NEGOTIATION
Maisha RulapaughSpainAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydArgentina2026-04-07Feltz Printing Service UNQUALIFIED88Xuxue Feng
1001Izzy GarufiGermany2026-04-19Chemel, James L Cpa QUALIFIED15Onyama Limba
1002Darci PoquetteItaly2026-04-23Rousseaux, Michael Esq UNQUALIFIED97Stephen Shaw
1003Faith GillianArgentina2026-04-18Truhlar And Truhlar Attys RENEWAL19Amy Elsner
1004Leja CaldareraGermany2026-04-16King, Christopher A Esq QUALIFIED41Amy Elsner
1005Jeanfrancois VenereSpain2026-04-10Benton, John B Jr QUALIFIED16Ivan Magalhaes
1006Izzy GarufiJapan2026-04-02Feiner Bros RENEWAL87Bernardo Dominic
1007Francesco ShinkoGermany2026-04-20Rangoni Of Florence NEGOTIATION95Stephen Shaw
1008Darci PoquetteCanada2026-04-20Commercial Press RENEWAL22Ioni Bowcher
1009Tony FollerBrazil2026-04-11Benton, John B Jr PROPOSAL99Ioni Bowcher
1010Alejandro PerinJapan2026-04-22Buckley Miller Wright NEW89Stephen Shaw
1011Rodrigues CampainAustralia2026-04-20Printing Dimensions UNQUALIFIED65Stephen Shaw
1012Jeanfrancois VenereIndia2026-04-09Commercial Press PROPOSAL85Elwin Sharvill
1013Mayumi KolmetzIndia2026-03-31Rousseaux, Michael Esq RENEWAL68Asiya Javayant
1014Darci PoquetteGermany2026-04-19Commercial Press NEGOTIATION48Bernardo Dominic
1015Ivar PaprockiIndia2026-04-16Rousseaux, Michael Esq PROPOSAL65Xuxue Feng
1016Costa DilliardUnited Kingdom2026-03-30King, Christopher A Esq PROPOSAL20Bernardo Dominic
1017Chavez BriddickFrance2026-04-10Rangoni Of Florence NEGOTIATION50Bernardo Dominic
1018Ricardo GauchoUnited Kingdom2026-04-16Dorl, James J Esq PROPOSAL98Anna Fali
1019Greenwood BologniaBrazil2026-04-21Rangoni Of Florence QUALIFIED32Amy Elsner
1020James ButtBrazil2026-04-14Rangoni Of Florence NEGOTIATION66Ivan Magalhaes
1021Jennifer AmigonArgentina2026-04-10Printing Dimensions NEGOTIATION2Xuxue Feng
1022Salvatore StockhamJapan2026-04-14Chanay, Jeffrey A Esq PROPOSAL72Anna Fali
1023Clifford RimFrance2026-04-10Truhlar And Truhlar Attys QUALIFIED90Ivan Magalhaes
1024Jones VocelkaFrance2026-03-31Benton, John B Jr UNQUALIFIED51Asiya Javayant
1025Maria MarrierItaly2026-03-28Chanay, Jeffrey A Esq QUALIFIED34Asiya Javayant
1026Kaitlin OstroskySpain2026-04-20Feltz Printing Service NEGOTIATION27Anna Fali
1027Stacey MacleadJapan2026-04-20Rousseaux, Michael Esq UNQUALIFIED96Bernardo Dominic
1028Juan WieserSpain2026-04-10Chanay, Jeffrey A Esq NEGOTIATION21Amy Elsner
1029Nicolas IturbideGermany2026-04-04Printing Dimensions QUALIFIED42Stephen Shaw
1030Jennifer AmigonJapan2026-04-08Feltz Printing Service NEGOTIATION30Ivan Magalhaes
1031Nicolas IturbideArgentina2026-04-18Rousseaux, Michael Esq UNQUALIFIED3Amy Elsner
1032Cody SaylorsUnited Kingdom2026-04-22Dorl, James J Esq UNQUALIFIED92Amy Elsner
1033Clifford RimBrazil2026-04-16Chapman, Ross E Esq QUALIFIED43Onyama Limba
1034Maria MarrierGermany2026-03-25King, Christopher A Esq UNQUALIFIED67Asiya Javayant
1035Tony FollerCanada2026-04-18Truhlar And Truhlar Attys UNQUALIFIED99Asiya Javayant
1036Emily WhobreyJapan2026-04-18Chapman, Ross E Esq PROPOSAL53Ioni Bowcher
1037Octavia MaletBrazil2026-03-31Dorl, James J Esq NEGOTIATION27Asiya Javayant
1038James ButtSpain2026-03-28Buckley Miller Wright NEW99Asiya Javayant
1039Stacey MacleadFrance2026-03-26Feltz Printing Service RENEWAL20Anna Fali
1040Jennifer AmigonFrance2026-03-29Chapman, Ross E Esq UNQUALIFIED8Amy Elsner
1041Octavia MaletUnited Kingdom2026-04-01King, Christopher A Esq UNQUALIFIED2Asiya Javayant
1042Jefferson SchemmerIndia2026-04-15King, Christopher A Esq UNQUALIFIED21Xuxue Feng
1043Ricardo GauchoCanada2026-04-22Truhlar And Truhlar Attys NEW13Bernardo Dominic
1044Mujtaba NickaUnited Kingdom2026-04-10Printing Dimensions QUALIFIED44Xuxue Feng
1045Ivar PaprockiArgentina2026-04-22Rousseaux, Michael Esq RENEWAL18Amy Elsner
1046Jeanfrancois VenereRussia2026-04-08Dorl, James J Esq UNQUALIFIED97Asiya Javayant
1047Francesco ShinkoUnited Kingdom2026-04-21Truhlar And Truhlar Attys UNQUALIFIED79Asiya Javayant
1048Deepesh ChuiUnited Kingdom2026-03-27Feltz Printing Service UNQUALIFIED22Anna Fali
1049Jefferson SchemmerIndia2026-04-01Chapman, Ross E Esq NEGOTIATION78Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
James ButtGermanyAnna Fali UNQUALIFIED
Sinclair WaycottIndiaAmy Elsner RENEWAL
Darci PoquetteJapanAmy Elsner PROPOSAL
Francesco ShinkoCanadaAnna Fali NEW
Arvin AlbaresSpainIoni Bowcher UNQUALIFIED
Stacey MacleadSpainAnna Fali PROPOSAL
Greenwood BologniaArgentinaIvan Magalhaes RENEWAL
Ashley DoeBrazilIoni Bowcher QUALIFIED
Maisha RulapaughIndiaAsiya Javayant QUALIFIED
Silvio SlusarskiArgentinaAmy Elsner NEW
Clifford RimArgentinaBernardo Dominic RENEWAL
Kadeem FlosiGermanyOnyama Limba RENEWAL
Rodrigues CampainItalyElwin Sharvill QUALIFIED
Antonio CaudyIndiaIvan Magalhaes RENEWAL
Rodrigues CampainItalyElwin Sharvill NEGOTIATION
Nicolas IturbideRussiaIvan Magalhaes NEW
Costa DilliardUnited KingdomAmy Elsner PROPOSAL
Mayumi KolmetzFranceIoni Bowcher PROPOSAL
Jones VocelkaItalyIoni Bowcher PROPOSAL
Leja CaldareraAustraliaIoni Bowcher NEW
Juan WieserItalyOnyama Limba RENEWAL
Julie StensethGermanyAmy Elsner QUALIFIED
David DarakjyIndiaIvan Magalhaes UNQUALIFIED
Juan WieserSpainIvan Magalhaes QUALIFIED
Izzy GarufiSpainOnyama Limba RENEWAL
Jennifer AmigonCanadaXuxue Feng RENEWAL
Ricardo GauchoItalyElwin Sharvill NEGOTIATION
Morrow RutaCanadaStephen Shaw PROPOSAL
Leja CaldareraItalyBernardo Dominic NEW
Chavez BriddickIndiaIoni Bowcher NEGOTIATION
Rodrigues CampainFranceAmy Elsner PROPOSAL
Mujtaba NickaArgentinaAmy Elsner RENEWAL
Juan WieserSpainIoni Bowcher UNQUALIFIED
Wickens NestleArgentinaAmy Elsner UNQUALIFIED
Misaki RoysterItalyStephen Shaw UNQUALIFIED
Stacey MacleadSpainOnyama Limba NEGOTIATION
Kadeem FlosiRussiaStephen Shaw NEW
Ashley DoeIndiaIvan Magalhaes UNQUALIFIED
Murillo MaletGermanyIoni Bowcher QUALIFIED
Rodrigues CampainJapanAsiya Javayant NEGOTIATION
Jennifer AmigonGermanyIvan Magalhaes RENEWAL
Silvio SlusarskiFranceAmy Elsner PROPOSAL
Arvin AlbaresGermanyXuxue Feng UNQUALIFIED
Deepesh ChuiAustraliaAnna Fali NEGOTIATION
Adams MorascaBrazilStephen Shaw NEGOTIATION
Emily WhobreyUnited KingdomStephen Shaw QUALIFIED
Darci PoquetteItalyAmy Elsner PROPOSAL
Mayumi KolmetzIndiaIvan Magalhaes RENEWAL
Jefferson SchemmerJapanAmy Elsner QUALIFIED
Ricardo GauchoIndiaOnyama Limba QUALIFIED
Frozen Columns
Name
Morrow Ruta
Munro Ferencz
Costa Dilliard
Aruna Figeroa
Izzy Garufi
Julie Stenseth
Kadeem Flosi
Tony Foller
Chavez Briddick
Maria Marrier
Faith Gillian
Rodrigues Campain
Aditya Kusko
Murillo Malet
Munro Ferencz
Julie Stenseth
Aditya Kusko
Wickens Nestle
Aditya Kusko
Ricardo Gaucho
Jones Vocelka
Wickens Nestle
Julie Stenseth
Darci Poquette
Darci Poquette
Jefferson Schemmer
Francesco Shinko
Johnson Sergi
Faith Gillian
Cody Saylors
Costa Dilliard
Smith Glick
Emily Whobrey
Maisha Rulapaugh
Arvin Albares
Deepesh Chui
Antonio Caudy
Aditya Kusko
Greenwood Bolognia
Johnson Sergi
Aika Inouye
Jones Vocelka
Tony Foller
Arvin Albares
Octavia Malet
Claire Tollner
Kadeem Flosi
Smith Glick
Leon Oldroyd
Sinclair Waycott
IdCountryDate
1000Brazil2026-04-05
1001United Kingdom2026-04-12
1002France2026-04-14
1003Brazil2026-04-06
1004France2026-03-29
1005Italy2026-04-03
1006Russia2026-04-06
1007Germany2026-04-05
1008Italy2026-03-27
1009Canada2026-03-30
1010Germany2026-04-08
1011United Kingdom2026-04-06
1012Brazil2026-03-28
1013France2026-04-09
1014Argentina2026-04-14
1015France2026-03-29
1016Russia2026-04-12
1017France2026-04-09
1018Australia2026-04-04
1019Germany2026-04-01
1020India2026-03-30
1021Italy2026-04-12
1022India2026-04-12
1023Italy2026-04-17
1024Argentina2026-04-02
1025Germany2026-04-16
1026Canada2026-04-20
1027Italy2026-04-22
1028Russia2026-03-26
1029Spain2026-03-28
1030Canada2026-04-20
1031Russia2026-04-21
1032Spain2026-04-07
1033Spain2026-04-16
1034Russia2026-03-26
1035Canada2026-04-11
1036Russia2026-04-02
1037Russia2026-04-16
1038Canada2026-04-11
1039Italy2026-04-14
1040Japan2026-04-08
1041Spain2026-04-04
1042Russia2026-03-30
1043Brazil2026-04-22
1044Spain2026-04-17
1045India2026-03-26
1046Brazil2026-04-07
1047Argentina2026-04-06
1048Germany2026-04-20
1049Australia2026-04-01

On-Demand Data

NameIdCountryDate
David Darakjy1000Argentina2026-04-20
Jeanfrancois Venere1001Argentina2026-04-04
Johnson Sergi1002Spain2026-04-07
Mujtaba Nicka1003Italy2026-04-07
Chavez Briddick1004United Kingdom2026-04-13
Tony Foller1005Canada2026-04-15
Smith Glick1006France2026-04-20
Leja Caldarera1007Australia2026-03-27
Jeanfrancois Venere1008Brazil2026-04-01
Greenwood Bolognia1009Spain2026-03-28
Cody Saylors1010Argentina2026-04-03
Clifford Rim1011Russia2026-03-30
Salvatore Stockham1012Brazil2026-04-16
Jones Vocelka1013Argentina2026-04-13
Jones Vocelka1014Canada2026-04-20
Wickens Nestle1015Japan2026-03-28
Silvio Slusarski1016Brazil2026-04-04
Adams Morasca1017Germany2026-04-14
Aruna Figeroa1018Australia2026-04-23
Clifford Rim1019Germany2026-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody SaylorsIndiaAnna Fali PROPOSAL
Claire TollnerIndiaOnyama Limba NEGOTIATION
Faith GillianSpainElwin Sharvill PROPOSAL
Clifford RimRussiaOnyama Limba PROPOSAL
Aika InouyeJapanBernardo Dominic UNQUALIFIED
Jefferson SchemmerCanadaOnyama Limba QUALIFIED
Jeanfrancois VenereArgentinaStephen Shaw RENEWAL
Darci PoquetteRussiaAnna Fali UNQUALIFIED
Aika InouyeFranceBernardo Dominic UNQUALIFIED
Octavia MaletUnited KingdomOnyama Limba NEGOTIATION
Cody SaylorsIndiaOnyama Limba NEW
Deepesh ChuiBrazilOnyama Limba UNQUALIFIED
Morrow RutaGermanyAmy Elsner NEW
James ButtFranceIoni Bowcher QUALIFIED
Deepesh ChuiSpainBernardo Dominic NEGOTIATION
Rodrigues CampainRussiaBernardo Dominic RENEWAL
Wickens NestleUnited KingdomElwin Sharvill NEW
Leja CaldareraUnited KingdomIvan Magalhaes QUALIFIED
Ivar PaprockiArgentinaAsiya Javayant RENEWAL
Octavia MaletJapanIoni Bowcher PROPOSAL
Antonio CaudyGermanyAsiya Javayant RENEWAL
Leja CaldareraAustraliaElwin Sharvill NEW
Aditya KuskoAustraliaAmy Elsner UNQUALIFIED
Kaitlin OstroskyUnited KingdomXuxue Feng NEW
Jones VocelkaGermanyBernardo Dominic UNQUALIFIED
Sinclair WaycottSpainElwin Sharvill RENEWAL
Maisha RulapaughGermanyBernardo Dominic UNQUALIFIED
Tony FollerRussiaOnyama Limba NEW
Stacey MacleadFranceXuxue Feng PROPOSAL
Claire TollnerRussiaXuxue Feng PROPOSAL
Salvatore StockhamGermanyXuxue Feng UNQUALIFIED
Morrow RutaJapanAmy Elsner PROPOSAL
Sinclair WaycottItalyIvan Magalhaes NEW
Claire TollnerJapanAnna Fali RENEWAL
Faith GillianSpainIvan Magalhaes QUALIFIED
Isabel BowleyAustraliaStephen Shaw PROPOSAL
Adams MorascaItalyElwin Sharvill PROPOSAL
Julie StensethUnited KingdomAmy Elsner UNQUALIFIED
Isabel BowleyUnited KingdomIoni Bowcher QUALIFIED
Mayumi KolmetzJapanBernardo Dominic NEW

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>