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
Sinclair B MaletArgentinaAnna Fali QUALIFIED
Claire Q OstroskyFranceStephen Shaw NEW
Izzy G IturbideJapanElwin Sharvill QUALIFIED
Aika H WaycottRussiaBernardo Dominic QUALIFIED
Leon P InouyeIndiaOnyama Limba NEW
Nicolas X FlosiFranceElwin Sharvill NEW
Alejandro F CaldareraJapanAmy Elsner PROPOSAL
David O VenereSpainStephen Shaw NEGOTIATION
Isabel C GlickIndiaAnna Fali RENEWAL
Smith F AlbaresCanadaBernardo Dominic PROPOSAL
Mujtaba G CaudyJapanAnna Fali NEW
Faith I SaylorsJapanAsiya Javayant RENEWAL
Aditya L ChuiRussiaOnyama Limba UNQUALIFIED
Julie B NickaUnited KingdomAsiya Javayant UNQUALIFIED
Jefferson W WieserBrazilIoni Bowcher RENEWAL
Rodrigues Y KuskoSpainIvan Magalhaes UNQUALIFIED
Mayumi N MorascaIndiaAsiya Javayant NEW
Francesco D PoquetteFranceAmy Elsner UNQUALIFIED
Ricardo E RimBrazilStephen Shaw QUALIFIED
Aditya N MacleadAustraliaIvan Magalhaes NEGOTIATION
Darci K OstroskyUnited KingdomOnyama Limba NEW
Maria D RutaCanadaIvan Magalhaes UNQUALIFIED
Leon S MorascaArgentinaIvan Magalhaes PROPOSAL
Emily W OstroskyCanadaAsiya Javayant PROPOSAL
James H SchemmerItalyAnna Fali PROPOSAL
Jones P RimArgentinaAnna Fali NEGOTIATION
Juan C WhobreyFranceStephen Shaw UNQUALIFIED
Kaitlin D DilliardGermanyAmy Elsner NEW
Costa V SaylorsRussiaXuxue Feng QUALIFIED
Salvatore S MorascaGermanyAnna Fali UNQUALIFIED
Alejandro Y MorascaCanadaIoni Bowcher PROPOSAL
Chavez K PaprockiGermanyBernardo Dominic NEGOTIATION
Ivar K PoquetteJapanStephen Shaw RENEWAL
Jennifer A DilliardIndiaAnna Fali UNQUALIFIED
Wickens E RutaBrazilStephen Shaw PROPOSAL
Deepesh Q FlosiSpainStephen Shaw UNQUALIFIED
Clifford V WieserSpainIoni Bowcher NEW
Silvio X MaletGermanyAnna Fali NEW
Octavia I AlbaresBrazilAmy Elsner RENEWAL
Costa O FlosiRussiaIvan Magalhaes UNQUALIFIED
Francesco Y WhobreyBrazilIoni Bowcher UNQUALIFIED
Francesco Y PerinArgentinaStephen Shaw UNQUALIFIED
Isabel L RoysterFranceBernardo Dominic UNQUALIFIED
David D PoquetteItalyOnyama Limba NEW
Francesco T NickaIndiaAnna Fali PROPOSAL
Aruna T FollerArgentinaXuxue Feng NEGOTIATION
Izzy C GarufiFranceBernardo Dominic PROPOSAL
Juan Q GillianIndiaStephen Shaw NEW
Tony J DilliardArgentinaBernardo Dominic QUALIFIED
Salvatore X GarufiAustraliaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Tony S CampainJapanAnna Fali NEGOTIATION
Jeanfrancois U GlickBrazilAmy Elsner NEW
Julie G MaletItalyIvan Magalhaes RENEWAL
James R BriddickGermanyStephen Shaw NEW
Salvatore F CaldareraFranceIvan Magalhaes NEGOTIATION
Alejandro Q DoeItalyBernardo Dominic RENEWAL
Izzy S RulapaughAustraliaBernardo Dominic NEGOTIATION
Aditya Y OldroydItalyElwin Sharvill PROPOSAL
Jeanfrancois G OstroskyIndiaIvan Magalhaes NEW
Claire T VenereBrazilAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro W ChuiCanada2026-08-01Buckley Miller Wright RENEWAL38Bernardo Dominic
1001Jones R MaletGermany2026-08-13King, Christopher A Esq NEW97Amy Elsner
1002James K NestleRussia2026-08-13Benton, John B Jr PROPOSAL45Stephen Shaw
1003Chavez K SergiSpain2026-08-07Benton, John B Jr RENEWAL64Bernardo Dominic
1004Adams F SergiCanada2026-08-30Buckley Miller Wright PROPOSAL92Xuxue Feng
1005Ricardo X BriddickJapan2026-08-06King, Christopher A Esq RENEWAL56Bernardo Dominic
1006Cody A BologniaFrance2026-08-09Rangoni Of Florence PROPOSAL13Asiya Javayant
1007Cody G SlusarskiGermany2026-08-22Benton, John B Jr RENEWAL59Anna Fali
1008Octavia V PerinCanada2026-08-11Truhlar And Truhlar Attys NEW20Amy Elsner
1009Cody W SergiItaly2026-08-15Chapman, Ross E Esq PROPOSAL29Ioni Bowcher
1010Isabel P DoeJapan2026-08-27Chapman, Ross E Esq PROPOSAL97Anna Fali
1011Clifford O AlbaresBrazil2026-08-25Printing Dimensions PROPOSAL97Elwin Sharvill
1012Ashley L GarufiUnited Kingdom2026-08-10Buckley Miller Wright UNQUALIFIED5Ivan Magalhaes
1013Leon Z RutaUnited Kingdom2026-08-22Feiner Bros QUALIFIED0Ivan Magalhaes
1014Adams P ChuiAustralia2026-08-15Morlong Associates QUALIFIED66Ivan Magalhaes
1015Maisha C GillianBrazil2026-08-22Truhlar And Truhlar Attys NEGOTIATION44Asiya Javayant
1016Emily R StensethFrance2026-08-12Truhlar And Truhlar Attys RENEWAL86Anna Fali
1017Johnson M WhobreyItaly2026-08-22Benton, John B Jr RENEWAL35Amy Elsner
1018Costa Q MarrierGermany2026-08-14King, Christopher A Esq NEW13Asiya Javayant
1019Stacey A VenereRussia2026-08-22Buckley Miller Wright NEW94Amy Elsner
1020Wickens X BologniaRussia2026-08-21King, Christopher A Esq UNQUALIFIED10Asiya Javayant
1021Darci Z BologniaGermany2026-08-25Buckley Miller Wright NEW2Amy Elsner
1022James Y BriddickGermany2026-08-08Feiner Bros NEGOTIATION81Anna Fali
1023Octavia D SaylorsAustralia2026-08-28Chemel, James L Cpa PROPOSAL61Anna Fali
1024Rodrigues F VenereFrance2026-08-09Morlong Associates UNQUALIFIED33Anna Fali
1025Kaitlin P MorascaUnited Kingdom2026-08-21Rousseaux, Michael Esq PROPOSAL14Ioni Bowcher
1026Mayumi N GauchoItaly2026-08-01Chanay, Jeffrey A Esq QUALIFIED22Amy Elsner
1027Munro D FollerCanada2026-08-09Truhlar And Truhlar Attys QUALIFIED5Ioni Bowcher
1028Julie J GillianUnited Kingdom2026-08-30Chapman, Ross E Esq NEGOTIATION44Onyama Limba
1029Murillo V WaycottGermany2026-08-11Buckley Miller Wright PROPOSAL27Ivan Magalhaes
1030Jennifer G AlbaresRussia2026-08-11Dorl, James J Esq RENEWAL70Onyama Limba
1031Faith L NickaFrance2026-08-30Benton, John B Jr NEGOTIATION73Bernardo Dominic
1032Wickens S CaldareraItaly2026-08-21Dorl, James J Esq NEW68Amy Elsner
1033Nicolas M RoysterItaly2026-08-30Truhlar And Truhlar Attys NEGOTIATION52Anna Fali
1034Deepesh P MaletArgentina2026-08-26Printing Dimensions NEGOTIATION39Anna Fali
1035Chavez I ButtArgentina2026-08-18Printing Dimensions PROPOSAL90Elwin Sharvill
1036Jennifer J DilliardArgentina2026-08-19Printing Dimensions RENEWAL94Elwin Sharvill
1037Smith P RimArgentina2026-08-21Printing Dimensions RENEWAL82Asiya Javayant
1038Juan B FollerCanada2026-08-21Dorl, James J Esq NEW81Bernardo Dominic
1039Misaki X FlosiJapan2026-08-01Dorl, James J Esq NEW72Elwin Sharvill
1040Costa V WieserItaly2026-08-24Feltz Printing Service QUALIFIED55Elwin Sharvill
1041Salvatore A WaycottAustralia2026-08-23Feiner Bros PROPOSAL91Onyama Limba
1042Deepesh Y RulapaughCanada2026-08-23Rangoni Of Florence NEGOTIATION83Bernardo Dominic
1043Leon A MorascaArgentina2026-08-02Rangoni Of Florence QUALIFIED19Stephen Shaw
1044Alejandro J FollerItaly2026-08-02Rousseaux, Michael Esq QUALIFIED88Asiya Javayant
1045Kaitlin T SergiGermany2026-08-27Rangoni Of Florence NEGOTIATION47Asiya Javayant
1046Kaitlin Z WhobreySpain2026-08-19Feltz Printing Service UNQUALIFIED99Bernardo Dominic
1047Murillo V NickaItaly2026-08-20Commercial Press NEGOTIATION27Asiya Javayant
1048Isabel I AlbaresIndia2026-08-03Commercial Press NEGOTIATION34Amy Elsner
1049Leja S MaletBrazil2026-08-24Truhlar And Truhlar Attys NEW60Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Faith K PoquetteCanadaAnna Fali NEGOTIATION
Emily G ButtJapanIvan Magalhaes RENEWAL
Deepesh B RutaItalyAmy Elsner NEGOTIATION
Leon T VocelkaSpainStephen Shaw NEW
Arvin O AmigonAustraliaAmy Elsner UNQUALIFIED
Francesco Z OldroydJapanBernardo Dominic NEGOTIATION
Isabel P StockhamCanadaAsiya Javayant UNQUALIFIED
Deepesh H PaprockiIndiaIvan Magalhaes PROPOSAL
Juan F CampainUnited KingdomIoni Bowcher NEW
Ashley G MaletFranceElwin Sharvill RENEWAL
Salvatore Y RutaArgentinaAsiya Javayant NEW
Johnson J TollnerRussiaStephen Shaw QUALIFIED
Salvatore H MaletArgentinaAmy Elsner NEGOTIATION
Cody E GauchoFranceAnna Fali NEW
Stacey M NickaBrazilXuxue Feng QUALIFIED
Smith Z SergiBrazilIoni Bowcher QUALIFIED
Mayumi V FerenczBrazilStephen Shaw RENEWAL
Maria V SergiCanadaIvan Magalhaes UNQUALIFIED
Juan A BologniaUnited KingdomAsiya Javayant NEGOTIATION
Salvatore O TollnerGermanyAnna Fali QUALIFIED
Jennifer N NestleGermanyStephen Shaw QUALIFIED
Arvin B GillianIndiaAmy Elsner NEGOTIATION
Julie O FlosiCanadaIvan Magalhaes PROPOSAL
Jennifer R ButtRussiaStephen Shaw RENEWAL
Ivar P MarrierBrazilIoni Bowcher NEW
Rodrigues A WhobreyArgentinaStephen Shaw NEGOTIATION
Ivar K PaprockiIndiaIvan Magalhaes UNQUALIFIED
Jeanfrancois F MarrierUnited KingdomXuxue Feng QUALIFIED
David T FollerJapanIoni Bowcher RENEWAL
Costa D AmigonJapanAnna Fali UNQUALIFIED
Isabel D GauchoJapanAsiya Javayant UNQUALIFIED
Mujtaba O CaldareraUnited KingdomElwin Sharvill NEGOTIATION
Wickens F AmigonIndiaOnyama Limba QUALIFIED
Silvio K MarrierBrazilOnyama Limba NEW
Aruna K TollnerItalyIoni Bowcher NEGOTIATION
Isabel Z DoeAustraliaIvan Magalhaes PROPOSAL
Salvatore D VenereGermanyBernardo Dominic PROPOSAL
Misaki N VenereItalyIvan Magalhaes RENEWAL
Jefferson L DoeUnited KingdomAnna Fali QUALIFIED
Rodrigues W RulapaughArgentinaAnna Fali QUALIFIED
Cody H RutaItalyElwin Sharvill RENEWAL
Silvio X CaldareraIndiaAnna Fali PROPOSAL
Jefferson A GlickArgentinaIvan Magalhaes QUALIFIED
Aditya W AmigonArgentinaBernardo Dominic RENEWAL
Cody X StockhamJapanAmy Elsner QUALIFIED
Darci X VocelkaGermanyOnyama Limba RENEWAL
Wickens J MaletGermanyIvan Magalhaes QUALIFIED
Jennifer T GarufiUnited KingdomAnna Fali RENEWAL
Leon D WieserAustraliaAmy Elsner NEW
Mujtaba O NestleItalyOnyama Limba QUALIFIED
Frozen Columns
Name
Ricardo F Poquette
Claire U Doe
Kadeem T Perin
Tony J Iturbide
Aika H Morasca
Darci X Glick
Arvin F Campain
Alejandro G Wieser
Salvatore B Caudy
Mujtaba A Poquette
Izzy D Figeroa
Kaitlin Y Inouye
Silvio E Marrier
Maria Y Rulapaugh
James C Caudy
Ivar C Poquette
Faith L Figeroa
Aruna G Waycott
Kaitlin G Gaucho
Francesco P Flosi
Tony Q Rim
Arvin R Shinko
Cody A Malet
Smith K Ferencz
Francesco U Ruta
Francesco K Shinko
Julie W Caudy
Aika T Oldroyd
Costa Q Ostrosky
Silvio X Marrier
Wickens Q Whobrey
Mujtaba K Foller
Claire L Foller
Mayumi G Gaucho
Julie I Vocelka
Aika J Tollner
Salvatore Y Stockham
Rodrigues S Campain
Jones E Flosi
Antonio A Amigon
Isabel N Waycott
Deepesh M Caudy
Izzy A Glick
Aditya V Whobrey
James V Doe
Claire U Slusarski
Morrow W Figeroa
Jeanfrancois E Vocelka
Leja J Bolognia
Rodrigues X Campain
IdCountryDate
1000Australia2026-08-04
1001Australia2026-08-19
1002Italy2026-08-13
1003Argentina2026-08-23
1004Brazil2026-08-13
1005France2026-08-11
1006Japan2026-08-13
1007Spain2026-08-10
1008Spain2026-08-09
1009India2026-08-29
1010Argentina2026-08-12
1011Germany2026-08-23
1012Japan2026-08-27
1013Italy2026-08-09
1014Spain2026-08-19
1015Spain2026-08-22
1016Canada2026-08-29
1017India2026-08-04
1018Canada2026-08-10
1019Canada2026-08-13
1020United Kingdom2026-08-25
1021India2026-08-17
1022Canada2026-08-23
1023Argentina2026-08-11
1024Russia2026-08-30
1025France2026-08-12
1026Germany2026-08-08
1027Australia2026-08-14
1028United Kingdom2026-08-23
1029Italy2026-08-28
1030Italy2026-08-07
1031Italy2026-08-03
1032Canada2026-08-05
1033United Kingdom2026-08-23
1034Italy2026-08-24
1035Italy2026-08-06
1036France2026-08-12
1037Russia2026-08-24
1038Australia2026-08-01
1039Canada2026-08-05
1040United Kingdom2026-08-18
1041United Kingdom2026-08-03
1042United Kingdom2026-08-10
1043Germany2026-08-03
1044Argentina2026-08-18
1045Japan2026-08-22
1046Japan2026-08-29
1047Italy2026-08-17
1048Spain2026-08-05
1049Argentina2026-08-25

