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
Antonio S PoquetteBrazilStephen Shaw RENEWAL
Munro T PerinSpainAnna Fali QUALIFIED
Murillo X BriddickJapanAnna Fali NEGOTIATION
Munro L VenereIndiaXuxue Feng RENEWAL
Arvin F BriddickSpainAmy Elsner QUALIFIED
Ashley Y BriddickSpainAsiya Javayant NEGOTIATION
Deepesh J BriddickCanadaOnyama Limba QUALIFIED
Munro N MarrierFranceIvan Magalhaes NEW
Juan B SaylorsArgentinaElwin Sharvill RENEWAL
Isabel U MarrierBrazilOnyama Limba RENEWAL
Chavez V VocelkaBrazilXuxue Feng RENEWAL
Tony I KuskoGermanyAsiya Javayant NEGOTIATION
Faith W BriddickAustraliaIvan Magalhaes UNQUALIFIED
Claire B BowleyFranceAsiya Javayant NEGOTIATION
Ashley C WaycottSpainElwin Sharvill NEGOTIATION
Leja J ButtGermanyStephen Shaw QUALIFIED
Maria Z DoeItalyIoni Bowcher UNQUALIFIED
James K WieserBrazilXuxue Feng NEGOTIATION
Jones F PoquetteFranceOnyama Limba UNQUALIFIED
Tony C SchemmerAustraliaAnna Fali NEGOTIATION
Leon W WaycottArgentinaOnyama Limba UNQUALIFIED
Rodrigues M DilliardBrazilAmy Elsner PROPOSAL
Isabel G MaletAustraliaOnyama Limba QUALIFIED
Leon N BowleyRussiaAmy Elsner QUALIFIED
Antonio M CaudyItalyAsiya Javayant PROPOSAL
Julie Q GarufiAustraliaAsiya Javayant RENEWAL
Claire U WieserGermanyBernardo Dominic NEW
Munro A MaletCanadaBernardo Dominic PROPOSAL
Misaki V SergiItalyAsiya Javayant PROPOSAL
Jennifer N WaycottSpainAsiya Javayant RENEWAL
Maria V WhobreyArgentinaAsiya Javayant RENEWAL
Nicolas E BowleyGermanyAsiya Javayant NEGOTIATION
Wickens H PerinRussiaAsiya Javayant PROPOSAL
Juan N GauchoGermanyXuxue Feng PROPOSAL
David F RoysterFranceStephen Shaw PROPOSAL
Nicolas Z OstroskyAustraliaXuxue Feng NEGOTIATION
Stacey R IturbideArgentinaStephen Shaw PROPOSAL
Costa H SergiCanadaAmy Elsner QUALIFIED
Aditya K NickaAustraliaStephen Shaw QUALIFIED
Izzy G KuskoCanadaAmy Elsner UNQUALIFIED
James I CaldareraSpainBernardo Dominic NEGOTIATION
Rodrigues W InouyeSpainOnyama Limba NEGOTIATION
Salvatore G KuskoGermanyOnyama Limba PROPOSAL
Alejandro Y DarakjyFranceAmy Elsner RENEWAL
Adams O BowleyGermanyAsiya Javayant UNQUALIFIED
Aditya I CaldareraIndiaAmy Elsner QUALIFIED
Faith F WhobreyRussiaElwin Sharvill QUALIFIED
Arvin Z PoquetteItalyStephen Shaw UNQUALIFIED
Smith V CaudyCanadaIvan Magalhaes PROPOSAL
Rodrigues O BriddickJapanBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Salvatore F WieserIndiaXuxue Feng NEW
Jones R GauchoGermanyIvan Magalhaes PROPOSAL
James X CaudyUnited KingdomStephen Shaw RENEWAL
Jefferson X BologniaFranceBernardo Dominic QUALIFIED
Morrow J CampainRussiaBernardo Dominic NEW
Greenwood Q AlbaresGermanyIvan Magalhaes UNQUALIFIED
Aruna E WaycottItalyStephen Shaw RENEWAL
Leon B BowleyJapanXuxue Feng PROPOSAL
Arvin V GauchoRussiaAsiya Javayant NEW
Julie H WhobreyAustraliaBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel R FollerJapan2026-07-21Benton, John B Jr QUALIFIED92Ioni Bowcher
1001Leja E BowleyGermany2026-07-01Truhlar And Truhlar Attys NEW51Ivan Magalhaes
1002Alejandro K PerinSpain2026-07-01Truhlar And Truhlar Attys PROPOSAL49Asiya Javayant
1003Faith J NestleArgentina2026-06-27Chanay, Jeffrey A Esq UNQUALIFIED17Xuxue Feng
1004Mujtaba S SlusarskiRussia2026-07-18Printing Dimensions NEGOTIATION67Onyama Limba
1005Ivar Z VocelkaRussia2026-07-01Chanay, Jeffrey A Esq QUALIFIED68Amy Elsner
1006Smith V MaletRussia2026-07-07Dorl, James J Esq NEW92Onyama Limba
1007Rodrigues U ShinkoCanada2026-07-04Truhlar And Truhlar Attys QUALIFIED22Amy Elsner
1008Aruna L WieserIndia2026-07-06Morlong Associates NEGOTIATION11Xuxue Feng
1009Rodrigues M MarrierJapan2026-07-20King, Christopher A Esq PROPOSAL61Stephen Shaw
1010Greenwood A StockhamGermany2026-07-09Benton, John B Jr UNQUALIFIED60Xuxue Feng
1011Alejandro K AmigonGermany2026-06-27Rousseaux, Michael Esq NEW79Amy Elsner
1012Johnson O RimGermany2026-07-03Dorl, James J Esq NEGOTIATION12Anna Fali
1013Izzy Q AlbaresIndia2026-06-25Rousseaux, Michael Esq NEGOTIATION45Anna Fali
1014Ricardo B RulapaughSpain2026-07-07Rangoni Of Florence UNQUALIFIED5Xuxue Feng
1015Morrow B OldroydArgentina2026-07-22Morlong Associates NEGOTIATION23Amy Elsner
1016Nicolas R CaldareraGermany2026-07-06King, Christopher A Esq NEGOTIATION7Ioni Bowcher
1017Salvatore U PoquetteSpain2026-07-03Rousseaux, Michael Esq NEW57Asiya Javayant
1018Smith L GauchoRussia2026-07-23Rangoni Of Florence PROPOSAL19Ivan Magalhaes
1019Alejandro M WieserSpain2026-07-13Truhlar And Truhlar Attys NEGOTIATION11Xuxue Feng
1020Silvio J BriddickFrance2026-07-07Printing Dimensions NEGOTIATION53Amy Elsner
1021Stacey M MorascaItaly2026-07-10Printing Dimensions RENEWAL21Xuxue Feng
1022Stacey I CampainJapan2026-07-08Chemel, James L Cpa NEGOTIATION64Ioni Bowcher
1023Costa G AlbaresSpain2026-07-06Rangoni Of Florence QUALIFIED72Ivan Magalhaes
1024Aika O OstroskyGermany2026-07-10Printing Dimensions RENEWAL26Onyama Limba
1025Alejandro O RulapaughIndia2026-07-13Rousseaux, Michael Esq NEW80Ioni Bowcher
1026Johnson D InouyeIndia2026-07-23Truhlar And Truhlar Attys RENEWAL77Bernardo Dominic
1027Ashley E MarrierArgentina2026-07-03Feiner Bros QUALIFIED76Anna Fali
1028Izzy N SaylorsRussia2026-06-27Rangoni Of Florence NEGOTIATION21Bernardo Dominic
1029Francesco D OldroydGermany2026-07-20Morlong Associates NEGOTIATION7Ioni Bowcher
1030Faith R DilliardSpain2026-06-30Chemel, James L Cpa NEW36Stephen Shaw
1031Smith Z MacleadIndia2026-07-12King, Christopher A Esq RENEWAL15Xuxue Feng
1032Maisha S CaudyJapan2026-06-30Chapman, Ross E Esq UNQUALIFIED25Anna Fali
1033Stacey I SaylorsSpain2026-07-24Dorl, James J Esq NEW62Asiya Javayant
1034Claire R ButtFrance2026-06-29Chemel, James L Cpa PROPOSAL80Stephen Shaw
1035Aruna L PoquetteRussia2026-07-03Buckley Miller Wright PROPOSAL7Bernardo Dominic
1036Octavia E PerinBrazil2026-07-20Rangoni Of Florence NEGOTIATION10Anna Fali
1037Isabel F MaletRussia2026-06-29Rousseaux, Michael Esq UNQUALIFIED15Stephen Shaw
1038Jennifer O CaldareraItaly2026-07-06Chanay, Jeffrey A Esq RENEWAL59Onyama Limba
1039Faith Q FollerArgentina2026-06-26Feiner Bros UNQUALIFIED5Xuxue Feng
1040Salvatore S PoquetteCanada2026-07-19Chapman, Ross E Esq UNQUALIFIED32Onyama Limba
1041Jones S FlosiUnited Kingdom2026-07-23Morlong Associates QUALIFIED21Amy Elsner
1042Murillo P GarufiItaly2026-06-28King, Christopher A Esq UNQUALIFIED76Amy Elsner
1043Cody I MorascaIndia2026-06-30Rousseaux, Michael Esq NEW60Anna Fali
1044Wickens Y SchemmerRussia2026-07-24King, Christopher A Esq NEGOTIATION16Ioni Bowcher
1045Jones J MaletItaly2026-07-16Commercial Press NEGOTIATION87Anna Fali
1046Emily U AmigonItaly2026-07-02Truhlar And Truhlar Attys NEW44Xuxue Feng
1047Sinclair R GauchoArgentina2026-07-04Commercial Press UNQUALIFIED8Amy Elsner
1048Octavia U KolmetzCanada2026-07-20Rousseaux, Michael Esq NEW87Ioni Bowcher
1049Aditya J KolmetzAustralia2026-07-18Rousseaux, Michael Esq UNQUALIFIED79Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Arvin W VenereIndiaStephen Shaw NEW
Aditya O DilliardBrazilXuxue Feng NEW
Maria D TollnerCanadaAmy Elsner PROPOSAL
Munro O NestleAustraliaIvan Magalhaes UNQUALIFIED
Morrow M FlosiGermanyAnna Fali RENEWAL
Leja B CaldareraJapanBernardo Dominic RENEWAL
Juan G NickaBrazilOnyama Limba UNQUALIFIED
Kadeem S StensethJapanStephen Shaw QUALIFIED
Silvio H WieserBrazilElwin Sharvill RENEWAL
Isabel H SlusarskiAustraliaStephen Shaw UNQUALIFIED
Jeanfrancois J PaprockiSpainIvan Magalhaes NEW
Juan O OstroskyGermanyIvan Magalhaes NEGOTIATION
Emily N WhobreyJapanXuxue Feng UNQUALIFIED
Stacey G DarakjySpainXuxue Feng NEGOTIATION
Isabel A RimRussiaAnna Fali PROPOSAL
Munro I PoquetteSpainAnna Fali PROPOSAL
Wickens V DarakjyFranceXuxue Feng NEGOTIATION
Murillo J RimItalyAnna Fali QUALIFIED
Aditya X KuskoAustraliaIvan Magalhaes NEGOTIATION
Isabel V StockhamRussiaOnyama Limba NEW
Rodrigues E WhobreyAustraliaIvan Magalhaes QUALIFIED
Kadeem B FerenczRussiaAsiya Javayant RENEWAL
Mujtaba O CaldareraArgentinaXuxue Feng UNQUALIFIED
Alejandro R FerenczSpainAsiya Javayant PROPOSAL
Jeanfrancois O GlickIndiaAsiya Javayant RENEWAL
Cody V GauchoSpainIvan Magalhaes NEW
Faith T KuskoRussiaElwin Sharvill UNQUALIFIED
Jeanfrancois Z OldroydAustraliaOnyama Limba RENEWAL
Aditya X PerinRussiaElwin Sharvill NEW
Isabel B MaletArgentinaIoni Bowcher QUALIFIED
Chavez F ChuiFranceIoni Bowcher PROPOSAL
Ashley J FollerRussiaIvan Magalhaes RENEWAL
Izzy Q BologniaGermanyElwin Sharvill PROPOSAL
Julie I FerenczAustraliaElwin Sharvill UNQUALIFIED
Smith W MaletRussiaStephen Shaw PROPOSAL
Alejandro P IturbideAustraliaAmy Elsner NEW
Tony B GarufiGermanyAnna Fali RENEWAL
Leon J CaudyFranceIoni Bowcher QUALIFIED
Alejandro Z TollnerCanadaStephen Shaw QUALIFIED
Silvio X KolmetzRussiaXuxue Feng RENEWAL
Jones Z FollerSpainAmy Elsner RENEWAL
Cody P CaldareraUnited KingdomAmy Elsner NEGOTIATION
Mujtaba S DarakjyIndiaAsiya Javayant NEW
Salvatore I SchemmerRussiaAsiya Javayant NEGOTIATION
Izzy V GlickSpainAnna Fali UNQUALIFIED
Julie U FlosiItalyIoni Bowcher RENEWAL
Deepesh S VocelkaArgentinaIoni Bowcher QUALIFIED
Deepesh L MacleadJapanStephen Shaw RENEWAL
Jones U MarrierBrazilAmy Elsner NEW
Aika S CampainArgentinaAnna Fali NEGOTIATION
Frozen Columns
Name
Mayumi A Vocelka
Johnson Z Briddick
Mayumi Z Oldroyd
Smith S Shinko
Alejandro K Flosi
Leon L Darakjy
Maria L Doe
Misaki T Perin
Alejandro P Slusarski
Alejandro P Marrier
Kaitlin W Bowley
Darci M Nestle
Wickens J Oldroyd
Kaitlin F Paprocki
Leja E Butt
Alejandro R Whobrey
Munro J Tollner
Faith Y Paprocki
Stacey Q Wieser
Kadeem I Rulapaugh
Arvin J Shinko
Adams L Chui
Sinclair E Briddick
Morrow J Kusko
Greenwood K Flosi
Jennifer P Bolognia
Francesco Z Doe
Leon J Caldarera
Stacey N Morasca
Jefferson Q Gillian
Julie N Rulapaugh
Costa Q Caudy
Antonio V Malet
Aditya C Amigon
Aditya T Gillian
Clifford B Wieser
Izzy R Darakjy
Antonio Q Figeroa
Faith I Chui
Jeanfrancois Y Foller
Arvin R Oldroyd
Aika I Ferencz
Julie D Kusko
Izzy O Stockham
Greenwood W Chui
Jefferson W Whobrey
Faith B Vocelka
Octavia Q Glick
Silvio E Kusko
Morrow H Morasca
IdCountryDate
1000Germany2026-07-20
1001Brazil2026-06-28
1002Australia2026-06-26
1003Japan2026-06-29
1004Australia2026-07-21
1005Japan2026-07-08
1006France2026-07-10
1007Russia2026-07-24
1008Germany2026-07-20
1009United Kingdom2026-07-23
1010Canada2026-06-27
1011Spain2026-06-26
1012India2026-07-21
1013Australia2026-07-11
1014Canada2026-06-28
1015India2026-07-23
1016Germany2026-07-05
1017United Kingdom2026-07-03
1018Japan2026-07-12
1019France2026-07-19
1020Canada2026-06-28
1021India2026-07-22
1022Argentina2026-07-20
1023India2026-07-15
1024Spain2026-06-27
1025Italy2026-07-11
1026France2026-07-17
1027Russia2026-06-27
1028Argentina2026-07-17
1029Germany2026-07-15
1030Russia2026-07-06
1031Canada2026-06-28
1032India2026-06-25
1033Brazil2026-06-26
1034Germany2026-06-27
1035Japan2026-07-07
1036Australia2026-07-15
1037Brazil2026-07-12
1038Australia2026-07-09
1039France2026-06-28
1040Spain2026-07-11
1041Spain2026-07-12
1042Argentina2026-07-16
1043Germany2026-07-23
1044Brazil2026-06-27
1045Russia2026-07-11
1046Australia2026-07-02
1047Spain2026-07-03
1048Argentina2026-06-27
1049France2026-07-11

