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
David T CaudyRussiaIoni Bowcher NEGOTIATION
Johnson L WaycottFranceElwin Sharvill NEGOTIATION
Jeanfrancois Q OldroydAustraliaAsiya Javayant NEW
Ashley A BologniaItalyOnyama Limba NEW
Kaitlin N WieserFranceBernardo Dominic PROPOSAL
David T DilliardUnited KingdomStephen Shaw RENEWAL
Octavia I PaprockiGermanyIvan Magalhaes NEW
Ricardo V VocelkaArgentinaIvan Magalhaes QUALIFIED
Silvio M OstroskyJapanAsiya Javayant RENEWAL
Cody F ShinkoJapanBernardo Dominic QUALIFIED
Cody B RimRussiaElwin Sharvill NEW
Emily O KolmetzItalyAmy Elsner QUALIFIED
Tony G DarakjyJapanAmy Elsner PROPOSAL
Costa F RimIndiaStephen Shaw QUALIFIED
Smith L WieserRussiaAnna Fali UNQUALIFIED
Chavez N MacleadRussiaStephen Shaw NEW
Smith W RimArgentinaXuxue Feng RENEWAL
Nicolas T VenereCanadaBernardo Dominic QUALIFIED
Kadeem E WhobreyIndiaElwin Sharvill QUALIFIED
Izzy H RoysterBrazilOnyama Limba NEW
Leon F IturbideCanadaOnyama Limba NEGOTIATION
Morrow E KuskoIndiaAsiya Javayant NEW
Sinclair M StensethSpainBernardo Dominic RENEWAL
Adams I RutaItalyXuxue Feng RENEWAL
Mujtaba X PoquetteRussiaElwin Sharvill NEGOTIATION
Cody P ShinkoJapanIoni Bowcher NEGOTIATION
Ashley Z GarufiItalyIvan Magalhaes PROPOSAL
Silvio C BowleyUnited KingdomAnna Fali QUALIFIED
Adams I WaycottArgentinaIvan Magalhaes NEGOTIATION
Julie U RoysterUnited KingdomElwin Sharvill QUALIFIED
Faith W FollerItalyIvan Magalhaes NEGOTIATION
Silvio U VenereItalyXuxue Feng QUALIFIED
Johnson W TollnerJapanOnyama Limba PROPOSAL
Wickens V BriddickArgentinaOnyama Limba UNQUALIFIED
Kaitlin S CaudyArgentinaStephen Shaw PROPOSAL
Adams C MaletSpainAnna Fali UNQUALIFIED
Chavez Z DoeFranceStephen Shaw UNQUALIFIED
Wickens Y KuskoArgentinaElwin Sharvill PROPOSAL
David G OstroskyUnited KingdomIvan Magalhaes UNQUALIFIED
Jones Z VenereUnited KingdomXuxue Feng NEGOTIATION
Stacey V CampainGermanyXuxue Feng NEGOTIATION
Stacey R RulapaughSpainIvan Magalhaes PROPOSAL
Francesco E NestleGermanyAnna Fali PROPOSAL
Aika V StensethJapanAmy Elsner NEGOTIATION
Smith W TollnerRussiaIvan Magalhaes PROPOSAL
Ricardo X NestleFranceIvan Magalhaes UNQUALIFIED
Darci A DarakjySpainAsiya Javayant QUALIFIED
Sinclair D FigeroaGermanyStephen Shaw RENEWAL
Maria M RulapaughAustraliaOnyama Limba QUALIFIED
Stacey P PaprockiSpainElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco V FigeroaCanadaOnyama Limba NEGOTIATION
Claire U DarakjyIndiaIoni Bowcher UNQUALIFIED
Johnson R NickaBrazilXuxue Feng QUALIFIED
Jeanfrancois X RutaItalyOnyama Limba UNQUALIFIED
Wickens Y FigeroaGermanyOnyama Limba RENEWAL
Darci Y AmigonIndiaAnna Fali QUALIFIED
Clifford C GlickAustraliaOnyama Limba UNQUALIFIED
Nicolas C MaletFranceAnna Fali RENEWAL
Cody K CaldareraCanadaAnna Fali PROPOSAL
Morrow M CaudyArgentinaXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon I TollnerIndia2026-07-04Rousseaux, Michael Esq PROPOSAL62Ivan Magalhaes
1001Maisha K SchemmerBrazil2026-07-12Dorl, James J Esq RENEWAL54Stephen Shaw
1002Munro O KolmetzBrazil2026-07-07Chanay, Jeffrey A Esq RENEWAL60Bernardo Dominic
1003Greenwood F PaprockiCanada2026-06-22Printing Dimensions NEGOTIATION42Bernardo Dominic
1004Aruna I MaletGermany2026-06-29Chapman, Ross E Esq QUALIFIED47Xuxue Feng
1005Maisha U MaletCanada2026-07-08Rousseaux, Michael Esq QUALIFIED75Ioni Bowcher
1006Jefferson D StensethJapan2026-07-13Morlong Associates NEW99Elwin Sharvill
1007Emily C RulapaughGermany2026-06-30Morlong Associates QUALIFIED63Bernardo Dominic
1008Jefferson Y RutaIndia2026-06-26King, Christopher A Esq QUALIFIED91Bernardo Dominic
1009Arvin W VenereUnited Kingdom2026-06-29Dorl, James J Esq UNQUALIFIED73Ioni Bowcher
1010Maisha F VocelkaAustralia2026-07-08Buckley Miller Wright UNQUALIFIED87Xuxue Feng
1011Mayumi A MacleadSpain2026-07-16Rousseaux, Michael Esq UNQUALIFIED8Ioni Bowcher
1012Isabel Z ChuiArgentina2026-06-27Morlong Associates QUALIFIED21Xuxue Feng
1013Murillo O CampainUnited Kingdom2026-06-21Chapman, Ross E Esq QUALIFIED82Ivan Magalhaes
1014Arvin A FerenczRussia2026-06-19King, Christopher A Esq NEW5Ivan Magalhaes
1015Misaki H WaycottCanada2026-07-10Truhlar And Truhlar Attys NEW65Stephen Shaw
1016Emily Y SergiSpain2026-07-18Truhlar And Truhlar Attys RENEWAL84Xuxue Feng
1017Salvatore H ButtUnited Kingdom2026-06-26Benton, John B Jr RENEWAL28Bernardo Dominic
1018Mujtaba W BologniaRussia2026-06-29Benton, John B Jr QUALIFIED5Bernardo Dominic
1019Cody H KolmetzItaly2026-06-28Commercial Press UNQUALIFIED35Elwin Sharvill
1020Nicolas Z ShinkoJapan2026-07-15Feltz Printing Service QUALIFIED40Onyama Limba
1021Misaki H AlbaresBrazil2026-07-17Printing Dimensions RENEWAL1Anna Fali
1022Arvin E NestleFrance2026-06-30King, Christopher A Esq PROPOSAL20Ioni Bowcher
1023Aruna H DarakjyAustralia2026-06-30Rousseaux, Michael Esq UNQUALIFIED73Onyama Limba
1024Maria Y RimBrazil2026-07-01King, Christopher A Esq RENEWAL50Amy Elsner
1025Kadeem Z WaycottUnited Kingdom2026-07-12Rousseaux, Michael Esq PROPOSAL66Stephen Shaw
1026Jones P RimRussia2026-07-01Chapman, Ross E Esq QUALIFIED5Amy Elsner
1027Munro G RulapaughRussia2026-06-30Commercial Press UNQUALIFIED43Ioni Bowcher
1028Leja K PerinUnited Kingdom2026-07-14Feiner Bros NEGOTIATION57Ioni Bowcher
1029Jennifer P MacleadRussia2026-06-25Morlong Associates RENEWAL14Stephen Shaw
1030Ricardo S FlosiAustralia2026-07-14King, Christopher A Esq UNQUALIFIED86Bernardo Dominic
1031Jefferson D PaprockiGermany2026-07-07Buckley Miller Wright RENEWAL88Onyama Limba
1032Stacey J SaylorsSpain2026-06-23Truhlar And Truhlar Attys UNQUALIFIED31Xuxue Feng
1033Mayumi V WieserFrance2026-06-21Feiner Bros NEGOTIATION51Xuxue Feng
1034Francesco Q BologniaAustralia2026-07-11Commercial Press RENEWAL3Ivan Magalhaes
1035Maria I ChuiSpain2026-07-18Chanay, Jeffrey A Esq NEW5Ivan Magalhaes
1036Rodrigues S BologniaJapan2026-07-06Truhlar And Truhlar Attys NEW44Elwin Sharvill
1037Isabel L MaletAustralia2026-06-28Rousseaux, Michael Esq NEGOTIATION58Anna Fali
1038Greenwood L ButtFrance2026-07-17Dorl, James J Esq NEGOTIATION21Ivan Magalhaes
1039Cody Z TollnerUnited Kingdom2026-07-02Dorl, James J Esq NEGOTIATION22Asiya Javayant
1040Jones U NestleAustralia2026-07-05Commercial Press QUALIFIED72Elwin Sharvill
1041Maria N CaldareraRussia2026-06-22Truhlar And Truhlar Attys RENEWAL78Ioni Bowcher
1042Aditya M StockhamItaly2026-06-20Morlong Associates UNQUALIFIED25Asiya Javayant
1043Izzy J RoysterArgentina2026-07-17Benton, John B Jr UNQUALIFIED82Asiya Javayant
1044Smith C FlosiGermany2026-06-30Truhlar And Truhlar Attys QUALIFIED57Bernardo Dominic
1045Greenwood G FlosiUnited Kingdom2026-06-28Chapman, Ross E Esq QUALIFIED69Xuxue Feng
1046Clifford C DoeGermany2026-06-22Truhlar And Truhlar Attys NEW72Elwin Sharvill
1047Wickens T RutaSpain2026-06-28Buckley Miller Wright UNQUALIFIED94Bernardo Dominic
1048Kadeem T SlusarskiUnited Kingdom2026-07-14Feltz Printing Service QUALIFIED89Elwin Sharvill
1049Sinclair U GillianSpain2026-07-17Chapman, Ross E Esq RENEWAL83Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Mayumi Z VocelkaArgentinaXuxue Feng NEGOTIATION
Silvio M VenereJapanOnyama Limba QUALIFIED
Wickens P KolmetzBrazilAnna Fali QUALIFIED
Munro X OldroydJapanAmy Elsner RENEWAL
Alejandro A MaletUnited KingdomOnyama Limba PROPOSAL
Kaitlin C BowleyRussiaAnna Fali QUALIFIED
Ivar X NestleGermanyAnna Fali RENEWAL
Misaki A PoquetteCanadaBernardo Dominic RENEWAL
Mayumi Y KolmetzIndiaIoni Bowcher NEW
Aditya P MaletItalyStephen Shaw PROPOSAL
Isabel N VenereJapanAsiya Javayant PROPOSAL
Maria K RutaRussiaIvan Magalhaes PROPOSAL
Darci G PaprockiBrazilAsiya Javayant UNQUALIFIED
Murillo S BowleyBrazilOnyama Limba NEGOTIATION
Jeanfrancois Y GauchoItalyBernardo Dominic NEGOTIATION
Jefferson V TollnerSpainAsiya Javayant PROPOSAL
Salvatore E RutaArgentinaIoni Bowcher NEW
Alejandro T MaletBrazilXuxue Feng RENEWAL
James Q DilliardGermanyOnyama Limba NEW
Stacey J MarrierAustraliaXuxue Feng NEGOTIATION
Maisha K BriddickItalyIoni Bowcher QUALIFIED
Deepesh Y InouyeFranceElwin Sharvill RENEWAL
Leon B MaletRussiaBernardo Dominic NEW
Leja P SchemmerBrazilOnyama Limba QUALIFIED
Stacey X ChuiSpainBernardo Dominic PROPOSAL
Jeanfrancois S StockhamJapanAmy Elsner UNQUALIFIED
Izzy N SchemmerGermanyElwin Sharvill UNQUALIFIED
Cody P AlbaresArgentinaAsiya Javayant NEGOTIATION
Stacey N FerenczBrazilAsiya Javayant PROPOSAL
Greenwood P WieserSpainIvan Magalhaes PROPOSAL
Murillo S GauchoArgentinaOnyama Limba NEW
Octavia S ShinkoArgentinaIvan Magalhaes QUALIFIED
Stacey N StockhamRussiaAnna Fali PROPOSAL
Emily Q FigeroaRussiaAnna Fali UNQUALIFIED
Costa O DilliardUnited KingdomAsiya Javayant QUALIFIED
Aruna V FerenczIndiaIoni Bowcher RENEWAL
Morrow Q VocelkaRussiaAmy Elsner PROPOSAL
Juan W WaycottItalyBernardo Dominic UNQUALIFIED
Aika P MarrierUnited KingdomOnyama Limba QUALIFIED
Isabel W AlbaresJapanBernardo Dominic NEGOTIATION
Jennifer G SlusarskiCanadaOnyama Limba UNQUALIFIED
Kaitlin Q ChuiArgentinaAsiya Javayant PROPOSAL
Leon W SergiBrazilAsiya Javayant PROPOSAL
Ricardo B SchemmerRussiaAnna Fali PROPOSAL
Maria H ButtBrazilAmy Elsner UNQUALIFIED
Alejandro H OstroskyRussiaStephen Shaw PROPOSAL
Johnson O FlosiGermanyOnyama Limba UNQUALIFIED
Antonio G VocelkaSpainXuxue Feng UNQUALIFIED
Alejandro B InouyeItalyElwin Sharvill NEW
Jefferson H FlosiItalyElwin Sharvill RENEWAL
Frozen Columns
Name
Aditya Z Iturbide
Jefferson F Malet
Mayumi Q Vocelka
Jennifer J Malet
Francesco A Caudy
James B Gaucho
David P Glick
Nicolas K Royster
Deepesh A Butt
Mujtaba B Saylors
Deepesh X Amigon
Smith Z Shinko
Octavia I Ostrosky
Francesco D Shinko
Emily V Ferencz
Jefferson N Venere
Kadeem B Whobrey
Jennifer C Waycott
Kadeem I Saylors
Clifford P Ostrosky
Darci B Slusarski
Isabel Y Amigon
Maisha M Albares
Francesco O Darakjy
Jones R Wieser
Jennifer Z Perin
Juan X Dilliard
Jones S Bowley
Misaki J Oldroyd
Kaitlin J Paprocki
Juan G Briddick
Julie C Oldroyd
Julie M Shinko
Leon H Albares
Nicolas L Caldarera
Antonio H Slusarski
Leon L Iturbide
Jones U Whobrey
Sinclair E Garufi
Johnson Q Ostrosky
Jeanfrancois B Kolmetz
Juan B Butt
Alejandro M Albares
Munro W Oldroyd
Chavez K Morasca
Kaitlin P Venere
Johnson V Kusko
Octavia H Ferencz
Faith O Morasca
Misaki D Gillian
IdCountryDate
1000United Kingdom2026-06-24
1001Germany2026-06-26
1002India2026-06-27
1003Brazil2026-06-27
1004Spain2026-07-10
1005Italy2026-07-11
1006India2026-07-12
1007Spain2026-06-29
1008United Kingdom2026-07-17
1009Russia2026-06-29
1010Brazil2026-07-11
1011Spain2026-07-18
1012Spain2026-07-14
1013Brazil2026-07-05
1014Australia2026-07-18
1015United Kingdom2026-07-12
1016Japan2026-06-20
1017Brazil2026-07-15
1018Spain2026-07-14
1019United Kingdom2026-07-16
1020Argentina2026-07-01
1021India2026-06-20
1022United Kingdom2026-06-29
1023Brazil2026-07-04
1024India2026-07-05
1025Canada2026-06-21
1026Australia2026-06-27
1027Russia2026-07-04
1028Canada2026-07-15
1029Japan2026-07-05
1030Italy2026-06-26
1031Japan2026-06-26
1032Argentina2026-07-17
1033Italy2026-06-30
1034United Kingdom2026-07-13
1035Argentina2026-06-24
1036Argentina2026-07-02
1037Brazil2026-06-28
1038France2026-07-18
1039Australia2026-07-06
1040Japan2026-07-08
1041United Kingdom2026-07-17
1042Australia2026-06-24
1043Japan2026-06-21
1044Spain2026-07-06
1045Canada2026-06-30
1046Brazil2026-06-22
1047Italy2026-07-09
1048Canada2026-07-18
1049Italy2026-06-20

