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
Francesco ShinkoGermanyAsiya Javayant NEW
Chavez BriddickGermanyIoni Bowcher RENEWAL
Claire TollnerJapanAnna Fali UNQUALIFIED
Tony FollerAustraliaAmy Elsner UNQUALIFIED
James ButtJapanAsiya Javayant UNQUALIFIED
Jefferson SchemmerGermanyElwin Sharvill PROPOSAL
Ricardo GauchoIndiaStephen Shaw UNQUALIFIED
Darci PoquetteUnited KingdomOnyama Limba QUALIFIED
Ricardo GauchoRussiaOnyama Limba UNQUALIFIED
Costa DilliardUnited KingdomAsiya Javayant RENEWAL
Leon OldroydBrazilElwin Sharvill NEW
Ashley DoeSpainStephen Shaw QUALIFIED
Aditya KuskoIndiaIoni Bowcher QUALIFIED
Isabel BowleySpainXuxue Feng RENEWAL
Octavia MaletAustraliaXuxue Feng NEGOTIATION
David DarakjyBrazilElwin Sharvill QUALIFIED
Kadeem FlosiBrazilIvan Magalhaes NEW
Nicolas IturbideRussiaAsiya Javayant NEW
Kadeem FlosiIndiaIoni Bowcher PROPOSAL
Ivar PaprockiIndiaAsiya Javayant UNQUALIFIED
Octavia MaletArgentinaXuxue Feng NEGOTIATION
Munro FerenczIndiaAsiya Javayant NEGOTIATION
James ButtItalyBernardo Dominic PROPOSAL
Munro FerenczUnited KingdomIoni Bowcher QUALIFIED
Misaki RoysterFranceElwin Sharvill PROPOSAL
Aditya KuskoGermanyIvan Magalhaes RENEWAL
Isabel BowleyBrazilStephen Shaw QUALIFIED
Jennifer AmigonArgentinaAsiya Javayant RENEWAL
Misaki RoysterJapanIvan Magalhaes PROPOSAL
Faith GillianCanadaAmy Elsner NEGOTIATION
Claire TollnerIndiaIvan Magalhaes UNQUALIFIED
Nicolas IturbideArgentinaStephen Shaw NEGOTIATION
Leja CaldareraSpainBernardo Dominic UNQUALIFIED
Murillo MaletSpainBernardo Dominic QUALIFIED
Aruna FigeroaJapanXuxue Feng UNQUALIFIED
Mujtaba NickaGermanyBernardo Dominic NEGOTIATION
Johnson SergiCanadaAmy Elsner PROPOSAL
Leon OldroydUnited KingdomAmy Elsner NEGOTIATION
Ashley DoeUnited KingdomBernardo Dominic UNQUALIFIED
Mujtaba NickaUnited KingdomXuxue Feng PROPOSAL
Ashley DoeArgentinaIvan Magalhaes PROPOSAL
Jennifer AmigonRussiaAnna Fali PROPOSAL
Ricardo GauchoCanadaBernardo Dominic RENEWAL
Rodrigues CampainIndiaAsiya Javayant NEGOTIATION
Smith GlickRussiaAmy Elsner UNQUALIFIED
Clifford RimIndiaAnna Fali UNQUALIFIED
Maisha RulapaughJapanAsiya Javayant NEGOTIATION
Juan WieserIndiaBernardo Dominic QUALIFIED
Antonio CaudyGermanyXuxue Feng NEW
Jennifer AmigonFranceOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Antonio CaudyCanadaOnyama Limba QUALIFIED
Jennifer AmigonAustraliaOnyama Limba NEGOTIATION
Jefferson SchemmerFranceStephen Shaw UNQUALIFIED
Misaki RoysterIndiaOnyama Limba UNQUALIFIED
Aditya KuskoArgentinaIvan Magalhaes NEGOTIATION
Jennifer AmigonJapanBernardo Dominic NEW
James ButtCanadaElwin Sharvill NEW
Deepesh ChuiAustraliaIvan Magalhaes RENEWAL
Aruna FigeroaFranceAsiya Javayant RENEWAL
Ashley DoeUnited KingdomAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyUnited Kingdom2026-04-27Printing Dimensions QUALIFIED52Ioni Bowcher
1001Ricardo GauchoIndia2026-04-06Chemel, James L Cpa NEW47Asiya Javayant
1002Deepesh ChuiCanada2026-04-27Commercial Press RENEWAL7Anna Fali
1003Chavez BriddickSpain2026-04-12Dorl, James J Esq NEGOTIATION5Ioni Bowcher
1004Octavia MaletRussia2026-04-27Printing Dimensions PROPOSAL93Onyama Limba
1005Isabel BowleyCanada2026-04-06Dorl, James J Esq PROPOSAL86Amy Elsner
1006Kadeem FlosiGermany2026-04-23King, Christopher A Esq PROPOSAL93Asiya Javayant
1007Maisha RulapaughGermany2026-04-15Chemel, James L Cpa RENEWAL17Elwin Sharvill
1008Juan WieserArgentina2026-04-05Buckley Miller Wright RENEWAL38Bernardo Dominic
1009Ivar PaprockiSpain2026-04-05Printing Dimensions NEGOTIATION32Stephen Shaw
1010Antonio CaudyAustralia2026-04-24Feltz Printing Service RENEWAL94Asiya Javayant
1011Tony FollerJapan2026-04-10Chapman, Ross E Esq UNQUALIFIED93Amy Elsner
1012Munro FerenczArgentina2026-04-05King, Christopher A Esq NEGOTIATION86Stephen Shaw
1013Misaki RoysterJapan2026-04-18Chapman, Ross E Esq NEGOTIATION75Asiya Javayant
1014Costa DilliardGermany2026-04-20Benton, John B Jr PROPOSAL71Stephen Shaw
1015Julie StensethAustralia2026-04-16Buckley Miller Wright QUALIFIED70Xuxue Feng
1016Ashley DoeBrazil2026-04-03Dorl, James J Esq PROPOSAL50Ivan Magalhaes
1017Maisha RulapaughFrance2026-04-09Morlong Associates NEGOTIATION93Xuxue Feng
1018Munro FerenczItaly2026-04-25Rangoni Of Florence QUALIFIED63Bernardo Dominic
1019Aditya KuskoIndia2026-04-29Chanay, Jeffrey A Esq QUALIFIED24Onyama Limba
1020Julie StensethGermany2026-04-29Feltz Printing Service NEW64Onyama Limba
1021Murillo MaletArgentina2026-04-12Feltz Printing Service NEGOTIATION28Anna Fali
1022James ButtCanada2026-04-21Chapman, Ross E Esq QUALIFIED95Onyama Limba
1023Wickens NestleIndia2026-04-30Dorl, James J Esq NEGOTIATION48Amy Elsner
1024Adams MorascaItaly2026-04-07Rangoni Of Florence PROPOSAL1Stephen Shaw
1025Clifford RimAustralia2026-04-19Truhlar And Truhlar Attys NEGOTIATION57Asiya Javayant
1026Aika InouyeUnited Kingdom2026-04-25Truhlar And Truhlar Attys PROPOSAL31Asiya Javayant
1027Jones VocelkaFrance2026-05-02Benton, John B Jr NEGOTIATION30Xuxue Feng
1028Alejandro PerinRussia2026-04-04Truhlar And Truhlar Attys RENEWAL2Xuxue Feng
1029Deepesh ChuiItaly2026-04-05Chapman, Ross E Esq NEW82Elwin Sharvill
1030Murillo MaletRussia2026-04-21Buckley Miller Wright RENEWAL5Onyama Limba
1031Aika InouyeCanada2026-04-22Truhlar And Truhlar Attys UNQUALIFIED68Onyama Limba
1032James ButtJapan2026-04-05Chanay, Jeffrey A Esq QUALIFIED0Ioni Bowcher
1033Aruna FigeroaAustralia2026-04-15Rangoni Of Florence NEW22Stephen Shaw
1034Rodrigues CampainSpain2026-04-06Dorl, James J Esq PROPOSAL9Stephen Shaw
1035Isabel BowleyRussia2026-04-22Benton, John B Jr NEGOTIATION89Amy Elsner
1036Jefferson SchemmerSpain2026-04-03Truhlar And Truhlar Attys PROPOSAL36Stephen Shaw
1037Ricardo GauchoRussia2026-04-13Chapman, Ross E Esq NEW49Ioni Bowcher
1038Kadeem FlosiJapan2026-04-17Dorl, James J Esq QUALIFIED34Anna Fali
1039Ivar PaprockiCanada2026-04-13Chemel, James L Cpa UNQUALIFIED27Asiya Javayant
1040Jones VocelkaIndia2026-04-14Chanay, Jeffrey A Esq NEW13Ivan Magalhaes
1041Leja CaldareraBrazil2026-04-03Chanay, Jeffrey A Esq PROPOSAL35Xuxue Feng
1042Rodrigues CampainAustralia2026-04-11Chanay, Jeffrey A Esq PROPOSAL84Ivan Magalhaes
1043Stacey MacleadAustralia2026-05-01King, Christopher A Esq QUALIFIED1Ioni Bowcher
1044Munro FerenczCanada2026-04-22Truhlar And Truhlar Attys UNQUALIFIED63Anna Fali
1045Deepesh ChuiJapan2026-04-15Chanay, Jeffrey A Esq NEGOTIATION87Xuxue Feng
1046Isabel BowleyBrazil2026-04-21Printing Dimensions NEGOTIATION24Ioni Bowcher
1047Adams MorascaGermany2026-04-23Rangoni Of Florence RENEWAL12Elwin Sharvill
1048David DarakjyIndia2026-04-20Commercial Press NEGOTIATION60Stephen Shaw
1049Kaitlin OstroskyAustralia2026-04-05Chapman, Ross E Esq UNQUALIFIED32Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Murillo MaletFranceOnyama Limba NEW
Johnson SergiUnited KingdomXuxue Feng NEGOTIATION
Adams MorascaItalyIvan Magalhaes RENEWAL
Faith GillianCanadaXuxue Feng QUALIFIED
Kaitlin OstroskyArgentinaAnna Fali UNQUALIFIED
Leon OldroydCanadaBernardo Dominic NEGOTIATION
Jeanfrancois VenereItalyIoni Bowcher NEW
Costa DilliardBrazilAsiya Javayant NEW
Costa DilliardGermanyXuxue Feng QUALIFIED
Kaitlin OstroskyCanadaAmy Elsner NEW
Jeanfrancois VenereUnited KingdomIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant QUALIFIED
Smith GlickIndiaStephen Shaw PROPOSAL
Stacey MacleadAustraliaIoni Bowcher RENEWAL
Tony FollerCanadaStephen Shaw QUALIFIED
Leon OldroydJapanXuxue Feng RENEWAL
Maisha RulapaughIndiaAnna Fali RENEWAL
Rodrigues CampainFranceXuxue Feng RENEWAL
Adams MorascaJapanOnyama Limba NEGOTIATION
Jeanfrancois VenereSpainAnna Fali NEW
Silvio SlusarskiCanadaAnna Fali PROPOSAL
David DarakjyRussiaIvan Magalhaes RENEWAL
Maisha RulapaughFranceIvan Magalhaes UNQUALIFIED
Rodrigues CampainItalyAsiya Javayant RENEWAL
Darci PoquetteArgentinaAmy Elsner UNQUALIFIED
Salvatore StockhamGermanyOnyama Limba NEW
Misaki RoysterItalyElwin Sharvill UNQUALIFIED
Mujtaba NickaFranceIoni Bowcher RENEWAL
Claire TollnerAustraliaElwin Sharvill QUALIFIED
Mayumi KolmetzJapanOnyama Limba RENEWAL
Aika InouyeBrazilXuxue Feng RENEWAL
Leon OldroydAustraliaElwin Sharvill QUALIFIED
Johnson SergiUnited KingdomOnyama Limba RENEWAL
Francesco ShinkoIndiaAsiya Javayant NEW
Ashley DoeIndiaStephen Shaw RENEWAL
Murillo MaletAustraliaElwin Sharvill RENEWAL
Morrow RutaGermanyAnna Fali NEGOTIATION
Stacey MacleadAustraliaElwin Sharvill QUALIFIED
James ButtItalyAnna Fali QUALIFIED
Nicolas IturbideAustraliaAnna Fali NEGOTIATION
Maria MarrierArgentinaIoni Bowcher NEGOTIATION
David DarakjyRussiaStephen Shaw NEGOTIATION
Salvatore StockhamSpainIoni Bowcher UNQUALIFIED
Aditya KuskoIndiaBernardo Dominic PROPOSAL
Aruna FigeroaBrazilAnna Fali PROPOSAL
Jeanfrancois VenereBrazilBernardo Dominic QUALIFIED
Chavez BriddickAustraliaElwin Sharvill UNQUALIFIED
Aruna FigeroaAustraliaOnyama Limba PROPOSAL
Ivar PaprockiSpainStephen Shaw PROPOSAL
David DarakjyGermanyIvan Magalhaes PROPOSAL
Frozen Columns
Name
Mayumi Kolmetz
Juan Wieser
Silvio Slusarski
Rodrigues Campain
Julie Stenseth
Costa Dilliard
Claire Tollner
Alejandro Perin
Aruna Figeroa
Kadeem Flosi
Darci Poquette
Alejandro Perin
Rodrigues Campain
Jeanfrancois Venere
Leon Oldroyd
Salvatore Stockham
Maria Marrier
Greenwood Bolognia
Jefferson Schemmer
Deepesh Chui
Jefferson Schemmer
Smith Glick
Smith Glick
Munro Ferencz
Ivar Paprocki
Greenwood Bolognia
Faith Gillian
Maisha Rulapaugh
Maisha Rulapaugh
Darci Poquette
Ricardo Gaucho
Darci Poquette
Leja Caldarera
Izzy Garufi
Mujtaba Nicka
Claire Tollner
Ivar Paprocki
Rodrigues Campain
Mujtaba Nicka
Rodrigues Campain
Rodrigues Campain
Juan Wieser
Aika Inouye
Nicolas Iturbide
Kaitlin Ostrosky
Arvin Albares
Greenwood Bolognia
Cody Saylors
Jeanfrancois Venere
Ivar Paprocki
IdCountryDate
1000Brazil2026-04-16
1001Germany2026-04-11
1002Australia2026-04-06
1003Canada2026-04-21
1004Spain2026-04-05
1005Russia2026-04-19
1006Italy2026-04-17
1007France2026-04-03
1008Russia2026-04-09
1009Australia2026-04-08
1010Australia2026-04-23
1011Russia2026-04-17
1012France2026-04-14
1013Brazil2026-04-17
1014Brazil2026-04-14
1015Germany2026-04-12
1016Argentina2026-04-26
1017Argentina2026-04-11
1018Germany2026-05-02
1019Germany2026-04-22
1020Germany2026-04-28
1021Russia2026-04-03
1022Russia2026-04-10
1023Australia2026-04-30
1024France2026-04-17
1025India2026-04-24
1026Brazil2026-04-29
1027France2026-04-03
1028Spain2026-04-29
1029Australia2026-04-14
1030Russia2026-04-19
1031Germany2026-04-07
1032Argentina2026-04-05
1033Australia2026-04-25
1034Spain2026-04-25
1035Argentina2026-04-17
1036Brazil2026-04-09
1037Spain2026-04-27
1038Italy2026-04-23
1039Brazil2026-04-29
1040India2026-04-28
1041Spain2026-04-20
1042Germany2026-04-10
1043Italy2026-04-16
1044Canada2026-04-06
1045Canada2026-04-07
1046Japan2026-04-21
1047Spain2026-04-16
1048Argentina2026-04-18
1049India2026-04-30

