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
Juan H StensethRussiaIvan Magalhaes RENEWAL
Ivar S FlosiJapanAnna Fali PROPOSAL
Julie P ChuiAustraliaXuxue Feng NEW
Sinclair K ChuiRussiaIoni Bowcher RENEWAL
Francesco Y StensethUnited KingdomAsiya Javayant NEW
Aruna Q CampainFranceStephen Shaw PROPOSAL
Tony T DoeArgentinaOnyama Limba NEW
Leon Y IturbideIndiaBernardo Dominic PROPOSAL
Morrow C WieserSpainIoni Bowcher NEW
Salvatore W GlickGermanyAnna Fali NEGOTIATION
Cody K AmigonGermanyAnna Fali QUALIFIED
Silvio P MarrierArgentinaIoni Bowcher RENEWAL
Misaki N BriddickRussiaIoni Bowcher UNQUALIFIED
Kadeem O MaletCanadaOnyama Limba PROPOSAL
Faith Z VocelkaJapanAnna Fali NEW
Silvio Q StensethFranceXuxue Feng QUALIFIED
Misaki X FollerAustraliaAsiya Javayant NEGOTIATION
Misaki I StensethSpainIoni Bowcher PROPOSAL
Aruna C PerinCanadaAnna Fali QUALIFIED
Jones N MaletRussiaIoni Bowcher QUALIFIED
Misaki C RoysterArgentinaIoni Bowcher UNQUALIFIED
Deepesh W BriddickJapanIoni Bowcher RENEWAL
Antonio S SlusarskiSpainAnna Fali NEGOTIATION
Octavia C RimJapanAsiya Javayant QUALIFIED
Costa Q SchemmerItalyBernardo Dominic NEW
Maisha H GillianBrazilAmy Elsner RENEWAL
Clifford V NestleBrazilXuxue Feng PROPOSAL
Aditya P RulapaughSpainAnna Fali QUALIFIED
Aditya N MaletItalyElwin Sharvill NEW
Cody N NickaJapanIvan Magalhaes UNQUALIFIED
Chavez W DarakjyBrazilAnna Fali UNQUALIFIED
Smith Q MarrierGermanyXuxue Feng RENEWAL
Isabel I DarakjyIndiaOnyama Limba QUALIFIED
Adams K DoeIndiaXuxue Feng NEGOTIATION
Wickens Y TollnerAustraliaElwin Sharvill NEGOTIATION
Adams N PoquetteArgentinaBernardo Dominic QUALIFIED
Smith W PerinJapanStephen Shaw NEGOTIATION
Misaki R NickaFranceIvan Magalhaes QUALIFIED
Mayumi Q SergiBrazilAnna Fali NEW
Francesco V VocelkaJapanAmy Elsner NEGOTIATION
Deepesh K ShinkoJapanOnyama Limba NEW
Costa B RoysterAustraliaXuxue Feng UNQUALIFIED
Izzy E NickaCanadaAsiya Javayant UNQUALIFIED
Maisha Q InouyeUnited KingdomStephen Shaw NEW
Costa F BowleyUnited KingdomIvan Magalhaes PROPOSAL
Ivar K DarakjyUnited KingdomAnna Fali PROPOSAL
Ashley J NickaSpainIvan Magalhaes UNQUALIFIED
Misaki R InouyeCanadaAsiya Javayant PROPOSAL
Costa F VocelkaJapanAnna Fali RENEWAL
Mayumi G InouyeItalyIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ashley P ButtItalyIvan Magalhaes QUALIFIED
Maisha O MarrierJapanStephen Shaw QUALIFIED
Chavez L FollerAustraliaAnna Fali NEW
Mayumi N RimFranceAmy Elsner NEW
Munro U GlickArgentinaOnyama Limba RENEWAL
Smith B GlickSpainIoni Bowcher QUALIFIED
Izzy U DarakjyArgentinaIvan Magalhaes NEW
Aika Y BriddickJapanAsiya Javayant RENEWAL
Emily K DoeIndiaAsiya Javayant UNQUALIFIED
Jefferson X BologniaIndiaXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh K WieserSpain2026-07-07Chanay, Jeffrey A Esq RENEWAL52Asiya Javayant
1001Maria I SlusarskiRussia2026-07-10Feltz Printing Service QUALIFIED24Asiya Javayant
1002Aika F CaldareraCanada2026-07-12Chanay, Jeffrey A Esq QUALIFIED85Amy Elsner
1003Leja Q GarufiFrance2026-06-16Morlong Associates NEW74Amy Elsner
1004Kadeem K FerenczSpain2026-07-08Commercial Press NEGOTIATION25Asiya Javayant
1005Sinclair M ButtCanada2026-06-15Chanay, Jeffrey A Esq UNQUALIFIED99Amy Elsner
1006Emily B NestleCanada2026-06-15King, Christopher A Esq NEGOTIATION39Anna Fali
1007Nicolas D RutaAustralia2026-07-07King, Christopher A Esq NEW80Ivan Magalhaes
1008Arvin E ShinkoIndia2026-07-13Chapman, Ross E Esq PROPOSAL35Xuxue Feng
1009Kaitlin L CaldareraJapan2026-07-06Morlong Associates QUALIFIED85Xuxue Feng
1010Alejandro H FerenczFrance2026-06-23Rangoni Of Florence NEW30Ivan Magalhaes
1011Izzy G TollnerBrazil2026-06-30Buckley Miller Wright RENEWAL80Stephen Shaw
1012Mayumi C InouyeSpain2026-06-20Dorl, James J Esq RENEWAL74Anna Fali
1013Chavez Z CaldareraBrazil2026-07-01Truhlar And Truhlar Attys UNQUALIFIED85Stephen Shaw
1014Izzy N VenereRussia2026-07-11Dorl, James J Esq PROPOSAL71Elwin Sharvill
1015Jennifer H RulapaughAustralia2026-07-05Morlong Associates NEGOTIATION79Xuxue Feng
1016Emily K InouyeFrance2026-06-23Feltz Printing Service QUALIFIED36Anna Fali
1017Silvio D TollnerSpain2026-07-01Dorl, James J Esq QUALIFIED10Onyama Limba
1018Leon N DarakjyJapan2026-07-11Printing Dimensions RENEWAL70Stephen Shaw
1019Arvin L MaletRussia2026-06-19Truhlar And Truhlar Attys NEGOTIATION81Amy Elsner
1020Octavia Q BologniaSpain2026-06-19Rangoni Of Florence NEW7Ivan Magalhaes
1021James N PoquetteGermany2026-07-11Chemel, James L Cpa PROPOSAL46Stephen Shaw
1022Smith S CaldareraArgentina2026-07-13Rangoni Of Florence NEW18Asiya Javayant
1023Misaki P SaylorsSpain2026-06-15Benton, John B Jr PROPOSAL65Bernardo Dominic
1024Alejandro M OstroskySpain2026-06-17Commercial Press NEGOTIATION13Amy Elsner
1025Nicolas T WaycottRussia2026-06-25Feltz Printing Service QUALIFIED75Anna Fali
1026Claire G MacleadAustralia2026-06-18Commercial Press RENEWAL22Bernardo Dominic
1027Arvin D RutaCanada2026-06-23Morlong Associates NEGOTIATION53Bernardo Dominic
1028Smith X GillianSpain2026-07-09Commercial Press PROPOSAL2Amy Elsner
1029Leon F SchemmerBrazil2026-07-02Commercial Press RENEWAL11Xuxue Feng
1030Mujtaba T WieserRussia2026-07-04Rangoni Of Florence NEW76Xuxue Feng
1031Alejandro N AmigonIndia2026-07-12Morlong Associates UNQUALIFIED11Asiya Javayant
1032Sinclair Q BriddickJapan2026-07-05Rangoni Of Florence RENEWAL17Amy Elsner
1033Chavez I PerinSpain2026-07-03Commercial Press QUALIFIED44Stephen Shaw
1034Nicolas G WaycottArgentina2026-06-29Benton, John B Jr QUALIFIED64Asiya Javayant
1035Mujtaba Q SchemmerRussia2026-07-05Benton, John B Jr UNQUALIFIED60Bernardo Dominic
1036Misaki T AmigonAustralia2026-06-26Printing Dimensions RENEWAL92Xuxue Feng
1037Maria F FollerItaly2026-06-20King, Christopher A Esq QUALIFIED5Ivan Magalhaes
1038Arvin J MorascaFrance2026-07-01Commercial Press RENEWAL68Amy Elsner
1039Claire Z VocelkaIndia2026-06-26Chemel, James L Cpa UNQUALIFIED12Bernardo Dominic
1040Johnson E SaylorsBrazil2026-07-12King, Christopher A Esq NEGOTIATION66Amy Elsner
1041Isabel R MorascaUnited Kingdom2026-07-03Printing Dimensions PROPOSAL91Xuxue Feng
1042Adams D VenereGermany2026-06-21Printing Dimensions PROPOSAL27Asiya Javayant
1043Jeanfrancois D VenereUnited Kingdom2026-06-21Dorl, James J Esq UNQUALIFIED11Xuxue Feng
1044Wickens G AlbaresFrance2026-06-22Benton, John B Jr RENEWAL98Ioni Bowcher
1045Jones R GarufiBrazil2026-06-18Chapman, Ross E Esq PROPOSAL21Ioni Bowcher
1046Maisha F MorascaArgentina2026-06-30Printing Dimensions UNQUALIFIED24Ivan Magalhaes
1047Deepesh Q GauchoSpain2026-06-27Chanay, Jeffrey A Esq PROPOSAL46Bernardo Dominic
1048Jefferson F FollerFrance2026-06-15Rousseaux, Michael Esq RENEWAL32Asiya Javayant
1049Sinclair U FigeroaRussia2026-06-15Commercial Press NEW59Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Costa H PoquetteItalyIvan Magalhaes NEW
Faith P AlbaresItalyElwin Sharvill QUALIFIED
Morrow H WieserIndiaIoni Bowcher NEGOTIATION
Octavia X KuskoFranceStephen Shaw QUALIFIED
David A GillianJapanOnyama Limba NEGOTIATION
Adams E CaldareraIndiaBernardo Dominic UNQUALIFIED
Ashley Y CaudyRussiaAsiya Javayant RENEWAL
Ricardo Q ShinkoArgentinaOnyama Limba RENEWAL
Maisha Q VocelkaArgentinaElwin Sharvill QUALIFIED
Isabel B WhobreyIndiaIoni Bowcher UNQUALIFIED
Tony Y KuskoItalyAmy Elsner NEGOTIATION
Maisha Y SergiCanadaIoni Bowcher NEGOTIATION
Sinclair P FigeroaGermanyOnyama Limba RENEWAL
Izzy Z GauchoCanadaStephen Shaw NEW
Mujtaba V MaletBrazilAnna Fali RENEWAL
Greenwood S IturbideSpainAnna Fali QUALIFIED
James P InouyeItalyXuxue Feng NEW
Arvin Q PoquetteIndiaIvan Magalhaes UNQUALIFIED
Faith N RutaIndiaAmy Elsner QUALIFIED
Sinclair X MaletIndiaStephen Shaw RENEWAL
Misaki N PerinBrazilAmy Elsner PROPOSAL
Salvatore T WieserRussiaStephen Shaw QUALIFIED
James V CaudyAustraliaIvan Magalhaes QUALIFIED
Julie W CaudyArgentinaIoni Bowcher NEGOTIATION
Costa E SaylorsUnited KingdomIvan Magalhaes UNQUALIFIED
Smith T InouyeSpainOnyama Limba QUALIFIED
Darci E StensethJapanElwin Sharvill UNQUALIFIED
Misaki L WhobreyBrazilXuxue Feng NEGOTIATION
Francesco P RimItalyOnyama Limba QUALIFIED
Mujtaba Y KuskoSpainAnna Fali PROPOSAL
Kaitlin M AmigonSpainAnna Fali QUALIFIED
Maria L GillianBrazilAnna Fali PROPOSAL
Sinclair H WaycottArgentinaAmy Elsner NEW
James D FerenczSpainIoni Bowcher QUALIFIED
Octavia S GarufiCanadaXuxue Feng NEGOTIATION
Johnson H DilliardRussiaOnyama Limba PROPOSAL
Chavez L CaudyCanadaStephen Shaw UNQUALIFIED
Munro Y SchemmerBrazilOnyama Limba QUALIFIED
Leja U MorascaAustraliaAmy Elsner UNQUALIFIED
Claire Y PoquetteSpainIvan Magalhaes RENEWAL
Leja H ButtSpainIoni Bowcher QUALIFIED
Maria D RimGermanyStephen Shaw QUALIFIED
Leja S BologniaFranceStephen Shaw NEW
Salvatore N CaldareraRussiaStephen Shaw RENEWAL
Ashley E CampainBrazilAmy Elsner PROPOSAL
Darci M SchemmerIndiaXuxue Feng UNQUALIFIED
Tony I TollnerUnited KingdomBernardo Dominic QUALIFIED
Jefferson R RutaAustraliaStephen Shaw QUALIFIED
Mayumi G FlosiJapanBernardo Dominic QUALIFIED
Smith L NickaRussiaIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Ashley M Vocelka
Adams I Briddick
Faith R Stenseth
Maisha J Flosi
Deepesh Q Inouye
Aditya D Kusko
Costa F Royster
Julie E Oldroyd
Chavez L Bowley
Juan D Figeroa
Isabel Z Vocelka
Maria P Schemmer
Smith L Caudy
Ashley K Albares
David H Inouye
Clifford P Paprocki
Silvio T Poquette
Juan Z Dilliard
Rodrigues V Garufi
Mujtaba T Dilliard
Nicolas X Caudy
Clifford I Flosi
Misaki S Gillian
Kadeem T Gillian
Darci N Nestle
Johnson F Campain
Aika X Malet
Adams B Maclead
David X Foller
Deepesh T Ferencz
Salvatore H Iturbide
Deepesh D Iturbide
Nicolas I Darakjy
Aditya J Ostrosky
Jeanfrancois N Vocelka
Arvin Z Saylors
Claire X Royster
Greenwood J Waycott
Aditya D Figeroa
Aditya B Figeroa
Aika Z Malet
Nicolas U Bowley
Morrow K Flosi
Arvin R Bolognia
Kaitlin E Rim
Mujtaba N Butt
Juan C Foller
Faith X Nestle
Jennifer G Amigon
Jeanfrancois A Whobrey
IdCountryDate
1000India2026-07-13
1001Japan2026-06-29
1002Brazil2026-06-25
1003Italy2026-06-26
1004France2026-06-15
1005Japan2026-06-19
1006Italy2026-07-03
1007Spain2026-07-06
1008Russia2026-07-01
1009Argentina2026-06-16
1010Italy2026-06-26
1011Australia2026-07-01
1012United Kingdom2026-07-14
1013Japan2026-06-24
1014Japan2026-07-02
1015Brazil2026-07-13
1016Canada2026-07-01
1017Japan2026-06-18
1018Germany2026-06-18
1019Russia2026-07-02
1020Italy2026-06-20
1021France2026-06-18
1022Canada2026-06-18
1023France2026-07-03
1024Brazil2026-07-05
1025Australia2026-06-30
1026India2026-06-15
1027Brazil2026-06-23
1028United Kingdom2026-07-09
1029India2026-07-04
1030Spain2026-07-02
1031Brazil2026-06-26
1032India2026-07-12
1033Spain2026-06-29
1034Australia2026-06-17
1035Italy2026-07-02
1036Italy2026-07-03
1037Germany2026-06-26
1038India2026-07-10
1039Brazil2026-07-01
1040United Kingdom2026-06-24
1041Germany2026-06-23
1042Italy2026-06-29
1043Spain2026-06-23
1044Germany2026-06-21
1045Spain2026-06-25
1046Japan2026-06-15
1047Brazil2026-07-08
1048Spain2026-06-23
1049Argentina2026-06-26

