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
Jones Q NestleFranceAsiya Javayant NEGOTIATION
Mayumi N AmigonArgentinaAsiya Javayant UNQUALIFIED
Wickens W OldroydIndiaAsiya Javayant UNQUALIFIED
Tony U MacleadAustraliaBernardo Dominic RENEWAL
Julie Y ChuiBrazilAnna Fali UNQUALIFIED
Silvio C FlosiCanadaStephen Shaw NEGOTIATION
Deepesh J BowleyAustraliaAnna Fali NEGOTIATION
Francesco F ShinkoArgentinaAsiya Javayant QUALIFIED
Emily X OldroydItalyAsiya Javayant QUALIFIED
Aditya H AmigonUnited KingdomXuxue Feng PROPOSAL
Smith W RimUnited KingdomIvan Magalhaes PROPOSAL
Mayumi A MorascaRussiaIoni Bowcher QUALIFIED
Isabel F RulapaughJapanXuxue Feng UNQUALIFIED
Ricardo A GillianUnited KingdomIoni Bowcher UNQUALIFIED
Clifford K BriddickItalyBernardo Dominic NEGOTIATION
Mujtaba F RoysterFranceElwin Sharvill RENEWAL
Cody P BriddickCanadaAmy Elsner PROPOSAL
Jones Y ShinkoGermanyXuxue Feng PROPOSAL
Aruna N NickaCanadaBernardo Dominic PROPOSAL
Aika J CaudyGermanyAmy Elsner NEGOTIATION
Murillo A AmigonJapanAmy Elsner RENEWAL
Chavez B VenereAustraliaXuxue Feng RENEWAL
Silvio N SlusarskiIndiaIoni Bowcher UNQUALIFIED
Silvio N MorascaIndiaAmy Elsner NEW
Mayumi O VocelkaSpainAmy Elsner NEW
Wickens I OstroskyFranceIvan Magalhaes PROPOSAL
Costa X WaycottBrazilAsiya Javayant QUALIFIED
Jones Y RoysterGermanyElwin Sharvill QUALIFIED
Stacey M VenereUnited KingdomOnyama Limba NEW
Wickens C GauchoJapanXuxue Feng UNQUALIFIED
Francesco O TollnerRussiaBernardo Dominic QUALIFIED
Jefferson G MacleadGermanyIvan Magalhaes QUALIFIED
Jeanfrancois H PaprockiCanadaBernardo Dominic NEW
Tony D MacleadFranceElwin Sharvill UNQUALIFIED
David J MorascaCanadaIvan Magalhaes RENEWAL
Cody K BowleyUnited KingdomElwin Sharvill NEGOTIATION
Chavez S SchemmerBrazilOnyama Limba NEGOTIATION
Rodrigues E WieserAustraliaBernardo Dominic RENEWAL
Juan G SergiSpainAnna Fali UNQUALIFIED
Kaitlin E FollerRussiaIvan Magalhaes PROPOSAL
Johnson C DarakjyIndiaAnna Fali NEW
Francesco L SlusarskiItalyOnyama Limba RENEWAL
Stacey W FlosiArgentinaAmy Elsner NEGOTIATION
Izzy Y SaylorsAustraliaIoni Bowcher NEW
Salvatore R SaylorsBrazilStephen Shaw NEW
Morrow A SergiItalyBernardo Dominic UNQUALIFIED
Isabel D MaletJapanAnna Fali NEGOTIATION
Leja N NickaJapanStephen Shaw UNQUALIFIED
Greenwood A CaldareraItalyXuxue Feng NEW
Mujtaba B BriddickGermanyBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Clifford M PoquetteAustraliaAmy Elsner NEGOTIATION
David X ShinkoSpainAsiya Javayant RENEWAL
Ivar M MacleadItalyXuxue Feng NEW
Deepesh I ChuiIndiaStephen Shaw RENEWAL
Deepesh Q FigeroaFranceElwin Sharvill QUALIFIED
Jones Q RulapaughArgentinaStephen Shaw PROPOSAL
Aika W ShinkoArgentinaStephen Shaw RENEWAL
Antonio B BologniaJapanElwin Sharvill PROPOSAL
Jennifer Q CampainAustraliaAmy Elsner UNQUALIFIED
Silvio A GarufiRussiaBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan A DilliardUnited Kingdom2024-04-24Truhlar And Truhlar Attys NEW41Ioni Bowcher
1001Cody E VenereJapan2024-04-26Printing Dimensions NEW85Bernardo Dominic
1002Kadeem T VocelkaBrazil2024-04-13Buckley Miller Wright NEW40Xuxue Feng
1003Morrow R InouyeAustralia2024-05-05Chapman, Ross E Esq QUALIFIED93Amy Elsner
1004Arvin T BologniaBrazil2024-04-20Printing Dimensions RENEWAL59Stephen Shaw
1005Jeanfrancois J ButtGermany2024-04-12Commercial Press NEGOTIATION26Onyama Limba
1006Aika Q CaudyUnited Kingdom2024-04-21Dorl, James J Esq UNQUALIFIED27Bernardo Dominic
1007Rodrigues D BologniaFrance2024-04-12Dorl, James J Esq UNQUALIFIED21Onyama Limba
1008Aika R SchemmerBrazil2024-04-23Feiner Bros NEGOTIATION19Elwin Sharvill
1009Cody W WhobreyUnited Kingdom2024-04-30Feiner Bros UNQUALIFIED95Xuxue Feng
1010Mayumi C CaudyItaly2024-04-21Feltz Printing Service RENEWAL64Anna Fali
1011Aika I DoeFrance2024-04-21Chanay, Jeffrey A Esq PROPOSAL29Xuxue Feng
1012Juan Z PaprockiBrazil2024-04-22Feiner Bros QUALIFIED45Ivan Magalhaes
1013Greenwood W BowleyItaly2024-05-05Commercial Press RENEWAL38Ioni Bowcher
1014Nicolas G FigeroaGermany2024-04-26Commercial Press NEW29Amy Elsner
1015Morrow X MaletBrazil2024-04-18Feltz Printing Service RENEWAL33Bernardo Dominic
1016Faith N SlusarskiArgentina2024-05-05Morlong Associates PROPOSAL34Elwin Sharvill
1017Clifford I BriddickIndia2024-04-29King, Christopher A Esq RENEWAL72Anna Fali
1018Wickens W IturbideFrance2024-05-08Dorl, James J Esq NEW20Anna Fali
1019Jefferson G SchemmerAustralia2024-05-05King, Christopher A Esq PROPOSAL77Ioni Bowcher
1020Ashley F PerinIndia2024-05-01King, Christopher A Esq PROPOSAL43Ioni Bowcher
1021Cody Y KolmetzArgentina2024-05-06Feiner Bros RENEWAL97Asiya Javayant
1022Adams E PoquetteRussia2024-05-07Benton, John B Jr RENEWAL66Ioni Bowcher
1023Smith M SlusarskiUnited Kingdom2024-04-26Dorl, James J Esq PROPOSAL98Amy Elsner
1024Jefferson U ShinkoBrazil2024-04-29Rangoni Of Florence PROPOSAL23Onyama Limba
1025Johnson C RimFrance2024-05-01Rangoni Of Florence RENEWAL18Asiya Javayant
1026Kadeem T DilliardGermany2024-05-03Chemel, James L Cpa UNQUALIFIED74Bernardo Dominic
1027Misaki V FlosiIndia2024-04-27King, Christopher A Esq QUALIFIED15Asiya Javayant
1028Tony M RimSpain2024-04-22Buckley Miller Wright PROPOSAL62Ioni Bowcher
1029Rodrigues S PaprockiJapan2024-05-04Benton, John B Jr QUALIFIED44Amy Elsner
1030Aruna S TollnerItaly2024-05-05Chemel, James L Cpa QUALIFIED17Ivan Magalhaes
1031Mujtaba N BriddickCanada2024-04-29Feltz Printing Service NEGOTIATION88Onyama Limba
1032Smith G RutaSpain2024-05-09Truhlar And Truhlar Attys NEW28Ioni Bowcher
1033Ashley Z TollnerGermany2024-04-20Printing Dimensions QUALIFIED41Amy Elsner
1034Kadeem D CaudyCanada2024-04-23Rousseaux, Michael Esq QUALIFIED87Ioni Bowcher
1035David G GarufiFrance2024-04-26Chapman, Ross E Esq RENEWAL69Elwin Sharvill
1036Claire D ChuiRussia2024-05-04Feltz Printing Service RENEWAL72Bernardo Dominic
1037Smith R GillianRussia2024-04-23Commercial Press PROPOSAL94Elwin Sharvill
1038Leja K RulapaughAustralia2024-04-14Buckley Miller Wright NEGOTIATION45Elwin Sharvill
1039Ashley M StockhamUnited Kingdom2024-05-02King, Christopher A Esq NEGOTIATION55Elwin Sharvill
1040Munro I RulapaughAustralia2024-04-22Truhlar And Truhlar Attys NEW25Xuxue Feng
1041Darci P NickaAustralia2024-05-05Rangoni Of Florence NEW82Ioni Bowcher
1042Ricardo U SaylorsJapan2024-04-16King, Christopher A Esq QUALIFIED45Bernardo Dominic
1043Sinclair V StockhamBrazil2024-04-10Morlong Associates QUALIFIED8Elwin Sharvill
1044Cody M DilliardBrazil2024-04-13Buckley Miller Wright QUALIFIED64Ivan Magalhaes
1045Francesco R GauchoArgentina2024-04-23Feiner Bros RENEWAL94Ivan Magalhaes
1046Emily S WaycottArgentina2024-04-12Morlong Associates UNQUALIFIED73Stephen Shaw
1047Nicolas S SergiIndia2024-05-09Feiner Bros RENEWAL80Bernardo Dominic
1048Misaki V KuskoCanada2024-05-07Chemel, James L Cpa UNQUALIFIED15Bernardo Dominic
1049Smith U VocelkaAustralia2024-04-20Chemel, James L Cpa NEGOTIATION69Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Nicolas T OldroydSpainAmy Elsner NEGOTIATION
Johnson Z WaycottGermanyElwin Sharvill NEW
Deepesh K MaletCanadaStephen Shaw UNQUALIFIED
Tony Y PoquetteCanadaXuxue Feng NEW
Sinclair G NestleBrazilOnyama Limba NEGOTIATION
Clifford F FlosiItalyIoni Bowcher PROPOSAL
Kaitlin A DilliardFranceOnyama Limba PROPOSAL
Arvin T MaletAustraliaStephen Shaw PROPOSAL
Mayumi D KuskoItalyIvan Magalhaes UNQUALIFIED
Tony Q MorascaGermanyAnna Fali RENEWAL
Clifford C MarrierGermanyElwin Sharvill NEW
Francesco J IturbideGermanyIoni Bowcher PROPOSAL
Aruna A WieserBrazilAsiya Javayant QUALIFIED
Francesco Q BowleyAustraliaElwin Sharvill UNQUALIFIED
Misaki Y WaycottBrazilIoni Bowcher PROPOSAL
Jefferson U SaylorsAustraliaXuxue Feng NEW
Ashley M AlbaresAustraliaAnna Fali NEW
Misaki H OldroydGermanyElwin Sharvill QUALIFIED
Misaki O MorascaAustraliaElwin Sharvill PROPOSAL
Mayumi Z GauchoRussiaIvan Magalhaes RENEWAL
Misaki B MaletAustraliaAsiya Javayant QUALIFIED
Silvio G GauchoIndiaOnyama Limba PROPOSAL
Salvatore I GillianRussiaBernardo Dominic RENEWAL
David L FerenczGermanyAsiya Javayant QUALIFIED
Kaitlin A BowleyAustraliaBernardo Dominic PROPOSAL
Smith Y PerinUnited KingdomAsiya Javayant QUALIFIED
Claire J MaletFranceIvan Magalhaes NEGOTIATION
Rodrigues G InouyeArgentinaAsiya Javayant RENEWAL
Smith I FerenczFranceElwin Sharvill UNQUALIFIED
Kadeem G WaycottGermanyIvan Magalhaes QUALIFIED
Kadeem K GillianBrazilIvan Magalhaes PROPOSAL
Murillo F DoeGermanyIoni Bowcher QUALIFIED
James A DarakjySpainElwin Sharvill NEGOTIATION
Emily H OldroydCanadaBernardo Dominic QUALIFIED
Wickens V ButtJapanIoni Bowcher QUALIFIED
Octavia A CaudyRussiaBernardo Dominic NEW
Greenwood N MarrierBrazilIvan Magalhaes UNQUALIFIED
Kaitlin T CaudyItalyElwin Sharvill NEW
Emily S DarakjyIndiaAsiya Javayant NEW
Octavia P MaletBrazilStephen Shaw UNQUALIFIED
Faith F SlusarskiAustraliaAsiya Javayant PROPOSAL
Alejandro D DoeItalyAmy Elsner NEGOTIATION
Ivar J DilliardFranceBernardo Dominic UNQUALIFIED
Izzy W NickaJapanXuxue Feng NEW
Silvio U WhobreyIndiaIvan Magalhaes QUALIFIED
Leon Y SaylorsItalyIvan Magalhaes QUALIFIED
David Y OldroydUnited KingdomIvan Magalhaes UNQUALIFIED
Claire D FigeroaBrazilStephen Shaw NEGOTIATION
Arvin H StockhamGermanyIoni Bowcher UNQUALIFIED
Silvio E WaycottUnited KingdomXuxue Feng PROPOSAL
Frozen Columns
Name
Leja V Figeroa
Maria D Wieser
Aruna R Inouye
Jones Z Ferencz
Salvatore U Saylors
Munro P Stenseth
Ricardo A Schemmer
Clifford R Marrier
Clifford P Royster
Jennifer N Saylors
Wickens N Flosi
Aika R Briddick
Maisha R Foller
Misaki V Foller
Rodrigues E Perin
Clifford W Rim
Ricardo B Poquette
Alejandro W Darakjy
Aruna E Maclead
Kadeem K Bowley
Munro Z Maclead
Julie F Darakjy
Francesco M Campain
Salvatore A Poquette
Munro Q Vocelka
Smith L Caudy
Aditya I Perin
Emily V Ferencz
Adams W Darakjy
Francesco T Gaucho
Rodrigues J Oldroyd
James P Malet
Salvatore U Campain
Alejandro J Darakjy
Mujtaba D Poquette
Isabel M Rim
Stacey S Ostrosky
Nicolas B Vocelka
Tony O Foller
Ivar D Garufi
Salvatore H Ferencz
Greenwood A Ferencz
Smith G Iturbide
Aika T Paprocki
Costa E Flosi
Claire O Kolmetz
Faith L Amigon
Adams F Briddick
Aruna X Perin
Salvatore H Dilliard
IdCountryDate
1000Japan2024-04-19
1001Spain2024-05-05
1002Russia2024-05-02
1003Japan2024-04-22
1004Japan2024-04-14
1005Spain2024-05-08
1006Japan2024-05-08
1007Japan2024-05-04
1008United Kingdom2024-04-30
1009Spain2024-04-30
1010United Kingdom2024-04-11
1011Germany2024-04-17
1012Spain2024-04-11
1013Argentina2024-05-01
1014Spain2024-04-20
1015United Kingdom2024-04-13
1016France2024-05-08
1017Australia2024-04-28
1018Spain2024-05-07
1019Russia2024-04-27
1020India2024-04-14
1021Argentina2024-04-29
1022Japan2024-04-19
1023Argentina2024-05-03
1024India2024-04-11
1025Argentina2024-04-14
1026Spain2024-04-14
1027India2024-04-27
1028Germany2024-05-07
1029Canada2024-04-29
1030Australia2024-04-24
1031Canada2024-04-26
1032Argentina2024-05-07
1033United Kingdom2024-05-04
1034Germany2024-05-05
1035India2024-04-21
1036India2024-04-29
1037Brazil2024-05-09
1038Argentina2024-05-04
1039Brazil2024-04-20
1040Brazil2024-04-29
1041Russia2024-04-18
1042Australia2024-04-26
1043Australia2024-04-20
1044Argentina2024-04-10
1045France2024-05-02
1046Spain2024-04-29
1047Italy2024-04-24
1048Spain2024-05-02
1049United Kingdom2024-05-02

