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
Morrow Y StockhamItalyAsiya Javayant QUALIFIED
Mujtaba C SergiIndiaElwin Sharvill PROPOSAL
Leja K RimAustraliaAsiya Javayant PROPOSAL
Morrow M FerenczJapanAsiya Javayant UNQUALIFIED
David O TollnerFranceIvan Magalhaes PROPOSAL
Izzy T BowleyIndiaIvan Magalhaes RENEWAL
Claire W FerenczItalyAsiya Javayant NEGOTIATION
Alejandro C DoeJapanStephen Shaw NEGOTIATION
Salvatore Q AlbaresRussiaBernardo Dominic UNQUALIFIED
Francesco E GauchoRussiaBernardo Dominic NEGOTIATION
Morrow O DarakjyFranceXuxue Feng NEGOTIATION
Mayumi Q AlbaresIndiaStephen Shaw PROPOSAL
Jefferson S GauchoRussiaXuxue Feng RENEWAL
Costa C ChuiGermanyIoni Bowcher NEGOTIATION
Francesco O MorascaItalyElwin Sharvill RENEWAL
Sinclair H BowleyFranceXuxue Feng PROPOSAL
Aruna X SaylorsIndiaAnna Fali UNQUALIFIED
Alejandro U PaprockiUnited KingdomOnyama Limba RENEWAL
Maria V AlbaresJapanAnna Fali NEW
Nicolas M RoysterBrazilBernardo Dominic RENEWAL
Ricardo Y GillianItalyXuxue Feng NEW
Deepesh U SlusarskiUnited KingdomAmy Elsner NEW
Izzy V StensethAustraliaElwin Sharvill NEW
Chavez Z TollnerFranceAnna Fali NEW
Chavez Z FollerJapanIoni Bowcher NEGOTIATION
Octavia F VenereJapanAsiya Javayant NEGOTIATION
Deepesh D MaletSpainElwin Sharvill UNQUALIFIED
Aruna U OldroydBrazilStephen Shaw UNQUALIFIED
Salvatore R VenereArgentinaIvan Magalhaes RENEWAL
Darci V VenereGermanyAnna Fali QUALIFIED
Wickens J CaudyUnited KingdomOnyama Limba NEW
Julie K ChuiFranceOnyama Limba NEGOTIATION
Cody Z BriddickFranceOnyama Limba NEGOTIATION
Kaitlin F KolmetzIndiaIvan Magalhaes UNQUALIFIED
Munro C KuskoGermanyIoni Bowcher NEGOTIATION
Johnson L TollnerIndiaXuxue Feng QUALIFIED
Chavez M MacleadAustraliaXuxue Feng NEW
Wickens A StensethGermanyXuxue Feng QUALIFIED
Leja P ChuiFranceXuxue Feng RENEWAL
Chavez Q SaylorsJapanBernardo Dominic UNQUALIFIED
Smith M PerinFranceBernardo Dominic PROPOSAL
Juan S DoeGermanyAmy Elsner PROPOSAL
Sinclair M NickaItalyBernardo Dominic NEGOTIATION
Kaitlin Z CaldareraGermanyAsiya Javayant RENEWAL
Claire P GauchoSpainOnyama Limba PROPOSAL
Chavez R BologniaFranceIoni Bowcher NEGOTIATION
Antonio I CampainGermanyXuxue Feng RENEWAL
Izzy C SlusarskiIndiaIvan Magalhaes PROPOSAL
Greenwood I SlusarskiSpainOnyama Limba QUALIFIED
Misaki F MaletCanadaAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Emily T MaletSpainOnyama Limba NEW
Maria J SchemmerIndiaIoni Bowcher QUALIFIED
Morrow F GarufiArgentinaXuxue Feng RENEWAL
Tony X RoysterBrazilAmy Elsner UNQUALIFIED
Chavez J RulapaughItalyAmy Elsner PROPOSAL
Darci C NestleBrazilAsiya Javayant NEGOTIATION
Rodrigues C KuskoItalyElwin Sharvill QUALIFIED
Alejandro R IturbideIndiaBernardo Dominic UNQUALIFIED
Murillo R CampainGermanyXuxue Feng UNQUALIFIED
David Z SergiSpainOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson I PaprockiBrazil2026-08-11Buckley Miller Wright PROPOSAL39Onyama Limba
1001Salvatore W DilliardUnited Kingdom2026-07-31Chanay, Jeffrey A Esq RENEWAL55Xuxue Feng
1002Salvatore O FlosiFrance2026-08-13Dorl, James J Esq PROPOSAL50Elwin Sharvill
1003Isabel X VenereArgentina2026-08-13Commercial Press NEGOTIATION45Elwin Sharvill
1004Arvin H IturbideBrazil2026-08-12Feltz Printing Service QUALIFIED6Asiya Javayant
1005Murillo G SchemmerItaly2026-07-26Printing Dimensions PROPOSAL97Asiya Javayant
1006Johnson Y WaycottItaly2026-08-03Commercial Press NEGOTIATION91Amy Elsner
1007Antonio Y GarufiBrazil2026-08-14King, Christopher A Esq QUALIFIED88Ivan Magalhaes
1008Francesco P SergiItaly2026-08-10King, Christopher A Esq NEW79Bernardo Dominic
1009Mujtaba G BowleyFrance2026-08-15Chemel, James L Cpa UNQUALIFIED67Asiya Javayant
1010Alejandro W ChuiGermany2026-07-31Chapman, Ross E Esq UNQUALIFIED46Anna Fali
1011Chavez Q MaletArgentina2026-07-27Benton, John B Jr QUALIFIED36Onyama Limba
1012Chavez E SaylorsSpain2026-08-16Printing Dimensions RENEWAL91Ivan Magalhaes
1013Arvin G ShinkoItaly2026-07-29Chanay, Jeffrey A Esq NEGOTIATION48Asiya Javayant
1014Jones B DarakjyAustralia2026-08-12Printing Dimensions QUALIFIED70Bernardo Dominic
1015Ivar K SlusarskiIndia2026-08-01Feiner Bros NEGOTIATION60Onyama Limba
1016Jennifer P AmigonItaly2026-07-24Benton, John B Jr QUALIFIED87Amy Elsner
1017Octavia G GlickGermany2026-07-30Chapman, Ross E Esq NEW73Bernardo Dominic
1018Salvatore F GlickIndia2026-08-13Feltz Printing Service RENEWAL30Elwin Sharvill
1019Izzy E IturbideArgentina2026-08-06Rangoni Of Florence NEW94Bernardo Dominic
1020Deepesh R MarrierRussia2026-07-30Morlong Associates RENEWAL89Amy Elsner
1021Leja R NestleArgentina2026-08-15Chanay, Jeffrey A Esq NEGOTIATION4Bernardo Dominic
1022Aditya W CaudySpain2026-08-07Chapman, Ross E Esq RENEWAL28Stephen Shaw
1023David Z CaudyAustralia2026-08-09Benton, John B Jr RENEWAL99Xuxue Feng
1024Julie I KolmetzSpain2026-08-03Commercial Press NEW74Anna Fali
1025James X NickaFrance2026-07-23Printing Dimensions PROPOSAL16Bernardo Dominic
1026David N StockhamGermany2026-08-13King, Christopher A Esq NEGOTIATION99Stephen Shaw
1027Maria C StockhamAustralia2026-07-30Chanay, Jeffrey A Esq RENEWAL89Elwin Sharvill
1028Johnson A StockhamFrance2026-08-07Feltz Printing Service NEGOTIATION25Amy Elsner
1029Kaitlin B CaudyJapan2026-07-30Rousseaux, Michael Esq RENEWAL56Xuxue Feng
1030Kaitlin J CaudyAustralia2026-08-04Printing Dimensions UNQUALIFIED42Anna Fali
1031Julie R VocelkaIndia2026-08-01Truhlar And Truhlar Attys UNQUALIFIED73Anna Fali
1032Murillo D KuskoBrazil2026-07-21Rousseaux, Michael Esq UNQUALIFIED77Bernardo Dominic
1033Johnson N SchemmerAustralia2026-08-13Chanay, Jeffrey A Esq NEGOTIATION12Bernardo Dominic
1034Jeanfrancois U VenereBrazil2026-08-03Chemel, James L Cpa NEGOTIATION60Bernardo Dominic
1035Chavez U MarrierGermany2026-08-08Printing Dimensions NEGOTIATION41Xuxue Feng
1036Kadeem J FigeroaItaly2026-08-08Benton, John B Jr NEW59Ioni Bowcher
1037Johnson T TollnerIndia2026-07-24Truhlar And Truhlar Attys UNQUALIFIED46Amy Elsner
1038Kadeem V DilliardIndia2026-08-01Feltz Printing Service RENEWAL30Stephen Shaw
1039David L ShinkoBrazil2026-07-30Chanay, Jeffrey A Esq NEGOTIATION23Bernardo Dominic
1040Jefferson X DilliardCanada2026-08-01Commercial Press UNQUALIFIED74Ioni Bowcher
1041Rodrigues V PoquetteAustralia2026-07-29Dorl, James J Esq QUALIFIED1Bernardo Dominic
1042Morrow X RimFrance2026-08-13Chemel, James L Cpa QUALIFIED87Anna Fali
1043Leon L StensethArgentina2026-08-01Commercial Press RENEWAL25Stephen Shaw
1044Jeanfrancois W InouyeUnited Kingdom2026-07-24Chanay, Jeffrey A Esq UNQUALIFIED44Xuxue Feng
1045Aruna Q GlickAustralia2026-08-05Chemel, James L Cpa NEW85Xuxue Feng
1046Johnson K DilliardFrance2026-07-25Morlong Associates NEW65Ioni Bowcher
1047Francesco P StensethItaly2026-07-28Rangoni Of Florence NEGOTIATION5Xuxue Feng
1048Sinclair F SaylorsAustralia2026-07-24Morlong Associates NEGOTIATION28Anna Fali
1049Claire Z IturbideRussia2026-07-27Rangoni Of Florence UNQUALIFIED82Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Sinclair Q VenereCanadaBernardo Dominic PROPOSAL
Morrow U FlosiIndiaElwin Sharvill PROPOSAL
Mujtaba T FlosiGermanyStephen Shaw UNQUALIFIED
Alejandro Y IturbideGermanyAsiya Javayant NEW
Aditya C PaprockiAustraliaAsiya Javayant PROPOSAL
Alejandro O PoquetteIndiaIoni Bowcher RENEWAL
Stacey X StockhamFranceAsiya Javayant RENEWAL
Jeanfrancois Y GlickFranceAsiya Javayant RENEWAL
Munro R WhobreyFranceAnna Fali NEGOTIATION
Mujtaba I DarakjyFranceIvan Magalhaes NEGOTIATION
Leja O SaylorsRussiaAnna Fali RENEWAL
Claire F ShinkoBrazilOnyama Limba RENEWAL
Francesco X GlickSpainElwin Sharvill UNQUALIFIED
Mujtaba K CaudyRussiaStephen Shaw PROPOSAL
Sinclair N PoquetteIndiaIvan Magalhaes UNQUALIFIED
Ricardo Z VenereItalyStephen Shaw QUALIFIED
James V NickaBrazilXuxue Feng NEGOTIATION
Maria Q NestleAustraliaAmy Elsner QUALIFIED
Darci K FollerCanadaOnyama Limba UNQUALIFIED
Munro C RutaUnited KingdomXuxue Feng PROPOSAL
Leja P GauchoAustraliaBernardo Dominic PROPOSAL
Aruna D DilliardArgentinaBernardo Dominic RENEWAL
David F ShinkoFranceStephen Shaw QUALIFIED
Leon O VenereSpainAsiya Javayant QUALIFIED
Mujtaba S FigeroaGermanyOnyama Limba NEGOTIATION
Antonio A FollerCanadaOnyama Limba NEGOTIATION
Munro E SergiItalyIoni Bowcher NEGOTIATION
Chavez W MorascaArgentinaAsiya Javayant NEW
Deepesh C KolmetzGermanyOnyama Limba PROPOSAL
David B GlickArgentinaAnna Fali RENEWAL
Salvatore M CaldareraFranceBernardo Dominic RENEWAL
Mujtaba D RoysterFranceOnyama Limba RENEWAL
Salvatore E GlickArgentinaElwin Sharvill PROPOSAL
Cody T PerinGermanyAmy Elsner PROPOSAL
Francesco Z MaletRussiaStephen Shaw NEW
Darci O VocelkaJapanOnyama Limba QUALIFIED
Cody E WhobreyUnited KingdomIvan Magalhaes NEGOTIATION
Leja Q ShinkoArgentinaAsiya Javayant QUALIFIED
Sinclair M FollerAustraliaXuxue Feng UNQUALIFIED
Nicolas P GarufiArgentinaElwin Sharvill PROPOSAL
Morrow D WieserBrazilIvan Magalhaes QUALIFIED
Claire E KolmetzGermanyElwin Sharvill RENEWAL
Maisha S OstroskyRussiaBernardo Dominic UNQUALIFIED
Octavia R RimJapanAmy Elsner UNQUALIFIED
Sinclair E CampainRussiaOnyama Limba NEW
Greenwood D WaycottSpainIoni Bowcher UNQUALIFIED
Adams D WhobreyIndiaOnyama Limba NEGOTIATION
Wickens Z KuskoSpainElwin Sharvill NEGOTIATION
Francesco V PoquetteUnited KingdomAsiya Javayant PROPOSAL
Mayumi V GauchoJapanXuxue Feng UNQUALIFIED
Frozen Columns
Name
Misaki P Foller
Jefferson E Nestle
Leja X Paprocki
Jefferson A Butt
Aika E Kolmetz
Chavez H Rulapaugh
Francesco L Nicka
Kadeem R Dilliard
Mayumi L Chui
Clifford G Campain
Mayumi U Albares
Wickens T Nicka
Stacey C Caudy
Maria T Morasca
Jefferson Y Gillian
Antonio P Ostrosky
Aruna P Poquette
Maisha B Figeroa
Alejandro J Inouye
Morrow W Saylors
Juan Z Rulapaugh
Jeanfrancois M Rulapaugh
Ricardo B Wieser
Faith O Kolmetz
Ashley C Whobrey
Claire V Shinko
Maisha Y Amigon
Deepesh Y Morasca
Izzy X Gaucho
Jefferson W Slusarski
Adams U Bowley
Chavez N Inouye
Misaki M Rulapaugh
Octavia E Kolmetz
Misaki I Ferencz
Murillo U Marrier
Jeanfrancois T Garufi
Greenwood A Flosi
Wickens C Doe
Smith J Briddick
Arvin L Rulapaugh
Francesco I Nicka
David Q Maclead
Cody O Ostrosky
Greenwood L Stockham
Deepesh T Foller
Kadeem E Maclead
Faith X Wieser
Maria N Kusko
Jeanfrancois Z Rulapaugh
IdCountryDate
1000Italy2026-08-05
1001India2026-07-23
1002Argentina2026-08-09
1003Russia2026-08-15
1004Japan2026-08-18
1005Australia2026-08-06
1006United Kingdom2026-07-31
1007Germany2026-08-12
1008Germany2026-08-17
1009United Kingdom2026-08-15
1010Argentina2026-08-13
1011Russia2026-07-29
1012Japan2026-08-14
1013France2026-07-29
1014Italy2026-07-25
1015Spain2026-07-26
1016Brazil2026-08-06
1017Canada2026-08-19
1018United Kingdom2026-08-05
1019France2026-08-17
1020United Kingdom2026-08-02
1021India2026-08-13
1022France2026-08-18
1023India2026-07-28
1024Italy2026-07-24
1025Canada2026-08-19
1026Germany2026-07-23
1027Russia2026-08-11
1028Canada2026-07-25
1029France2026-07-26
1030Argentina2026-08-16
1031Italy2026-07-31
1032India2026-07-27
1033Russia2026-08-06
1034India2026-08-13
1035Japan2026-07-23
1036United Kingdom2026-08-10
1037United Kingdom2026-08-10
1038Australia2026-07-26
1039Russia2026-08-15
1040France2026-08-04
1041Italy2026-07-26
1042Italy2026-08-11
1043India2026-07-24
1044Argentina2026-08-05
1045Australia2026-08-15
1046Russia2026-08-18
1047Italy2026-07-27
1048France2026-07-30
1049Australia2026-07-28

