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
Emily H OldroydItalyElwin Sharvill NEGOTIATION
Silvio H SaylorsArgentinaIoni Bowcher QUALIFIED
Claire W MaletGermanyOnyama Limba NEGOTIATION
Leja P InouyeGermanyStephen Shaw RENEWAL
Octavia W StockhamFranceStephen Shaw NEGOTIATION
Octavia G PaprockiUnited KingdomOnyama Limba NEW
Rodrigues W FigeroaUnited KingdomStephen Shaw QUALIFIED
James K FlosiBrazilIvan Magalhaes NEGOTIATION
Aika C SaylorsCanadaAsiya Javayant PROPOSAL
Arvin H MaletIndiaXuxue Feng RENEWAL
Darci X SergiIndiaOnyama Limba UNQUALIFIED
Faith T RutaAustraliaXuxue Feng RENEWAL
Stacey Y SchemmerArgentinaIoni Bowcher NEW
David U CaldareraCanadaOnyama Limba PROPOSAL
Octavia Z RimFranceAsiya Javayant QUALIFIED
Smith W RulapaughUnited KingdomElwin Sharvill NEGOTIATION
Arvin I FollerJapanAsiya Javayant RENEWAL
Costa A WieserGermanyAmy Elsner PROPOSAL
Octavia H GarufiBrazilOnyama Limba RENEWAL
Jefferson J FigeroaIndiaOnyama Limba QUALIFIED
Maria Q GillianCanadaBernardo Dominic NEGOTIATION
Faith T ButtBrazilAmy Elsner NEGOTIATION
Isabel B TollnerRussiaBernardo Dominic RENEWAL
Murillo A NickaItalyIoni Bowcher UNQUALIFIED
Antonio Y StockhamAustraliaIvan Magalhaes RENEWAL
Munro W OldroydBrazilStephen Shaw NEW
Ricardo W BowleyAustraliaStephen Shaw QUALIFIED
Leon P IturbideIndiaOnyama Limba UNQUALIFIED
Octavia J RulapaughUnited KingdomStephen Shaw PROPOSAL
Juan I FigeroaIndiaAnna Fali NEGOTIATION
Maria U DilliardAustraliaElwin Sharvill PROPOSAL
Julie M VenereGermanyOnyama Limba NEW
Antonio E ChuiFranceXuxue Feng RENEWAL
Octavia T GillianItalyXuxue Feng NEGOTIATION
Jennifer S InouyeSpainIoni Bowcher RENEWAL
Emily F MacleadGermanyIoni Bowcher NEGOTIATION
Isabel P FollerSpainAnna Fali UNQUALIFIED
Emily G WaycottBrazilAmy Elsner NEGOTIATION
Aruna R MaletGermanyAnna Fali NEW
Darci W VocelkaCanadaIoni Bowcher UNQUALIFIED
Salvatore E NestleIndiaOnyama Limba UNQUALIFIED
Izzy O RutaItalyOnyama Limba RENEWAL
Jeanfrancois T SlusarskiAustraliaAsiya Javayant RENEWAL
Faith K NestleJapanIoni Bowcher NEGOTIATION
Wickens S IturbideAustraliaAmy Elsner QUALIFIED
Munro E MaletJapanAnna Fali UNQUALIFIED
Nicolas O InouyeUnited KingdomXuxue Feng UNQUALIFIED
Maisha N MaletUnited KingdomIvan Magalhaes UNQUALIFIED
Rodrigues C OstroskyUnited KingdomAmy Elsner NEW
Munro R PaprockiCanadaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Chavez L CaudyArgentinaElwin Sharvill QUALIFIED
Juan P PaprockiGermanyIvan Magalhaes QUALIFIED
Stacey J MarrierBrazilElwin Sharvill UNQUALIFIED
Kadeem B CaldareraArgentinaIoni Bowcher UNQUALIFIED
Ivar K BriddickUnited KingdomIvan Magalhaes RENEWAL
Johnson A NestleAustraliaBernardo Dominic PROPOSAL
Darci O VenereGermanyAmy Elsner PROPOSAL
Octavia J OldroydFranceIoni Bowcher NEW
Kaitlin K MacleadRussiaBernardo Dominic NEW
Costa S BowleyFranceElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja C MorascaSpain2026-07-22Printing Dimensions NEGOTIATION3Ivan Magalhaes
1001Kadeem P VocelkaFrance2026-07-19Printing Dimensions NEW47Xuxue Feng
1002Johnson E VenereAustralia2026-08-16Commercial Press PROPOSAL49Asiya Javayant
1003Maria M CampainUnited Kingdom2026-07-29Rousseaux, Michael Esq QUALIFIED91Xuxue Feng
1004Silvio A TollnerJapan2026-07-21Chemel, James L Cpa NEW63Onyama Limba
1005Rodrigues F DarakjySpain2026-07-30Dorl, James J Esq QUALIFIED47Elwin Sharvill
1006Cody Q VocelkaCanada2026-07-19Feiner Bros PROPOSAL51Asiya Javayant
1007Jefferson X StensethCanada2026-07-28Dorl, James J Esq RENEWAL25Anna Fali
1008Adams W FigeroaBrazil2026-08-05Morlong Associates NEGOTIATION30Ivan Magalhaes
1009Emily J AmigonArgentina2026-07-19Rousseaux, Michael Esq UNQUALIFIED27Xuxue Feng
1010Juan E VenereBrazil2026-07-24Feiner Bros QUALIFIED90Onyama Limba
1011Tony A PoquetteJapan2026-07-19Chemel, James L Cpa RENEWAL8Onyama Limba
1012Ricardo H PoquetteRussia2026-08-16Rangoni Of Florence NEGOTIATION61Elwin Sharvill
1013Leon V PaprockiBrazil2026-07-26Feltz Printing Service RENEWAL88Ivan Magalhaes
1014Julie Y BologniaBrazil2026-07-21Chapman, Ross E Esq RENEWAL26Asiya Javayant
1015Chavez U GlickBrazil2026-08-04Morlong Associates NEW60Ivan Magalhaes
1016Claire W MacleadArgentina2026-08-03Benton, John B Jr UNQUALIFIED75Amy Elsner
1017Jones F MaletItaly2026-07-26Dorl, James J Esq RENEWAL85Amy Elsner
1018James I CampainCanada2026-07-22Chanay, Jeffrey A Esq QUALIFIED67Bernardo Dominic
1019Chavez F AmigonJapan2026-07-31Feltz Printing Service RENEWAL45Anna Fali
1020Johnson R BowleyItaly2026-07-21Benton, John B Jr NEW61Ivan Magalhaes
1021Deepesh L ButtGermany2026-07-22Feiner Bros QUALIFIED66Asiya Javayant
1022Ricardo O ChuiBrazil2026-08-14Feiner Bros UNQUALIFIED69Ioni Bowcher
1023Mujtaba R FollerCanada2026-08-15Rangoni Of Florence QUALIFIED2Xuxue Feng
1024Juan V FlosiCanada2026-07-19Morlong Associates RENEWAL64Bernardo Dominic
1025Tony F MaletItaly2026-07-23Chapman, Ross E Esq RENEWAL7Ivan Magalhaes
1026Cody Z DilliardJapan2026-08-04Chanay, Jeffrey A Esq UNQUALIFIED81Asiya Javayant
1027Johnson S RoysterFrance2026-08-11Feltz Printing Service RENEWAL84Elwin Sharvill
1028Leja V BologniaIndia2026-07-19Rousseaux, Michael Esq NEGOTIATION79Anna Fali
1029Ivar T KuskoRussia2026-07-24Buckley Miller Wright UNQUALIFIED53Asiya Javayant
1030Maisha I RimIndia2026-08-14Commercial Press PROPOSAL49Ioni Bowcher
1031Darci Q KolmetzIndia2026-08-04Truhlar And Truhlar Attys UNQUALIFIED57Ioni Bowcher
1032Costa X GlickCanada2026-08-05Buckley Miller Wright NEW45Asiya Javayant
1033Smith L DilliardBrazil2026-07-19Morlong Associates RENEWAL84Stephen Shaw
1034Ivar F WieserItaly2026-07-28Chemel, James L Cpa UNQUALIFIED37Amy Elsner
1035Claire H MorascaBrazil2026-08-10Morlong Associates NEW32Stephen Shaw
1036Izzy M MarrierBrazil2026-07-28Chemel, James L Cpa PROPOSAL45Amy Elsner
1037Deepesh K BriddickUnited Kingdom2026-08-10Printing Dimensions QUALIFIED83Ioni Bowcher
1038Wickens I MacleadIndia2026-07-24Chemel, James L Cpa UNQUALIFIED60Stephen Shaw
1039Mayumi X RoysterIndia2026-08-08Feiner Bros UNQUALIFIED87Bernardo Dominic
1040Mayumi V ChuiFrance2026-08-03King, Christopher A Esq UNQUALIFIED14Ioni Bowcher
1041Deepesh Y InouyeRussia2026-08-14Feiner Bros NEW27Bernardo Dominic
1042Alejandro Q ChuiUnited Kingdom2026-07-25Rangoni Of Florence RENEWAL0Onyama Limba
1043Izzy F ButtUnited Kingdom2026-08-05Dorl, James J Esq UNQUALIFIED52Bernardo Dominic
1044Wickens J CampainUnited Kingdom2026-08-13Chanay, Jeffrey A Esq PROPOSAL29Elwin Sharvill
1045Kadeem H RimRussia2026-07-31Printing Dimensions PROPOSAL71Asiya Javayant
1046Jeanfrancois Y RoysterRussia2026-08-04Feiner Bros RENEWAL10Elwin Sharvill
1047Arvin A RutaFrance2026-08-12Rousseaux, Michael Esq NEGOTIATION1Bernardo Dominic
1048Mujtaba V GauchoArgentina2026-07-31Dorl, James J Esq PROPOSAL52Onyama Limba
1049Claire A FlosiItaly2026-07-23Chapman, Ross E Esq RENEWAL43Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Emily G AlbaresIndiaIvan Magalhaes NEW
Munro Y ChuiSpainBernardo Dominic NEGOTIATION
Kaitlin T FlosiArgentinaStephen Shaw PROPOSAL
Aditya G StockhamSpainAnna Fali RENEWAL
Leon G WaycottSpainIoni Bowcher QUALIFIED
Octavia V RulapaughGermanyElwin Sharvill NEGOTIATION
Clifford G SergiGermanyStephen Shaw NEGOTIATION
Nicolas O SchemmerRussiaXuxue Feng NEW
Emily T MaletBrazilStephen Shaw UNQUALIFIED
Ricardo N MorascaBrazilOnyama Limba QUALIFIED
Alejandro B MacleadItalyStephen Shaw UNQUALIFIED
Mayumi F MorascaRussiaBernardo Dominic UNQUALIFIED
Cody A VocelkaIndiaOnyama Limba UNQUALIFIED
Munro W DilliardJapanAsiya Javayant PROPOSAL
Nicolas Q FigeroaCanadaIoni Bowcher NEW
Jefferson D BologniaIndiaElwin Sharvill RENEWAL
Ricardo M RoysterSpainIvan Magalhaes PROPOSAL
Ricardo O BriddickRussiaAnna Fali NEGOTIATION
Smith K WaycottArgentinaAnna Fali PROPOSAL
Alejandro U RulapaughBrazilOnyama Limba PROPOSAL
Silvio X GarufiBrazilElwin Sharvill PROPOSAL
Wickens B FlosiIndiaAsiya Javayant UNQUALIFIED
Chavez E VenereCanadaAnna Fali QUALIFIED
Ivar T SlusarskiCanadaAsiya Javayant UNQUALIFIED
Maria I DilliardFranceIoni Bowcher NEGOTIATION
Claire Q OldroydGermanyAmy Elsner NEGOTIATION
Maria I IturbideItalyOnyama Limba QUALIFIED
Aruna A WhobreyJapanAmy Elsner QUALIFIED
Leon N NickaCanadaStephen Shaw RENEWAL
Tony T PerinArgentinaOnyama Limba PROPOSAL
Chavez L MarrierItalyBernardo Dominic NEGOTIATION
Arvin K StensethGermanyAsiya Javayant NEGOTIATION
Greenwood X ButtBrazilStephen Shaw NEGOTIATION
Jones G ButtCanadaStephen Shaw QUALIFIED
Alejandro B StockhamIndiaIoni Bowcher PROPOSAL
Aruna Y BowleyGermanyAnna Fali QUALIFIED
Antonio N DilliardArgentinaAsiya Javayant NEGOTIATION
Ivar G RulapaughRussiaIvan Magalhaes NEGOTIATION
Johnson B OstroskyItalyXuxue Feng NEGOTIATION
Faith J SaylorsSpainAnna Fali UNQUALIFIED
Faith F TollnerCanadaStephen Shaw PROPOSAL
Johnson P DoeIndiaBernardo Dominic NEGOTIATION
Alejandro E NestleCanadaAnna Fali RENEWAL
Darci T SergiIndiaAnna Fali NEW
Munro J CaudySpainIvan Magalhaes QUALIFIED
Arvin V GauchoFranceStephen Shaw QUALIFIED
Deepesh F BologniaGermanyElwin Sharvill NEW
James L RutaItalyElwin Sharvill PROPOSAL
Maria Y GarufiBrazilAmy Elsner RENEWAL
Johnson E GillianArgentinaBernardo Dominic QUALIFIED
Frozen Columns
Name
Aruna B Glick
Octavia F Malet
Ivar Z Whobrey
Kadeem G Malet
Johnson U Caldarera
Mujtaba K Malet
Salvatore M Wieser
Jefferson S Nestle
Mayumi R Doe
Emily G Venere
Ivar U Slusarski
Clifford B Dilliard
Deepesh W Gillian
Maria T Wieser
Greenwood L Amigon
Salvatore L Caudy
Cody U Albares
Nicolas K Inouye
Wickens I Kusko
Silvio R Malet
Murillo Y Foller
Johnson K Glick
Wickens T Caldarera
Tony L Schemmer
Stacey M Ostrosky
Johnson O Marrier
Adams N Nestle
Antonio O Sergi
Morrow Z Butt
Isabel X Paprocki
Misaki B Slusarski
Leon R Schemmer
Costa E Waycott
Arvin Y Chui
Cody Z Gillian
Johnson R Royster
Tony I Ruta
Stacey A Iturbide
Alejandro Q Chui
Jennifer W Rulapaugh
Johnson Y Poquette
Mayumi Q Maclead
Salvatore V Paprocki
Jennifer L Rim
Adams A Bolognia
Chavez P Butt
Leja T Ferencz
Jones K Bolognia
Alejandro C Iturbide
Clifford M Iturbide
IdCountryDate
1000Russia2026-07-31
1001France2026-08-04
1002India2026-07-24
1003Germany2026-08-12
1004Brazil2026-08-04
1005Australia2026-07-24
1006Brazil2026-07-20
1007India2026-08-06
1008Spain2026-08-16
1009Spain2026-08-02
1010United Kingdom2026-07-22
1011Canada2026-08-09
1012Germany2026-08-16
1013Germany2026-07-29
1014India2026-08-01
1015Japan2026-08-11
1016France2026-08-03
1017Argentina2026-07-31
1018Argentina2026-08-07
1019Canada2026-08-07
1020Brazil2026-08-13
1021France2026-08-13
1022France2026-07-30
1023Canada2026-07-22
1024Italy2026-08-14
1025India2026-07-24
1026Canada2026-07-20
1027Italy2026-08-14
1028Russia2026-07-30
1029Canada2026-08-10
1030Spain2026-08-09
1031Russia2026-08-06
1032India2026-08-08
1033Spain2026-07-22
1034Argentina2026-07-31
1035Australia2026-07-27
1036Brazil2026-08-04
1037Argentina2026-07-18
1038Russia2026-08-01
1039Germany2026-07-22
1040Brazil2026-08-05
1041India2026-07-22
1042Canada2026-07-20
1043Argentina2026-08-06
1044Italy2026-08-02
1045Argentina2026-08-13
1046Argentina2026-08-02
1047Italy2026-08-09
1048France2026-07-20
1049Germany2026-08-14