On-Demand Data

NameIdCountryDate
Murillo G Foller1000Germany2026-06-25
Jones L Campain1001Japan2026-06-23
Tony M Maclead1002France2026-07-03
Aika Z Rim1003Brazil2026-07-13
Stacey N Foller1004Germany2026-07-02
Chavez T Morasca1005Spain2026-07-18
Francesco N Sergi1006Russia2026-07-17
Faith T Malet1007Germany2026-07-10
Rodrigues J Stenseth1008India2026-07-10
David Z Dilliard1009India2026-06-20
Wickens E Maclead1010Russia2026-07-14
Adams L Marrier1011Germany2026-07-04
James T Bowley1012Brazil2026-07-13
David T Doe1013Japan2026-06-27
Silvio T Chui1014France2026-07-04
Antonio N Vocelka1015India2026-06-30
Octavia G Gillian1016Spain2026-07-11
Izzy V Figeroa1017Japan2026-06-23
Morrow D Morasca1018United Kingdom2026-06-26
Alejandro R Saylors1019Italy2026-06-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel Y CaldareraCanadaAsiya Javayant NEGOTIATION
Darci C CampainFranceIoni Bowcher NEGOTIATION
Kaitlin R AmigonIndiaAmy Elsner RENEWAL
Juan X StensethAustraliaElwin Sharvill PROPOSAL
Izzy L FollerCanadaBernardo Dominic UNQUALIFIED
Murillo Z ButtCanadaElwin Sharvill RENEWAL
Francesco B OstroskyGermanyIoni Bowcher RENEWAL
Ricardo U SlusarskiArgentinaElwin Sharvill PROPOSAL
Nicolas U CaudyGermanyIoni Bowcher NEGOTIATION
Darci J PerinBrazilStephen Shaw PROPOSAL
Aditya F SchemmerGermanyXuxue Feng UNQUALIFIED
Mayumi A VenereAustraliaAnna Fali QUALIFIED
Smith C NestleUnited KingdomAnna Fali QUALIFIED
Jennifer C FlosiGermanyIvan Magalhaes QUALIFIED
Stacey J PaprockiCanadaAnna Fali PROPOSAL
Kaitlin Q KuskoSpainXuxue Feng QUALIFIED
Alejandro E MaletSpainIvan Magalhaes PROPOSAL
Sinclair Z FlosiIndiaAnna Fali NEGOTIATION
Chavez B NestleArgentinaStephen Shaw PROPOSAL
Clifford B StensethRussiaBernardo Dominic PROPOSAL
Jones R InouyeAustraliaStephen Shaw NEW
Maisha K MacleadUnited KingdomStephen Shaw UNQUALIFIED
Francesco C RimIndiaStephen Shaw NEW
Johnson D StockhamItalyIoni Bowcher NEW
Costa A CaldareraGermanyIoni Bowcher PROPOSAL
Kadeem W SergiFranceStephen Shaw PROPOSAL
Costa D OldroydSpainAmy Elsner NEGOTIATION
Rodrigues H SchemmerRussiaBernardo Dominic NEW
Nicolas O SaylorsFranceAsiya Javayant NEGOTIATION
Maisha Z VenereAustraliaStephen Shaw NEW
Arvin H SlusarskiCanadaElwin Sharvill UNQUALIFIED
Chavez K RimJapanIvan Magalhaes NEW
Mayumi C KolmetzIndiaOnyama Limba QUALIFIED
Misaki L MacleadArgentinaOnyama Limba PROPOSAL
Ricardo Y PoquetteGermanyIvan Magalhaes PROPOSAL
Ivar Z TollnerCanadaOnyama Limba NEGOTIATION
Johnson O ChuiSpainAmy Elsner RENEWAL
Murillo X OldroydFranceBernardo Dominic QUALIFIED
Izzy Q SchemmerCanadaIoni Bowcher QUALIFIED
Isabel S ShinkoUnited KingdomBernardo Dominic 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>