On-Demand Data

NameIdCountryDate
Jeanfrancois R Marrier1000Russia2026-07-28
Alejandro R Maclead1001India2026-08-12
Murillo O Kusko1002Spain2026-08-19
Isabel P Campain1003Italy2026-08-14
Faith V Doe1004India2026-08-07
Maisha U Caldarera1005Spain2026-07-30
Aika G Slusarski1006Italy2026-08-06
Maisha S Ruta1007Japan2026-08-19
Wickens X Figeroa1008India2026-07-31
Silvio Z Garufi1009Germany2026-08-06
Kaitlin H Iturbide1010Italy2026-07-24
Morrow I Bowley1011Italy2026-07-23
Salvatore B Darakjy1012Germany2026-08-07
Greenwood T Stockham1013Japan2026-07-26
Ricardo T Poquette1014Germany2026-07-27
Francesco O Paprocki1015Germany2026-08-03
Octavia S Doe1016Germany2026-08-07
Aditya A Darakjy1017Germany2026-07-21
Izzy A Kusko1018Argentina2026-07-27
Adams H Kolmetz1019Italy2026-07-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro Z NestleAustraliaIoni Bowcher NEGOTIATION
David G FigeroaAustraliaIvan Magalhaes UNQUALIFIED
Darci F ShinkoRussiaIoni Bowcher QUALIFIED
Ashley K AlbaresCanadaIvan Magalhaes UNQUALIFIED
Deepesh Z KuskoCanadaXuxue Feng UNQUALIFIED
Sinclair J MorascaIndiaStephen Shaw UNQUALIFIED
Julie S SaylorsIndiaAsiya Javayant UNQUALIFIED
Mujtaba M ButtFranceAmy Elsner PROPOSAL
Isabel P FigeroaIndiaIvan Magalhaes QUALIFIED
Kaitlin G WhobreyAustraliaAmy Elsner PROPOSAL
Jefferson Z CaudyAustraliaAmy Elsner PROPOSAL
Leja M DoeItalyAnna Fali QUALIFIED
Aruna C ButtSpainXuxue Feng NEW
Stacey F FlosiJapanBernardo Dominic RENEWAL
Kaitlin G MacleadUnited KingdomOnyama Limba QUALIFIED
Francesco J PoquetteSpainStephen Shaw NEGOTIATION
Julie F PaprockiUnited KingdomAmy Elsner PROPOSAL
Mayumi B InouyeGermanyElwin Sharvill NEW
Leon M GlickJapanIoni Bowcher UNQUALIFIED
Cody C SergiAustraliaIvan Magalhaes NEGOTIATION
Alejandro S PoquetteCanadaIoni Bowcher NEGOTIATION
Salvatore S SaylorsJapanIoni Bowcher NEGOTIATION
Tony K KolmetzSpainStephen Shaw NEGOTIATION
Francesco H GillianSpainBernardo Dominic NEW
Antonio E OldroydSpainIoni Bowcher UNQUALIFIED
Rodrigues L WhobreyIndiaStephen Shaw PROPOSAL
Aruna V DoeCanadaAnna Fali NEW
Maisha G RutaAustraliaIvan Magalhaes RENEWAL
Greenwood G FlosiGermanyAmy Elsner UNQUALIFIED
Tony W IturbideJapanAsiya Javayant UNQUALIFIED
Ricardo N VocelkaSpainAsiya Javayant QUALIFIED
Aruna Z SlusarskiRussiaElwin Sharvill NEGOTIATION
Jefferson N AmigonItalyStephen Shaw RENEWAL
Greenwood V WieserCanadaIvan Magalhaes QUALIFIED
Misaki Y FollerGermanyAsiya Javayant NEW
Tony V WhobreyFranceXuxue Feng UNQUALIFIED
Leja X DilliardCanadaAnna Fali QUALIFIED
Deepesh A SaylorsUnited KingdomAnna Fali NEGOTIATION
Mujtaba H WhobreySpainIoni Bowcher UNQUALIFIED
Stacey P CaldareraBrazilStephen Shaw 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>