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
Cody X SergiIndiaAnna Fali NEW
Jennifer P VenereGermanyAnna Fali RENEWAL
Murillo Q RulapaughAustraliaElwin Sharvill NEGOTIATION
James C PaprockiCanadaIvan Magalhaes NEW
Aditya E NestleGermanyElwin Sharvill NEW
Misaki E AlbaresRussiaOnyama Limba QUALIFIED
Octavia A MaletCanadaStephen Shaw NEGOTIATION
Jones L NickaSpainXuxue Feng NEGOTIATION
Jones K KuskoIndiaOnyama Limba PROPOSAL
Sinclair D BowleyArgentinaAnna Fali RENEWAL
Chavez M DarakjyAustraliaAmy Elsner PROPOSAL
Isabel P GauchoSpainAmy Elsner NEW
Ivar E SergiUnited KingdomIvan Magalhaes RENEWAL
Maisha N StensethRussiaElwin Sharvill QUALIFIED
Aruna C FollerBrazilXuxue Feng UNQUALIFIED
Aruna A NestleCanadaBernardo Dominic UNQUALIFIED
Aika E AmigonJapanBernardo Dominic RENEWAL
Maria M ButtBrazilAmy Elsner RENEWAL
Jennifer D DilliardCanadaIvan Magalhaes RENEWAL
Maria O SlusarskiIndiaAnna Fali QUALIFIED
Johnson C DoeRussiaAmy Elsner PROPOSAL
Arvin O OstroskyCanadaElwin Sharvill UNQUALIFIED
Wickens P GauchoCanadaBernardo Dominic UNQUALIFIED
Maria I FerenczIndiaXuxue Feng NEGOTIATION
Morrow H StensethBrazilAnna Fali QUALIFIED
Emily L NestleGermanyXuxue Feng PROPOSAL
Jones K MorascaFranceAsiya Javayant UNQUALIFIED
Stacey C VenereSpainXuxue Feng NEGOTIATION
Julie Z CampainGermanyElwin Sharvill NEW
Greenwood I VocelkaBrazilOnyama Limba UNQUALIFIED
David U ChuiJapanXuxue Feng NEW
Johnson C AlbaresIndiaAsiya Javayant RENEWAL
Ricardo M PaprockiFranceAnna Fali UNQUALIFIED
Maisha X MaletItalyAnna Fali RENEWAL
Aruna D SchemmerGermanyStephen Shaw PROPOSAL
Maisha L PaprockiFranceStephen Shaw NEGOTIATION
Jones D GauchoFranceStephen Shaw NEW
Greenwood Y AlbaresSpainElwin Sharvill RENEWAL
Isabel W IturbideItalyAnna Fali RENEWAL
Antonio O AmigonArgentinaStephen Shaw QUALIFIED
Kadeem I MaletJapanStephen Shaw NEGOTIATION
Kadeem S CaudySpainElwin Sharvill RENEWAL
Jennifer Y PerinGermanyIoni Bowcher RENEWAL
Faith E InouyeJapanAsiya Javayant UNQUALIFIED
Silvio J AlbaresSpainIvan Magalhaes QUALIFIED
Silvio N ShinkoSpainStephen Shaw NEGOTIATION
Kaitlin K PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Izzy Q BologniaIndiaIvan Magalhaes PROPOSAL
Jones P MorascaBrazilBernardo Dominic UNQUALIFIED
Nicolas K AlbaresGermanyAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Johnson B TollnerBrazilAnna Fali RENEWAL
Faith M ChuiAustraliaAsiya Javayant UNQUALIFIED
Misaki K MorascaRussiaBernardo Dominic RENEWAL
Deepesh V PoquetteCanadaBernardo Dominic NEGOTIATION
Johnson C BologniaCanadaAnna Fali QUALIFIED
Maisha K RoysterItalyXuxue Feng UNQUALIFIED
Emily W FollerArgentinaOnyama Limba NEW
Sinclair J IturbideGermanyOnyama Limba NEGOTIATION
Smith K DilliardAustraliaIvan Magalhaes QUALIFIED
Alejandro N KuskoArgentinaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson X CaldareraRussia2026-06-16Commercial Press RENEWAL2Anna Fali
1001Maisha W IturbideFrance2026-06-17Chemel, James L Cpa NEGOTIATION90Asiya Javayant
1002Silvio E VocelkaCanada2026-07-01Printing Dimensions NEGOTIATION73Bernardo Dominic
1003David L PaprockiCanada2026-07-11King, Christopher A Esq PROPOSAL2Ioni Bowcher
1004Isabel B GlickIndia2026-07-01Commercial Press QUALIFIED90Onyama Limba
1005Nicolas N MarrierRussia2026-06-28King, Christopher A Esq RENEWAL24Bernardo Dominic
1006Chavez F VenereItaly2026-07-10Rousseaux, Michael Esq NEW77Stephen Shaw
1007Izzy Q DarakjyJapan2026-07-12Feltz Printing Service NEGOTIATION0Asiya Javayant
1008Izzy E StensethGermany2026-06-19Rousseaux, Michael Esq RENEWAL6Amy Elsner
1009Mayumi W PoquetteJapan2026-07-08Buckley Miller Wright UNQUALIFIED61Xuxue Feng
1010Chavez R AlbaresFrance2026-07-08Rousseaux, Michael Esq RENEWAL85Stephen Shaw
1011Octavia I PerinJapan2026-06-16Rousseaux, Michael Esq QUALIFIED14Asiya Javayant
1012Julie Y MarrierSpain2026-06-22Rousseaux, Michael Esq NEW59Anna Fali
1013Jefferson O KolmetzAustralia2026-07-07Printing Dimensions NEGOTIATION27Onyama Limba
1014Clifford R OstroskyFrance2026-06-19Buckley Miller Wright PROPOSAL70Bernardo Dominic
1015Aruna P WhobreyBrazil2026-07-13King, Christopher A Esq UNQUALIFIED5Ivan Magalhaes
1016Julie I MaletUnited Kingdom2026-06-18Buckley Miller Wright UNQUALIFIED80Bernardo Dominic
1017Costa S WhobreyCanada2026-07-02Printing Dimensions NEGOTIATION71Onyama Limba
1018Jones C DarakjyArgentina2026-07-12Commercial Press PROPOSAL48Elwin Sharvill
1019Murillo U MorascaUnited Kingdom2026-06-18Feltz Printing Service QUALIFIED87Amy Elsner
1020Leon Y MaletRussia2026-07-05Chapman, Ross E Esq PROPOSAL51Xuxue Feng
1021Emily E WhobreyGermany2026-07-04Feiner Bros PROPOSAL29Ioni Bowcher
1022Cody V InouyeFrance2026-07-01Dorl, James J Esq QUALIFIED5Bernardo Dominic
1023Mayumi N AmigonIndia2026-06-23Chemel, James L Cpa QUALIFIED71Ivan Magalhaes
1024Claire Y RoysterCanada2026-07-01Chemel, James L Cpa NEGOTIATION21Stephen Shaw
1025Wickens V KuskoArgentina2026-06-30Commercial Press QUALIFIED93Elwin Sharvill
1026Salvatore D CaudyRussia2026-07-04Feltz Printing Service QUALIFIED61Elwin Sharvill
1027Leon N FollerJapan2026-06-15Chanay, Jeffrey A Esq UNQUALIFIED83Bernardo Dominic
1028Jefferson X WhobreyJapan2026-07-09Feiner Bros NEGOTIATION87Elwin Sharvill
1029Aditya H CampainJapan2026-06-23Feltz Printing Service RENEWAL99Amy Elsner
1030Smith K ButtFrance2026-06-23Commercial Press NEW40Amy Elsner
1031Kaitlin Y AlbaresGermany2026-06-28Benton, John B Jr PROPOSAL16Onyama Limba
1032Salvatore A BowleyIndia2026-06-27Truhlar And Truhlar Attys NEGOTIATION82Asiya Javayant
1033Leja Q WieserBrazil2026-06-19Rousseaux, Michael Esq QUALIFIED61Amy Elsner
1034Jeanfrancois N FollerIndia2026-06-16Truhlar And Truhlar Attys NEW11Anna Fali
1035Johnson F AlbaresGermany2026-06-17Feiner Bros NEW42Xuxue Feng
1036Johnson F FlosiUnited Kingdom2026-06-17Chanay, Jeffrey A Esq QUALIFIED84Amy Elsner
1037Clifford C DarakjyBrazil2026-07-12Benton, John B Jr QUALIFIED80Asiya Javayant
1038Maisha V PerinBrazil2026-07-06Chanay, Jeffrey A Esq UNQUALIFIED12Elwin Sharvill
1039David X StockhamFrance2026-07-11Rangoni Of Florence NEGOTIATION97Amy Elsner
1040Silvio C PoquetteUnited Kingdom2026-06-21Chanay, Jeffrey A Esq PROPOSAL36Amy Elsner
1041Julie L PoquetteFrance2026-07-05Commercial Press PROPOSAL20Asiya Javayant
1042Leja N WhobreyArgentina2026-06-30Dorl, James J Esq RENEWAL62Stephen Shaw
1043Emily P SergiArgentina2026-07-05Buckley Miller Wright UNQUALIFIED94Ivan Magalhaes
1044Morrow J RulapaughGermany2026-07-01Dorl, James J Esq UNQUALIFIED35Onyama Limba
1045Clifford X SchemmerAustralia2026-06-19Rangoni Of Florence RENEWAL7Amy Elsner
1046Murillo I KuskoBrazil2026-06-22Morlong Associates NEW59Onyama Limba
1047David O ButtGermany2026-06-16Feiner Bros NEGOTIATION99Ivan Magalhaes
1048Maria J TollnerFrance2026-06-29Commercial Press QUALIFIED41Stephen Shaw
1049Wickens V CaudyArgentina2026-06-18Printing Dimensions PROPOSAL30Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Misaki S FlosiAustraliaOnyama Limba UNQUALIFIED
Smith Z MorascaArgentinaOnyama Limba RENEWAL
Leon B RimUnited KingdomStephen Shaw NEW
Leon G SaylorsUnited KingdomAsiya Javayant NEW
Misaki X WhobreyGermanyOnyama Limba RENEWAL
Emily C RimUnited KingdomAsiya Javayant QUALIFIED
Isabel C OldroydJapanStephen Shaw UNQUALIFIED
David T AmigonFranceOnyama Limba UNQUALIFIED
Smith E NestleUnited KingdomBernardo Dominic QUALIFIED
Jones U ButtArgentinaAsiya Javayant QUALIFIED
Greenwood F SergiSpainOnyama Limba NEGOTIATION
Isabel C WhobreyAustraliaAsiya Javayant RENEWAL
Misaki T FollerAustraliaElwin Sharvill UNQUALIFIED
Juan N StockhamCanadaIvan Magalhaes QUALIFIED
Aruna R ButtArgentinaElwin Sharvill NEW
Stacey H BowleyIndiaXuxue Feng NEGOTIATION
Julie D BowleyIndiaIoni Bowcher QUALIFIED
Francesco S GillianBrazilStephen Shaw PROPOSAL
Jeanfrancois X DilliardBrazilAmy Elsner UNQUALIFIED
Isabel M GlickIndiaAsiya Javayant NEGOTIATION
Murillo D MaletGermanyIoni Bowcher PROPOSAL
Deepesh K FollerSpainAnna Fali PROPOSAL
Ashley R StensethArgentinaIvan Magalhaes PROPOSAL
Salvatore R WaycottIndiaAnna Fali NEW
Kadeem X CampainArgentinaIoni Bowcher UNQUALIFIED
Darci C NestleArgentinaIvan Magalhaes QUALIFIED
Jefferson P OstroskySpainElwin Sharvill NEW
Ivar O SaylorsCanadaBernardo Dominic QUALIFIED
Stacey B KuskoAustraliaAmy Elsner PROPOSAL
Chavez C CaudyJapanAmy Elsner PROPOSAL
Chavez X GlickSpainAnna Fali NEGOTIATION
Octavia L TollnerCanadaAsiya Javayant RENEWAL
Ashley T BowleyGermanyElwin Sharvill QUALIFIED
Leon E AlbaresSpainStephen Shaw UNQUALIFIED
Nicolas I ChuiFranceAmy Elsner UNQUALIFIED
Greenwood R RoysterUnited KingdomAsiya Javayant QUALIFIED
Ricardo L WhobreySpainIoni Bowcher NEW
Darci W NickaIndiaElwin Sharvill UNQUALIFIED
Murillo H InouyeIndiaIvan Magalhaes PROPOSAL
Chavez U GillianItalyStephen Shaw RENEWAL
Salvatore S ShinkoCanadaElwin Sharvill NEGOTIATION
Jefferson B GlickRussiaIoni Bowcher RENEWAL
Izzy Y FerenczRussiaXuxue Feng QUALIFIED
Leon Z PoquetteAustraliaXuxue Feng NEGOTIATION
Jennifer B FollerSpainIoni Bowcher NEW
Arvin B TollnerSpainOnyama Limba NEW
Misaki V GlickRussiaIvan Magalhaes UNQUALIFIED
Octavia M TollnerAustraliaAmy Elsner UNQUALIFIED
Mayumi V VocelkaIndiaAsiya Javayant UNQUALIFIED
David F PaprockiBrazilAmy Elsner RENEWAL
Frozen Columns
Name
Mayumi Z Venere
Rodrigues P Tollner
Juan V Sergi
Ashley N Malet
Francesco I Gillian
Jefferson H Sergi
Sinclair Y Stockham
Ivar K Caudy
Sinclair G Dilliard
Munro M Caldarera
Leja K Slusarski
Aruna F Gillian
Adams W Kolmetz
Deepesh X Venere
Jeanfrancois X Ostrosky
Juan O Doe
Juan X Gillian
Juan H Albares
Faith N Campain
Silvio N Perin
Adams H Gillian
Morrow K Malet
Greenwood A Flosi
Rodrigues F Ruta
Cody Q Doe
James R Gillian
Julie S Glick
Octavia M Iturbide
Mayumi P Nestle
Alejandro X Whobrey
Emily S Chui
Salvatore H Kolmetz
Johnson A Malet
Kaitlin O Marrier
Mujtaba G Waycott
Clifford W Doe
Aika Y Amigon
Jennifer B Slusarski
Deepesh N Marrier
Salvatore K Kolmetz
Munro Z Ferencz
Clifford R Campain
Isabel K Rulapaugh
Arvin L Flosi
Claire I Whobrey
Darci S Venere
Aditya P Caudy
Wickens S Venere
Antonio Z Oldroyd
Smith E Slusarski
IdCountryDate
1000Germany2026-07-03
1001France2026-07-06
1002France2026-06-16
1003Japan2026-07-14
1004Russia2026-06-24
1005Spain2026-06-20
1006India2026-07-11
1007France2026-06-17
1008France2026-06-22
1009Brazil2026-06-21
1010France2026-07-12
1011Brazil2026-07-08
1012Japan2026-06-25
1013United Kingdom2026-06-21
1014Brazil2026-07-13
1015Russia2026-07-03
1016Japan2026-06-17
1017Canada2026-07-10
1018France2026-06-23
1019Germany2026-07-01
1020Germany2026-06-21
1021France2026-06-15
1022Japan2026-07-02
1023Germany2026-06-30
1024Russia2026-06-16
1025Spain2026-06-26
1026Germany2026-06-26
1027France2026-06-26
1028Russia2026-06-28
1029Italy2026-07-07
1030Germany2026-06-27
1031Australia2026-06-24
1032Canada2026-06-22
1033Italy2026-06-25
1034Spain2026-06-21
1035Germany2026-07-13
1036Argentina2026-06-18
1037Argentina2026-07-12
1038Spain2026-07-07
1039Russia2026-06-18
1040Russia2026-06-22
1041Brazil2026-06-16
1042India2026-06-21
1043Australia2026-06-17
1044Italy2026-06-21
1045India2026-06-23
1046Argentina2026-06-27
1047Canada2026-06-26
1048Japan2026-07-03
1049Argentina2026-06-18

