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
Darci T SaylorsAustraliaAnna Fali NEGOTIATION
Johnson W ShinkoSpainBernardo Dominic UNQUALIFIED
Ivar Y FollerIndiaAnna Fali QUALIFIED
Francesco I BowleyJapanAnna Fali UNQUALIFIED
Kaitlin H FerenczJapanOnyama Limba UNQUALIFIED
Misaki A BriddickCanadaStephen Shaw NEGOTIATION
Francesco T FerenczAustraliaIvan Magalhaes QUALIFIED
Aika D GillianBrazilOnyama Limba UNQUALIFIED
Jones W BowleyGermanyStephen Shaw NEGOTIATION
Aditya V BowleyJapanIvan Magalhaes NEGOTIATION
Aika N DoeIndiaOnyama Limba RENEWAL
Kaitlin B DoeAustraliaXuxue Feng QUALIFIED
Mayumi N SlusarskiArgentinaAsiya Javayant NEW
Juan F AlbaresArgentinaElwin Sharvill QUALIFIED
Adams A RulapaughRussiaAsiya Javayant NEGOTIATION
Jeanfrancois V RulapaughRussiaAnna Fali RENEWAL
Misaki K SchemmerIndiaElwin Sharvill UNQUALIFIED
Rodrigues A PoquetteUnited KingdomStephen Shaw QUALIFIED
Tony N DarakjyIndiaStephen Shaw UNQUALIFIED
Aika I ShinkoUnited KingdomAsiya Javayant PROPOSAL
Misaki A DarakjySpainElwin Sharvill NEGOTIATION
Jefferson J MaletGermanyElwin Sharvill NEGOTIATION
Claire O GarufiAustraliaBernardo Dominic NEGOTIATION
Costa J VocelkaRussiaAsiya Javayant NEGOTIATION
Mayumi B BowleySpainOnyama Limba NEGOTIATION
Juan N OstroskyItalyAsiya Javayant RENEWAL
Morrow L DilliardFranceAmy Elsner UNQUALIFIED
Jennifer G MaletCanadaAsiya Javayant QUALIFIED
Morrow C SaylorsAustraliaIvan Magalhaes QUALIFIED
Emily K RutaBrazilAsiya Javayant UNQUALIFIED
Chavez J RoysterGermanyAmy Elsner PROPOSAL
Costa O SchemmerAustraliaOnyama Limba PROPOSAL
Mujtaba H SlusarskiIndiaBernardo Dominic PROPOSAL
Johnson Z RulapaughIndiaAmy Elsner QUALIFIED
Deepesh H IturbideBrazilIoni Bowcher NEW
Wickens F InouyeIndiaElwin Sharvill NEW
Jones W MaletSpainAmy Elsner QUALIFIED
Ivar K RulapaughUnited KingdomAnna Fali QUALIFIED
Juan V ShinkoRussiaIoni Bowcher PROPOSAL
Darci I VocelkaBrazilAmy Elsner QUALIFIED
Maria P AmigonUnited KingdomStephen Shaw NEW
Greenwood A MarrierBrazilIvan Magalhaes NEW
Cody M ChuiAustraliaAsiya Javayant NEW
Nicolas N AmigonCanadaOnyama Limba PROPOSAL
Mayumi J SlusarskiRussiaOnyama Limba UNQUALIFIED
David K BologniaUnited KingdomAnna Fali UNQUALIFIED
Stacey C KuskoGermanyStephen Shaw QUALIFIED
Darci Q GauchoJapanXuxue Feng PROPOSAL
Antonio Q PerinUnited KingdomAmy Elsner UNQUALIFIED
Leon Q DoeFranceElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Morrow B NickaAustraliaOnyama Limba NEW
Stacey G DarakjyGermanyXuxue Feng RENEWAL
Misaki I InouyeRussiaStephen Shaw UNQUALIFIED
Misaki Q VocelkaArgentinaStephen Shaw PROPOSAL
Deepesh Z OstroskyBrazilIvan Magalhaes QUALIFIED
Murillo S ButtCanadaIoni Bowcher PROPOSAL
Jones X BowleyGermanyBernardo Dominic PROPOSAL
Mayumi D PaprockiFranceStephen Shaw UNQUALIFIED
Morrow X InouyeCanadaElwin Sharvill PROPOSAL
Costa A KolmetzIndiaStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika V WaycottGermany2024-02-26Feltz Printing Service PROPOSAL16Ivan Magalhaes
1001Octavia Y CampainArgentina2024-03-13Dorl, James J Esq RENEWAL30Xuxue Feng
1002Johnson R VocelkaJapan2024-03-08Truhlar And Truhlar Attys PROPOSAL64Xuxue Feng
1003Antonio I OstroskyFrance2024-03-06Chapman, Ross E Esq RENEWAL23Ivan Magalhaes
1004Nicolas E GauchoItaly2024-03-03Buckley Miller Wright PROPOSAL46Onyama Limba
1005Jones X StensethRussia2024-03-16Feiner Bros UNQUALIFIED67Amy Elsner
1006Deepesh K MaletCanada2024-03-06Benton, John B Jr NEGOTIATION62Ivan Magalhaes
1007Arvin I NickaAustralia2024-03-04Chanay, Jeffrey A Esq PROPOSAL73Onyama Limba
1008Leon B KolmetzBrazil2024-02-27Buckley Miller Wright RENEWAL8Onyama Limba
1009Claire Q MacleadIndia2024-02-25Truhlar And Truhlar Attys NEGOTIATION70Amy Elsner
1010Arvin H FlosiGermany2024-03-08Morlong Associates UNQUALIFIED4Anna Fali
1011Claire L VocelkaArgentina2024-03-10King, Christopher A Esq QUALIFIED52Ioni Bowcher
1012Morrow J TollnerJapan2024-03-13Commercial Press RENEWAL82Asiya Javayant
1013Costa I ChuiRussia2024-03-03Chemel, James L Cpa UNQUALIFIED83Asiya Javayant
1014James O IturbideCanada2024-03-15Benton, John B Jr NEGOTIATION89Xuxue Feng
1015Aruna W BriddickItaly2024-03-01Benton, John B Jr NEGOTIATION63Xuxue Feng
1016Leon R CaudyItaly2024-03-16Morlong Associates QUALIFIED37Onyama Limba
1017Isabel E BologniaAustralia2024-02-23Morlong Associates PROPOSAL33Amy Elsner
1018Salvatore H StockhamFrance2024-02-28Dorl, James J Esq UNQUALIFIED28Ioni Bowcher
1019Morrow Q TollnerArgentina2024-03-08Truhlar And Truhlar Attys RENEWAL66Stephen Shaw
1020Izzy P WhobreyRussia2024-02-29Chapman, Ross E Esq PROPOSAL9Bernardo Dominic
1021Octavia M MarrierRussia2024-02-23Feltz Printing Service RENEWAL58Bernardo Dominic
1022Kadeem O VocelkaIndia2024-02-18Chapman, Ross E Esq PROPOSAL5Stephen Shaw
1023Jefferson C OldroydBrazil2024-02-20Benton, John B Jr NEW26Anna Fali
1024Jeanfrancois P VocelkaGermany2024-02-20Printing Dimensions UNQUALIFIED66Ioni Bowcher
1025Faith F FigeroaBrazil2024-02-23Benton, John B Jr NEW10Amy Elsner
1026Aika R StockhamAustralia2024-02-18Rangoni Of Florence QUALIFIED72Stephen Shaw
1027Misaki N FlosiAustralia2024-02-28King, Christopher A Esq RENEWAL75Xuxue Feng
1028Maria Z MaletFrance2024-02-26Rangoni Of Florence RENEWAL27Onyama Limba
1029Leja D AmigonUnited Kingdom2024-03-06King, Christopher A Esq NEGOTIATION43Bernardo Dominic
1030Isabel L PaprockiJapan2024-03-07Buckley Miller Wright UNQUALIFIED75Stephen Shaw
1031Leja R FollerGermany2024-03-04Printing Dimensions NEW22Onyama Limba
1032Darci E OstroskyRussia2024-02-24Feiner Bros QUALIFIED66Onyama Limba
1033Alejandro G FerenczAustralia2024-03-07Printing Dimensions NEGOTIATION16Anna Fali
1034Julie T RoysterBrazil2024-03-02Printing Dimensions RENEWAL90Anna Fali
1035Silvio T CaudyAustralia2024-03-13Buckley Miller Wright UNQUALIFIED72Bernardo Dominic
1036Antonio C GillianGermany2024-03-01Chemel, James L Cpa PROPOSAL62Ioni Bowcher
1037Leon Z WaycottIndia2024-03-18Feiner Bros UNQUALIFIED29Onyama Limba
1038Rodrigues X DoeIndia2024-02-27Buckley Miller Wright PROPOSAL19Amy Elsner
1039Salvatore V AmigonCanada2024-02-22Printing Dimensions PROPOSAL84Ioni Bowcher
1040Misaki O WieserGermany2024-03-09Chemel, James L Cpa UNQUALIFIED67Anna Fali
1041Kadeem H ButtCanada2024-03-18Commercial Press UNQUALIFIED73Bernardo Dominic
1042Murillo E DoeItaly2024-02-18Buckley Miller Wright QUALIFIED3Bernardo Dominic
1043Mayumi I ChuiRussia2024-02-29Feltz Printing Service QUALIFIED94Elwin Sharvill
1044Alejandro H RulapaughIndia2024-02-23Chapman, Ross E Esq UNQUALIFIED39Amy Elsner
1045Isabel Z StensethSpain2024-03-14Feltz Printing Service UNQUALIFIED1Anna Fali
1046Murillo L OldroydArgentina2024-02-20Feiner Bros UNQUALIFIED85Xuxue Feng
1047Tony T MacleadFrance2024-02-21Commercial Press NEW86Anna Fali
1048Jones B MorascaIndia2024-03-17Feiner Bros NEW85Ivan Magalhaes
1049Munro P WieserRussia2024-03-16Morlong Associates NEW99Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Adams A FigeroaAustraliaAsiya Javayant RENEWAL
Deepesh D MaletRussiaIvan Magalhaes RENEWAL
Rodrigues J CaudyUnited KingdomAnna Fali UNQUALIFIED
Kadeem P MorascaUnited KingdomIvan Magalhaes PROPOSAL
Nicolas F AlbaresJapanStephen Shaw NEW
James A SaylorsFranceAmy Elsner PROPOSAL
Jones K SchemmerUnited KingdomAmy Elsner NEW
Jones T InouyeAustraliaIvan Magalhaes UNQUALIFIED
Chavez M RulapaughJapanAmy Elsner NEW
Claire Y MacleadBrazilAmy Elsner NEGOTIATION
Juan L ShinkoGermanyIvan Magalhaes NEW
Tony Q VenereIndiaElwin Sharvill RENEWAL
Emily R ButtArgentinaStephen Shaw QUALIFIED
Claire U IturbideJapanAnna Fali PROPOSAL
Francesco H CaldareraCanadaAmy Elsner NEGOTIATION
Nicolas J DilliardArgentinaIoni Bowcher UNQUALIFIED
Jones A OldroydFranceElwin Sharvill NEW
Francesco Z CaudyArgentinaBernardo Dominic NEW
Leja I MacleadGermanyBernardo Dominic QUALIFIED
Smith B SergiUnited KingdomAsiya Javayant QUALIFIED
Salvatore N DoeUnited KingdomAsiya Javayant QUALIFIED
Mayumi I RulapaughItalyIoni Bowcher NEGOTIATION
Murillo Q GlickGermanyXuxue Feng PROPOSAL
Jones C MacleadRussiaAsiya Javayant PROPOSAL
Leon N SergiRussiaOnyama Limba UNQUALIFIED
Morrow M GarufiFranceAnna Fali RENEWAL
Claire Z GlickFranceBernardo Dominic NEW
David Y NickaSpainAnna Fali NEGOTIATION
Kaitlin N WaycottIndiaAsiya Javayant UNQUALIFIED
Costa N NestleJapanAmy Elsner PROPOSAL
Izzy V CaldareraArgentinaElwin Sharvill PROPOSAL
Mayumi D MarrierRussiaStephen Shaw RENEWAL
Stacey K MarrierCanadaBernardo Dominic NEW
Adams X SaylorsAustraliaAmy Elsner QUALIFIED
Darci R ChuiUnited KingdomIvan Magalhaes NEGOTIATION
Munro O StensethBrazilIvan Magalhaes NEW
Costa M BowleyItalyOnyama Limba QUALIFIED
Clifford L MaletRussiaIoni Bowcher RENEWAL
Tony D StensethSpainBernardo Dominic NEW
Costa Y SlusarskiSpainXuxue Feng PROPOSAL
Jones W WhobreyItalyElwin Sharvill QUALIFIED
Rodrigues O VenereBrazilIoni Bowcher UNQUALIFIED
James P GauchoRussiaAsiya Javayant NEW
Octavia V GlickCanadaAsiya Javayant PROPOSAL
Izzy C MorascaArgentinaIvan Magalhaes UNQUALIFIED
Mujtaba B NickaGermanyIvan Magalhaes RENEWAL
Ashley J SergiIndiaOnyama Limba NEW
Stacey B CampainSpainOnyama Limba NEGOTIATION
Arvin O FigeroaAustraliaBernardo Dominic UNQUALIFIED
Tony C PoquetteGermanyIoni Bowcher RENEWAL
Frozen Columns
Name
Claire V Ruta
Mujtaba Z Bowley
Kadeem A Foller
Izzy Q Schemmer
Antonio K Caldarera
Johnson N Perin
Adams F Wieser
Jefferson S Slusarski
Morrow Q Flosi
Silvio S Caudy
Mujtaba K Briddick
Misaki A Rulapaugh
Maria V Stockham
Faith Y Gillian
Adams W Sergi
Silvio L Garufi
Izzy Z Glick
Julie L Caudy
Julie M Stockham
Emily Y Nestle
Faith U Poquette
Morrow G Doe
Morrow P Nicka
Maisha M Bolognia
Claire J Briddick
Aditya H Sergi
Aruna T Perin
Morrow A Paprocki
Leon W Caudy
Rodrigues U Garufi
Francesco E Slusarski
Cody L Sergi
Claire V Caldarera
Sinclair J Oldroyd
Stacey W Kusko
Alejandro M Morasca
David B Waycott
Jennifer R Kusko
James K Amigon
Isabel E Poquette
Kaitlin N Dilliard
Arvin M Paprocki
Murillo B Vocelka
Octavia V Dilliard
Mujtaba E Doe
Ivar O Caldarera
Julie M Paprocki
Leja F Garufi
Maisha M Glick
Wickens D Albares
IdCountryDate
1000Brazil2024-03-09
1001Japan2024-03-17
1002Canada2024-02-27
1003Australia2024-02-27
1004Japan2024-03-12
1005France2024-03-17
1006Japan2024-02-20
1007India2024-03-14
1008France2024-02-23
1009Australia2024-03-07
1010Canada2024-03-15
1011France2024-03-14
1012Australia2024-02-24
1013Germany2024-02-28
1014India2024-02-25
1015Italy2024-03-18
1016Brazil2024-02-23
1017Argentina2024-02-28
1018Canada2024-02-26
1019Spain2024-02-29
1020Argentina2024-02-24
1021Argentina2024-02-21
1022Canada2024-02-18
1023Germany2024-02-18
1024Brazil2024-02-18
1025Russia2024-02-24
1026India2024-03-18
1027Argentina2024-03-05
1028Australia2024-03-08
1029Japan2024-03-06
1030Russia2024-03-15
1031Japan2024-03-05
1032Brazil2024-03-06
1033Argentina2024-03-03
1034United Kingdom2024-02-20
1035Spain2024-03-03
1036Germany2024-03-06
1037France2024-02-22
1038Argentina2024-03-15
1039Canada2024-02-29
1040India2024-03-11
1041Russia2024-02-18
1042Australia2024-03-04
1043Argentina2024-02-18
1044Canada2024-03-16
1045Spain2024-02-26
1046United Kingdom2024-03-08
1047Germany2024-03-18
1048United Kingdom2024-03-11
1049India2024-02-24