On-Demand Data

NameIdCountryDate
Julie L Stockham1000Australia2026-06-25
Maria F Vocelka1001Germany2026-07-14
Leja I Ruta1002United Kingdom2026-07-11
Emily C Wieser1003Russia2026-06-20
Antonio C Stockham1004Russia2026-07-14
Arvin Z Bowley1005Italy2026-07-02
Faith D Briddick1006Brazil2026-07-07
Francesco K Glick1007Japan2026-07-08
Tony D Doe1008France2026-07-01
Antonio Z Venere1009Australia2026-06-20
Ricardo B Foller1010United Kingdom2026-07-13
Greenwood J Shinko1011Spain2026-06-29
Ivar U Maclead1012France2026-07-02
Silvio U Royster1013France2026-06-27
Cody B Campain1014United Kingdom2026-06-21
Salvatore C Gaucho1015Japan2026-07-08
Smith A Ferencz1016France2026-06-18
Maisha G Caldarera1017Germany2026-06-18
Isabel R Saylors1018Russia2026-07-03
Sinclair P Poquette1019Argentina2026-07-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon D SergiGermanyAmy Elsner PROPOSAL
Ashley X CaudyGermanyOnyama Limba PROPOSAL
Darci E BriddickSpainBernardo Dominic UNQUALIFIED
Aditya U MaletRussiaAnna Fali NEW
Salvatore R RoysterItalyStephen Shaw PROPOSAL
Ivar R KolmetzRussiaStephen Shaw PROPOSAL
Ivar T SlusarskiUnited KingdomAsiya Javayant QUALIFIED
Isabel P WieserGermanyStephen Shaw PROPOSAL
Emily M BologniaSpainElwin Sharvill NEW
Ricardo P RulapaughFranceAmy Elsner NEW
Maria T PerinAustraliaBernardo Dominic QUALIFIED
Sinclair K AmigonSpainElwin Sharvill RENEWAL
Maisha L CaldareraCanadaStephen Shaw UNQUALIFIED
Faith S BowleyArgentinaAmy Elsner PROPOSAL
Rodrigues J GarufiUnited KingdomIvan Magalhaes NEGOTIATION
Sinclair B WhobreyJapanAnna Fali NEGOTIATION
Francesco F CampainArgentinaBernardo Dominic NEW
Greenwood S KolmetzArgentinaElwin Sharvill NEW
Juan C FerenczArgentinaAmy Elsner PROPOSAL
Cody J DoeSpainBernardo Dominic PROPOSAL
Arvin V StensethIndiaIoni Bowcher NEW
Leon X WhobreyAustraliaXuxue Feng UNQUALIFIED
Munro H DoeIndiaElwin Sharvill RENEWAL
Ricardo E InouyeFranceIoni Bowcher NEW
Munro P StensethRussiaAnna Fali QUALIFIED
Deepesh M NestleIndiaAmy Elsner RENEWAL
Morrow E RutaIndiaStephen Shaw NEGOTIATION
Stacey N BologniaArgentinaXuxue Feng NEW
Antonio Q VenereUnited KingdomAmy Elsner NEGOTIATION
Aruna I TollnerAustraliaIvan Magalhaes QUALIFIED
Ricardo Z VenereIndiaAsiya Javayant NEGOTIATION
Julie X PerinAustraliaAmy Elsner NEGOTIATION
Nicolas J PoquetteRussiaIoni Bowcher NEW
Adams Z GarufiItalyBernardo Dominic PROPOSAL
Wickens P WieserBrazilStephen Shaw RENEWAL
Misaki N RutaSpainIvan Magalhaes QUALIFIED
Ashley S PerinRussiaIoni Bowcher RENEWAL
Ricardo C SchemmerSpainBernardo Dominic UNQUALIFIED
Aruna C NickaRussiaAnna Fali NEW
Mayumi H DilliardUnited KingdomAmy Elsner NEW

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