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
Munro C PerinIndiaStephen Shaw UNQUALIFIED
Mayumi R FollerFranceXuxue Feng PROPOSAL
Isabel Q MacleadGermanyBernardo Dominic QUALIFIED
Arvin A CampainRussiaAnna Fali RENEWAL
Jefferson H GillianCanadaBernardo Dominic NEW
Izzy Y ButtIndiaAsiya Javayant QUALIFIED
Clifford W ChuiUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson U GillianCanadaBernardo Dominic UNQUALIFIED
Ashley K NestleFranceAnna Fali NEGOTIATION
Juan C VenereAustraliaOnyama Limba NEGOTIATION
Mujtaba Z MaletSpainAnna Fali PROPOSAL
Antonio I ShinkoRussiaBernardo Dominic RENEWAL
Aditya D BriddickCanadaIoni Bowcher UNQUALIFIED
Ashley Y KuskoIndiaElwin Sharvill QUALIFIED
Arvin O VocelkaGermanyElwin Sharvill NEGOTIATION
Izzy G VocelkaGermanyIvan Magalhaes RENEWAL
Jefferson L BologniaIndiaXuxue Feng RENEWAL
Leon J IturbideGermanyIvan Magalhaes PROPOSAL
Izzy Z OldroydSpainAmy Elsner PROPOSAL
Smith F GillianCanadaAsiya Javayant NEW
James W SergiAustraliaXuxue Feng UNQUALIFIED
Aditya D OstroskyItalyStephen Shaw NEGOTIATION
Alejandro Q BriddickAustraliaAmy Elsner UNQUALIFIED
Darci E BriddickBrazilElwin Sharvill UNQUALIFIED
James I StensethIndiaElwin Sharvill NEGOTIATION
Nicolas P VenereCanadaAmy Elsner UNQUALIFIED
Silvio Y PaprockiFranceElwin Sharvill NEW
Munro R GauchoItalyIoni Bowcher QUALIFIED
Sinclair C RoysterIndiaStephen Shaw UNQUALIFIED
Izzy T FerenczAustraliaAsiya Javayant QUALIFIED
Darci Z MaletArgentinaBernardo Dominic NEW
Jeanfrancois A AlbaresUnited KingdomIoni Bowcher NEGOTIATION
Jennifer A PoquetteCanadaBernardo Dominic UNQUALIFIED
Cody M FerenczIndiaAmy Elsner QUALIFIED
Julie Y WaycottSpainAsiya Javayant NEGOTIATION
Jeanfrancois O DilliardAustraliaAmy Elsner RENEWAL
Cody B AmigonRussiaStephen Shaw NEGOTIATION
Costa H FollerJapanIvan Magalhaes UNQUALIFIED
Aika C BriddickSpainXuxue Feng RENEWAL
Antonio M GillianGermanyIvan Magalhaes RENEWAL
Antonio N OldroydBrazilIvan Magalhaes RENEWAL
Aruna W GauchoRussiaAnna Fali RENEWAL
Salvatore S GlickGermanyAnna Fali RENEWAL
Octavia A PoquetteRussiaBernardo Dominic PROPOSAL
Francesco B ButtJapanXuxue Feng QUALIFIED
Maria C GlickUnited KingdomIvan Magalhaes QUALIFIED
Ashley K RulapaughItalyIoni Bowcher QUALIFIED
Stacey Y VocelkaGermanyStephen Shaw NEGOTIATION
Jennifer K SaylorsCanadaOnyama Limba NEW
Misaki S OstroskyArgentinaXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Izzy Y CaldareraJapanXuxue Feng NEW
Greenwood T ButtAustraliaIoni Bowcher NEGOTIATION
Isabel K BowleyRussiaAmy Elsner NEGOTIATION
Salvatore M ChuiUnited KingdomIvan Magalhaes PROPOSAL
Antonio E InouyeSpainXuxue Feng NEGOTIATION
Ricardo O TollnerJapanAsiya Javayant PROPOSAL
Morrow L CaudyGermanyIoni Bowcher NEGOTIATION
Mayumi C AlbaresArgentinaElwin Sharvill NEGOTIATION
Sinclair X AmigonAustraliaXuxue Feng RENEWAL
Aruna Y ChuiIndiaIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco I DilliardCanada2026-08-06Dorl, James J Esq NEW72Ivan Magalhaes
1001Salvatore B WhobreyItaly2026-08-20Printing Dimensions NEGOTIATION82Elwin Sharvill
1002Salvatore S SaylorsSpain2026-08-03Buckley Miller Wright NEGOTIATION43Anna Fali
1003Maisha N MaletBrazil2026-08-17Morlong Associates QUALIFIED17Xuxue Feng
1004David P StensethRussia2026-08-22Chanay, Jeffrey A Esq NEGOTIATION91Ivan Magalhaes
1005Mujtaba P BowleyCanada2026-08-06Truhlar And Truhlar Attys RENEWAL85Anna Fali
1006Jones Z CaldareraArgentina2026-07-31Feltz Printing Service QUALIFIED87Stephen Shaw
1007Mujtaba W FerenczFrance2026-07-31Morlong Associates UNQUALIFIED36Amy Elsner
1008Kadeem P NestleJapan2026-08-08Rousseaux, Michael Esq UNQUALIFIED82Elwin Sharvill
1009Salvatore O PaprockiArgentina2026-08-05Commercial Press RENEWAL59Stephen Shaw
1010Jones Z VocelkaArgentina2026-08-12Printing Dimensions NEGOTIATION73Asiya Javayant
1011Darci T FlosiFrance2026-08-10Rangoni Of Florence RENEWAL59Anna Fali
1012Aditya J GlickBrazil2026-08-09Chanay, Jeffrey A Esq RENEWAL8Stephen Shaw
1013Silvio N FigeroaBrazil2026-08-19Chemel, James L Cpa PROPOSAL88Bernardo Dominic
1014Aditya H MaletFrance2026-08-22Feiner Bros PROPOSAL60Xuxue Feng
1015Munro G MaletUnited Kingdom2026-07-31King, Christopher A Esq PROPOSAL51Amy Elsner
1016Emily N RoysterUnited Kingdom2026-08-05Dorl, James J Esq RENEWAL1Bernardo Dominic
1017Jones L VenereBrazil2026-08-07Chapman, Ross E Esq RENEWAL94Ivan Magalhaes
1018Sinclair B OldroydRussia2026-07-30Printing Dimensions QUALIFIED75Bernardo Dominic
1019Tony S NestleArgentina2026-08-01Rousseaux, Michael Esq NEGOTIATION34Anna Fali
1020Maria N KuskoGermany2026-08-08King, Christopher A Esq NEGOTIATION13Ioni Bowcher
1021Morrow Z InouyeSpain2026-07-31Printing Dimensions RENEWAL24Stephen Shaw
1022James T TollnerUnited Kingdom2026-08-02Morlong Associates PROPOSAL66Onyama Limba
1023Ashley U FigeroaIndia2026-08-07Truhlar And Truhlar Attys QUALIFIED54Ioni Bowcher
1024James H StensethIndia2026-08-24Rousseaux, Michael Esq QUALIFIED38Ioni Bowcher
1025Murillo D DilliardFrance2026-08-12Chemel, James L Cpa NEW17Amy Elsner
1026Smith H SaylorsBrazil2026-08-05Rousseaux, Michael Esq QUALIFIED19Xuxue Feng
1027Leon N MorascaArgentina2026-08-08Rangoni Of Florence QUALIFIED94Bernardo Dominic
1028Clifford H BologniaAustralia2026-08-13Dorl, James J Esq NEGOTIATION49Amy Elsner
1029Clifford P WieserUnited Kingdom2026-08-04Dorl, James J Esq RENEWAL43Onyama Limba
1030Jennifer S VocelkaCanada2026-08-01Dorl, James J Esq UNQUALIFIED14Onyama Limba
1031Aika O DoeArgentina2026-08-14Chemel, James L Cpa QUALIFIED56Bernardo Dominic
1032Jones P NickaGermany2026-08-03Chemel, James L Cpa NEW31Elwin Sharvill
1033Aika G GlickUnited Kingdom2026-07-26Chemel, James L Cpa NEGOTIATION24Ivan Magalhaes
1034Alejandro C AmigonSpain2026-07-31Morlong Associates RENEWAL56Ivan Magalhaes
1035Chavez Q ShinkoFrance2026-08-24Chemel, James L Cpa UNQUALIFIED55Stephen Shaw
1036Emily J SaylorsRussia2026-07-27King, Christopher A Esq RENEWAL94Stephen Shaw
1037Deepesh Q RulapaughSpain2026-08-14Morlong Associates UNQUALIFIED90Anna Fali
1038Alejandro X OstroskyIndia2026-08-14Buckley Miller Wright NEW36Elwin Sharvill
1039Mujtaba G GarufiGermany2026-08-23Printing Dimensions UNQUALIFIED10Elwin Sharvill
1040Munro D CampainCanada2026-08-08Buckley Miller Wright NEGOTIATION70Elwin Sharvill
1041Sinclair V AmigonGermany2026-08-07Rousseaux, Michael Esq PROPOSAL81Ivan Magalhaes
1042Claire I MaletRussia2026-08-08Chapman, Ross E Esq NEW39Bernardo Dominic
1043Aruna J InouyeCanada2026-08-03Chemel, James L Cpa QUALIFIED27Elwin Sharvill
1044Nicolas Y GlickAustralia2026-07-27Feiner Bros UNQUALIFIED1Amy Elsner
1045Leon Z SergiAustralia2026-07-26Feiner Bros PROPOSAL2Stephen Shaw
1046Silvio E FlosiRussia2026-07-29King, Christopher A Esq UNQUALIFIED8Xuxue Feng
1047Ricardo G DilliardUnited Kingdom2026-08-09Morlong Associates QUALIFIED41Bernardo Dominic
1048Jefferson H RimArgentina2026-08-14Chemel, James L Cpa PROPOSAL97Amy Elsner
1049Arvin B FollerBrazil2026-08-14Buckley Miller Wright PROPOSAL38Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Mayumi W PoquetteAustraliaOnyama Limba QUALIFIED
Ivar D MaletArgentinaStephen Shaw NEGOTIATION
Francesco Z DoeJapanIvan Magalhaes QUALIFIED
Jennifer I DarakjyAustraliaElwin Sharvill PROPOSAL
Arvin Y AlbaresCanadaAnna Fali RENEWAL
Mayumi Y NestleFranceStephen Shaw UNQUALIFIED
Isabel A GauchoCanadaIoni Bowcher NEW
Stacey O BologniaBrazilStephen Shaw NEGOTIATION
Salvatore Y IturbideArgentinaOnyama Limba RENEWAL
Murillo E NickaItalyIoni Bowcher NEW
Francesco Z TollnerGermanyIoni Bowcher PROPOSAL
Adams V RulapaughUnited KingdomElwin Sharvill NEGOTIATION
Mayumi K DilliardIndiaAmy Elsner UNQUALIFIED
Rodrigues B BologniaGermanyXuxue Feng PROPOSAL
Kadeem D StockhamCanadaXuxue Feng QUALIFIED
Ricardo Q SergiIndiaElwin Sharvill RENEWAL
Francesco P NestleArgentinaIvan Magalhaes QUALIFIED
Mayumi P StockhamGermanyXuxue Feng RENEWAL
Clifford R RimUnited KingdomAsiya Javayant QUALIFIED
Claire L VenereUnited KingdomAsiya Javayant RENEWAL
Ashley E BologniaBrazilAmy Elsner RENEWAL
Kaitlin C SchemmerCanadaElwin Sharvill UNQUALIFIED
Juan M SlusarskiArgentinaAnna Fali NEW
Alejandro Z FigeroaItalyOnyama Limba UNQUALIFIED
Greenwood J CaudySpainBernardo Dominic UNQUALIFIED
Adams U TollnerSpainAsiya Javayant UNQUALIFIED
Ashley G StensethArgentinaAnna Fali NEGOTIATION
Munro F IturbideAustraliaStephen Shaw UNQUALIFIED
Antonio S StockhamAustraliaBernardo Dominic NEW
Ricardo C CampainSpainAnna Fali QUALIFIED
Morrow X RutaIndiaIvan Magalhaes UNQUALIFIED
Jones Q GillianSpainIoni Bowcher QUALIFIED
Misaki U WhobreyIndiaBernardo Dominic RENEWAL
Faith V GlickIndiaStephen Shaw NEW
Faith D PerinGermanyAsiya Javayant RENEWAL
Izzy H SergiArgentinaIvan Magalhaes QUALIFIED
Clifford P WhobreyCanadaBernardo Dominic UNQUALIFIED
Juan O DilliardItalyBernardo Dominic UNQUALIFIED
Jeanfrancois A StensethGermanyIvan Magalhaes UNQUALIFIED
Ashley X FerenczFranceAmy Elsner UNQUALIFIED
Adams L WhobreyArgentinaStephen Shaw RENEWAL
Leja B DarakjyUnited KingdomIvan Magalhaes UNQUALIFIED
Isabel R FlosiFranceIvan Magalhaes PROPOSAL
Jennifer R CaldareraFranceAmy Elsner QUALIFIED
Juan Q NestleBrazilBernardo Dominic PROPOSAL
Kadeem S MorascaIndiaStephen Shaw RENEWAL
Silvio W SlusarskiBrazilAnna Fali UNQUALIFIED
Octavia T MarrierIndiaIvan Magalhaes PROPOSAL
Leon R StockhamGermanyBernardo Dominic NEW
Maisha A DoeItalyStephen Shaw PROPOSAL
Frozen Columns
Name
Murillo W Darakjy
Silvio Q Bowley
Ricardo H Whobrey
David B Ostrosky
Deepesh V Slusarski
Arvin C Gillian
Leja W Malet
Aditya M Sergi
Kadeem W Butt
Greenwood K Kusko
Stacey V Morasca
Maria I Paprocki
Aruna Q Waycott
Darci L Paprocki
Morrow J Stenseth
Rodrigues Q Gillian
Mayumi A Amigon
Silvio D Kolmetz
Jeanfrancois Z Caudy
Francesco S Caldarera
Munro E Caudy
Cody F Glick
Emily C Caudy
Aika V Bolognia
Alejandro C Whobrey
Izzy U Chui
Antonio B Stenseth
James X Briddick
Mayumi B Venere
Francesco W Paprocki
James V Albares
Rodrigues U Doe
Greenwood P Bolognia
Silvio U Schemmer
Alejandro T Briddick
Cody Q Malet
Maria V Kusko
Alejandro U Glick
Isabel S Slusarski
Cody F Shinko
Munro Y Schemmer
Juan U Nestle
Jones G Whobrey
Jennifer W Slusarski
Ricardo P Tollner
Aditya C Inouye
Francesco A Inouye
Jefferson E Paprocki
Izzy A Caldarera
Deepesh B Amigon
IdCountryDate
1000Canada2026-08-12
1001Japan2026-08-18
1002Argentina2026-08-10
1003Japan2026-08-17
1004Canada2026-08-18
1005Argentina2026-08-07
1006Russia2026-08-12
1007Italy2026-07-26
1008Spain2026-08-16
1009Australia2026-08-18
1010Spain2026-08-23
1011Japan2026-08-08
1012Germany2026-07-31
1013France2026-08-01
1014India2026-08-19
1015Japan2026-08-05
1016United Kingdom2026-08-02
1017Germany2026-08-23
1018Australia2026-08-11
1019Russia2026-07-27
1020Argentina2026-08-14
1021Italy2026-08-22
1022Argentina2026-07-31
1023Argentina2026-08-09
1024Italy2026-07-26
1025India2026-08-03
1026Canada2026-08-16
1027Brazil2026-08-08
1028Germany2026-08-11
1029Russia2026-08-23
1030Australia2026-08-01
1031United Kingdom2026-08-15
1032Spain2026-08-11
1033United Kingdom2026-08-08
1034Brazil2026-08-21
1035Argentina2026-08-02
1036Brazil2026-07-29
1037Italy2026-07-28
1038France2026-08-09
1039Russia2026-08-05
1040Brazil2026-07-27
1041Australia2026-08-16
1042Japan2026-08-20
1043Russia2026-08-23
1044United Kingdom2026-07-30
1045France2026-08-04
1046Brazil2026-08-06
1047Canada2026-08-16
1048Canada2026-08-05
1049United Kingdom2026-08-16

