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
Kaitlin OstroskyIndiaElwin Sharvill PROPOSAL
Claire TollnerCanadaStephen Shaw RENEWAL
Aruna FigeroaArgentinaIvan Magalhaes NEW
Arvin AlbaresIndiaIoni Bowcher UNQUALIFIED
Wickens NestleFranceIvan Magalhaes NEW
Arvin AlbaresSpainAsiya Javayant RENEWAL
Sinclair WaycottArgentinaElwin Sharvill RENEWAL
Deepesh ChuiCanadaElwin Sharvill QUALIFIED
Aruna FigeroaJapanOnyama Limba RENEWAL
Aditya KuskoBrazilElwin Sharvill NEW
Ashley DoeIndiaXuxue Feng UNQUALIFIED
Leja CaldareraSpainElwin Sharvill NEGOTIATION
Ivar PaprockiUnited KingdomOnyama Limba UNQUALIFIED
Leja CaldareraRussiaAmy Elsner PROPOSAL
Misaki RoysterRussiaIoni Bowcher NEW
Leon OldroydJapanElwin Sharvill PROPOSAL
Murillo MaletCanadaBernardo Dominic QUALIFIED
Faith GillianBrazilXuxue Feng NEW
Isabel BowleySpainAnna Fali QUALIFIED
Deepesh ChuiGermanyAsiya Javayant NEGOTIATION
Salvatore StockhamUnited KingdomIvan Magalhaes NEGOTIATION
Maisha RulapaughCanadaStephen Shaw PROPOSAL
Silvio SlusarskiSpainAnna Fali RENEWAL
Deepesh ChuiGermanyBernardo Dominic PROPOSAL
Jeanfrancois VenereItalyAnna Fali NEW
Sinclair WaycottUnited KingdomOnyama Limba RENEWAL
Ivar PaprockiRussiaStephen Shaw UNQUALIFIED
Octavia MaletAustraliaXuxue Feng PROPOSAL
Darci PoquetteAustraliaIoni Bowcher NEGOTIATION
Faith GillianSpainElwin Sharvill QUALIFIED
Munro FerenczRussiaIvan Magalhaes RENEWAL
Emily WhobreyUnited KingdomXuxue Feng UNQUALIFIED
Wickens NestleAustraliaIoni Bowcher NEGOTIATION
Ricardo GauchoItalyXuxue Feng UNQUALIFIED
Leon OldroydItalyIoni Bowcher UNQUALIFIED
Aditya KuskoBrazilAmy Elsner NEW
Darci PoquetteItalyAnna Fali RENEWAL
Ricardo GauchoFranceIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereRussiaAsiya Javayant NEGOTIATION
Chavez BriddickCanadaXuxue Feng NEW
Octavia MaletJapanStephen Shaw NEW
Jefferson SchemmerCanadaAsiya Javayant UNQUALIFIED
Sinclair WaycottBrazilIoni Bowcher PROPOSAL
Ashley DoeItalyAnna Fali RENEWAL
Cody SaylorsGermanyAnna Fali UNQUALIFIED
Greenwood BologniaJapanStephen Shaw NEW
Greenwood BologniaSpainAmy Elsner NEW
Arvin AlbaresRussiaIvan Magalhaes UNQUALIFIED
Jones VocelkaUnited KingdomAmy Elsner UNQUALIFIED
James ButtJapanStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyAustraliaIvan Magalhaes QUALIFIED
Morrow RutaSpainXuxue Feng QUALIFIED
Jefferson SchemmerCanadaIvan Magalhaes NEGOTIATION
Silvio SlusarskiJapanAmy Elsner UNQUALIFIED
Misaki RoysterJapanElwin Sharvill NEGOTIATION
Francesco ShinkoBrazilStephen Shaw QUALIFIED
Isabel BowleyUnited KingdomAnna Fali PROPOSAL
Ricardo GauchoItalyAmy Elsner NEGOTIATION
Munro FerenczRussiaIoni Bowcher RENEWAL
Francesco ShinkoFranceElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore StockhamAustralia2026-05-17Printing Dimensions PROPOSAL29Bernardo Dominic
1001Adams MorascaJapan2026-05-07Morlong Associates UNQUALIFIED89Stephen Shaw
1002Deepesh ChuiUnited Kingdom2026-05-19Feltz Printing Service NEGOTIATION0Asiya Javayant
1003Jefferson SchemmerItaly2026-05-06Chapman, Ross E Esq UNQUALIFIED64Ioni Bowcher
1004Mayumi KolmetzFrance2026-05-22Rousseaux, Michael Esq PROPOSAL6Elwin Sharvill
1005Darci PoquetteJapan2026-05-07Chemel, James L Cpa PROPOSAL76Onyama Limba
1006Octavia MaletAustralia2026-05-09King, Christopher A Esq UNQUALIFIED2Ivan Magalhaes
1007Johnson SergiRussia2026-05-08Feltz Printing Service RENEWAL52Ioni Bowcher
1008Clifford RimAustralia2026-05-12Printing Dimensions RENEWAL74Xuxue Feng
1009Alejandro PerinItaly2026-05-07King, Christopher A Esq NEGOTIATION5Onyama Limba
1010Ashley DoeRussia2026-05-19King, Christopher A Esq RENEWAL90Elwin Sharvill
1011Juan WieserGermany2026-04-27Buckley Miller Wright PROPOSAL60Stephen Shaw
1012Jennifer AmigonGermany2026-05-23Feltz Printing Service QUALIFIED76Amy Elsner
1013David DarakjyGermany2026-05-21Dorl, James J Esq UNQUALIFIED92Stephen Shaw
1014Mayumi KolmetzBrazil2026-04-30Feltz Printing Service PROPOSAL4Bernardo Dominic
1015Cody SaylorsItaly2026-05-20Rangoni Of Florence NEGOTIATION24Asiya Javayant
1016Aika InouyeFrance2026-05-16Feltz Printing Service NEGOTIATION32Bernardo Dominic
1017Aika InouyeArgentina2026-04-26Chanay, Jeffrey A Esq PROPOSAL71Xuxue Feng
1018Mayumi KolmetzIndia2026-05-19Feltz Printing Service NEGOTIATION89Stephen Shaw
1019Sinclair WaycottCanada2026-05-13Rousseaux, Michael Esq UNQUALIFIED44Amy Elsner
1020Ashley DoeUnited Kingdom2026-05-07Benton, John B Jr QUALIFIED32Xuxue Feng
1021Ricardo GauchoSpain2026-05-22Morlong Associates RENEWAL67Asiya Javayant
1022Maisha RulapaughRussia2026-05-09Rangoni Of Florence QUALIFIED98Amy Elsner
1023Leon OldroydAustralia2026-04-29Benton, John B Jr UNQUALIFIED36Ivan Magalhaes
1024Kadeem FlosiCanada2026-05-03Feltz Printing Service QUALIFIED54Anna Fali
1025Rodrigues CampainGermany2026-05-08Chemel, James L Cpa NEGOTIATION47Amy Elsner
1026Antonio CaudyJapan2026-05-07Feltz Printing Service RENEWAL36Onyama Limba
1027Antonio CaudyUnited Kingdom2026-05-22Feiner Bros UNQUALIFIED8Ioni Bowcher
1028Mujtaba NickaAustralia2026-05-11Chapman, Ross E Esq NEW61Ioni Bowcher
1029Leon OldroydArgentina2026-04-28Chapman, Ross E Esq QUALIFIED63Onyama Limba
1030Julie StensethIndia2026-05-02Chemel, James L Cpa PROPOSAL50Ioni Bowcher
1031Mujtaba NickaJapan2026-05-24Feltz Printing Service PROPOSAL74Xuxue Feng
1032Aruna FigeroaGermany2026-05-07Buckley Miller Wright RENEWAL17Xuxue Feng
1033Faith GillianBrazil2026-04-26Chemel, James L Cpa NEW8Elwin Sharvill
1034Deepesh ChuiCanada2026-05-16King, Christopher A Esq NEGOTIATION21Amy Elsner
1035Ricardo GauchoCanada2026-05-08King, Christopher A Esq RENEWAL20Ivan Magalhaes
1036Rodrigues CampainBrazil2026-05-07Truhlar And Truhlar Attys UNQUALIFIED4Stephen Shaw
1037David DarakjyGermany2026-04-27Truhlar And Truhlar Attys RENEWAL71Ioni Bowcher
1038Jefferson SchemmerCanada2026-04-26Benton, John B Jr QUALIFIED71Ioni Bowcher
1039Ivar PaprockiSpain2026-05-01Morlong Associates NEGOTIATION8Ivan Magalhaes
1040Juan WieserFrance2026-04-28Chapman, Ross E Esq UNQUALIFIED72Xuxue Feng
1041Arvin AlbaresCanada2026-05-14Benton, John B Jr RENEWAL1Bernardo Dominic
1042Greenwood BologniaUnited Kingdom2026-05-17Morlong Associates QUALIFIED91Elwin Sharvill
1043Tony FollerAustralia2026-05-05Truhlar And Truhlar Attys PROPOSAL94Xuxue Feng
1044Ricardo GauchoItaly2026-05-07Chapman, Ross E Esq RENEWAL79Amy Elsner
1045James ButtFrance2026-04-26Morlong Associates NEGOTIATION82Ivan Magalhaes
1046Johnson SergiBrazil2026-05-01Morlong Associates QUALIFIED5Anna Fali
1047Alejandro PerinCanada2026-05-25Truhlar And Truhlar Attys NEGOTIATION17Xuxue Feng
1048Francesco ShinkoBrazil2026-05-02Chemel, James L Cpa RENEWAL29Bernardo Dominic
1049Claire TollnerJapan2026-05-03Chemel, James L Cpa UNQUALIFIED16Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaSpainAsiya Javayant RENEWAL
Ricardo GauchoCanadaXuxue Feng NEGOTIATION
Faith GillianItalyOnyama Limba NEGOTIATION
Emily WhobreyCanadaIoni Bowcher RENEWAL
Maria MarrierIndiaAsiya Javayant QUALIFIED
Faith GillianGermanyAmy Elsner QUALIFIED
Ricardo GauchoRussiaAmy Elsner RENEWAL
Julie StensethFranceBernardo Dominic QUALIFIED
Leja CaldareraCanadaAnna Fali NEW
Munro FerenczRussiaXuxue Feng UNQUALIFIED
Wickens NestleCanadaXuxue Feng UNQUALIFIED
Aruna FigeroaAustraliaBernardo Dominic NEW
Julie StensethSpainXuxue Feng PROPOSAL
Jennifer AmigonBrazilStephen Shaw QUALIFIED
Salvatore StockhamJapanIoni Bowcher QUALIFIED
Maisha RulapaughBrazilStephen Shaw NEW
Alejandro PerinAustraliaXuxue Feng QUALIFIED
Maisha RulapaughCanadaIvan Magalhaes UNQUALIFIED
Munro FerenczSpainIvan Magalhaes NEGOTIATION
Maisha RulapaughRussiaIvan Magalhaes UNQUALIFIED
Jones VocelkaRussiaElwin Sharvill PROPOSAL
Ricardo GauchoAustraliaIvan Magalhaes NEGOTIATION
Salvatore StockhamArgentinaAnna Fali QUALIFIED
Maisha RulapaughArgentinaOnyama Limba NEGOTIATION
Maisha RulapaughArgentinaAsiya Javayant NEGOTIATION
Darci PoquetteArgentinaOnyama Limba QUALIFIED
Maria MarrierArgentinaXuxue Feng QUALIFIED
Johnson SergiFranceOnyama Limba NEW
Ricardo GauchoSpainXuxue Feng PROPOSAL
Tony FollerGermanyIvan Magalhaes QUALIFIED
Deepesh ChuiRussiaIvan Magalhaes RENEWAL
Ricardo GauchoBrazilAnna Fali NEW
Tony FollerItalyIvan Magalhaes PROPOSAL
Octavia MaletItalyIvan Magalhaes UNQUALIFIED
Ivar PaprockiGermanyAsiya Javayant RENEWAL
Rodrigues CampainItalyAmy Elsner PROPOSAL
Juan WieserUnited KingdomStephen Shaw PROPOSAL
Sinclair WaycottCanadaIoni Bowcher UNQUALIFIED
Costa DilliardCanadaBernardo Dominic UNQUALIFIED
Greenwood BologniaFranceAsiya Javayant RENEWAL
Greenwood BologniaItalyOnyama Limba UNQUALIFIED
Kaitlin OstroskyFranceBernardo Dominic NEGOTIATION
Johnson SergiUnited KingdomXuxue Feng PROPOSAL
Mujtaba NickaSpainXuxue Feng UNQUALIFIED
Greenwood BologniaIndiaOnyama Limba RENEWAL
Leja CaldareraCanadaElwin Sharvill NEGOTIATION
Johnson SergiRussiaAmy Elsner QUALIFIED
Jeanfrancois VenereItalyBernardo Dominic QUALIFIED
Jennifer AmigonItalyIvan Magalhaes NEGOTIATION
Maria MarrierBrazilStephen Shaw RENEWAL
Frozen Columns
Name
Aditya Kusko
Chavez Briddick
Misaki Royster
Faith Gillian
Kadeem Flosi
Nicolas Iturbide
Sinclair Waycott
Aditya Kusko
Antonio Caudy
Kaitlin Ostrosky
Adams Morasca
Darci Poquette
Jones Vocelka
Leja Caldarera
Munro Ferencz
Leon Oldroyd
Cody Saylors
Jennifer Amigon
Jennifer Amigon
Cody Saylors
Aika Inouye
Salvatore Stockham
Nicolas Iturbide
Ricardo Gaucho
Silvio Slusarski
Antonio Caudy
Mujtaba Nicka
Julie Stenseth
David Darakjy
David Darakjy
Ashley Doe
Aika Inouye
Smith Glick
Smith Glick
Salvatore Stockham
Silvio Slusarski
Jeanfrancois Venere
Jennifer Amigon
David Darakjy
Octavia Malet
Stacey Maclead
Misaki Royster
Leon Oldroyd
Rodrigues Campain
Antonio Caudy
Kadeem Flosi
Sinclair Waycott
Aditya Kusko
Silvio Slusarski
Ivar Paprocki
IdCountryDate
1000Canada2026-05-25
1001Spain2026-04-27
1002Australia2026-05-19
1003Germany2026-05-16
1004Brazil2026-04-30
1005Russia2026-04-30
1006Germany2026-05-14
1007Italy2026-05-21
1008Argentina2026-05-04
1009Russia2026-04-29
1010Argentina2026-05-05
1011France2026-05-22
1012Canada2026-04-28
1013Canada2026-04-29
1014Argentina2026-05-12
1015Spain2026-04-29
1016France2026-05-21
1017Japan2026-05-12
1018Australia2026-05-25
1019Germany2026-05-03
1020Spain2026-05-09
1021United Kingdom2026-05-21
1022Japan2026-05-08
1023Italy2026-04-26
1024Russia2026-05-17
1025Canada2026-05-08
1026United Kingdom2026-05-05
1027Japan2026-05-10
1028France2026-05-14
1029Russia2026-05-02
1030Brazil2026-05-17
1031United Kingdom2026-05-01
1032Argentina2026-05-08
1033Japan2026-05-06
1034Russia2026-04-29
1035Australia2026-04-27
1036Spain2026-05-02
1037Canada2026-05-20
1038Canada2026-05-17
1039Australia2026-05-18
1040Japan2026-05-25
1041Australia2026-05-10
1042India2026-05-14
1043Russia2026-04-26
1044Spain2026-05-18
1045Argentina2026-05-18
1046India2026-04-28
1047Australia2026-05-16
1048Canada2026-05-22
1049Italy2026-05-04

