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
Kadeem FlosiFranceStephen Shaw NEW
Mayumi KolmetzSpainAmy Elsner UNQUALIFIED
Smith GlickSpainOnyama Limba NEGOTIATION
Deepesh ChuiUnited KingdomIvan Magalhaes QUALIFIED
Rodrigues CampainArgentinaAmy Elsner NEW
Arvin AlbaresFranceElwin Sharvill NEGOTIATION
Isabel BowleyArgentinaAsiya Javayant QUALIFIED
Antonio CaudyGermanyIvan Magalhaes PROPOSAL
Aruna FigeroaUnited KingdomXuxue Feng RENEWAL
Wickens NestleIndiaXuxue Feng UNQUALIFIED
Cody SaylorsCanadaIvan Magalhaes UNQUALIFIED
Mujtaba NickaIndiaElwin Sharvill PROPOSAL
Maisha RulapaughArgentinaElwin Sharvill UNQUALIFIED
Johnson SergiIndiaXuxue Feng RENEWAL
Clifford RimSpainAmy Elsner QUALIFIED
David DarakjyIndiaElwin Sharvill NEGOTIATION
Jefferson SchemmerJapanXuxue Feng PROPOSAL
Tony FollerRussiaBernardo Dominic NEW
Leja CaldareraArgentinaIoni Bowcher NEGOTIATION
Johnson SergiFranceAmy Elsner NEW
Greenwood BologniaUnited KingdomElwin Sharvill NEGOTIATION
Aika InouyeBrazilIoni Bowcher UNQUALIFIED
Arvin AlbaresAustraliaStephen Shaw RENEWAL
James ButtGermanyAsiya Javayant PROPOSAL
Adams MorascaGermanyIvan Magalhaes RENEWAL
Stacey MacleadRussiaStephen Shaw QUALIFIED
Ashley DoeUnited KingdomXuxue Feng PROPOSAL
Izzy GarufiFranceOnyama Limba NEW
Mayumi KolmetzSpainBernardo Dominic NEW
Johnson SergiBrazilAnna Fali UNQUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes QUALIFIED
Ivar PaprockiGermanyOnyama Limba RENEWAL
David DarakjyArgentinaStephen Shaw PROPOSAL
Isabel BowleyAustraliaStephen Shaw NEW
Kadeem FlosiAustraliaAsiya Javayant RENEWAL
Isabel BowleyArgentinaIoni Bowcher NEGOTIATION
David DarakjyAustraliaAsiya Javayant UNQUALIFIED
Aika InouyeCanadaIoni Bowcher QUALIFIED
Adams MorascaBrazilAnna Fali NEW
Greenwood BologniaItalyOnyama Limba NEGOTIATION
Ivar PaprockiBrazilStephen Shaw NEGOTIATION
Wickens NestleAustraliaAmy Elsner NEW
Jones VocelkaUnited KingdomIoni Bowcher NEGOTIATION
Aditya KuskoAustraliaStephen Shaw QUALIFIED
Aika InouyeAustraliaXuxue Feng RENEWAL
Chavez BriddickIndiaBernardo Dominic UNQUALIFIED
Ricardo GauchoUnited KingdomAnna Fali NEW
Darci PoquetteCanadaOnyama Limba RENEWAL
Jennifer AmigonArgentinaAmy Elsner PROPOSAL
Maisha RulapaughUnited KingdomIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzSpainAnna Fali RENEWAL
Murillo MaletCanadaBernardo Dominic NEGOTIATION
Costa DilliardAustraliaElwin Sharvill RENEWAL
Arvin AlbaresAustraliaElwin Sharvill UNQUALIFIED
Darci PoquetteAustraliaStephen Shaw RENEWAL
Stacey MacleadJapanXuxue Feng NEGOTIATION
Morrow RutaIndiaAnna Fali PROPOSAL
Octavia MaletGermanyXuxue Feng UNQUALIFIED
Ashley DoeJapanIoni Bowcher UNQUALIFIED
Deepesh ChuiFranceBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainFrance2026-03-29Dorl, James J Esq RENEWAL88Xuxue Feng
1001Costa DilliardBrazil2026-03-23Feiner Bros NEW15Stephen Shaw
1002Murillo MaletArgentina2026-04-09Truhlar And Truhlar Attys QUALIFIED23Bernardo Dominic
1003Ricardo GauchoIndia2026-03-30Buckley Miller Wright QUALIFIED82Amy Elsner
1004Ashley DoeArgentina2026-04-09Benton, John B Jr NEGOTIATION72Amy Elsner
1005Antonio CaudyJapan2026-04-04Feltz Printing Service UNQUALIFIED40Onyama Limba
1006Aditya KuskoArgentina2026-04-01Chanay, Jeffrey A Esq UNQUALIFIED27Ivan Magalhaes
1007James ButtAustralia2026-04-07Chapman, Ross E Esq UNQUALIFIED1Amy Elsner
1008Jefferson SchemmerBrazil2026-04-16Chapman, Ross E Esq NEGOTIATION40Elwin Sharvill
1009Misaki RoysterJapan2026-04-01Feltz Printing Service PROPOSAL63Amy Elsner
1010Francesco ShinkoJapan2026-04-16Buckley Miller Wright NEGOTIATION95Asiya Javayant
1011Jefferson SchemmerBrazil2026-03-24Benton, John B Jr QUALIFIED12Xuxue Feng
1012Misaki RoysterJapan2026-04-15Feiner Bros NEGOTIATION98Bernardo Dominic
1013Mayumi KolmetzAustralia2026-04-01Commercial Press PROPOSAL62Anna Fali
1014Julie StensethArgentina2026-04-16Benton, John B Jr QUALIFIED0Onyama Limba
1015Julie StensethRussia2026-04-10Chemel, James L Cpa QUALIFIED11Stephen Shaw
1016Ricardo GauchoRussia2026-03-26Morlong Associates RENEWAL31Stephen Shaw
1017Emily WhobreyBrazil2026-04-12Morlong Associates PROPOSAL85Ivan Magalhaes
1018Izzy GarufiRussia2026-03-25Chanay, Jeffrey A Esq NEW77Anna Fali
1019Chavez BriddickItaly2026-03-29Chemel, James L Cpa NEW66Elwin Sharvill
1020Arvin AlbaresBrazil2026-03-30Truhlar And Truhlar Attys NEW29Xuxue Feng
1021Wickens NestleUnited Kingdom2026-04-17Benton, John B Jr RENEWAL25Elwin Sharvill
1022Alejandro PerinUnited Kingdom2026-04-06King, Christopher A Esq RENEWAL38Onyama Limba
1023Silvio SlusarskiBrazil2026-03-24Chemel, James L Cpa UNQUALIFIED83Stephen Shaw
1024Jennifer AmigonFrance2026-04-06Morlong Associates NEW73Ivan Magalhaes
1025Ashley DoeAustralia2026-03-28Chanay, Jeffrey A Esq QUALIFIED0Anna Fali
1026Silvio SlusarskiFrance2026-03-24Buckley Miller Wright QUALIFIED43Anna Fali
1027Misaki RoysterArgentina2026-04-08Chemel, James L Cpa NEGOTIATION5Anna Fali
1028Murillo MaletGermany2026-04-18Morlong Associates NEW37Ioni Bowcher
1029Juan WieserGermany2026-04-15Rousseaux, Michael Esq RENEWAL79Elwin Sharvill
1030Alejandro PerinFrance2026-03-29Chemel, James L Cpa QUALIFIED42Bernardo Dominic
1031Darci PoquetteAustralia2026-03-24Benton, John B Jr RENEWAL15Bernardo Dominic
1032Jennifer AmigonGermany2026-04-13Dorl, James J Esq NEGOTIATION88Onyama Limba
1033Maria MarrierBrazil2026-04-14Chapman, Ross E Esq NEGOTIATION80Onyama Limba
1034Faith GillianArgentina2026-04-09Dorl, James J Esq QUALIFIED16Onyama Limba
1035Ivar PaprockiAustralia2026-04-15Rangoni Of Florence UNQUALIFIED44Xuxue Feng
1036Chavez BriddickIndia2026-04-04Printing Dimensions UNQUALIFIED44Xuxue Feng
1037Aditya KuskoUnited Kingdom2026-03-29Rangoni Of Florence NEGOTIATION50Elwin Sharvill
1038Salvatore StockhamCanada2026-03-29Dorl, James J Esq PROPOSAL77Stephen Shaw
1039Maisha RulapaughIndia2026-04-16Printing Dimensions RENEWAL84Stephen Shaw
1040Morrow RutaSpain2026-04-15Chanay, Jeffrey A Esq RENEWAL30Onyama Limba
1041Clifford RimGermany2026-04-14Feltz Printing Service PROPOSAL13Bernardo Dominic
1042Kaitlin OstroskyFrance2026-03-29King, Christopher A Esq NEW55Asiya Javayant
1043Cody SaylorsBrazil2026-04-02Chanay, Jeffrey A Esq PROPOSAL51Stephen Shaw
1044Tony FollerBrazil2026-03-21Chanay, Jeffrey A Esq NEGOTIATION73Elwin Sharvill
1045Jones VocelkaCanada2026-04-05King, Christopher A Esq PROPOSAL55Bernardo Dominic
1046Ricardo GauchoGermany2026-04-13Benton, John B Jr NEW49Elwin Sharvill
1047Mayumi KolmetzSpain2026-03-27Feiner Bros RENEWAL95Amy Elsner
1048Alejandro PerinBrazil2026-04-03Chapman, Ross E Esq UNQUALIFIED79Ivan Magalhaes
1049Johnson SergiAustralia2026-04-06Chemel, James L Cpa UNQUALIFIED32Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Johnson SergiGermanyIvan Magalhaes QUALIFIED
Arvin AlbaresRussiaIoni Bowcher NEW
Adams MorascaGermanyBernardo Dominic UNQUALIFIED
Julie StensethGermanyIoni Bowcher PROPOSAL
Murillo MaletUnited KingdomStephen Shaw NEW
Greenwood BologniaUnited KingdomStephen Shaw PROPOSAL
Greenwood BologniaBrazilAnna Fali RENEWAL
Emily WhobreyUnited KingdomBernardo Dominic QUALIFIED
Deepesh ChuiCanadaAsiya Javayant NEGOTIATION
Clifford RimSpainAnna Fali QUALIFIED
Misaki RoysterItalyIvan Magalhaes NEGOTIATION
Munro FerenczJapanStephen Shaw NEW
Silvio SlusarskiGermanyXuxue Feng UNQUALIFIED
Darci PoquetteIndiaBernardo Dominic UNQUALIFIED
Emily WhobreyRussiaAnna Fali NEW
Costa DilliardRussiaAmy Elsner UNQUALIFIED
Leon OldroydGermanyOnyama Limba UNQUALIFIED
Mujtaba NickaAustraliaBernardo Dominic QUALIFIED
Faith GillianIndiaAsiya Javayant RENEWAL
Octavia MaletGermanyAmy Elsner RENEWAL
Maisha RulapaughUnited KingdomOnyama Limba PROPOSAL
Ricardo GauchoFranceStephen Shaw RENEWAL
Mayumi KolmetzCanadaIvan Magalhaes NEW
Claire TollnerIndiaXuxue Feng PROPOSAL
Aruna FigeroaGermanyIoni Bowcher NEGOTIATION
Misaki RoysterGermanyElwin Sharvill NEW
Costa DilliardBrazilAsiya Javayant PROPOSAL
Aika InouyeFranceElwin Sharvill UNQUALIFIED
Aruna FigeroaUnited KingdomXuxue Feng PROPOSAL
Darci PoquetteAustraliaBernardo Dominic UNQUALIFIED
Aditya KuskoUnited KingdomOnyama Limba NEGOTIATION
Julie StensethRussiaAnna Fali UNQUALIFIED
Wickens NestleIndiaIoni Bowcher NEGOTIATION
Faith GillianRussiaXuxue Feng NEW
Clifford RimRussiaOnyama Limba PROPOSAL
Maisha RulapaughSpainStephen Shaw NEGOTIATION
Maria MarrierFranceBernardo Dominic NEGOTIATION
Murillo MaletArgentinaBernardo Dominic UNQUALIFIED
Costa DilliardGermanyXuxue Feng NEGOTIATION
Salvatore StockhamIndiaIoni Bowcher PROPOSAL
Ricardo GauchoCanadaIoni Bowcher QUALIFIED
Kaitlin OstroskyArgentinaIoni Bowcher NEW
Morrow RutaSpainXuxue Feng QUALIFIED
Tony FollerItalyAmy Elsner NEW
Misaki RoysterGermanyXuxue Feng NEW
James ButtBrazilOnyama Limba QUALIFIED
Murillo MaletRussiaElwin Sharvill UNQUALIFIED
Maisha RulapaughAustraliaElwin Sharvill NEGOTIATION
Cody SaylorsSpainAmy Elsner RENEWAL
Morrow RutaGermanyIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Julie Stenseth
Alejandro Perin
Maria Marrier
Ricardo Gaucho
Murillo Malet
Munro Ferencz
Clifford Rim
Stacey Maclead
Cody Saylors
Leon Oldroyd
Maria Marrier
Smith Glick
Mayumi Kolmetz
Aditya Kusko
Jennifer Amigon
Antonio Caudy
Francesco Shinko
Ashley Doe
Rodrigues Campain
Salvatore Stockham
Francesco Shinko
Jefferson Schemmer
Aditya Kusko
Claire Tollner
James Butt
Silvio Slusarski
Aditya Kusko
Francesco Shinko
Nicolas Iturbide
Claire Tollner
Sinclair Waycott
Greenwood Bolognia
Morrow Ruta
James Butt
Aditya Kusko
Aditya Kusko
Aditya Kusko
Johnson Sergi
Silvio Slusarski
Alejandro Perin
Silvio Slusarski
Misaki Royster
Adams Morasca
Stacey Maclead
Mayumi Kolmetz
Kadeem Flosi
Alejandro Perin
Faith Gillian
Antonio Caudy
Francesco Shinko
IdCountryDate
1000India2026-03-26
1001Argentina2026-03-31
1002Spain2026-03-31
1003Japan2026-03-27
1004Russia2026-04-16
1005Brazil2026-04-13
1006Australia2026-03-24
1007United Kingdom2026-04-12
1008Germany2026-04-11
1009Italy2026-04-08
1010Canada2026-04-03
1011Brazil2026-04-18
1012Germany2026-04-16
1013United Kingdom2026-04-01
1014Spain2026-04-04
1015Japan2026-04-18
1016France2026-04-15
1017Russia2026-04-05
1018Japan2026-03-31
1019Japan2026-03-21
1020Russia2026-03-27
1021India2026-04-15
1022Brazil2026-04-12
1023Italy2026-03-23
1024Spain2026-03-30
1025Italy2026-03-31
1026Brazil2026-04-05
1027Italy2026-04-10
1028Argentina2026-04-09
1029Germany2026-03-22
1030Brazil2026-04-02
1031Russia2026-03-28
1032Australia2026-04-03
1033Australia2026-03-21
1034Australia2026-04-06
1035France2026-04-09
1036Russia2026-04-09
1037Argentina2026-04-18
1038Japan2026-04-05
1039Japan2026-04-02
1040Canada2026-03-31
1041Germany2026-03-26
1042Canada2026-04-14
1043Russia2026-03-28
1044Spain2026-03-21
1045France2026-03-22
1046Germany2026-04-02
1047Japan2026-03-26
1048Russia2026-04-10
1049Russia2026-03-30

