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
Salvatore J DilliardGermanyXuxue Feng UNQUALIFIED
Ricardo Q AmigonAustraliaOnyama Limba RENEWAL
Alejandro N PoquetteJapanBernardo Dominic UNQUALIFIED
Rodrigues J ChuiSpainIoni Bowcher PROPOSAL
Jeanfrancois P ButtCanadaXuxue Feng PROPOSAL
Isabel Q MacleadAustraliaOnyama Limba RENEWAL
Greenwood E PoquetteGermanyIoni Bowcher PROPOSAL
Maisha O BriddickRussiaElwin Sharvill UNQUALIFIED
Smith J DoeUnited KingdomAmy Elsner NEW
Ricardo W RoysterSpainIoni Bowcher NEW
Claire Y FigeroaUnited KingdomIvan Magalhaes NEGOTIATION
Clifford R RimRussiaXuxue Feng PROPOSAL
Kadeem Z NestleSpainAsiya Javayant NEGOTIATION
David X FollerUnited KingdomIvan Magalhaes PROPOSAL
Munro K WhobreyUnited KingdomStephen Shaw RENEWAL
Adams L IturbideGermanyIoni Bowcher NEW
Alejandro Y BologniaUnited KingdomStephen Shaw NEGOTIATION
Cody R BowleyJapanAnna Fali UNQUALIFIED
Jefferson O CampainFranceXuxue Feng PROPOSAL
Claire S StensethAustraliaElwin Sharvill RENEWAL
Silvio A PerinGermanyIvan Magalhaes PROPOSAL
Misaki K ShinkoArgentinaIoni Bowcher NEW
Aruna Z VocelkaUnited KingdomAnna Fali UNQUALIFIED
David J RimArgentinaAsiya Javayant QUALIFIED
Silvio X WieserJapanAsiya Javayant NEW
Claire C NickaGermanyBernardo Dominic NEGOTIATION
Maisha X GauchoIndiaElwin Sharvill PROPOSAL
Jennifer W MarrierCanadaStephen Shaw PROPOSAL
Emily S PerinArgentinaOnyama Limba QUALIFIED
Maisha S VocelkaIndiaXuxue Feng NEW
Ricardo Y FollerArgentinaOnyama Limba RENEWAL
Ricardo R NestleIndiaAnna Fali NEW
Smith M PoquetteCanadaAsiya Javayant UNQUALIFIED
Francesco C DoeBrazilIoni Bowcher UNQUALIFIED
Deepesh B NickaCanadaAsiya Javayant RENEWAL
Murillo V FigeroaSpainIvan Magalhaes UNQUALIFIED
Smith K FerenczJapanElwin Sharvill UNQUALIFIED
Isabel U GillianRussiaAsiya Javayant NEGOTIATION
Juan B NestleItalyElwin Sharvill QUALIFIED
Chavez Y NestleUnited KingdomAnna Fali RENEWAL
Kadeem E GarufiCanadaAsiya Javayant QUALIFIED
Johnson I CampainBrazilXuxue Feng NEW
Faith C GauchoSpainOnyama Limba NEW
Nicolas K GauchoArgentinaOnyama Limba NEW
Munro V WaycottBrazilStephen Shaw NEGOTIATION
Morrow X SaylorsIndiaOnyama Limba UNQUALIFIED
Claire B NickaSpainElwin Sharvill QUALIFIED
Salvatore I WaycottRussiaStephen Shaw UNQUALIFIED
Julie S FerenczSpainBernardo Dominic PROPOSAL
Darci R OldroydGermanyOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ivar S DoeBrazilStephen Shaw UNQUALIFIED
Kaitlin S SchemmerArgentinaOnyama Limba PROPOSAL
Maria N KolmetzIndiaAnna Fali PROPOSAL
Murillo E KuskoIndiaBernardo Dominic UNQUALIFIED
Nicolas L ShinkoGermanyBernardo Dominic NEGOTIATION
Murillo H AlbaresJapanOnyama Limba NEGOTIATION
Maria B BologniaCanadaXuxue Feng NEGOTIATION
Jennifer E RimUnited KingdomIvan Magalhaes NEGOTIATION
Mayumi S FigeroaItalyIoni Bowcher QUALIFIED
Jones U KolmetzRussiaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy I RulapaughArgentina2026-08-06Printing Dimensions PROPOSAL33Stephen Shaw
1001Nicolas E DoeAustralia2026-07-26Chanay, Jeffrey A Esq PROPOSAL1Asiya Javayant
1002Jones M RulapaughSpain2026-07-09Benton, John B Jr NEGOTIATION14Onyama Limba
1003Jeanfrancois Q CaldareraRussia2026-07-21Feiner Bros UNQUALIFIED94Stephen Shaw
1004Ashley D BologniaBrazil2026-07-14Printing Dimensions QUALIFIED29Asiya Javayant
1005Silvio M DilliardGermany2026-07-10Benton, John B Jr RENEWAL12Anna Fali
1006Alejandro M MaletBrazil2026-08-01Chanay, Jeffrey A Esq RENEWAL1Asiya Javayant
1007Francesco T PoquetteArgentina2026-07-09Rousseaux, Michael Esq NEGOTIATION31Amy Elsner
1008Sinclair W WhobreyRussia2026-08-03Morlong Associates UNQUALIFIED80Xuxue Feng
1009Francesco T BowleyAustralia2026-07-24Commercial Press NEW61Ioni Bowcher
1010Wickens Y KolmetzUnited Kingdom2026-08-02Chanay, Jeffrey A Esq QUALIFIED94Asiya Javayant
1011Kadeem B WieserIndia2026-07-12King, Christopher A Esq UNQUALIFIED65Amy Elsner
1012Jefferson H SchemmerAustralia2026-07-25Morlong Associates NEW43Onyama Limba
1013Faith H TollnerItaly2026-07-30King, Christopher A Esq PROPOSAL67Elwin Sharvill
1014Octavia L PerinBrazil2026-07-24Rangoni Of Florence QUALIFIED4Onyama Limba
1015Jeanfrancois Q RulapaughAustralia2026-07-13Truhlar And Truhlar Attys QUALIFIED48Amy Elsner
1016Mujtaba F ChuiFrance2026-08-03Dorl, James J Esq RENEWAL6Amy Elsner
1017David A OldroydArgentina2026-07-11Chanay, Jeffrey A Esq RENEWAL9Onyama Limba
1018Julie J DilliardGermany2026-07-19Commercial Press NEGOTIATION12Stephen Shaw
1019Octavia U PerinBrazil2026-08-05Chanay, Jeffrey A Esq UNQUALIFIED47Ioni Bowcher
1020Aika G VocelkaGermany2026-07-23Commercial Press RENEWAL90Xuxue Feng
1021Emily W CaudyArgentina2026-08-06Commercial Press NEGOTIATION5Ioni Bowcher
1022Maria K RulapaughCanada2026-07-09Feltz Printing Service NEGOTIATION28Onyama Limba
1023Greenwood S PoquetteGermany2026-07-13King, Christopher A Esq RENEWAL0Asiya Javayant
1024Jones A DoeBrazil2026-07-08King, Christopher A Esq RENEWAL93Asiya Javayant
1025Nicolas M KuskoUnited Kingdom2026-07-31Dorl, James J Esq NEGOTIATION59Amy Elsner
1026Alejandro A ButtJapan2026-07-19Dorl, James J Esq NEW87Xuxue Feng
1027Deepesh V RulapaughCanada2026-08-04Feltz Printing Service PROPOSAL9Anna Fali
1028Ashley V PoquetteCanada2026-07-31Dorl, James J Esq PROPOSAL54Ioni Bowcher
1029Jennifer S KuskoFrance2026-07-16King, Christopher A Esq NEW11Asiya Javayant
1030Jennifer E MaletAustralia2026-07-10Dorl, James J Esq UNQUALIFIED92Elwin Sharvill
1031Antonio S NickaRussia2026-07-16Feltz Printing Service RENEWAL85Ioni Bowcher
1032Darci P FlosiItaly2026-07-10Benton, John B Jr NEGOTIATION9Elwin Sharvill
1033Aditya I PerinCanada2026-07-31Truhlar And Truhlar Attys RENEWAL0Asiya Javayant
1034Murillo W RutaAustralia2026-07-19Chapman, Ross E Esq UNQUALIFIED24Ioni Bowcher
1035Morrow Q DarakjySpain2026-07-21Dorl, James J Esq UNQUALIFIED48Anna Fali
1036Johnson R MaletUnited Kingdom2026-07-18Truhlar And Truhlar Attys NEGOTIATION45Ivan Magalhaes
1037Faith U DarakjyFrance2026-08-04Buckley Miller Wright RENEWAL20Anna Fali
1038Munro X RoysterBrazil2026-07-13Dorl, James J Esq NEGOTIATION63Bernardo Dominic
1039Francesco B MaletItaly2026-08-04Rousseaux, Michael Esq UNQUALIFIED50Ioni Bowcher
1040Clifford Q SergiJapan2026-07-30Rousseaux, Michael Esq QUALIFIED23Xuxue Feng
1041Johnson K RimAustralia2026-07-29King, Christopher A Esq QUALIFIED74Anna Fali
1042Deepesh F ShinkoCanada2026-07-08Morlong Associates NEW65Anna Fali
1043Wickens B DarakjyCanada2026-08-04Chanay, Jeffrey A Esq NEGOTIATION82Bernardo Dominic
1044David J SlusarskiAustralia2026-08-01Printing Dimensions NEW94Asiya Javayant
1045James F MarrierSpain2026-07-31Truhlar And Truhlar Attys PROPOSAL54Asiya Javayant
1046Aruna T TollnerBrazil2026-07-09Dorl, James J Esq NEW43Anna Fali
1047Silvio I IturbideRussia2026-07-08Rangoni Of Florence RENEWAL72Ivan Magalhaes
1048Julie I StensethIndia2026-07-17Benton, John B Jr UNQUALIFIED6Ioni Bowcher
1049James O SlusarskiCanada2026-07-08Morlong Associates QUALIFIED3Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Octavia S BriddickCanadaIoni Bowcher NEW
Mujtaba X KuskoUnited KingdomAsiya Javayant UNQUALIFIED
Wickens X MorascaRussiaStephen Shaw UNQUALIFIED
Ivar U MaletAustraliaAnna Fali NEW
Maisha A SaylorsItalyElwin Sharvill QUALIFIED
Jeanfrancois T WieserArgentinaBernardo Dominic NEW
Ashley E MarrierRussiaAsiya Javayant UNQUALIFIED
Kaitlin E SchemmerJapanAsiya Javayant NEW
Alejandro I CaldareraJapanBernardo Dominic QUALIFIED
Smith N CaudySpainAnna Fali RENEWAL
Adams Y RulapaughJapanOnyama Limba NEGOTIATION
Jones R BowleyItalyBernardo Dominic UNQUALIFIED
Mujtaba N KolmetzCanadaOnyama Limba QUALIFIED
Emily K NickaAustraliaBernardo Dominic NEGOTIATION
Octavia O BowleyIndiaIvan Magalhaes UNQUALIFIED
Isabel L NestleUnited KingdomStephen Shaw NEW
Deepesh Z KolmetzFranceBernardo Dominic RENEWAL
Mujtaba M FlosiIndiaBernardo Dominic UNQUALIFIED
Murillo N ChuiIndiaAnna Fali UNQUALIFIED
Maisha Y FigeroaUnited KingdomIvan Magalhaes UNQUALIFIED
Aika E VenereJapanAmy Elsner QUALIFIED
Juan X MorascaArgentinaBernardo Dominic UNQUALIFIED
Stacey N MaletAustraliaAsiya Javayant QUALIFIED
Salvatore K IturbideIndiaOnyama Limba RENEWAL
Ashley R StockhamGermanyAmy Elsner QUALIFIED
Chavez C SaylorsRussiaAmy Elsner UNQUALIFIED
Mayumi U DilliardArgentinaAmy Elsner PROPOSAL
Jeanfrancois L FerenczSpainAnna Fali QUALIFIED
Leja Y GlickBrazilIvan Magalhaes RENEWAL
Deepesh W RoysterBrazilBernardo Dominic QUALIFIED
Jeanfrancois P StockhamSpainIoni Bowcher UNQUALIFIED
Maria T InouyeSpainIoni Bowcher NEGOTIATION
Francesco H GlickCanadaAmy Elsner PROPOSAL
Clifford X NestleItalyElwin Sharvill PROPOSAL
Antonio X WieserRussiaAnna Fali RENEWAL
Costa B PaprockiRussiaElwin Sharvill NEW
Francesco H RulapaughBrazilBernardo Dominic NEGOTIATION
James Z PaprockiGermanyIvan Magalhaes PROPOSAL
Jeanfrancois V CaudyFranceOnyama Limba RENEWAL
Wickens X KuskoCanadaXuxue Feng RENEWAL
Smith J VenereArgentinaXuxue Feng UNQUALIFIED
Izzy J IturbideRussiaBernardo Dominic QUALIFIED
Kaitlin V OstroskyUnited KingdomStephen Shaw PROPOSAL
Munro O FerenczIndiaIoni Bowcher NEGOTIATION
Kadeem D CampainAustraliaElwin Sharvill PROPOSAL
Leon E MorascaGermanyAmy Elsner PROPOSAL
Isabel J FerenczAustraliaElwin Sharvill QUALIFIED
Smith B AmigonIndiaAmy Elsner NEW
Emily B InouyeAustraliaOnyama Limba PROPOSAL
Octavia W MacleadItalyIvan Magalhaes RENEWAL
Frozen Columns
Name
Deepesh C Glick
Mayumi J Iturbide
Leon F Maclead
Izzy F Marrier
Claire B Schemmer
Mujtaba E Caldarera
Aditya C Paprocki
Maria D Bowley
Antonio C Slusarski
Tony C Nicka
Mayumi T Stenseth
Kaitlin Y Rim
Misaki Q Shinko
Jeanfrancois Z Butt
Johnson C Marrier
Francesco D Tollner
Jefferson S Waycott
Leja V Iturbide
Johnson R Saylors
Ricardo E Whobrey
Darci V Amigon
Ashley G Albares
Mayumi Y Nicka
Mayumi H Amigon
Munro X Kusko
Leon L Wieser
Chavez Q Poquette
Maria U Kolmetz
Leon X Glick
Wickens M Ferencz
Juan N Bowley
Wickens T Nicka
Jennifer C Sergi
Misaki H Darakjy
Aika A Bolognia
Isabel W Bolognia
James G Malet
Francesco S Schemmer
Jefferson I Dilliard
Stacey S Briddick
Juan K Caldarera
Claire O Waycott
Cody S Rulapaugh
Wickens A Saylors
Stacey R Schemmer
Alejandro N Gaucho
Chavez C Bolognia
Munro R Inouye
Morrow N Maclead
Nicolas Y Butt
IdCountryDate
1000India2026-07-17
1001Germany2026-07-17
1002Argentina2026-07-09
1003Argentina2026-07-15
1004Japan2026-07-14
1005Canada2026-07-29
1006India2026-07-11
1007Brazil2026-07-31
1008Germany2026-07-27
1009Germany2026-08-05
1010India2026-07-21
1011Australia2026-07-18
1012Australia2026-08-03
1013Spain2026-07-08
1014Argentina2026-07-22
1015Germany2026-07-26
1016Australia2026-07-08
1017Australia2026-07-22
1018Australia2026-07-21
1019Germany2026-07-19
1020France2026-07-15
1021United Kingdom2026-08-01
1022Italy2026-07-31
1023Argentina2026-07-21
1024United Kingdom2026-08-03
1025Germany2026-07-22
1026Canada2026-07-18
1027France2026-07-13
1028Spain2026-07-14
1029United Kingdom2026-07-09
1030Brazil2026-07-15
1031Australia2026-07-28
1032Australia2026-07-14
1033Brazil2026-07-10
1034Brazil2026-07-19
1035Australia2026-07-13
1036Spain2026-08-01
1037Russia2026-07-08
1038United Kingdom2026-08-01
1039Canada2026-08-05
1040Spain2026-08-05
1041United Kingdom2026-08-02
1042Japan2026-07-25
1043Japan2026-08-03
1044Italy2026-08-01
1045Japan2026-07-22
1046Canada2026-07-11
1047Italy2026-07-23
1048Canada2026-08-04
1049Italy2026-07-23