On-Demand Data

NameIdCountryDate
Adams Morasca1000Spain2026-05-24
Salvatore Stockham1001Germany2026-05-01
Maria Marrier1002Australia2026-05-24
Chavez Briddick1003United Kingdom2026-05-15
Leja Caldarera1004Japan2026-05-23
Cody Saylors1005United Kingdom2026-05-02
Deepesh Chui1006Japan2026-05-21
Wickens Nestle1007Spain2026-04-30
Juan Wieser1008United Kingdom2026-04-26
Aika Inouye1009Canada2026-05-02
Francesco Shinko1010United Kingdom2026-05-06
Jones Vocelka1011Spain2026-05-18
Cody Saylors1012Germany2026-05-20
Greenwood Bolognia1013Italy2026-05-10
David Darakjy1014Canada2026-05-06
Smith Glick1015Japan2026-04-29
Smith Glick1016Argentina2026-05-03
Arvin Albares1017France2026-05-06
Octavia Malet1018Spain2026-04-28
Morrow Ruta1019Australia2026-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleySpainIoni Bowcher QUALIFIED
Mayumi KolmetzAustraliaIoni Bowcher NEW
Alejandro PerinAustraliaXuxue Feng NEGOTIATION
Aditya KuskoAustraliaIvan Magalhaes NEGOTIATION
Munro FerenczItalyAmy Elsner NEGOTIATION
Ivar PaprockiIndiaAnna Fali NEGOTIATION
Nicolas IturbideGermanyStephen Shaw NEGOTIATION
Mujtaba NickaBrazilAnna Fali NEW
Jefferson SchemmerRussiaElwin Sharvill NEGOTIATION
Antonio CaudyBrazilXuxue Feng UNQUALIFIED
Faith GillianSpainIoni Bowcher NEW
Deepesh ChuiJapanIvan Magalhaes QUALIFIED
Stacey MacleadCanadaBernardo Dominic PROPOSAL
Kaitlin OstroskyArgentinaAnna Fali NEGOTIATION
Salvatore StockhamArgentinaStephen Shaw PROPOSAL
Leja CaldareraArgentinaBernardo Dominic QUALIFIED
Darci PoquetteUnited KingdomAsiya Javayant NEGOTIATION
Salvatore StockhamItalyAsiya Javayant NEW
Nicolas IturbideIndiaIvan Magalhaes NEW
Jennifer AmigonSpainAnna Fali UNQUALIFIED
James ButtAustraliaAnna Fali PROPOSAL
Octavia MaletSpainIoni Bowcher NEW
Clifford RimIndiaAnna Fali NEW
Silvio SlusarskiFranceIvan Magalhaes NEGOTIATION
Ashley DoeGermanyIvan Magalhaes QUALIFIED
Aruna FigeroaArgentinaAmy Elsner UNQUALIFIED
Misaki RoysterGermanyAnna Fali QUALIFIED
Aika InouyeCanadaElwin Sharvill QUALIFIED
Octavia MaletBrazilElwin Sharvill PROPOSAL
Leon OldroydFranceElwin Sharvill NEW
Munro FerenczItalyAnna Fali RENEWAL
Jefferson SchemmerItalyAsiya Javayant PROPOSAL
Rodrigues CampainAustraliaAsiya Javayant NEGOTIATION
Kaitlin OstroskyBrazilAsiya Javayant RENEWAL
Nicolas IturbideBrazilElwin Sharvill RENEWAL
Greenwood BologniaItalyIoni Bowcher NEW
Leja CaldareraItalyOnyama Limba UNQUALIFIED
Izzy GarufiGermanyElwin Sharvill NEGOTIATION
Alejandro PerinFranceIoni Bowcher RENEWAL
Ivar PaprockiSpainAmy Elsner 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>