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
Julie StensethRussiaOnyama Limba NEGOTIATION
Kadeem FlosiUnited KingdomElwin Sharvill RENEWAL
Misaki RoysterItalyIvan Magalhaes UNQUALIFIED
Leon OldroydItalyIoni Bowcher RENEWAL
Mayumi KolmetzCanadaIvan Magalhaes NEGOTIATION
Ivar PaprockiAustraliaIvan Magalhaes NEGOTIATION
Smith GlickFranceAsiya Javayant PROPOSAL
Sinclair WaycottIndiaElwin Sharvill QUALIFIED
Aruna FigeroaBrazilAsiya Javayant UNQUALIFIED
Jefferson SchemmerItalyAmy Elsner NEW
Jennifer AmigonIndiaAnna Fali PROPOSAL
Sinclair WaycottBrazilAmy Elsner QUALIFIED
Jones VocelkaFranceStephen Shaw RENEWAL
Murillo MaletCanadaAsiya Javayant UNQUALIFIED
Chavez BriddickItalyElwin Sharvill PROPOSAL
Johnson SergiIndiaOnyama Limba NEGOTIATION
Greenwood BologniaBrazilIvan Magalhaes NEW
Jennifer AmigonSpainXuxue Feng NEGOTIATION
Maria MarrierFranceAsiya Javayant RENEWAL
Kadeem FlosiRussiaAsiya Javayant NEW
Antonio CaudyRussiaAsiya Javayant QUALIFIED
Aruna FigeroaUnited KingdomIvan Magalhaes UNQUALIFIED
Maisha RulapaughCanadaAsiya Javayant QUALIFIED
Isabel BowleyFranceAmy Elsner RENEWAL
Ashley DoeSpainIvan Magalhaes NEGOTIATION
Johnson SergiSpainAnna Fali PROPOSAL
Kaitlin OstroskyArgentinaIvan Magalhaes NEW
Leon OldroydFranceAmy Elsner PROPOSAL
David DarakjyJapanIoni Bowcher RENEWAL
Julie StensethFranceAsiya Javayant NEW
Sinclair WaycottArgentinaStephen Shaw QUALIFIED
Aika InouyeAustraliaAmy Elsner UNQUALIFIED
Darci PoquetteCanadaAnna Fali UNQUALIFIED
Jones VocelkaJapanIoni Bowcher NEW
Julie StensethItalyStephen Shaw NEGOTIATION
Kaitlin OstroskyBrazilOnyama Limba UNQUALIFIED
Salvatore StockhamArgentinaAsiya Javayant NEW
James ButtAustraliaIoni Bowcher QUALIFIED
Leon OldroydSpainAnna Fali UNQUALIFIED
Faith GillianUnited KingdomAnna Fali PROPOSAL
Ivar PaprockiJapanAmy Elsner RENEWAL
Wickens NestleSpainElwin Sharvill RENEWAL
Antonio CaudyRussiaOnyama Limba RENEWAL
Maisha RulapaughAustraliaAmy Elsner UNQUALIFIED
Jones VocelkaGermanyStephen Shaw NEGOTIATION
Munro FerenczSpainOnyama Limba UNQUALIFIED
Salvatore StockhamFranceAmy Elsner RENEWAL
Isabel BowleyIndiaAnna Fali QUALIFIED
Chavez BriddickCanadaIvan Magalhaes UNQUALIFIED
James ButtIndiaIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonJapanElwin Sharvill UNQUALIFIED
Darci PoquetteRussiaIoni Bowcher NEW
Adams MorascaFranceIoni Bowcher NEGOTIATION
Francesco ShinkoSpainBernardo Dominic NEW
Isabel BowleyAustraliaIvan Magalhaes RENEWAL
Alejandro PerinUnited KingdomAmy Elsner QUALIFIED
Salvatore StockhamArgentinaIvan Magalhaes NEW
Leja CaldareraGermanyAsiya Javayant PROPOSAL
Aditya KuskoAustraliaIoni Bowcher NEW
Maria MarrierItalyOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy GarufiAustralia2026-06-02King, Christopher A Esq PROPOSAL53Xuxue Feng
1001Aika InouyeArgentina2026-06-18Benton, John B Jr QUALIFIED55Ioni Bowcher
1002Greenwood BologniaJapan2026-06-07Truhlar And Truhlar Attys QUALIFIED76Elwin Sharvill
1003Leon OldroydAustralia2026-05-27Truhlar And Truhlar Attys QUALIFIED87Onyama Limba
1004Emily WhobreyFrance2026-06-20Truhlar And Truhlar Attys NEW8Anna Fali
1005Julie StensethCanada2026-05-31Morlong Associates QUALIFIED9Xuxue Feng
1006Juan WieserUnited Kingdom2026-06-06Commercial Press NEW43Ivan Magalhaes
1007Darci PoquetteRussia2026-06-03Morlong Associates PROPOSAL18Ivan Magalhaes
1008Maria MarrierItaly2026-06-17Truhlar And Truhlar Attys NEGOTIATION33Asiya Javayant
1009Juan WieserUnited Kingdom2026-06-10Chemel, James L Cpa NEW29Elwin Sharvill
1010Nicolas IturbideSpain2026-06-12Truhlar And Truhlar Attys UNQUALIFIED73Amy Elsner
1011Adams MorascaGermany2026-06-09Truhlar And Truhlar Attys RENEWAL86Stephen Shaw
1012Greenwood BologniaItaly2026-06-05Commercial Press NEGOTIATION52Amy Elsner
1013Cody SaylorsCanada2026-06-03Chapman, Ross E Esq RENEWAL99Bernardo Dominic
1014Stacey MacleadRussia2026-06-02Rousseaux, Michael Esq NEGOTIATION82Elwin Sharvill
1015Misaki RoysterSpain2026-06-01Truhlar And Truhlar Attys NEGOTIATION17Bernardo Dominic
1016Darci PoquetteIndia2026-06-20Chanay, Jeffrey A Esq QUALIFIED70Anna Fali
1017Salvatore StockhamUnited Kingdom2026-05-31Rangoni Of Florence QUALIFIED87Amy Elsner
1018Misaki RoysterSpain2026-06-09Dorl, James J Esq PROPOSAL83Amy Elsner
1019Kaitlin OstroskyBrazil2026-06-17Chemel, James L Cpa PROPOSAL59Anna Fali
1020Ashley DoeCanada2026-06-05Chemel, James L Cpa QUALIFIED76Xuxue Feng
1021Arvin AlbaresRussia2026-06-02Printing Dimensions NEGOTIATION21Asiya Javayant
1022Leon OldroydSpain2026-05-30Rousseaux, Michael Esq RENEWAL66Bernardo Dominic
1023Aika InouyeJapan2026-05-24Printing Dimensions NEGOTIATION98Elwin Sharvill
1024Mujtaba NickaGermany2026-06-21Commercial Press NEGOTIATION57Anna Fali
1025Deepesh ChuiCanada2026-06-03Chanay, Jeffrey A Esq QUALIFIED73Xuxue Feng
1026Faith GillianBrazil2026-05-25Truhlar And Truhlar Attys NEW68Elwin Sharvill
1027Jefferson SchemmerIndia2026-06-05Truhlar And Truhlar Attys RENEWAL14Bernardo Dominic
1028Tony FollerIndia2026-06-06Buckley Miller Wright RENEWAL79Stephen Shaw
1029Smith GlickIndia2026-05-23Rangoni Of Florence RENEWAL1Stephen Shaw
1030Wickens NestleSpain2026-06-13Printing Dimensions PROPOSAL32Ioni Bowcher
1031Mujtaba NickaSpain2026-06-12Commercial Press PROPOSAL35Bernardo Dominic
1032Jefferson SchemmerArgentina2026-06-01Printing Dimensions NEW5Onyama Limba
1033Ivar PaprockiSpain2026-06-09Chapman, Ross E Esq PROPOSAL63Ioni Bowcher
1034Adams MorascaIndia2026-06-12King, Christopher A Esq PROPOSAL54Stephen Shaw
1035Aika InouyeCanada2026-06-03Morlong Associates UNQUALIFIED44Onyama Limba
1036Stacey MacleadBrazil2026-06-05Feltz Printing Service RENEWAL41Xuxue Feng
1037Sinclair WaycottJapan2026-06-10Chanay, Jeffrey A Esq QUALIFIED40Xuxue Feng
1038Leja CaldareraFrance2026-06-06Chemel, James L Cpa PROPOSAL41Xuxue Feng
1039Chavez BriddickUnited Kingdom2026-05-29Chanay, Jeffrey A Esq RENEWAL13Onyama Limba
1040Leon OldroydArgentina2026-06-04Truhlar And Truhlar Attys NEGOTIATION56Ivan Magalhaes
1041Jones VocelkaAustralia2026-05-27Chemel, James L Cpa UNQUALIFIED98Stephen Shaw
1042Aruna FigeroaJapan2026-06-02Benton, John B Jr NEGOTIATION89Ioni Bowcher
1043Salvatore StockhamArgentina2026-06-21Benton, John B Jr PROPOSAL56Anna Fali
1044Jefferson SchemmerBrazil2026-06-17King, Christopher A Esq NEGOTIATION19Xuxue Feng
1045Chavez BriddickBrazil2026-06-03Feltz Printing Service NEGOTIATION31Onyama Limba
1046Aika InouyeGermany2026-05-24Buckley Miller Wright NEGOTIATION29Anna Fali
1047Antonio CaudyGermany2026-06-13Printing Dimensions RENEWAL27Elwin Sharvill
1048Jefferson SchemmerUnited Kingdom2026-06-04Chemel, James L Cpa QUALIFIED98Asiya Javayant
1049Aika InouyeArgentina2026-06-18Printing Dimensions NEW44Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleBrazilAsiya Javayant QUALIFIED
Ashley DoeBrazilIvan Magalhaes RENEWAL
Wickens NestleGermanyStephen Shaw PROPOSAL
Darci PoquetteGermanyIoni Bowcher PROPOSAL
Jennifer AmigonArgentinaElwin Sharvill QUALIFIED
Morrow RutaCanadaBernardo Dominic PROPOSAL
Jeanfrancois VenereArgentinaOnyama Limba QUALIFIED
Tony FollerIndiaXuxue Feng NEW
Cody SaylorsItalyIvan Magalhaes UNQUALIFIED
Silvio SlusarskiRussiaElwin Sharvill UNQUALIFIED
Aditya KuskoIndiaBernardo Dominic NEW
Mujtaba NickaCanadaAsiya Javayant NEGOTIATION
Deepesh ChuiGermanyAnna Fali PROPOSAL
Ashley DoeCanadaXuxue Feng NEW
Tony FollerAustraliaAsiya Javayant NEW
Leja CaldareraBrazilElwin Sharvill NEW
Jones VocelkaFranceAmy Elsner PROPOSAL
Jones VocelkaIndiaStephen Shaw PROPOSAL
Mayumi KolmetzRussiaStephen Shaw UNQUALIFIED
Silvio SlusarskiGermanyElwin Sharvill PROPOSAL
Faith GillianIndiaBernardo Dominic NEGOTIATION
Aditya KuskoBrazilXuxue Feng QUALIFIED
Silvio SlusarskiUnited KingdomAsiya Javayant UNQUALIFIED
Kadeem FlosiUnited KingdomIoni Bowcher PROPOSAL
Maisha RulapaughFranceOnyama Limba QUALIFIED
Aika InouyeRussiaElwin Sharvill NEGOTIATION
David DarakjyBrazilElwin Sharvill PROPOSAL
Isabel BowleySpainBernardo Dominic RENEWAL
Nicolas IturbideSpainElwin Sharvill QUALIFIED
Johnson SergiGermanyAsiya Javayant QUALIFIED
Greenwood BologniaUnited KingdomAmy Elsner NEGOTIATION
Smith GlickIndiaStephen Shaw NEGOTIATION
Faith GillianUnited KingdomIoni Bowcher PROPOSAL
Aditya KuskoIndiaAnna Fali NEGOTIATION
Nicolas IturbideCanadaIvan Magalhaes RENEWAL
Clifford RimJapanAsiya Javayant PROPOSAL
Costa DilliardGermanyAmy Elsner NEGOTIATION
Jennifer AmigonUnited KingdomAnna Fali UNQUALIFIED
Ricardo GauchoRussiaStephen Shaw UNQUALIFIED
Salvatore StockhamItalyXuxue Feng PROPOSAL
Morrow RutaCanadaXuxue Feng QUALIFIED
Julie StensethBrazilAmy Elsner RENEWAL
Jefferson SchemmerGermanyBernardo Dominic QUALIFIED
Mayumi KolmetzUnited KingdomStephen Shaw UNQUALIFIED
Smith GlickItalyStephen Shaw UNQUALIFIED
Leja CaldareraFranceBernardo Dominic RENEWAL
Faith GillianRussiaIoni Bowcher RENEWAL
Maria MarrierAustraliaOnyama Limba NEGOTIATION
Johnson SergiAustraliaStephen Shaw NEW
David DarakjyRussiaAmy Elsner RENEWAL
Frozen Columns
Name
Misaki Royster
Murillo Malet
Stacey Maclead
Greenwood Bolognia
Jeanfrancois Venere
Leon Oldroyd
Stacey Maclead
Claire Tollner
Isabel Bowley
Arvin Albares
Greenwood Bolognia
David Darakjy
Ricardo Gaucho
Francesco Shinko
Jeanfrancois Venere
Jefferson Schemmer
Maisha Rulapaugh
Jeanfrancois Venere
Stacey Maclead
Ivar Paprocki
Jennifer Amigon
Johnson Sergi
Darci Poquette
Salvatore Stockham
Murillo Malet
Salvatore Stockham
Isabel Bowley
Jefferson Schemmer
Greenwood Bolognia
Jones Vocelka
Maria Marrier
Misaki Royster
Aruna Figeroa
Emily Whobrey
Izzy Garufi
Leja Caldarera
Cody Saylors
Leja Caldarera
Clifford Rim
Wickens Nestle
Alejandro Perin
Stacey Maclead
Deepesh Chui
Jones Vocelka
Clifford Rim
Aika Inouye
Leon Oldroyd
Silvio Slusarski
Munro Ferencz
David Darakjy
IdCountryDate
1000Germany2026-06-21
1001Russia2026-05-26
1002France2026-06-10
1003Italy2026-05-23
1004Australia2026-05-27
1005Germany2026-05-23
1006Argentina2026-06-13
1007Argentina2026-06-14
1008India2026-06-08
1009Japan2026-06-18
1010Australia2026-06-03
1011Russia2026-06-05
1012France2026-06-16
1013India2026-06-21
1014Russia2026-05-27
1015Japan2026-05-28
1016Russia2026-06-03
1017Spain2026-06-21
1018Italy2026-05-25
1019Argentina2026-06-19
1020Italy2026-06-07
1021Argentina2026-06-03
1022France2026-05-27
1023Argentina2026-06-15
1024Japan2026-06-21
1025Argentina2026-05-27
1026India2026-06-18
1027Brazil2026-06-16
1028Brazil2026-06-08
1029Italy2026-06-10
1030Germany2026-06-03
1031France2026-05-27
1032Japan2026-05-28
1033Japan2026-06-03
1034United Kingdom2026-05-28
1035Brazil2026-05-23
1036United Kingdom2026-06-21
1037India2026-05-27
1038Brazil2026-05-27
1039Brazil2026-05-25
1040Australia2026-06-13
1041Brazil2026-06-09
1042France2026-06-18
1043France2026-06-05
1044France2026-06-01
1045Australia2026-06-19
1046Germany2026-06-10
1047Spain2026-06-11
1048India2026-06-05
1049Spain2026-05-28