On-Demand Data

NameIdCountryDate
Aditya Z Morasca1000Canada2026-06-25
Juan L Albares1001France2026-06-28
Leon K Chui1002Italy2026-06-21
Greenwood X Oldroyd1003France2026-07-12
Maisha D Gaucho1004Canada2026-07-12
Clifford C Iturbide1005France2026-07-06
Silvio J Chui1006Russia2026-07-04
Jeanfrancois O Ferencz1007Italy2026-06-16
Munro V Nestle1008Japan2026-07-05
David C Bolognia1009India2026-07-11
Leon J Kolmetz1010Italy2026-06-18
Wickens L Malet1011Russia2026-06-22
Faith P Bolognia1012Canada2026-06-24
Darci P Ferencz1013Brazil2026-06-19
Alejandro X Saylors1014Australia2026-06-23
Kadeem R Stockham1015Russia2026-07-14
Deepesh Q Gaucho1016Spain2026-06-17
Leon G Flosi1017Italy2026-07-13
Sinclair H Amigon1018Brazil2026-07-06
Octavia J Venere1019Germany2026-06-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody C VenereItalyAsiya Javayant NEGOTIATION
Jones Y InouyeAustraliaElwin Sharvill PROPOSAL
Leja Y FlosiRussiaElwin Sharvill NEW
Jeanfrancois E CampainIndiaAnna Fali NEGOTIATION
Aruna N AmigonAustraliaOnyama Limba RENEWAL
Misaki A NickaItalyStephen Shaw RENEWAL
Izzy W FerenczFranceStephen Shaw UNQUALIFIED
Antonio Q WaycottBrazilIvan Magalhaes QUALIFIED
Wickens A GillianArgentinaAsiya Javayant NEGOTIATION
Cody L SaylorsIndiaAnna Fali NEW
Mujtaba H RulapaughItalyXuxue Feng PROPOSAL
Costa A WhobreyJapanXuxue Feng RENEWAL
Aditya I AlbaresSpainAsiya Javayant PROPOSAL
Ashley U MacleadBrazilXuxue Feng NEW
Silvio Z TollnerJapanOnyama Limba NEGOTIATION
Francesco T BriddickArgentinaIvan Magalhaes UNQUALIFIED
Wickens I MaletUnited KingdomAmy Elsner RENEWAL
Jones K PerinAustraliaAmy Elsner UNQUALIFIED
Kadeem O ShinkoAustraliaAmy Elsner UNQUALIFIED
Arvin B PoquetteCanadaIoni Bowcher NEGOTIATION
Darci E VocelkaGermanyStephen Shaw UNQUALIFIED
Misaki R ChuiFranceOnyama Limba RENEWAL
Nicolas P TollnerGermanyBernardo Dominic UNQUALIFIED
Rodrigues M MaletItalyAnna Fali UNQUALIFIED
Kaitlin M GillianCanadaAnna Fali NEGOTIATION
Izzy J DarakjyUnited KingdomAmy Elsner UNQUALIFIED
Aika A ShinkoItalyXuxue Feng RENEWAL
Nicolas S RutaSpainAmy Elsner RENEWAL
Ashley C PaprockiGermanyStephen Shaw QUALIFIED
Arvin F KuskoFranceXuxue Feng NEGOTIATION
Darci Q CaudyArgentinaAmy Elsner PROPOSAL
Octavia T RoysterItalyAmy Elsner QUALIFIED
Sinclair L RimCanadaIvan Magalhaes RENEWAL
Izzy J MacleadCanadaStephen Shaw PROPOSAL
Johnson D WaycottFranceStephen Shaw PROPOSAL
Greenwood A AlbaresItalyIvan Magalhaes PROPOSAL
Nicolas I NestleAustraliaBernardo Dominic NEGOTIATION
Izzy H KolmetzCanadaOnyama Limba QUALIFIED
Clifford W FerenczRussiaIvan Magalhaes NEGOTIATION
Johnson P CampainCanadaBernardo 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>