On-Demand Data

NameIdCountryDate
Kadeem Q Butt1000Italy2024-04-22
Misaki Z Royster1001Argentina2024-04-24
Ricardo M Stockham1002Canada2024-04-16
Nicolas H Iturbide1003Australia2024-05-01
Deepesh R Flosi1004Spain2024-05-01
Cody M Maclead1005Australia2024-04-29
Deepesh I Bowley1006United Kingdom2024-05-07
Costa K Waycott1007Italy2024-04-19
Misaki X Nicka1008Germany2024-04-20
Kadeem V Bowley1009France2024-04-13
Stacey V Iturbide1010France2024-04-15
Cody S Malet1011Argentina2024-04-27
Murillo Y Maclead1012Italy2024-04-27
Darci Q Dilliard1013Spain2024-05-06
Murillo X Venere1014Brazil2024-04-22
Faith E Malet1015Russia2024-04-24
Stacey S Chui1016France2024-04-19
Mujtaba Q Doe1017Brazil2024-04-25
Cody L Kolmetz1018Japan2024-05-07
Leja L Chui1019India2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford U DarakjyFranceAmy Elsner NEW
David W SaylorsItalyStephen Shaw NEGOTIATION
Tony O MarrierGermanyStephen Shaw NEGOTIATION
Octavia W NestleRussiaIvan Magalhaes RENEWAL
Leon H MarrierGermanyAnna Fali NEW
Jones Q VenereBrazilStephen Shaw NEGOTIATION
Aika D CampainGermanyXuxue Feng QUALIFIED
Costa F InouyeCanadaAsiya Javayant PROPOSAL
Mayumi L MarrierItalyBernardo Dominic UNQUALIFIED
Izzy K ButtJapanAsiya Javayant NEGOTIATION
Clifford D FlosiBrazilStephen Shaw NEGOTIATION
Ashley S BowleyIndiaElwin Sharvill RENEWAL
Octavia C NestleItalyAmy Elsner UNQUALIFIED
Faith M PerinGermanyBernardo Dominic RENEWAL
Leja Z GauchoIndiaOnyama Limba RENEWAL
Mayumi O FlosiGermanyBernardo Dominic UNQUALIFIED
Faith C GauchoRussiaXuxue Feng PROPOSAL
Kaitlin K ButtBrazilIvan Magalhaes PROPOSAL
Jones N FollerItalyBernardo Dominic UNQUALIFIED
Kadeem N CampainBrazilXuxue Feng NEGOTIATION
Costa O MorascaArgentinaAsiya Javayant QUALIFIED
Maria U AlbaresJapanIoni Bowcher UNQUALIFIED
Silvio A MaletItalyOnyama Limba PROPOSAL
Adams V MaletFranceAmy Elsner NEGOTIATION
Deepesh H WhobreyUnited KingdomIoni Bowcher NEW
Ashley I AlbaresUnited KingdomAnna Fali RENEWAL
Arvin V AlbaresGermanyElwin Sharvill QUALIFIED
Costa Q MorascaItalyBernardo Dominic NEW
Silvio N WaycottAustraliaBernardo Dominic NEW
Francesco O WieserJapanIoni Bowcher QUALIFIED
Stacey E MarrierArgentinaElwin Sharvill QUALIFIED
Cody N FollerFranceIvan Magalhaes NEW
Alejandro L GillianUnited KingdomStephen Shaw NEW
David E NickaJapanElwin Sharvill NEW
Munro Z DarakjyUnited KingdomAsiya Javayant UNQUALIFIED
Stacey D KuskoUnited KingdomAsiya Javayant NEW
Wickens H ShinkoRussiaAsiya Javayant NEGOTIATION
Arvin M BologniaRussiaStephen Shaw NEW
Isabel C AmigonCanadaAnna Fali NEGOTIATION
Nicolas P RoysterFranceBernardo Dominic 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>