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
James N DoeCanadaAmy Elsner QUALIFIED
Cody F RimBrazilOnyama Limba UNQUALIFIED
Munro Z WieserUnited KingdomAsiya Javayant UNQUALIFIED
Adams W ChuiGermanyStephen Shaw PROPOSAL
Arvin L DoeAustraliaAmy Elsner NEW
Ashley Y VocelkaBrazilAmy Elsner UNQUALIFIED
Rodrigues X CaldareraIndiaIoni Bowcher NEGOTIATION
Isabel O ShinkoUnited KingdomOnyama Limba NEGOTIATION
Murillo X MacleadUnited KingdomAmy Elsner PROPOSAL
Kadeem F PerinCanadaAnna Fali PROPOSAL
Sinclair E WhobreyCanadaXuxue Feng QUALIFIED
Greenwood Q MarrierItalyAmy Elsner NEW
Maria O WieserGermanyXuxue Feng UNQUALIFIED
Rodrigues J KuskoIndiaStephen Shaw NEGOTIATION
Juan I AmigonItalyBernardo Dominic NEGOTIATION
Greenwood U ShinkoAustraliaOnyama Limba UNQUALIFIED
Leon D VenereArgentinaElwin Sharvill NEW
Smith R PaprockiUnited KingdomAmy Elsner PROPOSAL
Salvatore F DarakjyItalyAsiya Javayant UNQUALIFIED
Izzy W AlbaresAustraliaAsiya Javayant PROPOSAL
Clifford T SlusarskiArgentinaAnna Fali PROPOSAL
Antonio U BowleyRussiaAmy Elsner NEGOTIATION
Maria S StockhamUnited KingdomAnna Fali UNQUALIFIED
Silvio Z DarakjyBrazilAsiya Javayant RENEWAL
Sinclair W GauchoArgentinaAmy Elsner QUALIFIED
Jefferson Z PerinItalyIoni Bowcher NEW
Faith B MaletGermanyIoni Bowcher NEW
Jones V WaycottSpainAmy Elsner NEW
Leja Y MaletAustraliaAnna Fali QUALIFIED
Jones H OstroskyFranceXuxue Feng RENEWAL
Adams G SlusarskiJapanBernardo Dominic PROPOSAL
Nicolas I GillianUnited KingdomBernardo Dominic QUALIFIED
Arvin X SchemmerIndiaElwin Sharvill PROPOSAL
Cody J KolmetzBrazilStephen Shaw NEW
Aditya U StockhamUnited KingdomOnyama Limba RENEWAL
Ashley P CaudySpainElwin Sharvill RENEWAL
Jefferson U DilliardBrazilAnna Fali QUALIFIED
Misaki F ChuiAustraliaBernardo Dominic UNQUALIFIED
Mayumi P ChuiArgentinaIoni Bowcher PROPOSAL
Isabel Y RoysterArgentinaStephen Shaw UNQUALIFIED
Claire X MaletBrazilBernardo Dominic QUALIFIED
Aruna S BriddickItalyElwin Sharvill NEGOTIATION
Mayumi R PaprockiJapanBernardo Dominic QUALIFIED
Wickens W FigeroaRussiaStephen Shaw NEGOTIATION
Isabel V SlusarskiSpainStephen Shaw UNQUALIFIED
Leja X BologniaRussiaAsiya Javayant NEW
Antonio G SlusarskiFranceAmy Elsner NEW
Francesco P RulapaughArgentinaIvan Magalhaes NEGOTIATION
Izzy G WieserJapanBernardo Dominic QUALIFIED
Mayumi K RulapaughCanadaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar C SergiIndiaIoni Bowcher NEGOTIATION
Rodrigues I SaylorsRussiaAnna Fali RENEWAL
Rodrigues A CaldareraBrazilAmy Elsner NEW
Leon N CaldareraBrazilAnna Fali RENEWAL
Cody O PerinUnited KingdomBernardo Dominic RENEWAL
Ricardo X MaletGermanyIvan Magalhaes NEGOTIATION
Octavia Q StensethIndiaStephen Shaw UNQUALIFIED
Kaitlin A RutaItalyIvan Magalhaes RENEWAL
Aruna H CampainSpainIoni Bowcher QUALIFIED
Costa O BowleyUnited KingdomIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar P OldroydCanada2026-08-31Commercial Press RENEWAL87Amy Elsner
1001Jones Z MacleadUnited Kingdom2026-08-26King, Christopher A Esq QUALIFIED49Stephen Shaw
1002Misaki Y CampainIndia2026-08-20Rousseaux, Michael Esq NEGOTIATION28Amy Elsner
1003Jefferson W DilliardFrance2026-08-30Morlong Associates NEGOTIATION85Asiya Javayant
1004Leon A RulapaughUnited Kingdom2026-08-05Rousseaux, Michael Esq QUALIFIED32Amy Elsner
1005Jeanfrancois C VenereSpain2026-08-30Chanay, Jeffrey A Esq UNQUALIFIED37Xuxue Feng
1006Isabel Y SergiItaly2026-08-20Buckley Miller Wright PROPOSAL70Asiya Javayant
1007Jefferson L PaprockiCanada2026-08-17Rousseaux, Michael Esq QUALIFIED37Elwin Sharvill
1008Tony C SaylorsAustralia2026-09-01Chanay, Jeffrey A Esq UNQUALIFIED53Ivan Magalhaes
1009Salvatore I StockhamRussia2026-08-17Feiner Bros UNQUALIFIED1Amy Elsner
1010Jefferson P VocelkaBrazil2026-08-09Chanay, Jeffrey A Esq NEW15Asiya Javayant
1011Jennifer N WieserArgentina2026-08-21Feltz Printing Service NEW13Onyama Limba
1012Cody Q SaylorsJapan2026-08-24Dorl, James J Esq RENEWAL32Ivan Magalhaes
1013Kaitlin S RutaBrazil2026-08-25Benton, John B Jr NEW13Anna Fali
1014Clifford W MaletRussia2026-08-30Truhlar And Truhlar Attys RENEWAL25Anna Fali
1015Mujtaba S PaprockiBrazil2026-08-19Printing Dimensions RENEWAL79Ivan Magalhaes
1016Alejandro W RulapaughBrazil2026-08-15Truhlar And Truhlar Attys NEGOTIATION57Anna Fali
1017Stacey X OldroydRussia2026-08-08Feiner Bros UNQUALIFIED43Asiya Javayant
1018Mujtaba N DoeUnited Kingdom2026-08-16Commercial Press QUALIFIED36Elwin Sharvill
1019Salvatore Q GillianSpain2026-08-22Truhlar And Truhlar Attys NEW30Ioni Bowcher
1020Aika U KuskoJapan2026-08-24Truhlar And Truhlar Attys NEGOTIATION40Elwin Sharvill
1021Adams D TollnerItaly2026-08-17Commercial Press NEGOTIATION34Ivan Magalhaes
1022Mujtaba J NickaAustralia2026-09-01Feltz Printing Service UNQUALIFIED77Elwin Sharvill
1023Antonio L RoysterRussia2026-08-30Chemel, James L Cpa NEGOTIATION21Amy Elsner
1024David C FerenczFrance2026-08-18Benton, John B Jr RENEWAL99Stephen Shaw
1025Silvio A VocelkaItaly2026-08-27Feiner Bros RENEWAL32Ivan Magalhaes
1026Adams I BowleyArgentina2026-08-09Feltz Printing Service NEW55Asiya Javayant
1027Stacey E BowleyAustralia2026-08-04Truhlar And Truhlar Attys QUALIFIED41Xuxue Feng
1028Johnson W KuskoIndia2026-08-26Chanay, Jeffrey A Esq RENEWAL42Onyama Limba
1029Silvio L WieserAustralia2026-08-16Dorl, James J Esq NEGOTIATION96Stephen Shaw
1030Darci Y PaprockiGermany2026-08-04Feiner Bros NEGOTIATION87Anna Fali
1031Francesco U SlusarskiBrazil2026-08-14Buckley Miller Wright QUALIFIED49Xuxue Feng
1032Leja Q ButtAustralia2026-08-14Commercial Press PROPOSAL93Onyama Limba
1033Maisha T PoquetteGermany2026-08-12Chemel, James L Cpa QUALIFIED55Asiya Javayant
1034Ricardo C FigeroaGermany2026-08-15Feiner Bros PROPOSAL60Elwin Sharvill
1035Julie J CaudyFrance2026-08-10King, Christopher A Esq NEW52Onyama Limba
1036Maisha B StockhamRussia2026-08-04Commercial Press QUALIFIED41Elwin Sharvill
1037Kadeem O PaprockiSpain2026-08-15Chapman, Ross E Esq QUALIFIED89Ioni Bowcher
1038Jeanfrancois R StensethArgentina2026-09-01King, Christopher A Esq QUALIFIED78Asiya Javayant
1039Claire E ShinkoCanada2026-08-12Chemel, James L Cpa NEGOTIATION52Ioni Bowcher
1040Aruna Y GauchoUnited Kingdom2026-08-05Chapman, Ross E Esq UNQUALIFIED86Elwin Sharvill
1041Kadeem H PaprockiJapan2026-08-18Chemel, James L Cpa NEW50Amy Elsner
1042Clifford J CaudyCanada2026-08-12Chapman, Ross E Esq NEGOTIATION69Xuxue Feng
1043Julie M RoysterFrance2026-08-26Printing Dimensions NEGOTIATION92Onyama Limba
1044Sinclair D AmigonArgentina2026-08-03Buckley Miller Wright PROPOSAL89Ivan Magalhaes
1045Tony C BriddickItaly2026-08-08Chemel, James L Cpa RENEWAL4Bernardo Dominic
1046Octavia S AmigonAustralia2026-08-16Dorl, James J Esq NEGOTIATION39Onyama Limba
1047Maria A PerinJapan2026-08-19Chanay, Jeffrey A Esq NEGOTIATION29Anna Fali
1048Jeanfrancois M SergiJapan2026-08-25Dorl, James J Esq RENEWAL97Bernardo Dominic
1049Johnson O WhobreyAustralia2026-08-31Morlong Associates NEGOTIATION54Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Antonio N VenereItalyElwin Sharvill UNQUALIFIED
Izzy R PaprockiRussiaBernardo Dominic RENEWAL
Deepesh K DilliardGermanyAsiya Javayant PROPOSAL
Antonio Q RutaIndiaOnyama Limba PROPOSAL
Claire L BriddickAustraliaOnyama Limba UNQUALIFIED
Francesco A CampainCanadaAsiya Javayant RENEWAL
David Y PaprockiGermanyAmy Elsner NEGOTIATION
Ashley D DarakjyItalyXuxue Feng NEW
Wickens T StockhamItalyAnna Fali NEGOTIATION
Antonio P AlbaresSpainAsiya Javayant NEW
David Y SchemmerAustraliaXuxue Feng UNQUALIFIED
Leon I FollerSpainStephen Shaw NEGOTIATION
Jennifer O NestleUnited KingdomIoni Bowcher QUALIFIED
Claire J DoeFranceAmy Elsner NEW
Faith D CaldareraUnited KingdomOnyama Limba UNQUALIFIED
Cody U GlickFranceAmy Elsner NEGOTIATION
James P OstroskyRussiaAsiya Javayant RENEWAL
Ashley M OldroydUnited KingdomAsiya Javayant UNQUALIFIED
Maria U BriddickFranceIvan Magalhaes RENEWAL
Emily Z SchemmerRussiaStephen Shaw QUALIFIED
David P FerenczGermanyAmy Elsner QUALIFIED
Maisha S StockhamGermanyXuxue Feng NEGOTIATION
Arvin A PoquetteIndiaXuxue Feng UNQUALIFIED
Isabel N ChuiIndiaIvan Magalhaes PROPOSAL
Tony Q VocelkaItalyXuxue Feng NEGOTIATION
Emily O InouyeCanadaElwin Sharvill NEW
Morrow W FerenczJapanXuxue Feng NEW
Francesco S OldroydArgentinaElwin Sharvill RENEWAL
Octavia F BriddickArgentinaStephen Shaw NEGOTIATION
Ricardo B BowleyIndiaAmy Elsner UNQUALIFIED
Silvio B InouyeSpainAnna Fali NEGOTIATION
Ashley Z BologniaGermanyAsiya Javayant NEGOTIATION
Jones U DarakjyCanadaIoni Bowcher UNQUALIFIED
Jeanfrancois P GillianArgentinaBernardo Dominic UNQUALIFIED
Antonio J MaletGermanyStephen Shaw UNQUALIFIED
Faith N PaprockiArgentinaIvan Magalhaes NEGOTIATION
Mayumi O BowleyBrazilIoni Bowcher NEGOTIATION
Munro U GauchoAustraliaOnyama Limba QUALIFIED
Leon O RimBrazilXuxue Feng QUALIFIED
Leja N MaletIndiaAsiya Javayant NEW
Alejandro M PaprockiUnited KingdomAsiya Javayant PROPOSAL
Darci J SchemmerCanadaIoni Bowcher QUALIFIED
Kadeem A DoeJapanIvan Magalhaes NEGOTIATION
Emily B RimIndiaAmy Elsner RENEWAL
Nicolas Q SlusarskiFranceIoni Bowcher RENEWAL
Claire V PoquetteSpainAmy Elsner NEGOTIATION
Costa M PerinCanadaAsiya Javayant UNQUALIFIED
Tony Y CaldareraUnited KingdomIvan Magalhaes NEGOTIATION
Aika I RulapaughArgentinaBernardo Dominic NEGOTIATION
Kaitlin F MaletArgentinaXuxue Feng PROPOSAL
Frozen Columns
Name
Salvatore G Albares
Kaitlin G Stenseth
Ashley O Rulapaugh
Claire W Perin
James U Ferencz
Aditya U Slusarski
Misaki U Iturbide
Leja F Vocelka
Izzy N Garufi
Ricardo S Kusko
Arvin M Butt
Mujtaba W Paprocki
Salvatore T Albares
Antonio N Whobrey
Nicolas V Bowley
Ivar E Figeroa
James H Sergi
Smith M Darakjy
Misaki R Stenseth
Chavez D Tollner
James A Glick
David R Gillian
Jefferson N Kolmetz
Darci U Wieser
Antonio V Schemmer
Leon E Shinko
Ivar O Kolmetz
Smith H Saylors
Jones C Kolmetz
Faith R Whobrey
Munro J Nicka
Alejandro A Dilliard
Chavez R Doe
Adams M Ostrosky
Maisha E Tollner
Francesco J Ostrosky
Chavez Y Iturbide
Costa W Poquette
Maria N Bolognia
Francesco D Whobrey
Maria Q Butt
Adams V Bolognia
Misaki U Dilliard
Clifford O Darakjy
Wickens L Vocelka
Deepesh Q Ostrosky
Costa L Inouye
Mayumi A Inouye
Faith O Amigon
Stacey J Dilliard
IdCountryDate
1000Germany2026-08-06
1001United Kingdom2026-08-11
1002Japan2026-08-12
1003Japan2026-08-30
1004Russia2026-08-09
1005Brazil2026-08-13
1006Italy2026-08-08
1007Brazil2026-09-01
1008Russia2026-08-17
1009Canada2026-08-23
1010Japan2026-08-03
1011Australia2026-08-25
1012Germany2026-08-09
1013Brazil2026-08-27
1014United Kingdom2026-08-10
1015Japan2026-08-17
1016Italy2026-09-01
1017France2026-08-13
1018United Kingdom2026-08-06
1019Canada2026-08-10
1020Spain2026-08-26
1021Argentina2026-09-01
1022Spain2026-08-15
1023Japan2026-08-26
1024Russia2026-08-11
1025Italy2026-08-11
1026France2026-08-30
1027Spain2026-09-01
1028Canada2026-08-07
1029Brazil2026-08-18
1030India2026-08-07
1031Spain2026-08-03
1032France2026-08-22
1033Russia2026-08-13
1034United Kingdom2026-08-09
1035Italy2026-08-10
1036Brazil2026-08-23
1037Japan2026-08-18
1038Argentina2026-08-18
1039India2026-08-04
1040Japan2026-08-13
1041Germany2026-08-31
1042Canada2026-08-12
1043Australia2026-08-18
1044Argentina2026-08-12
1045Australia2026-09-01
1046India2026-08-26
1047United Kingdom2026-08-15
1048Germany2026-08-15
1049Russia2026-08-13