On-Demand Data

NameIdCountryDate
Deepesh S Flosi1000Japan2026-07-06
Rodrigues C Bowley1001India2026-07-14
Jefferson D Figeroa1002Australia2026-07-18
Aditya T Bolognia1003Australia2026-07-14
Ashley Y Slusarski1004Spain2026-07-24
Julie V Stenseth1005Brazil2026-06-25
Claire W Wieser1006Spain2026-06-28
Octavia S Amigon1007Australia2026-07-01
Isabel A Rulapaugh1008Brazil2026-07-16
Leon C Doe1009Russia2026-07-24
Aika B Rim1010Argentina2026-07-15
Kadeem Q Stockham1011Argentina2026-07-18
Deepesh W Ferencz1012Brazil2026-07-19
Costa Q Glick1013Spain2026-06-28
Aruna N Schemmer1014Russia2026-07-21
Juan O Butt1015United Kingdom2026-07-08
Arvin P Bolognia1016Australia2026-07-15
Isabel P Darakjy1017Japan2026-07-23
Claire I Wieser1018Argentina2026-07-02
Arvin K Sergi1019Russia2026-07-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow A NestleUnited KingdomIoni Bowcher QUALIFIED
Maisha Q PoquetteIndiaXuxue Feng UNQUALIFIED
Sinclair M WieserJapanBernardo Dominic QUALIFIED
David U PoquetteJapanAnna Fali QUALIFIED
Maisha X StockhamGermanyElwin Sharvill QUALIFIED
Francesco M MorascaArgentinaXuxue Feng NEW
Leja F FollerGermanyAmy Elsner PROPOSAL
Salvatore C RimIndiaStephen Shaw RENEWAL
David H GlickBrazilAmy Elsner UNQUALIFIED
Cody C FigeroaFranceIvan Magalhaes NEW
Stacey D SchemmerUnited KingdomBernardo Dominic UNQUALIFIED
Deepesh P AlbaresBrazilXuxue Feng UNQUALIFIED
Maria N VocelkaCanadaIoni Bowcher QUALIFIED
Faith I FlosiFranceAnna Fali NEW
David I MaletItalyAsiya Javayant NEGOTIATION
Ricardo P RulapaughItalyAnna Fali UNQUALIFIED
Jeanfrancois X DoeItalyIvan Magalhaes NEGOTIATION
Chavez K MacleadGermanyElwin Sharvill UNQUALIFIED
Cody O PoquetteGermanyAmy Elsner UNQUALIFIED
Tony B RoysterFranceXuxue Feng UNQUALIFIED
Maria O StensethArgentinaOnyama Limba RENEWAL
Deepesh P FollerSpainElwin Sharvill PROPOSAL
Costa D DoeBrazilAsiya Javayant QUALIFIED
Ricardo W IturbideRussiaIvan Magalhaes RENEWAL
Arvin A BologniaItalyBernardo Dominic RENEWAL
Juan Q CaldareraBrazilAmy Elsner QUALIFIED
Ashley X IturbideAustraliaAnna Fali PROPOSAL
Costa Q FigeroaBrazilAsiya Javayant NEW
David F OldroydBrazilAsiya Javayant NEGOTIATION
Faith V MarrierAustraliaAmy Elsner QUALIFIED
Adams H OstroskyCanadaXuxue Feng NEGOTIATION
Silvio B StensethJapanBernardo Dominic NEW
Mayumi X CaldareraIndiaIoni Bowcher NEGOTIATION
Jefferson I KolmetzItalyOnyama Limba NEW
Arvin U GillianCanadaElwin Sharvill RENEWAL
Julie B SergiArgentinaXuxue Feng QUALIFIED
Juan I OstroskyCanadaBernardo Dominic RENEWAL
Izzy A PerinCanadaIvan Magalhaes UNQUALIFIED
Claire V MacleadCanadaOnyama Limba QUALIFIED
Adams N VenereSpainIoni 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>