Locale

Change the locale of the datepicker, schedule and client side validation messages.

Language
English
French
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Czech
Greek
Persian
Hindi
Indonesian
Croatian
Japanese
Hungarian
Hebrew
Georgian
Lithuanian
Latvian
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Swedish
Turkish
Ukrainian
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

PrimeOne Design

Saga Saga
Vela Vela
Arya Arya

Premium Themes

Premium themes are only available exclusively for PrimeFaces Theme Designer subscribers and therefore not included in PrimeFaces core.

Bootstrap light blue and dark blue themes are also included in PrimeFaces 10.x builds for Elite subscribers.

bootstrap4-blue-light Bootstrap Blue
bootstrap4-purple-light Bootstrap Purple
bootstrap4-blue-dark Bootstrap Blue
bootstrap4-purple-dark Bootstrap Purple

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

PREMIUM TEMPLATES

Create awesome applications in no time using the premium templates and impress your users.

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Mujtaba F AmigonUnited KingdomOnyama Limba UNQUALIFIED
Maisha N AlbaresSpainOnyama Limba UNQUALIFIED
Nicolas D CaldareraAustraliaXuxue Feng NEW
Silvio M CaldareraCanadaBernardo Dominic NEW
Antonio H PerinSpainElwin Sharvill UNQUALIFIED
Stacey B TollnerArgentinaElwin Sharvill PROPOSAL
Isabel P IturbideGermanyAsiya Javayant PROPOSAL
Jennifer V DarakjyGermanyAsiya Javayant RENEWAL
Jefferson T FlosiIndiaIoni Bowcher NEGOTIATION
Julie A GlickJapanIoni Bowcher NEW
David K RutaIndiaXuxue Feng QUALIFIED
Jennifer C CampainAustraliaXuxue Feng UNQUALIFIED
Sinclair Z FerenczBrazilIvan Magalhaes NEGOTIATION
James K PerinSpainOnyama Limba NEGOTIATION
Izzy N MacleadAustraliaBernardo Dominic QUALIFIED
Adams A SchemmerArgentinaXuxue Feng NEGOTIATION
Kadeem R WaycottUnited KingdomIoni Bowcher QUALIFIED
Ivar R CaldareraBrazilXuxue Feng RENEWAL
Costa I VenereArgentinaAnna Fali UNQUALIFIED
Arvin H RutaItalyAsiya Javayant UNQUALIFIED
James E SaylorsArgentinaIvan Magalhaes NEGOTIATION
Munro I ShinkoRussiaBernardo Dominic QUALIFIED
Jennifer Q DoeFranceAmy Elsner NEGOTIATION
Rodrigues B RoysterArgentinaIvan Magalhaes NEW
James S PoquetteBrazilAnna Fali NEGOTIATION
Octavia W RutaIndiaStephen Shaw NEGOTIATION
Maria Q CampainItalyOnyama Limba NEW
Cody V PaprockiCanadaAnna Fali UNQUALIFIED
Arvin C DoeCanadaStephen Shaw PROPOSAL
Clifford G GlickUnited KingdomAmy Elsner RENEWAL
David Z VocelkaSpainAmy Elsner PROPOSAL
Julie O TollnerRussiaStephen Shaw UNQUALIFIED
Clifford B StockhamFranceXuxue Feng QUALIFIED
Faith Z CaudyCanadaAmy Elsner UNQUALIFIED
Maisha Z NestleGermanyXuxue Feng RENEWAL
Stacey C IturbideUnited KingdomIvan Magalhaes NEW
Claire R DilliardAustraliaStephen Shaw PROPOSAL
Murillo B StensethItalyOnyama Limba PROPOSAL
Misaki V BowleyJapanBernardo Dominic QUALIFIED
Mayumi S CampainArgentinaElwin Sharvill PROPOSAL
Morrow S BowleyAustraliaElwin Sharvill UNQUALIFIED
Aditya V PaprockiSpainAsiya Javayant PROPOSAL
Ashley B DoeJapanBernardo Dominic UNQUALIFIED
Aruna F VocelkaArgentinaIvan Magalhaes RENEWAL
Leja K FigeroaIndiaAsiya Javayant RENEWAL
Rodrigues B RulapaughSpainBernardo Dominic UNQUALIFIED
Maria W SaylorsItalyElwin Sharvill PROPOSAL
Deepesh U FigeroaBrazilAsiya Javayant QUALIFIED
Claire Y FlosiArgentinaIvan Magalhaes NEGOTIATION
Leja K CaldareraGermanyElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jones V RulapaughIndiaBernardo Dominic UNQUALIFIED
Izzy A RimJapanStephen Shaw UNQUALIFIED
Octavia N ButtJapanOnyama Limba RENEWAL
Adams L CampainFranceOnyama Limba PROPOSAL
Costa U PerinIndiaIvan Magalhaes PROPOSAL
Mujtaba C CaudyGermanyBernardo Dominic NEW
Mayumi M DarakjyUnited KingdomXuxue Feng NEGOTIATION
Leon O MaletCanadaAmy Elsner NEW
Rodrigues R CaldareraUnited KingdomIvan Magalhaes UNQUALIFIED
Kadeem W DilliardFranceIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow Y OstroskyUnited Kingdom2024-04-11Dorl, James J Esq NEGOTIATION1Onyama Limba
1001Clifford J FollerAustralia2024-04-29Buckley Miller Wright NEW67Xuxue Feng
1002David P WhobreySpain2024-04-16Dorl, James J Esq RENEWAL59Stephen Shaw
1003Antonio S MaletSpain2024-04-01Printing Dimensions UNQUALIFIED6Xuxue Feng
1004Sinclair M OldroydAustralia2024-04-20Dorl, James J Esq NEW23Asiya Javayant
1005Kadeem C GauchoFrance2024-04-28Rangoni Of Florence NEGOTIATION12Anna Fali
1006Antonio K DarakjyArgentina2024-04-02Chapman, Ross E Esq RENEWAL48Anna Fali
1007Ricardo P ShinkoBrazil2024-04-27Rousseaux, Michael Esq NEGOTIATION51Onyama Limba
1008Jones P TollnerUnited Kingdom2024-04-23Dorl, James J Esq UNQUALIFIED81Onyama Limba
1009Aditya L RutaArgentina2024-04-17Dorl, James J Esq NEW54Onyama Limba
1010Aditya X PoquetteArgentina2024-04-10Chapman, Ross E Esq PROPOSAL69Elwin Sharvill
1011Julie Z RulapaughSpain2024-04-26Feltz Printing Service RENEWAL88Onyama Limba
1012Chavez T StockhamArgentina2024-04-01Dorl, James J Esq NEW80Anna Fali
1013Izzy U OldroydCanada2024-04-27Dorl, James J Esq NEGOTIATION38Xuxue Feng
1014Francesco E RimCanada2024-04-25King, Christopher A Esq QUALIFIED42Amy Elsner
1015Rodrigues Y DilliardItaly2024-04-01Buckley Miller Wright NEW86Stephen Shaw
1016Arvin Q BriddickItaly2024-04-26Buckley Miller Wright RENEWAL10Bernardo Dominic
1017Misaki U SaylorsFrance2024-04-05Morlong Associates RENEWAL91Bernardo Dominic
1018Smith B NickaItaly2024-04-21Morlong Associates UNQUALIFIED80Ivan Magalhaes
1019Aditya R FollerSpain2024-04-18Benton, John B Jr UNQUALIFIED37Elwin Sharvill
1020Costa I PaprockiCanada2024-04-06Buckley Miller Wright RENEWAL25Anna Fali
1021Costa T RutaJapan2024-04-12Buckley Miller Wright NEW21Elwin Sharvill
1022Jefferson N OldroydArgentina2024-04-13Chapman, Ross E Esq QUALIFIED55Asiya Javayant
1023Nicolas G ChuiItaly2024-04-25Dorl, James J Esq NEGOTIATION72Bernardo Dominic
1024Francesco Y ChuiItaly2024-04-13Commercial Press NEW30Ivan Magalhaes
1025Claire T StockhamUnited Kingdom2024-04-08Truhlar And Truhlar Attys RENEWAL9Elwin Sharvill
1026David R RutaFrance2024-04-17Chapman, Ross E Esq NEW55Elwin Sharvill
1027Clifford Y OldroydGermany2024-04-15Printing Dimensions NEW61Asiya Javayant
1028Darci Z DarakjySpain2024-04-18Chemel, James L Cpa NEGOTIATION49Bernardo Dominic
1029Smith K SchemmerSpain2024-04-02Printing Dimensions RENEWAL97Ivan Magalhaes
1030Aditya N GarufiArgentina2024-04-25Chapman, Ross E Esq NEGOTIATION61Xuxue Feng
1031Maisha X KuskoCanada2024-04-05Feltz Printing Service PROPOSAL8Asiya Javayant
1032Isabel W SaylorsAustralia2024-04-01Rangoni Of Florence NEGOTIATION6Elwin Sharvill
1033Ivar I IturbideSpain2024-04-01Rangoni Of Florence NEW65Asiya Javayant
1034Aditya R ButtItaly2024-04-15Chapman, Ross E Esq PROPOSAL36Bernardo Dominic
1035Jefferson S GillianGermany2024-04-05Chanay, Jeffrey A Esq QUALIFIED54Onyama Limba
1036Ricardo Z NestleFrance2024-04-22Feiner Bros UNQUALIFIED47Bernardo Dominic
1037Chavez F SergiSpain2024-04-11Feltz Printing Service NEW87Bernardo Dominic
1038Arvin A KuskoBrazil2024-04-08Printing Dimensions NEW36Asiya Javayant
1039Ricardo T VenereFrance2024-04-03King, Christopher A Esq RENEWAL63Ioni Bowcher
1040Maisha M StensethIndia2024-04-30Rangoni Of Florence RENEWAL28Ivan Magalhaes
1041Arvin G BriddickIndia2024-04-30Rangoni Of Florence PROPOSAL10Ivan Magalhaes
1042Smith Z AmigonIndia2024-04-22Buckley Miller Wright NEGOTIATION99Asiya Javayant
1043Misaki Z SlusarskiIndia2024-04-02Commercial Press NEGOTIATION5Xuxue Feng
1044Smith U RutaRussia2024-04-11Truhlar And Truhlar Attys RENEWAL81Anna Fali
1045Adams J ChuiRussia2024-04-19Morlong Associates UNQUALIFIED53Ivan Magalhaes
1046Mujtaba Z CampainBrazil2024-04-05Buckley Miller Wright QUALIFIED56Asiya Javayant
1047Arvin M KuskoRussia2024-04-30Feltz Printing Service PROPOSAL23Bernardo Dominic
1048Wickens M GarufiUnited Kingdom2024-04-21Morlong Associates RENEWAL54Xuxue Feng
1049Faith C WieserGermany2024-04-21Feltz Printing Service RENEWAL70Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Maria O AlbaresArgentinaOnyama Limba NEGOTIATION
Julie V SchemmerArgentinaIvan Magalhaes RENEWAL
David U MacleadUnited KingdomOnyama Limba NEW
Ricardo T InouyeIndiaIvan Magalhaes NEW
Misaki G RutaFranceAmy Elsner QUALIFIED
Smith K StensethAustraliaIoni Bowcher RENEWAL
Aika I OldroydArgentinaBernardo Dominic QUALIFIED
Maisha W VocelkaAustraliaIoni Bowcher RENEWAL
Costa L BowleySpainIvan Magalhaes NEGOTIATION
Jeanfrancois K NickaCanadaBernardo Dominic NEGOTIATION
Chavez R GauchoCanadaOnyama Limba RENEWAL
Aruna F WaycottSpainAnna Fali PROPOSAL
Emily R PoquetteGermanyAnna Fali NEW
James L FollerRussiaAnna Fali PROPOSAL
Wickens W DarakjyCanadaAnna Fali NEGOTIATION
Cody V VocelkaGermanyXuxue Feng NEGOTIATION
Morrow C BologniaItalyXuxue Feng PROPOSAL
Nicolas W PerinJapanXuxue Feng NEGOTIATION
Francesco H IturbideAustraliaStephen Shaw PROPOSAL
Clifford P CaldareraGermanyOnyama Limba RENEWAL
Isabel N TollnerItalyElwin Sharvill RENEWAL
Faith S RulapaughBrazilAsiya Javayant NEW
Kaitlin L RimIndiaIvan Magalhaes PROPOSAL
Ricardo T ChuiRussiaXuxue Feng NEGOTIATION
Costa C StockhamRussiaElwin Sharvill NEW
Juan D NestleAustraliaBernardo Dominic UNQUALIFIED
Kadeem U DilliardBrazilIvan Magalhaes RENEWAL
Greenwood Y AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Misaki N PaprockiBrazilXuxue Feng NEW
Munro X SlusarskiRussiaStephen Shaw PROPOSAL
Wickens H FerenczFranceBernardo Dominic RENEWAL
Alejandro X GarufiUnited KingdomAnna Fali PROPOSAL
Jeanfrancois A KuskoFranceAsiya Javayant UNQUALIFIED
Ricardo T StensethCanadaXuxue Feng NEW
Mayumi M OldroydGermanyAsiya Javayant PROPOSAL
Morrow E StensethItalyAmy Elsner RENEWAL
Aditya Q IturbideBrazilAmy Elsner PROPOSAL
Misaki B ShinkoAustraliaStephen Shaw UNQUALIFIED
Mujtaba D WaycottGermanyBernardo Dominic RENEWAL
Ivar A KuskoCanadaBernardo Dominic RENEWAL
Sinclair I MaletItalyElwin Sharvill PROPOSAL
Aditya J BologniaUnited KingdomAnna Fali RENEWAL
Izzy R OldroydSpainElwin Sharvill RENEWAL
Deepesh P FigeroaSpainIvan Magalhaes NEW
Kaitlin M StensethSpainIoni Bowcher NEW
Aditya M CampainUnited KingdomAnna Fali RENEWAL
Nicolas P FollerUnited KingdomAnna Fali UNQUALIFIED
Ricardo W RoysterIndiaElwin Sharvill QUALIFIED
Johnson X DoeIndiaElwin Sharvill UNQUALIFIED
Claire F RutaJapanElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Mujtaba K Tollner
Nicolas Q Venere
Maria S Bolognia
Julie N Ruta
Wickens Z Gillian
Kaitlin H Inouye
Nicolas P Gillian
Octavia Z Amigon
Stacey D Sergi
Adams S Kusko
Leja V Maclead
Johnson N Slusarski
Julie N Bowley
Chavez U Nestle
Jones A Doe
Francesco R Oldroyd
Tony P Ruta
Adams T Kusko
Chavez J Marrier
Darci P Tollner
Johnson U Venere
Munro V Maclead
Cody O Dilliard
Jefferson E Maclead
Kaitlin K Rulapaugh
Tony C Figeroa
Costa E Morasca
Cody F Glick
Maisha D Whobrey
Mujtaba J Dilliard
Leon A Schemmer
Jennifer P Ferencz
Mujtaba C Royster
Maria B Poquette
Octavia N Ferencz
James V Campain
Murillo S Vocelka
Antonio N Tollner
Jennifer Q Gillian
Kaitlin O Gaucho
Leja J Waycott
Faith K Foller
Clifford B Schemmer
Salvatore E Dilliard
Chavez S Butt
Greenwood N Stenseth
Juan P Butt
Kadeem P Tollner
Morrow K Perin
Nicolas R Gaucho
IdCountryDate
1000India2024-04-13
1001Brazil2024-04-01
1002United Kingdom2024-04-01
1003Italy2024-04-21
1004Italy2024-04-11
1005Russia2024-04-30
1006India2024-04-16
1007Japan2024-04-15
1008Russia2024-04-20
1009Japan2024-04-06
1010Brazil2024-04-18
1011Canada2024-04-05
1012Brazil2024-04-30
1013Japan2024-04-08
1014Russia2024-04-30
1015Argentina2024-04-01
1016Japan2024-04-24
1017Spain2024-04-22
1018India2024-04-08
1019Germany2024-04-24
1020Russia2024-04-27
1021India2024-04-19
1022Germany2024-04-30
1023Germany2024-04-11
1024Spain2024-04-01
1025France2024-04-10
1026Japan2024-04-22
1027Argentina2024-04-22
1028Argentina2024-04-15
1029Australia2024-04-29
1030Brazil2024-04-09
1031Brazil2024-04-01
1032Argentina2024-04-28
1033Germany2024-04-03
1034Japan2024-04-24
1035Australia2024-04-04
1036Spain2024-04-12
1037France2024-04-03
1038Russia2024-04-23
1039Germany2024-04-28
1040India2024-04-24
1041Italy2024-04-04
1042Argentina2024-04-11
1043Canada2024-04-20
1044Spain2024-04-01
1045Brazil2024-04-26
1046Canada2024-04-22
1047Japan2024-04-01
1048Russia2024-04-27
1049Russia2024-04-02