On-Demand Data

NameIdCountryDate
Ricardo A Flosi1000Australia2026-08-02
Johnson X Poquette1001Canada2026-07-19
Salvatore C Schemmer1002France2026-07-21
Ashley I Paprocki1003Italy2026-08-06
Jefferson T Briddick1004Argentina2026-08-16
Rodrigues B Stenseth1005Canada2026-07-27
Stacey A Gaucho1006Japan2026-08-02
Ashley V Marrier1007United Kingdom2026-08-03
Aika X Briddick1008Spain2026-07-21
Silvio Z Kolmetz1009United Kingdom2026-07-19
Sinclair Y Royster1010Argentina2026-08-01
Julie B Shinko1011India2026-08-15
Octavia X Caudy1012Italy2026-08-11
David G Albares1013Brazil2026-07-31
Salvatore E Amigon1014United Kingdom2026-07-20
Francesco O Flosi1015Japan2026-08-08
Mayumi E Amigon1016Germany2026-08-15
Ivar P Slusarski1017Australia2026-08-12
Jennifer F Sergi1018Brazil2026-08-07
Adams A Glick1019Russia2026-07-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo O CampainAustraliaElwin Sharvill QUALIFIED
Smith W NickaBrazilIvan Magalhaes NEW
Emily B OstroskyGermanyAnna Fali NEGOTIATION
Wickens W PerinGermanyIvan Magalhaes PROPOSAL
Wickens F MorascaRussiaStephen Shaw NEGOTIATION
Claire K VocelkaItalyIvan Magalhaes UNQUALIFIED
David R SchemmerRussiaAsiya Javayant UNQUALIFIED
Mujtaba O VenereRussiaAmy Elsner QUALIFIED
Morrow C GillianItalyStephen Shaw RENEWAL
Deepesh Y PoquetteFranceIoni Bowcher QUALIFIED
David W GauchoGermanyStephen Shaw NEGOTIATION
Jeanfrancois P FlosiAustraliaBernardo Dominic PROPOSAL
Wickens Z NickaUnited KingdomOnyama Limba UNQUALIFIED
Mujtaba F GauchoCanadaOnyama Limba UNQUALIFIED
Juan G NestleRussiaBernardo Dominic NEW
Clifford D AmigonSpainAnna Fali PROPOSAL
David U RoysterItalyAmy Elsner RENEWAL
Aruna M GillianFranceIvan Magalhaes NEW
Kadeem C PerinItalyBernardo Dominic RENEWAL
Leon A AmigonArgentinaBernardo Dominic UNQUALIFIED
Smith E FollerGermanyOnyama Limba UNQUALIFIED
Sinclair W OldroydUnited KingdomXuxue Feng NEGOTIATION
Jeanfrancois H RulapaughAustraliaElwin Sharvill NEW
Arvin K FollerGermanyElwin Sharvill NEGOTIATION
Munro V SchemmerGermanyElwin Sharvill QUALIFIED
Juan F PaprockiJapanStephen Shaw NEGOTIATION
Jeanfrancois P AmigonSpainElwin Sharvill QUALIFIED
Costa M MaletSpainBernardo Dominic QUALIFIED
Rodrigues E PerinArgentinaXuxue Feng NEGOTIATION
Mujtaba T BriddickArgentinaIoni Bowcher QUALIFIED
Darci S InouyeSpainAsiya Javayant QUALIFIED
Kaitlin E PerinCanadaAnna Fali NEW
Kadeem V CaudySpainAnna Fali PROPOSAL
Sinclair E CampainArgentinaBernardo Dominic UNQUALIFIED
Maisha T BowleyIndiaAsiya Javayant QUALIFIED
Arvin J FigeroaCanadaXuxue Feng NEW
Jefferson L GillianArgentinaIoni Bowcher PROPOSAL
Smith W FerenczFranceIoni Bowcher RENEWAL
Salvatore L PoquetteJapanXuxue Feng NEGOTIATION
Ashley M ChuiFranceAmy Elsner NEW

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