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
Leja P FerenczSpainElwin Sharvill NEW
Jefferson E SchemmerGermanyStephen Shaw NEW
Jeanfrancois U FollerRussiaStephen Shaw PROPOSAL
Ricardo H InouyeSpainStephen Shaw PROPOSAL
Isabel G WhobreyArgentinaAnna Fali NEW
Mayumi L ShinkoUnited KingdomAnna Fali UNQUALIFIED
David R VenereGermanyStephen Shaw NEGOTIATION
Mujtaba Y FerenczBrazilOnyama Limba NEGOTIATION
Misaki U KuskoItalyBernardo Dominic RENEWAL
James A DarakjyFranceAnna Fali NEW
Maria N DoeSpainAnna Fali NEW
Kadeem T StockhamItalyAnna Fali NEW
Claire A MaletJapanStephen Shaw NEGOTIATION
Alejandro I WieserCanadaStephen Shaw QUALIFIED
Chavez Y KolmetzIndiaBernardo Dominic NEW
Murillo F NestleSpainAmy Elsner QUALIFIED
Francesco Q WaycottGermanyIvan Magalhaes QUALIFIED
Silvio Q StensethUnited KingdomIoni Bowcher NEW
Jefferson W RutaFranceBernardo Dominic NEW
Mujtaba D BriddickFranceStephen Shaw QUALIFIED
Murillo P OldroydGermanyOnyama Limba PROPOSAL
Kaitlin G FigeroaArgentinaBernardo Dominic QUALIFIED
Munro K InouyeBrazilIvan Magalhaes QUALIFIED
Misaki F ChuiSpainXuxue Feng RENEWAL
Juan U GlickUnited KingdomOnyama Limba PROPOSAL
James B GauchoJapanOnyama Limba RENEWAL
Murillo J PerinRussiaOnyama Limba QUALIFIED
Emily V RoysterJapanIvan Magalhaes UNQUALIFIED
Jones P WieserBrazilOnyama Limba PROPOSAL
Sinclair R BologniaArgentinaOnyama Limba NEGOTIATION
Jefferson Y FlosiFranceOnyama Limba UNQUALIFIED
Arvin O SchemmerCanadaAnna Fali PROPOSAL
Stacey Q IturbideJapanXuxue Feng PROPOSAL
Chavez M OstroskyUnited KingdomAsiya Javayant PROPOSAL
Darci C CampainRussiaIvan Magalhaes NEGOTIATION
Ivar Z RoysterArgentinaBernardo Dominic NEGOTIATION
Ivar T WhobreyIndiaElwin Sharvill QUALIFIED
Clifford G PerinSpainOnyama Limba NEW
Salvatore E BriddickUnited KingdomElwin Sharvill UNQUALIFIED
Costa O BriddickSpainIoni Bowcher NEGOTIATION
Nicolas U MarrierGermanyIoni Bowcher QUALIFIED
Julie L DilliardItalyAsiya Javayant NEGOTIATION
Tony X SlusarskiAustraliaBernardo Dominic NEGOTIATION
Wickens L ButtArgentinaIvan Magalhaes PROPOSAL
Cody F RulapaughSpainStephen Shaw NEGOTIATION
Izzy N GlickRussiaOnyama Limba QUALIFIED
Jones F BowleyItalyElwin Sharvill RENEWAL
James O NickaIndiaAmy Elsner PROPOSAL
Emily R NestleArgentinaIvan Magalhaes RENEWAL
Jennifer H MorascaSpainIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Costa O NestleFranceIvan Magalhaes PROPOSAL
Deepesh T SlusarskiIndiaAnna Fali RENEWAL
Leja U IturbideArgentinaStephen Shaw PROPOSAL
Kadeem F MacleadBrazilIoni Bowcher UNQUALIFIED
Leon Z MacleadItalyElwin Sharvill NEGOTIATION
Izzy S StensethRussiaAmy Elsner PROPOSAL
Misaki W RutaArgentinaBernardo Dominic NEGOTIATION
Costa N WaycottJapanOnyama Limba QUALIFIED
David J StockhamIndiaOnyama Limba QUALIFIED
David W WieserCanadaIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey F OstroskyBrazil2024-04-07Chemel, James L Cpa RENEWAL26Xuxue Feng
1001Kadeem O OstroskySpain2024-04-24Printing Dimensions RENEWAL53Elwin Sharvill
1002Arvin H NestleSpain2024-04-19Morlong Associates NEW66Xuxue Feng
1003Emily N BriddickJapan2024-04-18Chemel, James L Cpa UNQUALIFIED76Onyama Limba
1004Sinclair V PerinAustralia2024-04-22Chemel, James L Cpa NEW82Xuxue Feng
1005Misaki V CaudyGermany2024-04-12Printing Dimensions NEGOTIATION26Bernardo Dominic
1006Francesco R AlbaresItaly2024-04-05Chemel, James L Cpa NEGOTIATION86Elwin Sharvill
1007Jefferson S StensethGermany2024-04-12Morlong Associates NEW26Asiya Javayant
1008Deepesh M VocelkaFrance2024-04-10Commercial Press RENEWAL74Ioni Bowcher
1009Aruna P StensethArgentina2024-04-07Commercial Press NEGOTIATION2Ioni Bowcher
1010Deepesh A CaudyAustralia2024-04-13Printing Dimensions QUALIFIED98Anna Fali
1011Jeanfrancois I OstroskyRussia2024-04-22Chanay, Jeffrey A Esq NEW62Bernardo Dominic
1012Isabel H AmigonBrazil2024-03-27Buckley Miller Wright NEW16Onyama Limba
1013Greenwood Y NickaFrance2024-03-28Buckley Miller Wright UNQUALIFIED93Amy Elsner
1014Sinclair A ButtGermany2024-04-06Dorl, James J Esq NEGOTIATION56Onyama Limba
1015Maria W CaldareraJapan2024-04-19Buckley Miller Wright PROPOSAL9Stephen Shaw
1016Aika H ChuiArgentina2024-04-01King, Christopher A Esq RENEWAL62Bernardo Dominic
1017Kaitlin W SchemmerFrance2024-04-18King, Christopher A Esq NEGOTIATION55Asiya Javayant
1018Misaki P FlosiGermany2024-04-23Printing Dimensions PROPOSAL73Stephen Shaw
1019Salvatore J PerinJapan2024-04-06Rangoni Of Florence PROPOSAL26Stephen Shaw
1020Jeanfrancois K AlbaresRussia2024-04-01Dorl, James J Esq QUALIFIED13Amy Elsner
1021Nicolas C DilliardCanada2024-04-03Rousseaux, Michael Esq NEGOTIATION69Stephen Shaw
1022Maria W GlickJapan2024-04-08Rangoni Of Florence NEGOTIATION0Stephen Shaw
1023Rodrigues B NickaRussia2024-04-17Chanay, Jeffrey A Esq NEGOTIATION18Anna Fali
1024Maisha Y GlickCanada2024-04-06Chemel, James L Cpa NEGOTIATION93Stephen Shaw
1025Aditya Q MorascaAustralia2024-04-11Printing Dimensions PROPOSAL61Bernardo Dominic
1026Francesco G GarufiJapan2024-04-11Benton, John B Jr NEGOTIATION61Asiya Javayant
1027Silvio I PoquetteAustralia2024-04-14Morlong Associates NEW40Anna Fali
1028Mujtaba A DoeUnited Kingdom2024-04-17Chanay, Jeffrey A Esq PROPOSAL31Xuxue Feng
1029Ivar S RoysterItaly2024-03-28Chanay, Jeffrey A Esq UNQUALIFIED11Xuxue Feng
1030Isabel G CaudyFrance2024-03-28Feltz Printing Service UNQUALIFIED60Ioni Bowcher
1031Misaki U DarakjySpain2024-03-26Printing Dimensions RENEWAL98Onyama Limba
1032Sinclair P SergiSpain2024-04-05Benton, John B Jr PROPOSAL18Stephen Shaw
1033Kadeem C SergiAustralia2024-03-27Feltz Printing Service QUALIFIED14Ioni Bowcher
1034Isabel N TollnerArgentina2024-04-18Feiner Bros PROPOSAL48Ivan Magalhaes
1035Rodrigues E VenereAustralia2024-04-18Commercial Press UNQUALIFIED28Ioni Bowcher
1036Octavia L WieserItaly2024-04-16Rangoni Of Florence RENEWAL53Xuxue Feng
1037Murillo F FollerArgentina2024-04-19Chapman, Ross E Esq PROPOSAL77Bernardo Dominic
1038Leon G RulapaughUnited Kingdom2024-04-06Chapman, Ross E Esq NEGOTIATION62Ivan Magalhaes
1039Adams U FlosiGermany2024-04-15Feltz Printing Service UNQUALIFIED87Anna Fali
1040Leja H WaycottRussia2024-03-28Rangoni Of Florence RENEWAL12Onyama Limba
1041Francesco T OldroydCanada2024-04-07Buckley Miller Wright NEGOTIATION92Amy Elsner
1042Clifford A DarakjyCanada2024-04-15Rangoni Of Florence QUALIFIED5Amy Elsner
1043Kaitlin T MorascaGermany2024-04-10Rousseaux, Michael Esq PROPOSAL39Stephen Shaw
1044Claire J MarrierFrance2024-04-23Feltz Printing Service QUALIFIED26Asiya Javayant
1045Rodrigues Z VenereAustralia2024-04-11Rangoni Of Florence RENEWAL99Bernardo Dominic
1046Adams T FigeroaCanada2024-04-15Feltz Printing Service UNQUALIFIED35Stephen Shaw
1047Darci P MaletFrance2024-04-17Feltz Printing Service NEW81Ivan Magalhaes
1048Maisha C VenereAustralia2024-04-04Chanay, Jeffrey A Esq NEGOTIATION23Asiya Javayant
1049Antonio Y InouyeArgentina2024-04-16Printing Dimensions UNQUALIFIED18Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Emily Z MorascaRussiaAsiya Javayant QUALIFIED
Wickens W FlosiCanadaAmy Elsner UNQUALIFIED
Faith G CaudySpainIvan Magalhaes PROPOSAL
Munro R WhobreyIndiaBernardo Dominic NEW
Faith C ChuiGermanyAmy Elsner NEW
Alejandro J NickaFranceIvan Magalhaes PROPOSAL
Smith A KolmetzRussiaAsiya Javayant NEW
Jennifer G InouyeSpainIvan Magalhaes NEGOTIATION
Mujtaba G GauchoArgentinaAnna Fali RENEWAL
Kadeem R SlusarskiSpainAnna Fali RENEWAL
Silvio J BriddickSpainAnna Fali QUALIFIED
Antonio W MarrierSpainStephen Shaw QUALIFIED
David S MorascaIndiaAnna Fali NEGOTIATION
Rodrigues D MarrierRussiaXuxue Feng NEW
Arvin Q DoeIndiaIvan Magalhaes RENEWAL
Jennifer T SergiUnited KingdomBernardo Dominic PROPOSAL
Sinclair L CaudyRussiaAnna Fali UNQUALIFIED
Greenwood Q AmigonFranceAnna Fali QUALIFIED
Adams F RulapaughFranceElwin Sharvill NEW
Jennifer H RutaArgentinaAmy Elsner NEW
Aika U GlickIndiaAmy Elsner PROPOSAL
Silvio B CampainRussiaXuxue Feng NEW
Jefferson C RimUnited KingdomIvan Magalhaes NEGOTIATION
Antonio W BriddickItalyOnyama Limba NEGOTIATION
Silvio N PaprockiBrazilXuxue Feng PROPOSAL
Silvio N StockhamIndiaOnyama Limba NEGOTIATION
Mayumi G MorascaBrazilStephen Shaw NEGOTIATION
Aditya F RimUnited KingdomAnna Fali RENEWAL
Emily R NestleRussiaXuxue Feng UNQUALIFIED
Greenwood K MorascaRussiaIoni Bowcher UNQUALIFIED
Smith Q GlickUnited KingdomAsiya Javayant RENEWAL
Rodrigues S NickaIndiaIvan Magalhaes QUALIFIED
Stacey F DilliardAustraliaXuxue Feng UNQUALIFIED
Greenwood K GlickRussiaAnna Fali UNQUALIFIED
Darci N SergiUnited KingdomAmy Elsner NEW
Cody V RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
Mayumi Y CampainSpainIoni Bowcher RENEWAL
Octavia H RulapaughIndiaOnyama Limba NEGOTIATION
Aika Y BriddickGermanyAnna Fali RENEWAL
Izzy T GarufiSpainAnna Fali UNQUALIFIED
Smith T FerenczItalyOnyama Limba RENEWAL
Johnson M RoysterIndiaIoni Bowcher PROPOSAL
Stacey R BriddickAustraliaXuxue Feng UNQUALIFIED
Claire Y GlickBrazilOnyama Limba NEW
Alejandro M OldroydAustraliaIvan Magalhaes UNQUALIFIED
Ashley O DoeBrazilIoni Bowcher NEGOTIATION
Mayumi O CaudyJapanIvan Magalhaes RENEWAL
Sinclair V OstroskyJapanBernardo Dominic PROPOSAL
Aditya E InouyeIndiaXuxue Feng PROPOSAL
Antonio J MacleadCanadaElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Ivar E Butt
Deepesh O Paprocki
Emily O Kusko
Jones Q Slusarski
Mayumi T Stockham
Kaitlin G Ruta
Misaki U Gaucho
Jennifer J Iturbide
Jennifer I Dilliard
Aditya E Garufi
Arvin H Kusko
Jeanfrancois A Stockham
Leja J Schemmer
Faith M Caudy
Adams R Caldarera
Kaitlin W Butt
Leja L Bolognia
Jeanfrancois M Inouye
Julie O Darakjy
Aditya K Bolognia
Julie B Caudy
Clifford W Ferencz
Aditya Y Ostrosky
Mayumi B Caldarera
Ricardo P Briddick
Leja W Malet
Juan I Caudy
Alejandro N Campain
Claire Z Figeroa
Tony C Nicka
Greenwood Q Rim
Ivar J Malet
Aditya O Figeroa
Ricardo Y Bolognia
Maria F Gillian
Aika O Gillian
Greenwood H Figeroa
Arvin X Butt
Silvio F Gillian
Chavez R Garufi
Misaki F Bolognia
Silvio D Stockham
Nicolas H Amigon
Leon S Garufi
Francesco T Doe
Nicolas C Nestle
Rodrigues N Bolognia
James L Darakjy
Jones J Doe
Maisha H Nicka
IdCountryDate
1000Germany2024-03-31
1001Spain2024-04-11
1002France2024-03-29
1003Russia2024-03-31
1004Italy2024-04-01
1005Japan2024-03-30
1006Australia2024-04-01
1007Australia2024-04-15
1008France2024-04-03
1009Spain2024-04-20
1010India2024-04-22
1011United Kingdom2024-04-11
1012India2024-04-12
1013Australia2024-04-22
1014India2024-04-15
1015Spain2024-04-13
1016Japan2024-04-24
1017Italy2024-04-10
1018Japan2024-03-28
1019Italy2024-03-31
1020Argentina2024-03-29
1021Italy2024-04-05
1022Australia2024-03-31
1023Spain2024-03-29
1024India2024-04-23
1025Argentina2024-04-21
1026United Kingdom2024-04-05
1027Russia2024-04-08
1028Canada2024-04-04
1029United Kingdom2024-04-19
1030Russia2024-04-11
1031Australia2024-04-20
1032India2024-04-06
1033Spain2024-04-04
1034France2024-03-26
1035Brazil2024-03-30
1036Japan2024-04-14
1037Spain2024-04-03
1038Russia2024-03-26
1039Russia2024-04-20
1040France2024-04-17
1041Australia2024-03-27
1042France2024-03-31
1043Spain2024-03-28
1044Canada2024-04-06
1045Canada2024-04-01
1046Australia2024-04-17
1047Japan2024-04-05
1048United Kingdom2024-04-04
1049Germany2024-04-07