On-Demand Data

NameIdCountryDate
Ricardo C Bowley1000Brazil2024-04-21
Julie T Briddick1001Brazil2024-04-27
Cody Z Ruta1002India2024-04-21
Maria J Gaucho1003Russia2024-04-11
Tony Z Kusko1004France2024-04-10
Jefferson W Maclead1005Argentina2024-04-17
Aika X Foller1006Argentina2024-04-19
Silvio X Albares1007Canada2024-04-16
Octavia L Inouye1008Germany2024-04-11
Greenwood N Ferencz1009United Kingdom2024-04-04
Leja P Vocelka1010Germany2024-04-12
Faith R Saylors1011India2024-04-06
Adams T Bowley1012Argentina2024-04-04
Leon P Doe1013Germany2024-04-30
Jeanfrancois P Darakjy1014Japan2024-04-05
Claire U Tollner1015Australia2024-04-21
Greenwood W Sergi1016Australia2024-04-18
David B Chui1017France2024-04-29
Juan W Figeroa1018Japan2024-04-29
Wickens Y Figeroa1019Japan2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow A StensethBrazilAsiya Javayant NEW
Munro J BowleyIndiaAnna Fali PROPOSAL
Clifford X VocelkaSpainXuxue Feng UNQUALIFIED
Silvio X FigeroaBrazilAmy Elsner NEGOTIATION
Adams K ShinkoRussiaOnyama Limba NEGOTIATION
Aditya H InouyeArgentinaIoni Bowcher RENEWAL
Mujtaba P InouyeFranceAmy Elsner PROPOSAL
Smith N RulapaughRussiaAnna Fali PROPOSAL
Wickens J NestleIndiaElwin Sharvill PROPOSAL
Izzy X PoquetteBrazilAnna Fali NEGOTIATION
Kaitlin Y GillianGermanyOnyama Limba UNQUALIFIED
Jefferson Y FerenczGermanyIoni Bowcher UNQUALIFIED
Sinclair H IturbideFranceXuxue Feng QUALIFIED
Maisha G WhobreyJapanIoni Bowcher RENEWAL
Alejandro E MarrierSpainBernardo Dominic NEW
Morrow F KolmetzItalyBernardo Dominic NEW
Murillo K MacleadJapanXuxue Feng NEW
Emily N GlickJapanXuxue Feng NEW
Ashley L SergiFranceAsiya Javayant PROPOSAL
Ivar W StockhamArgentinaOnyama Limba QUALIFIED
Sinclair J TollnerAustraliaAnna Fali UNQUALIFIED
Leja X CaldareraFranceBernardo Dominic RENEWAL
Izzy D VenereFranceBernardo Dominic NEW
Mayumi P ButtAustraliaAnna Fali NEGOTIATION
Aruna J FollerFranceAnna Fali PROPOSAL
Stacey D RimJapanBernardo Dominic NEW
Octavia E DilliardCanadaAnna Fali NEGOTIATION
Wickens F CaudyAustraliaAsiya Javayant NEGOTIATION
Stacey F GarufiIndiaXuxue Feng UNQUALIFIED
Izzy M AmigonGermanyAmy Elsner RENEWAL
Julie W PerinIndiaStephen Shaw NEW
Aditya T MacleadArgentinaAnna Fali UNQUALIFIED
Ashley P GarufiCanadaAmy Elsner PROPOSAL
Emily H RoysterArgentinaIoni Bowcher UNQUALIFIED
Stacey O WieserBrazilAnna Fali RENEWAL
Mayumi A GauchoAustraliaAsiya Javayant PROPOSAL
Clifford B KuskoFranceAmy Elsner NEW
Murillo T MaletFranceIvan Magalhaes QUALIFIED
Francesco E SergiRussiaAsiya Javayant NEW
Leon P MacleadFranceXuxue Feng RENEWAL

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