On-Demand Data

NameIdCountryDate
Sinclair Waycott1000United Kingdom2026-06-19
Kaitlin Ostrosky1001Spain2026-05-23
Isabel Bowley1002Canada2026-06-08
Leja Caldarera1003Germany2026-06-08
Wickens Nestle1004Russia2026-06-05
Deepesh Chui1005Spain2026-06-05
Leja Caldarera1006Russia2026-06-08
David Darakjy1007Italy2026-06-19
Wickens Nestle1008Argentina2026-06-11
Smith Glick1009Russia2026-05-27
Jennifer Amigon1010Australia2026-06-08
Sinclair Waycott1011Japan2026-06-10
Ivar Paprocki1012Japan2026-06-15
David Darakjy1013Italy2026-05-23
Wickens Nestle1014Australia2026-06-19
Kaitlin Ostrosky1015Argentina2026-05-29
Claire Tollner1016Canada2026-05-25
Clifford Rim1017Argentina2026-06-21
Isabel Bowley1018Brazil2026-05-25
David Darakjy1019India2026-06-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaFranceXuxue Feng NEGOTIATION
Morrow RutaIndiaElwin Sharvill UNQUALIFIED
Emily WhobreySpainOnyama Limba QUALIFIED
Stacey MacleadArgentinaIoni Bowcher UNQUALIFIED
Antonio CaudyArgentinaStephen Shaw UNQUALIFIED
Stacey MacleadUnited KingdomElwin Sharvill RENEWAL
Costa DilliardArgentinaOnyama Limba NEW
Chavez BriddickArgentinaIvan Magalhaes NEW
Costa DilliardCanadaBernardo Dominic NEW
Jennifer AmigonCanadaAnna Fali NEW
Julie StensethArgentinaAnna Fali NEGOTIATION
Clifford RimItalyStephen Shaw NEW
Wickens NestleJapanElwin Sharvill NEW
Ashley DoeArgentinaOnyama Limba NEGOTIATION
Munro FerenczArgentinaAnna Fali NEW
Izzy GarufiRussiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereUnited KingdomAnna Fali RENEWAL
Salvatore StockhamIndiaElwin Sharvill NEGOTIATION
Aika InouyeArgentinaXuxue Feng RENEWAL
Mayumi KolmetzBrazilAnna Fali RENEWAL
Rodrigues CampainUnited KingdomElwin Sharvill RENEWAL
Maisha RulapaughUnited KingdomOnyama Limba RENEWAL
Nicolas IturbideFranceAsiya Javayant QUALIFIED
Julie StensethCanadaXuxue Feng PROPOSAL
Leon OldroydIndiaIvan Magalhaes UNQUALIFIED
Jefferson SchemmerBrazilBernardo Dominic PROPOSAL
Emily WhobreyBrazilIvan Magalhaes UNQUALIFIED
Silvio SlusarskiUnited KingdomXuxue Feng QUALIFIED
Kaitlin OstroskyGermanyStephen Shaw RENEWAL
Chavez BriddickAustraliaStephen Shaw RENEWAL
Costa DilliardGermanyXuxue Feng PROPOSAL
Greenwood BologniaBrazilIvan Magalhaes PROPOSAL
Darci PoquetteAustraliaIoni Bowcher UNQUALIFIED
Adams MorascaCanadaXuxue Feng QUALIFIED
Francesco ShinkoJapanIoni Bowcher NEW
Maria MarrierCanadaAsiya Javayant NEW
Tony FollerCanadaBernardo Dominic PROPOSAL
Leon OldroydCanadaAmy Elsner NEGOTIATION
Rodrigues CampainSpainElwin Sharvill PROPOSAL
Mayumi KolmetzArgentinaOnyama Limba NEGOTIATION

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