On-Demand Data

NameIdCountryDate
Murillo P Kusko1000Spain2024-04-04
Nicolas Z Marrier1001Spain2024-04-13
Cody V Ferencz1002Spain2024-04-16
Salvatore A Paprocki1003Russia2024-04-15
Jones V Poquette1004France2024-04-16
Rodrigues D Maclead1005Russia2024-04-22
Kaitlin Q Rim1006Japan2024-04-13
Aruna V Rulapaugh1007Spain2024-04-21
Darci X Doe1008Spain2024-04-16
Sinclair M Bowley1009Canada2024-04-22
David C Rulapaugh1010Japan2024-04-06
Juan T Paprocki1011France2024-04-19
Darci U Rulapaugh1012Brazil2024-04-14
Kaitlin D Kusko1013United Kingdom2024-04-19
Clifford I Rim1014Italy2024-04-13
Jefferson G Malet1015Spain2024-03-29
Maisha A Royster1016Italy2024-04-12
James C Doe1017Russia2024-04-20
Darci B Saylors1018Italy2024-04-10
Darci A Saylors1019France2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya E FerenczIndiaAmy Elsner NEGOTIATION
Johnson A IturbideItalyAsiya Javayant RENEWAL
Octavia T NestleRussiaStephen Shaw QUALIFIED
Cody F AlbaresFranceXuxue Feng NEGOTIATION
Kadeem U MaletAustraliaAsiya Javayant NEW
Julie L PerinSpainIoni Bowcher UNQUALIFIED
Morrow J MarrierRussiaElwin Sharvill RENEWAL
Ashley W SaylorsGermanyIoni Bowcher NEGOTIATION
Ricardo P GauchoIndiaIoni Bowcher RENEWAL
Emily V MaletCanadaAmy Elsner QUALIFIED
Silvio Z RutaGermanyAsiya Javayant NEW
James M VenereSpainOnyama Limba UNQUALIFIED
Leon R MarrierAustraliaAmy Elsner QUALIFIED
Salvatore N CaldareraUnited KingdomXuxue Feng PROPOSAL
Alejandro Z StensethRussiaElwin Sharvill RENEWAL
Leon E RoysterBrazilXuxue Feng NEGOTIATION
Morrow W MorascaAustraliaOnyama Limba NEGOTIATION
Leon D PaprockiFranceElwin Sharvill NEW
Kadeem G FerenczUnited KingdomAsiya Javayant RENEWAL
Jefferson D TollnerBrazilAsiya Javayant PROPOSAL
Octavia F VenereArgentinaXuxue Feng NEGOTIATION
Ivar K MacleadRussiaAsiya Javayant NEGOTIATION
Wickens O WhobreyArgentinaStephen Shaw UNQUALIFIED
Cody A CaldareraSpainAsiya Javayant QUALIFIED
Greenwood L MacleadAustraliaElwin Sharvill RENEWAL
Silvio B TollnerArgentinaAsiya Javayant NEW
Ricardo Y MarrierAustraliaOnyama Limba NEW
Murillo I KolmetzArgentinaElwin Sharvill UNQUALIFIED
Francesco V KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Claire P TollnerArgentinaStephen Shaw NEGOTIATION
James O TollnerJapanIoni Bowcher PROPOSAL
Jones W StensethBrazilElwin Sharvill UNQUALIFIED
Izzy N KolmetzRussiaAnna Fali RENEWAL
Greenwood Z RutaAustraliaBernardo Dominic UNQUALIFIED
Isabel F FollerUnited KingdomIvan Magalhaes RENEWAL
Isabel C StockhamAustraliaStephen Shaw NEGOTIATION
Munro Z InouyeCanadaAnna Fali PROPOSAL
Leja V BologniaBrazilElwin Sharvill QUALIFIED
Faith M MacleadItalyBernardo Dominic PROPOSAL
Adams V CampainFranceAmy Elsner 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>