Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Czech
Greek
Persian
Finnish
Danish
Hindi
Indonesian
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
Vietnamese
Chinese
Chinese

Input Style

Themes

PrimeOne
Saga Saga
Vela Vela
Arya Arya
Bootstrap
bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple
Material Design
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple
Material Design Compact
material-indigo-light Indigo
material-deeppurple-light' Deep Purple
material-indigo-dark Indigo
material-deeppurple-dark' Deep Purple

DataTable Scroll

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

Vertical
NameCountryRepresentativeStatus
Rodrigues R SaylorsGermanyIvan Magalhaes RENEWAL
Ashley A MaletBrazilElwin Sharvill UNQUALIFIED
Costa I DoeIndiaStephen Shaw NEGOTIATION
Stacey Y WieserGermanyIvan Magalhaes NEGOTIATION
Salvatore O DarakjySpainBernardo Dominic RENEWAL
Nicolas P VenereFranceOnyama Limba RENEWAL
Murillo C PerinGermanyStephen Shaw RENEWAL
Jennifer Q PoquetteIndiaAnna Fali QUALIFIED
Francesco Z RulapaughAustraliaXuxue Feng UNQUALIFIED
Murillo U GarufiArgentinaAnna Fali PROPOSAL
Adams R FollerFranceAmy Elsner QUALIFIED
Antonio Q SaylorsFranceElwin Sharvill QUALIFIED
Jefferson R SergiItalyBernardo Dominic NEGOTIATION
Wickens M RulapaughIndiaAmy Elsner UNQUALIFIED
Kaitlin Y OstroskyIndiaXuxue Feng UNQUALIFIED
Morrow Z CaldareraArgentinaOnyama Limba NEGOTIATION
Silvio A KuskoUnited KingdomAmy Elsner QUALIFIED
Maria V FigeroaFranceStephen Shaw NEW
Ashley U DilliardJapanAsiya Javayant NEGOTIATION
Greenwood R NestleSpainXuxue Feng QUALIFIED
Ricardo G CaldareraAustraliaAsiya Javayant NEW
Kaitlin Z KuskoItalyIoni Bowcher NEGOTIATION
Antonio S RulapaughAustraliaXuxue Feng NEGOTIATION
Chavez V SaylorsFranceAnna Fali UNQUALIFIED
Ashley U FlosiItalyStephen Shaw NEGOTIATION
Jennifer Y GarufiUnited KingdomAsiya Javayant NEGOTIATION
Jennifer G RutaFranceOnyama Limba NEW
Julie R MacleadJapanAsiya Javayant UNQUALIFIED
Aditya C WieserBrazilElwin Sharvill PROPOSAL
Darci C ShinkoUnited KingdomAsiya Javayant QUALIFIED
Adams E PerinCanadaOnyama Limba PROPOSAL
Chavez K AmigonJapanBernardo Dominic NEGOTIATION
Faith Q PoquetteFranceElwin Sharvill RENEWAL
Ricardo W RutaGermanyElwin Sharvill UNQUALIFIED
Morrow C MaletJapanAsiya Javayant QUALIFIED
Jennifer P PaprockiCanadaAsiya Javayant RENEWAL
Costa Y PoquetteJapanIvan Magalhaes QUALIFIED
Octavia G BriddickJapanOnyama Limba UNQUALIFIED
Johnson W VenereRussiaStephen Shaw PROPOSAL
Darci Q StensethRussiaBernardo Dominic PROPOSAL
Jones E GarufiFranceAmy Elsner NEGOTIATION
Aruna G ButtItalyAmy Elsner UNQUALIFIED
Mujtaba K StensethRussiaIvan Magalhaes QUALIFIED
Juan T WieserUnited KingdomXuxue Feng PROPOSAL
Octavia X AlbaresFranceXuxue Feng NEGOTIATION
Wickens H RoysterAustraliaAmy Elsner PROPOSAL
Rodrigues V FollerUnited KingdomBernardo Dominic UNQUALIFIED
Claire X GauchoCanadaIoni Bowcher NEW
Salvatore E SergiJapanIvan Magalhaes NEW
Misaki L RoysterRussiaOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Alejandro I SchemmerJapanIvan Magalhaes RENEWAL
Jeanfrancois J VenereIndiaBernardo Dominic PROPOSAL
Mayumi O CaldareraItalyStephen Shaw NEW
Ivar P DilliardItalyElwin Sharvill RENEWAL
Stacey B OldroydJapanIvan Magalhaes RENEWAL
Adams R MorascaJapanOnyama Limba QUALIFIED
Murillo J FigeroaCanadaIvan Magalhaes PROPOSAL
Leon V MacleadUnited KingdomBernardo Dominic NEW
Stacey C PoquetteRussiaStephen Shaw RENEWAL
Deepesh R PaprockiArgentinaIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jeanfrancois G DarakjyRussia2026-07-02Chanay, Jeffrey A Esq NEGOTIATION15Xuxue Feng
1001Octavia C RulapaughJapan2026-07-12Chemel, James L Cpa NEW8Asiya Javayant
1002Maria K ChuiRussia2026-07-26Benton, John B Jr QUALIFIED2Bernardo Dominic
1003Jennifer E GauchoAustralia2026-07-17Feltz Printing Service UNQUALIFIED67Elwin Sharvill
1004Johnson O WieserIndia2026-07-14Chemel, James L Cpa RENEWAL18Asiya Javayant
1005Mayumi K SchemmerArgentina2026-07-27Chemel, James L Cpa RENEWAL60Elwin Sharvill
1006Clifford Q PerinAustralia2026-07-07Feiner Bros PROPOSAL8Ivan Magalhaes
1007Ivar N WieserCanada2026-07-12Benton, John B Jr UNQUALIFIED48Elwin Sharvill
1008Tony Q PaprockiArgentina2026-07-14Feltz Printing Service RENEWAL98Ivan Magalhaes
1009Costa A CaldareraJapan2026-07-10Feltz Printing Service RENEWAL2Ivan Magalhaes
1010Darci P StockhamJapan2026-07-03Chapman, Ross E Esq PROPOSAL99Anna Fali
1011Aruna Q WieserArgentina2026-07-24Feiner Bros UNQUALIFIED35Bernardo Dominic
1012Cody O DarakjyIndia2026-07-02Dorl, James J Esq UNQUALIFIED86Anna Fali
1013Octavia V AmigonUnited Kingdom2026-07-16Truhlar And Truhlar Attys NEW47Ioni Bowcher
1014Julie C WhobreyFrance2026-07-13King, Christopher A Esq QUALIFIED74Asiya Javayant
1015James W NickaIndia2026-07-01Feltz Printing Service NEW67Amy Elsner
1016Silvio Q OstroskyFrance2026-07-06Benton, John B Jr UNQUALIFIED47Ivan Magalhaes
1017Deepesh S MarrierRussia2026-07-18Truhlar And Truhlar Attys UNQUALIFIED4Ivan Magalhaes
1018Salvatore L FerenczFrance2026-07-24Printing Dimensions UNQUALIFIED79Amy Elsner
1019Deepesh X WaycottBrazil2026-07-09Morlong Associates NEW16Ivan Magalhaes
1020Murillo A MarrierIndia2026-07-14Truhlar And Truhlar Attys QUALIFIED59Anna Fali
1021Jefferson N MarrierRussia2026-07-18Commercial Press PROPOSAL95Onyama Limba
1022Jeanfrancois B FerenczItaly2026-07-18Rousseaux, Michael Esq PROPOSAL60Ivan Magalhaes
1023Emily E CaldareraIndia2026-07-10Rangoni Of Florence QUALIFIED85Bernardo Dominic
1024Rodrigues J KuskoIndia2026-07-06Chanay, Jeffrey A Esq RENEWAL39Xuxue Feng
1025Arvin R PaprockiGermany2026-07-21Printing Dimensions NEW73Xuxue Feng
1026Faith U FollerJapan2026-07-22Rangoni Of Florence QUALIFIED27Ioni Bowcher
1027Antonio O GillianFrance2026-07-11Dorl, James J Esq QUALIFIED20Ioni Bowcher
1028Ashley G ShinkoRussia2026-06-30Feltz Printing Service UNQUALIFIED35Onyama Limba
1029Ashley T SlusarskiIndia2026-07-15Chanay, Jeffrey A Esq QUALIFIED24Anna Fali
1030Tony B FlosiFrance2026-07-24Rangoni Of Florence QUALIFIED56Elwin Sharvill
1031Maria O FlosiRussia2026-07-15Dorl, James J Esq PROPOSAL28Xuxue Feng
1032Jefferson F FigeroaJapan2026-07-09Printing Dimensions PROPOSAL21Elwin Sharvill
1033Stacey S TollnerCanada2026-07-01Truhlar And Truhlar Attys UNQUALIFIED83Onyama Limba
1034Francesco J NickaItaly2026-07-09Feltz Printing Service PROPOSAL78Anna Fali
1035Clifford H StockhamUnited Kingdom2026-07-15Benton, John B Jr QUALIFIED28Stephen Shaw
1036Ricardo C GauchoGermany2026-07-21Chemel, James L Cpa PROPOSAL37Stephen Shaw
1037Wickens G ButtAustralia2026-07-12Morlong Associates UNQUALIFIED10Ioni Bowcher
1038Chavez T WaycottGermany2026-07-12Feiner Bros PROPOSAL1Xuxue Feng
1039Arvin C AmigonRussia2026-07-14Feltz Printing Service RENEWAL72Onyama Limba
1040Darci Q FollerFrance2026-07-21Truhlar And Truhlar Attys UNQUALIFIED88Asiya Javayant
1041Morrow Q BowleyIndia2026-07-28Morlong Associates NEGOTIATION88Ivan Magalhaes
1042Octavia L PerinRussia2026-07-16Morlong Associates NEW48Amy Elsner
1043Jeanfrancois T ChuiJapan2026-07-01King, Christopher A Esq PROPOSAL28Asiya Javayant
1044Isabel N RoysterBrazil2026-07-20Rousseaux, Michael Esq RENEWAL44Ioni Bowcher
1045Jones J DarakjyJapan2026-07-24King, Christopher A Esq PROPOSAL97Asiya Javayant
1046Salvatore O NestleCanada2026-06-30Feiner Bros QUALIFIED65Onyama Limba
1047Silvio V WaycottIndia2026-07-26Buckley Miller Wright PROPOSAL93Stephen Shaw
1048Kaitlin A MaletArgentina2026-06-30Buckley Miller Wright NEW36Ivan Magalhaes
1049Izzy W FollerSpain2026-07-17Truhlar And Truhlar Attys UNQUALIFIED35Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Aditya G IturbideIndiaStephen Shaw RENEWAL
Aditya Y VocelkaJapanIvan Magalhaes PROPOSAL
Costa S MaletJapanIvan Magalhaes PROPOSAL
Smith O WieserSpainXuxue Feng QUALIFIED
Costa D ButtArgentinaXuxue Feng UNQUALIFIED
Morrow I WieserIndiaStephen Shaw NEGOTIATION
Adams I FigeroaRussiaStephen Shaw NEW
Maria N GauchoUnited KingdomXuxue Feng PROPOSAL
Stacey X TollnerJapanBernardo Dominic RENEWAL
Leja P MorascaSpainXuxue Feng UNQUALIFIED
Jefferson K RulapaughUnited KingdomXuxue Feng RENEWAL
Jefferson G SergiUnited KingdomElwin Sharvill UNQUALIFIED
Jones Z AlbaresUnited KingdomAsiya Javayant NEW
James H TollnerFranceBernardo Dominic NEW
Kaitlin L ChuiUnited KingdomElwin Sharvill NEGOTIATION
Isabel L RutaJapanXuxue Feng UNQUALIFIED
Sinclair O ShinkoItalyAnna Fali PROPOSAL
Jones P FollerIndiaStephen Shaw UNQUALIFIED
Jones B ShinkoIndiaStephen Shaw UNQUALIFIED
Antonio Q MarrierIndiaOnyama Limba NEGOTIATION
Aditya D CampainUnited KingdomElwin Sharvill UNQUALIFIED
Kaitlin R CaudyAustraliaStephen Shaw QUALIFIED
Leon E GarufiUnited KingdomIvan Magalhaes PROPOSAL
Cody Z SchemmerJapanOnyama Limba QUALIFIED
Jennifer N IturbideAustraliaIvan Magalhaes RENEWAL
Costa V TollnerUnited KingdomAsiya Javayant UNQUALIFIED
Jones H RoysterUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois Z PaprockiRussiaAmy Elsner RENEWAL
Kaitlin A MarrierFranceElwin Sharvill NEGOTIATION
Rodrigues O NickaGermanyAnna Fali PROPOSAL
Jones D AlbaresUnited KingdomAnna Fali NEGOTIATION
Stacey V DarakjyCanadaElwin Sharvill UNQUALIFIED
Rodrigues I MacleadSpainXuxue Feng PROPOSAL
Ashley G WieserGermanyIoni Bowcher QUALIFIED
Wickens U NickaRussiaStephen Shaw QUALIFIED
Salvatore C MarrierRussiaIvan Magalhaes QUALIFIED
Antonio S RimItalyIoni Bowcher UNQUALIFIED
Arvin X PoquetteUnited KingdomStephen Shaw NEGOTIATION
Mujtaba X RulapaughItalyStephen Shaw QUALIFIED
Jones K ChuiCanadaStephen Shaw QUALIFIED
David J InouyeAustraliaAmy Elsner RENEWAL
Rodrigues T MacleadBrazilXuxue Feng RENEWAL
Adams P BriddickAustraliaIoni Bowcher QUALIFIED
Arvin H SlusarskiAustraliaOnyama Limba NEGOTIATION
Jeanfrancois Q FlosiItalyOnyama Limba RENEWAL
Greenwood Z WaycottArgentinaOnyama Limba QUALIFIED
Salvatore T NickaIndiaAsiya Javayant PROPOSAL
Ashley R AmigonItalyStephen Shaw NEW
Maria H MaletIndiaAsiya Javayant PROPOSAL
Aika V AmigonSpainXuxue Feng PROPOSAL
Frozen Columns
Name
Ivar E Morasca
Adams V Kolmetz
Smith X Marrier
Ashley U Bolognia
Kaitlin C Perin
Salvatore A Gillian
Chavez R Gillian
Wickens Y Maclead
Octavia M Campain
Kaitlin U Darakjy
Julie O Kusko
Arvin M Kolmetz
Jeanfrancois P Maclead
David U Nicka
Alejandro C Royster
Murillo I Bowley
Clifford U Briddick
Maisha D Wieser
Isabel P Campain
Aruna K Gillian
Leja S Morasca
Aika K Saylors
Maisha A Ferencz
Stacey Q Gillian
Maria L Garufi
Morrow Y Kusko
Cody E Darakjy
Munro U Bowley
Clifford T Sergi
James I Kolmetz
Leja P Rulapaugh
Jefferson M Inouye
Wickens Y Briddick
Smith I Iturbide
Costa V Schemmer
Stacey E Amigon
David I Glick
Adams O Inouye
Mujtaba E Chui
Costa S Morasca
Ashley H Caldarera
James B Sergi
Aditya X Poquette
Nicolas V Malet
Maisha V Chui
Chavez W Campain
Antonio J Maclead
Cody F Foller
Francesco T Dilliard
Kaitlin B Royster
IdCountryDate
1000Japan2026-07-26
1001India2026-07-06
1002Japan2026-07-13
1003Japan2026-07-09
1004Brazil2026-07-21
1005Australia2026-07-05
1006Germany2026-07-19
1007Argentina2026-07-24
1008Australia2026-07-18
1009Germany2026-07-20
1010Canada2026-07-05
1011Canada2026-07-12
1012Canada2026-07-16
1013United Kingdom2026-07-28
1014Spain2026-07-09
1015United Kingdom2026-07-27
1016India2026-07-06
1017Russia2026-07-23
1018Canada2026-07-06
1019Spain2026-07-11
1020Australia2026-07-24
1021Japan2026-07-13
1022France2026-07-06
1023Canada2026-07-23
1024Spain2026-07-10
1025Argentina2026-07-27
1026Russia2026-07-01
1027Germany2026-07-13
1028Italy2026-07-23
1029France2026-07-24
1030Italy2026-06-30
1031Spain2026-07-05
1032Argentina2026-07-28
1033Argentina2026-07-14
1034France2026-07-21
1035Brazil2026-07-08
1036Brazil2026-07-09
1037Germany2026-07-17
1038Japan2026-07-25
1039Spain2026-07-25
1040Japan2026-07-20
1041India2026-07-17
1042Japan2026-06-30
1043Canada2026-07-01
1044Spain2026-07-05
1045Spain2026-07-06
1046Canada2026-06-30
1047Brazil2026-07-24
1048Brazil2026-07-06
1049France2026-07-09