On-Demand Data

NameIdCountryDate
Chavez P Dilliard1000France2026-08-05
Salvatore T Caldarera1001Canada2026-08-25
Jennifer M Morasca1002Canada2026-08-18
Munro B Rulapaugh1003Germany2026-08-04
Johnson J Sergi1004Russia2026-08-10
Maisha V Venere1005United Kingdom2026-08-18
Johnson P Iturbide1006France2026-08-14
Murillo N Inouye1007France2026-08-15
Maria A Poquette1008France2026-08-07
Nicolas K Caldarera1009Italy2026-08-10
Darci O Ruta1010India2026-08-27
Mujtaba J Kusko1011Japan2026-08-11
Clifford L Darakjy1012Australia2026-08-11
Stacey A Ruta1013Italy2026-08-13
Claire J Dilliard1014Russia2026-08-17
Murillo U Slusarski1015Brazil2026-08-09
Julie A Maclead1016Argentina2026-08-24
Stacey G Amigon1017Italy2026-08-26
Julie V Schemmer1018Japan2026-08-27
Arvin M Butt1019Argentina2026-08-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley A FollerSpainAnna Fali NEW
Mayumi Z NestleBrazilAnna Fali NEGOTIATION
Ashley H GillianItalyOnyama Limba QUALIFIED
Alejandro K RoysterUnited KingdomStephen Shaw RENEWAL
Munro R DoeRussiaIvan Magalhaes PROPOSAL
Darci P DoeBrazilIoni Bowcher NEW
Ivar U FollerItalyElwin Sharvill NEGOTIATION
James R StockhamFranceAmy Elsner QUALIFIED
Mujtaba U PerinGermanyAmy Elsner UNQUALIFIED
Ashley U SchemmerSpainStephen Shaw PROPOSAL
Alejandro P AlbaresGermanyBernardo Dominic PROPOSAL
David L MaletArgentinaOnyama Limba NEW
Aruna Y KolmetzSpainBernardo Dominic NEGOTIATION
Mujtaba R RimBrazilStephen Shaw UNQUALIFIED
Claire N GillianGermanyIvan Magalhaes NEGOTIATION
Arvin H RoysterIndiaStephen Shaw RENEWAL
Claire S FlosiJapanIoni Bowcher RENEWAL
Munro C InouyeItalyElwin Sharvill RENEWAL
Johnson V SaylorsItalyIoni Bowcher UNQUALIFIED
Cody Z KuskoUnited KingdomXuxue Feng PROPOSAL
Deepesh Y MaletGermanyIvan Magalhaes NEGOTIATION
Maisha N MarrierJapanXuxue Feng QUALIFIED
Leja I ButtArgentinaStephen Shaw NEGOTIATION
Silvio K DarakjySpainIvan Magalhaes UNQUALIFIED
Alejandro T GillianFranceAnna Fali PROPOSAL
Salvatore L PaprockiRussiaAnna Fali NEGOTIATION
Munro O GlickJapanStephen Shaw PROPOSAL
Ashley Z RulapaughGermanyAnna Fali NEW
Greenwood W BologniaBrazilElwin Sharvill QUALIFIED
Silvio H MaletUnited KingdomXuxue Feng PROPOSAL
Cody S CaldareraFranceAsiya Javayant NEGOTIATION
Greenwood V SergiBrazilAmy Elsner PROPOSAL
Kaitlin Q CaldareraAustraliaBernardo Dominic UNQUALIFIED
Wickens O GlickArgentinaIoni Bowcher PROPOSAL
Stacey W IturbideItalyStephen Shaw NEGOTIATION
Murillo L GauchoArgentinaXuxue Feng RENEWAL
Aika P InouyeSpainAsiya Javayant NEGOTIATION
Kaitlin Q CaldareraIndiaXuxue Feng QUALIFIED
Kadeem G TollnerAustraliaIoni Bowcher NEW
Ivar T OldroydRussiaIoni Bowcher PROPOSAL

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