On-Demand Data

NameIdCountryDate
Mayumi Kolmetz1000Japan2026-04-11
Emily Whobrey1001Italy2026-04-07
Johnson Sergi1002Germany2026-04-23
Adams Morasca1003Spain2026-04-10
Maria Marrier1004Russia2026-04-04
Maria Marrier1005Brazil2026-04-29
Greenwood Bolognia1006India2026-04-17
Darci Poquette1007Argentina2026-04-22
Arvin Albares1008Argentina2026-04-09
Jefferson Schemmer1009India2026-04-03
Wickens Nestle1010India2026-05-01
Johnson Sergi1011Italy2026-04-27
Darci Poquette1012India2026-04-30
Jennifer Amigon1013United Kingdom2026-05-01
Morrow Ruta1014Russia2026-04-30
Jennifer Amigon1015Japan2026-05-02
Leon Oldroyd1016Italy2026-04-13
Leon Oldroyd1017Germany2026-04-04
Julie Stenseth1018Italy2026-04-09
Francesco Shinko1019Australia2026-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiSpainAsiya Javayant PROPOSAL
Jones VocelkaCanadaAsiya Javayant NEGOTIATION
Kadeem FlosiArgentinaIvan Magalhaes QUALIFIED
Deepesh ChuiArgentinaAsiya Javayant RENEWAL
Chavez BriddickUnited KingdomElwin Sharvill NEGOTIATION
Jennifer AmigonCanadaOnyama Limba PROPOSAL
Kaitlin OstroskyRussiaXuxue Feng PROPOSAL
Ivar PaprockiUnited KingdomXuxue Feng PROPOSAL
Rodrigues CampainArgentinaBernardo Dominic RENEWAL
Faith GillianBrazilAmy Elsner UNQUALIFIED
Ricardo GauchoArgentinaAsiya Javayant NEW
Sinclair WaycottUnited KingdomXuxue Feng PROPOSAL
Claire TollnerSpainBernardo Dominic RENEWAL
Clifford RimCanadaXuxue Feng UNQUALIFIED
Julie StensethArgentinaOnyama Limba QUALIFIED
Leja CaldareraCanadaIoni Bowcher NEW
Leja CaldareraJapanOnyama Limba QUALIFIED
Clifford RimItalyBernardo Dominic UNQUALIFIED
Antonio CaudyArgentinaElwin Sharvill PROPOSAL
Ivar PaprockiFranceStephen Shaw NEW
Munro FerenczRussiaAsiya Javayant RENEWAL
Cody SaylorsUnited KingdomStephen Shaw NEGOTIATION
Mayumi KolmetzRussiaAsiya Javayant PROPOSAL
Jennifer AmigonIndiaAmy Elsner NEGOTIATION
David DarakjyUnited KingdomOnyama Limba RENEWAL
Leja CaldareraGermanyAnna Fali NEW
Wickens NestleItalyIvan Magalhaes RENEWAL
Leon OldroydItalyOnyama Limba PROPOSAL
Johnson SergiGermanyAmy Elsner QUALIFIED
Juan WieserJapanElwin Sharvill PROPOSAL
Chavez BriddickFranceIvan Magalhaes NEW
Jefferson SchemmerGermanyIoni Bowcher NEGOTIATION
Clifford RimBrazilOnyama Limba QUALIFIED
Octavia MaletFranceStephen Shaw UNQUALIFIED
James ButtItalyIvan Magalhaes NEW
Wickens NestleJapanAnna Fali RENEWAL
Octavia MaletRussiaAnna Fali NEGOTIATION
Maisha RulapaughRussiaIoni Bowcher QUALIFIED
Wickens NestleJapanIvan Magalhaes NEW
Jefferson SchemmerUnited KingdomIoni Bowcher QUALIFIED

<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>