On-Demand Data

NameIdCountryDate
Jefferson E Iturbide1000United Kingdom2026-08-09
Wickens V Inouye1001Canada2026-08-22
Ashley W Flosi1002Japan2026-07-29
Aika H Oldroyd1003France2026-08-08
Kadeem A Figeroa1004Spain2026-07-27
Misaki R Perin1005United Kingdom2026-08-22
Stacey I Nestle1006Italy2026-08-19
Antonio D Bowley1007Italy2026-07-29
Kaitlin H Vocelka1008France2026-08-09
Antonio J Foller1009France2026-08-14
Johnson J Glick1010Brazil2026-08-07
Rodrigues U Poquette1011Japan2026-08-17
Juan L Shinko1012Canada2026-08-16
Murillo Z Royster1013Germany2026-08-10
Jones E Poquette1014Spain2026-07-30
Costa T Ostrosky1015Argentina2026-07-27
Antonio N Inouye1016Japan2026-07-26
James I Maclead1017Brazil2026-08-13
Salvatore Y Rulapaugh1018Japan2026-08-11
Misaki M Flosi1019Germany2026-08-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio A GlickCanadaAsiya Javayant RENEWAL
Greenwood W RulapaughBrazilAnna Fali QUALIFIED
Kadeem Q WaycottAustraliaXuxue Feng QUALIFIED
Rodrigues U FollerBrazilIoni Bowcher NEW
Kaitlin S RutaFranceAmy Elsner QUALIFIED
Greenwood E BowleyIndiaBernardo Dominic NEW
Munro N DarakjyGermanyBernardo Dominic RENEWAL
David P WhobreyAustraliaElwin Sharvill UNQUALIFIED
Kaitlin E MarrierArgentinaIvan Magalhaes NEW
Costa X RimArgentinaAnna Fali UNQUALIFIED
Jones N StensethGermanyAsiya Javayant NEW
Smith D AmigonGermanyElwin Sharvill RENEWAL
Sinclair X ShinkoRussiaXuxue Feng RENEWAL
James K AmigonSpainIvan Magalhaes QUALIFIED
Sinclair C ChuiUnited KingdomElwin Sharvill NEW
Rodrigues W GarufiArgentinaAsiya Javayant QUALIFIED
James B FerenczSpainOnyama Limba PROPOSAL
Aika W GarufiGermanyXuxue Feng NEGOTIATION
Jennifer V MaletArgentinaBernardo Dominic QUALIFIED
Jefferson L NickaIndiaIvan Magalhaes QUALIFIED
Jones A FerenczIndiaAsiya Javayant UNQUALIFIED
Kaitlin U NestleArgentinaAmy Elsner RENEWAL
Izzy G WhobreyItalyAmy Elsner QUALIFIED
Deepesh L DoeItalyXuxue Feng NEGOTIATION
Claire P NickaSpainAnna Fali QUALIFIED
Ricardo W CaldareraUnited KingdomIvan Magalhaes UNQUALIFIED
Misaki S KolmetzRussiaStephen Shaw NEGOTIATION
Tony Y RimCanadaIvan Magalhaes PROPOSAL
Julie R ShinkoAustraliaIoni Bowcher NEW
Jones J BriddickGermanyAmy Elsner QUALIFIED
Kaitlin S BriddickAustraliaElwin Sharvill UNQUALIFIED
Emily P PaprockiAustraliaElwin Sharvill RENEWAL
Maria Y StensethFranceStephen Shaw QUALIFIED
Mujtaba I BowleyItalyIoni Bowcher PROPOSAL
Izzy B FollerFranceAsiya Javayant QUALIFIED
Chavez S StensethGermanyXuxue Feng QUALIFIED
Jennifer U PaprockiFranceBernardo Dominic RENEWAL
Maisha O DoeCanadaIvan Magalhaes PROPOSAL
Wickens B MarrierItalyBernardo Dominic NEW
Rodrigues E CaudyGermanyOnyama Limba 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>