On-Demand Data

NameIdCountryDate
Johnson Sergi1000Brazil2026-03-31
Clifford Rim1001Spain2026-03-24
Claire Tollner1002Italy2026-04-05
Morrow Ruta1003Brazil2026-04-03
Nicolas Iturbide1004France2026-04-01
Smith Glick1005Japan2026-04-12
Ivar Paprocki1006Germany2026-04-12
Jennifer Amigon1007Japan2026-04-10
Octavia Malet1008Argentina2026-04-06
Aika Inouye1009India2026-03-24
Deepesh Chui1010Russia2026-03-22
Clifford Rim1011Australia2026-03-27
Izzy Garufi1012Brazil2026-04-17
James Butt1013Australia2026-03-29
Isabel Bowley1014Russia2026-03-24
Stacey Maclead1015Japan2026-04-09
Wickens Nestle1016Argentina2026-03-29
Clifford Rim1017Canada2026-04-09
Greenwood Bolognia1018United Kingdom2026-04-03
Clifford Rim1019Canada2026-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreyArgentinaIoni Bowcher NEGOTIATION
Kadeem FlosiFranceIoni Bowcher NEGOTIATION
Misaki RoysterUnited KingdomXuxue Feng NEGOTIATION
Antonio CaudyGermanyAnna Fali RENEWAL
Salvatore StockhamIndiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyArgentinaStephen Shaw QUALIFIED
Leja CaldareraRussiaXuxue Feng NEGOTIATION
Silvio SlusarskiItalyElwin Sharvill NEW
Jones VocelkaFranceAmy Elsner RENEWAL
Jeanfrancois VenereItalyStephen Shaw PROPOSAL
Jeanfrancois VenereIndiaStephen Shaw RENEWAL
Leon OldroydCanadaIoni Bowcher QUALIFIED
Emily WhobreyGermanyStephen Shaw PROPOSAL
Alejandro PerinArgentinaIvan Magalhaes UNQUALIFIED
Jones VocelkaSpainAnna Fali NEGOTIATION
Smith GlickJapanElwin Sharvill RENEWAL
Salvatore StockhamCanadaBernardo Dominic UNQUALIFIED
Julie StensethAustraliaElwin Sharvill RENEWAL
Sinclair WaycottIndiaAnna Fali QUALIFIED
Johnson SergiIndiaStephen Shaw UNQUALIFIED
Juan WieserArgentinaAsiya Javayant RENEWAL
Munro FerenczCanadaAsiya Javayant RENEWAL
Faith GillianIndiaAsiya Javayant NEGOTIATION
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Deepesh ChuiAustraliaXuxue Feng PROPOSAL
Cody SaylorsFranceBernardo Dominic NEW
Silvio SlusarskiSpainIoni Bowcher UNQUALIFIED
Maria MarrierBrazilAmy Elsner NEW
Leja CaldareraGermanyOnyama Limba NEGOTIATION
Jeanfrancois VenereArgentinaAmy Elsner QUALIFIED
Tony FollerAustraliaAsiya Javayant RENEWAL
Antonio CaudyItalyBernardo Dominic UNQUALIFIED
Stacey MacleadGermanyAnna Fali NEW
Maisha RulapaughAustraliaAsiya Javayant UNQUALIFIED
Misaki RoysterIndiaBernardo Dominic NEGOTIATION
Maisha RulapaughGermanyIoni Bowcher NEW
Silvio SlusarskiRussiaBernardo Dominic NEW
Rodrigues CampainIndiaIvan Magalhaes NEGOTIATION
Johnson SergiArgentinaIvan Magalhaes QUALIFIED
Salvatore StockhamAustraliaAsiya Javayant RENEWAL

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