On-Demand Data

NameIdCountryDate
Jeanfrancois C Waycott1000Italy2026-08-05
Jones D Amigon1001Spain2026-07-14
Chavez E Ferencz1002United Kingdom2026-07-29
Morrow X Slusarski1003Brazil2026-07-30
Wickens J Schemmer1004Italy2026-07-30
Darci J Royster1005France2026-07-30
Wickens C Albares1006Italy2026-08-03
Darci Z Darakjy1007India2026-08-04
Darci G Caudy1008Argentina2026-07-15
Johnson W Poquette1009France2026-08-04
David R Flosi1010Brazil2026-07-12
Chavez F Marrier1011Russia2026-07-25
David N Dilliard1012Italy2026-07-18
Izzy B Bowley1013Italy2026-07-15
Maria J Amigon1014Australia2026-07-13
Faith E Nicka1015Spain2026-07-20
Wickens J Doe1016Canada2026-07-19
Johnson J Iturbide1017Brazil2026-08-04
Misaki A Maclead1018Germany2026-07-16
Maisha Y Tollner1019Germany2026-07-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues V BowleyIndiaAnna Fali NEGOTIATION
Claire N PaprockiBrazilXuxue Feng NEGOTIATION
Juan Q ShinkoRussiaElwin Sharvill UNQUALIFIED
Costa I SchemmerBrazilElwin Sharvill RENEWAL
Alejandro W GauchoGermanyStephen Shaw RENEWAL
Misaki M TollnerGermanyAmy Elsner UNQUALIFIED
Rodrigues V RimIndiaIvan Magalhaes UNQUALIFIED
Mujtaba A GillianBrazilElwin Sharvill QUALIFIED
Chavez T AlbaresCanadaBernardo Dominic UNQUALIFIED
Ricardo R BowleyArgentinaElwin Sharvill RENEWAL
Silvio Y GarufiJapanAmy Elsner UNQUALIFIED
Izzy C WieserFranceBernardo Dominic NEGOTIATION
Greenwood R ButtUnited KingdomXuxue Feng PROPOSAL
Murillo Y DarakjyGermanyBernardo Dominic RENEWAL
Francesco F FlosiBrazilOnyama Limba RENEWAL
Greenwood C CaudyItalyBernardo Dominic NEGOTIATION
Emily W NestleBrazilElwin Sharvill NEW
Aditya L StensethGermanyOnyama Limba QUALIFIED
Sinclair C WaycottSpainBernardo Dominic UNQUALIFIED
Mayumi X GauchoUnited KingdomIvan Magalhaes NEGOTIATION
Salvatore L RutaAustraliaAmy Elsner PROPOSAL
Leja J DarakjyBrazilAmy Elsner RENEWAL
Ricardo X MacleadIndiaBernardo Dominic RENEWAL
Nicolas F SlusarskiIndiaAsiya Javayant NEW
Maria A WieserUnited KingdomXuxue Feng QUALIFIED
Faith K BowleyArgentinaIoni Bowcher RENEWAL
Adams W AmigonJapanAnna Fali UNQUALIFIED
Sinclair B PaprockiGermanyBernardo Dominic NEGOTIATION
Maisha S RulapaughGermanyXuxue Feng RENEWAL
Jennifer L SaylorsAustraliaXuxue Feng UNQUALIFIED
Leon L GillianBrazilIvan Magalhaes PROPOSAL
Aruna G OstroskyAustraliaXuxue Feng NEGOTIATION
Chavez Y FigeroaArgentinaBernardo Dominic UNQUALIFIED
Antonio Q FlosiArgentinaBernardo Dominic QUALIFIED
Cody N OstroskyAustraliaAmy Elsner PROPOSAL
Ashley M FollerSpainAsiya Javayant RENEWAL
Arvin N AmigonItalyAsiya Javayant NEW
Costa C BriddickGermanyBernardo Dominic PROPOSAL
Juan W RimAustraliaBernardo Dominic UNQUALIFIED
Mujtaba Q MarrierIndiaElwin Sharvill QUALIFIED

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