On-Demand Data

NameIdCountryDate
Maisha W Ostrosky1000Germany2026-08-13
Stacey D Garufi1001Canada2026-08-02
Juan A Whobrey1002Argentina2026-08-03
Deepesh R Nicka1003Brazil2026-08-09
Octavia L Waycott1004Australia2026-08-21
Cody M Nicka1005Spain2026-08-18
Costa K Nicka1006Germany2026-08-16
Stacey P Sergi1007India2026-08-08
Salvatore C Kusko1008Germany2026-08-19
Mayumi E Vocelka1009India2026-08-25
Sinclair E Kolmetz1010Canada2026-08-06
Juan D Garufi1011Brazil2026-08-05
Maisha A Malet1012Brazil2026-08-10
Aika I Nestle1013Australia2026-08-18
Silvio Z Slusarski1014Italy2026-08-21
Rodrigues G Tollner1015India2026-08-23
Alejandro X Nicka1016Russia2026-08-26
Mujtaba V Maclead1017Spain2026-08-10
Jennifer G Caudy1018United Kingdom2026-08-28
Jefferson E Kolmetz1019France2026-08-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro W InouyeIndiaXuxue Feng QUALIFIED
Kaitlin D GillianCanadaIvan Magalhaes RENEWAL
Cody R NestleUnited KingdomIvan Magalhaes UNQUALIFIED
Misaki S VenereFranceIvan Magalhaes QUALIFIED
Kaitlin O GillianJapanAnna Fali NEW
Maria J MaletArgentinaStephen Shaw QUALIFIED
Clifford A FlosiAustraliaXuxue Feng NEGOTIATION
Tony E BologniaArgentinaAsiya Javayant UNQUALIFIED
Faith B SaylorsCanadaStephen Shaw NEW
Octavia I ButtRussiaBernardo Dominic UNQUALIFIED
Costa Q GillianArgentinaIoni Bowcher NEGOTIATION
Nicolas P PerinJapanStephen Shaw NEGOTIATION
Jennifer G FerenczCanadaAsiya Javayant NEGOTIATION
Chavez M InouyeFranceXuxue Feng UNQUALIFIED
Darci M MaletJapanStephen Shaw RENEWAL
Maisha U RulapaughIndiaBernardo Dominic PROPOSAL
Antonio E AlbaresUnited KingdomBernardo Dominic NEGOTIATION
Misaki R BologniaGermanyElwin Sharvill QUALIFIED
Isabel F MacleadAustraliaStephen Shaw PROPOSAL
Maria S WaycottAustraliaAnna Fali UNQUALIFIED
Ivar I AlbaresUnited KingdomAnna Fali NEGOTIATION
Isabel K OstroskyJapanAsiya Javayant QUALIFIED
Misaki A CaudyArgentinaAmy Elsner PROPOSAL
Stacey U CaudyBrazilXuxue Feng RENEWAL
Aditya Y InouyeCanadaAsiya Javayant RENEWAL
David S AmigonBrazilIoni Bowcher RENEWAL
James Z IturbideCanadaAsiya Javayant PROPOSAL
Smith A StensethRussiaOnyama Limba NEGOTIATION
Jones L BologniaFranceIoni Bowcher PROPOSAL
Costa K FigeroaGermanyAmy Elsner UNQUALIFIED
Leja I SchemmerFranceAnna Fali NEGOTIATION
Silvio M CaudySpainAsiya Javayant RENEWAL
Maria I KuskoJapanStephen Shaw NEW
Adams J ChuiCanadaBernardo Dominic NEW
Murillo H BriddickArgentinaIvan Magalhaes PROPOSAL
Aditya R VenereUnited KingdomStephen Shaw UNQUALIFIED
Murillo Q BologniaJapanBernardo Dominic QUALIFIED
Stacey K MacleadFranceStephen Shaw NEGOTIATION
Costa S MorascaBrazilBernardo Dominic NEGOTIATION
Misaki N MorascaSpainAnna Fali 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>