On-Demand Data

NameIdCountryDate
Ricardo N Rulapaugh1000Germany2024-03-07
Leja O Gillian1001Russia2024-02-20
Darci U Bolognia1002Japan2024-03-14
Leja H Foller1003Germany2024-03-10
Emily K Perin1004India2024-02-23
Claire Q Shinko1005Japan2024-02-29
Maria O Gillian1006United Kingdom2024-02-27
Aditya F Nicka1007Brazil2024-03-02
Chavez O Caudy1008Argentina2024-03-16
Wickens F Maclead1009France2024-02-29
Octavia T Slusarski1010Argentina2024-02-18
Chavez K Ruta1011Japan2024-02-27
Juan B Kusko1012Japan2024-03-08
Munro H Briddick1013Canada2024-02-27
Deepesh C Saylors1014Spain2024-03-11
Faith I Caldarera1015Japan2024-03-04
Nicolas N Nestle1016Brazil2024-03-13
Munro U Poquette1017Russia2024-03-11
Silvio J Dilliard1018India2024-02-19
Silvio U Venere1019Argentina2024-03-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley F FollerUnited KingdomStephen Shaw QUALIFIED
Wickens U AlbaresFranceBernardo Dominic RENEWAL
Morrow I WhobreySpainOnyama Limba UNQUALIFIED
Salvatore Y RoysterItalyIoni Bowcher RENEWAL
Silvio P CampainGermanyAsiya Javayant UNQUALIFIED
Francesco F InouyeIndiaAnna Fali NEW
Smith W MorascaUnited KingdomIvan Magalhaes NEW
Misaki Y CampainItalyIvan Magalhaes PROPOSAL
Darci L RoysterBrazilIvan Magalhaes RENEWAL
Ricardo Y VenereBrazilStephen Shaw QUALIFIED
Tony D FlosiIndiaElwin Sharvill RENEWAL
Cody T GillianBrazilStephen Shaw RENEWAL
Morrow F WieserIndiaBernardo Dominic PROPOSAL
Morrow B FigeroaUnited KingdomOnyama Limba NEGOTIATION
Jennifer T AlbaresUnited KingdomAnna Fali UNQUALIFIED
Emily B CaldareraCanadaAmy Elsner NEW
Leon G CampainGermanyAsiya Javayant QUALIFIED
Ivar R VocelkaUnited KingdomIvan Magalhaes RENEWAL
Mayumi V GlickGermanyXuxue Feng UNQUALIFIED
Silvio E CampainIndiaBernardo Dominic UNQUALIFIED
Aruna S RimIndiaStephen Shaw PROPOSAL
Isabel X OstroskyFranceXuxue Feng NEGOTIATION
Greenwood E DoeBrazilOnyama Limba UNQUALIFIED
Tony A ChuiCanadaAnna Fali RENEWAL
Jefferson B RoysterItalyStephen Shaw UNQUALIFIED
Antonio U RimRussiaBernardo Dominic RENEWAL
Adams U GlickRussiaIoni Bowcher PROPOSAL
Costa D SchemmerIndiaAsiya Javayant UNQUALIFIED
Mayumi H VocelkaSpainBernardo Dominic UNQUALIFIED
Morrow U AmigonGermanyStephen Shaw PROPOSAL
Wickens S IturbideSpainXuxue Feng RENEWAL
Rodrigues Y BriddickItalyBernardo Dominic RENEWAL
Claire Y BologniaItalyIvan Magalhaes NEGOTIATION
Misaki R StensethJapanIvan Magalhaes NEGOTIATION
Ashley L GillianSpainAsiya Javayant NEW
Murillo E WieserFranceAsiya Javayant NEGOTIATION
Ivar C StockhamArgentinaAmy Elsner RENEWAL
Darci A AmigonItalyAsiya Javayant QUALIFIED
Ashley Q CaldareraGermanyElwin Sharvill UNQUALIFIED
Jeanfrancois S WieserBrazilElwin Sharvill 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>