On-Demand Data

NameIdCountryDate
Adams C Garufi1000Australia2026-07-13
Aruna S Nicka1001India2026-07-05
Maisha D Stockham1002United Kingdom2026-07-07
Munro T Dilliard1003Australia2026-07-09
Morrow R Ostrosky1004Spain2026-07-25
Maisha X Flosi1005Brazil2026-07-25
Munro P Wieser1006India2026-07-24
David V Wieser1007Australia2026-07-12
Rodrigues X Stenseth1008Australia2026-07-21
Mujtaba Y Kolmetz1009Spain2026-07-01
Aika D Saylors1010Japan2026-07-07
Maisha K Campain1011Australia2026-07-20
Jones J Iturbide1012Canada2026-06-30
Aika S Caldarera1013Germany2026-07-24
Misaki I Waycott1014Spain2026-07-23
Claire X Doe1015Australia2026-07-04
Darci Q Poquette1016India2026-07-25
Leja K Malet1017Russia2026-07-23
Darci W Doe1018United Kingdom2026-07-07
Tony T Poquette1019United Kingdom2026-07-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa X GauchoArgentinaElwin Sharvill QUALIFIED
Adams O GarufiSpainXuxue Feng UNQUALIFIED
Juan E NickaFranceBernardo Dominic RENEWAL
Ashley Z KolmetzJapanAnna Fali UNQUALIFIED
Isabel L VocelkaSpainAmy Elsner QUALIFIED
Salvatore Y NestleItalyAmy Elsner PROPOSAL
Antonio M TollnerGermanyBernardo Dominic NEW
Izzy K GillianArgentinaBernardo Dominic NEGOTIATION
Julie M WaycottFranceElwin Sharvill NEGOTIATION
Chavez D VenereGermanyIvan Magalhaes UNQUALIFIED
Tony X RulapaughSpainXuxue Feng NEGOTIATION
Isabel U CaldareraIndiaAnna Fali NEGOTIATION
Maria Z ChuiAustraliaAmy Elsner NEGOTIATION
Antonio Z NestleBrazilIvan Magalhaes RENEWAL
Mujtaba F DilliardJapanIvan Magalhaes NEW
Silvio S SchemmerSpainOnyama Limba NEGOTIATION
Adams E PaprockiRussiaAnna Fali RENEWAL
Antonio O VenereFranceAmy Elsner NEGOTIATION
Leja P SlusarskiItalyStephen Shaw UNQUALIFIED
Wickens Q PerinSpainStephen Shaw NEGOTIATION
Deepesh W PerinIndiaOnyama Limba UNQUALIFIED
Costa B WhobreyRussiaAmy Elsner PROPOSAL
Alejandro X AlbaresJapanAsiya Javayant RENEWAL
Leja D RutaIndiaAsiya Javayant UNQUALIFIED
Aika M RulapaughGermanyAnna Fali QUALIFIED
Jennifer D ShinkoFranceElwin Sharvill NEW
Deepesh J AlbaresGermanyOnyama Limba NEGOTIATION
Jeanfrancois O RutaBrazilXuxue Feng RENEWAL
Aditya C IturbideAustraliaElwin Sharvill RENEWAL
Rodrigues H GillianFranceIvan Magalhaes NEW
Jefferson E OstroskyUnited KingdomBernardo Dominic QUALIFIED
Kaitlin U WieserAustraliaOnyama Limba NEGOTIATION
Stacey X TollnerJapanIvan Magalhaes RENEWAL
Johnson E FollerAustraliaStephen Shaw UNQUALIFIED
Adams F AlbaresIndiaIoni Bowcher NEW
Darci Z RoysterBrazilXuxue Feng NEW
Maisha X ButtFranceBernardo Dominic NEW
Morrow L OstroskyItalyAnna Fali QUALIFIED
Adams W FollerFranceIvan Magalhaes NEGOTIATION
Greenwood S WaycottArgentinaIvan Magalhaes 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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{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.name().toLowerCase()}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>