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
Aika U ShinkoCanadaXuxue Feng RENEWAL
Deepesh Z RulapaughBrazilIoni Bowcher PROPOSAL
Murillo J WhobreyJapanAnna Fali NEW
Julie P ShinkoArgentinaXuxue Feng PROPOSAL
Claire W PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Nicolas X MorascaArgentinaXuxue Feng QUALIFIED
Tony S OldroydArgentinaOnyama Limba NEW
Jeanfrancois E FollerBrazilAsiya Javayant QUALIFIED
Deepesh M OstroskyItalyAnna Fali RENEWAL
Morrow Z CaldareraFranceIoni Bowcher QUALIFIED
Ricardo K VocelkaAustraliaAsiya Javayant RENEWAL
Arvin J WaycottItalyOnyama Limba NEW
Murillo R StockhamJapanStephen Shaw PROPOSAL
Juan V IturbideJapanAsiya Javayant NEW
Aika M NickaAustraliaAmy Elsner PROPOSAL
Alejandro T SergiItalyStephen Shaw RENEWAL
Munro A NickaItalyIvan Magalhaes RENEWAL
Costa E CaudyFranceIoni Bowcher PROPOSAL
David Y BowleyAustraliaXuxue Feng NEGOTIATION
Johnson S NestleUnited KingdomXuxue Feng NEGOTIATION
Deepesh S CaudyArgentinaAmy Elsner NEGOTIATION
Francesco X RulapaughArgentinaElwin Sharvill UNQUALIFIED
Smith I AlbaresBrazilXuxue Feng QUALIFIED
Kadeem Z SchemmerItalyIvan Magalhaes RENEWAL
Murillo S FlosiRussiaStephen Shaw NEW
Silvio V OldroydIndiaAsiya Javayant UNQUALIFIED
Julie M WhobreyJapanIvan Magalhaes UNQUALIFIED
Juan Z FollerArgentinaAnna Fali RENEWAL
Mujtaba C PoquetteGermanyOnyama Limba UNQUALIFIED
Octavia H BriddickAustraliaAmy Elsner PROPOSAL
Ashley N NickaIndiaXuxue Feng PROPOSAL
Aika T RoysterCanadaXuxue Feng UNQUALIFIED
Aditya Y TollnerArgentinaElwin Sharvill RENEWAL
Maisha F BriddickFranceAsiya Javayant NEW
Chavez E TollnerJapanBernardo Dominic QUALIFIED
Juan Z RulapaughAustraliaBernardo Dominic UNQUALIFIED
Faith X DilliardItalyOnyama Limba UNQUALIFIED
Nicolas Y BowleyFranceIvan Magalhaes NEGOTIATION
Jefferson Z FigeroaJapanBernardo Dominic RENEWAL
Clifford Y MorascaItalyBernardo Dominic NEGOTIATION
Munro U SaylorsSpainXuxue Feng PROPOSAL
Darci A CaudyRussiaAmy Elsner RENEWAL
Chavez S KolmetzGermanyElwin Sharvill NEW
Maisha D OstroskySpainOnyama Limba QUALIFIED
Juan S ChuiIndiaBernardo Dominic PROPOSAL
Leja Q MarrierCanadaElwin Sharvill UNQUALIFIED
Faith K PoquetteIndiaBernardo Dominic QUALIFIED
Isabel W AmigonFranceIvan Magalhaes NEGOTIATION
Wickens O PaprockiAustraliaIvan Magalhaes NEW
Darci W WieserGermanyAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson W OstroskyIndiaIvan Magalhaes PROPOSAL
Kadeem S FlosiUnited KingdomOnyama Limba NEGOTIATION
Mayumi K RutaBrazilElwin Sharvill UNQUALIFIED
Mayumi M OstroskyJapanIoni Bowcher NEW
Costa C KuskoGermanyElwin Sharvill UNQUALIFIED
Aditya J MaletJapanAsiya Javayant RENEWAL
Octavia L ButtBrazilAmy Elsner UNQUALIFIED
Maria M RoysterFranceAsiya Javayant NEGOTIATION
Mayumi N FollerSpainIvan Magalhaes QUALIFIED
Adams M FerenczBrazilAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily H AmigonArgentina2024-04-19Commercial Press NEGOTIATION1Ioni Bowcher
1001Emily K RoysterUnited Kingdom2024-04-17Morlong Associates NEW15Bernardo Dominic
1002Smith E StockhamJapan2024-04-19Rousseaux, Michael Esq NEGOTIATION75Stephen Shaw
1003Darci E PerinItaly2024-04-24Truhlar And Truhlar Attys RENEWAL79Asiya Javayant
1004Rodrigues N PaprockiRussia2024-04-26Rangoni Of Florence NEW73Stephen Shaw
1005Silvio S PerinAustralia2024-04-05Printing Dimensions QUALIFIED43Anna Fali
1006Isabel T DarakjyUnited Kingdom2024-04-04Rousseaux, Michael Esq NEW88Xuxue Feng
1007Izzy R SergiIndia2024-04-25Commercial Press NEGOTIATION78Xuxue Feng
1008Kadeem I PoquetteCanada2024-04-02Benton, John B Jr QUALIFIED83Ioni Bowcher
1009Adams H PerinJapan2024-04-23Rousseaux, Michael Esq NEGOTIATION53Onyama Limba
1010Adams L MorascaSpain2024-04-05Truhlar And Truhlar Attys PROPOSAL5Ivan Magalhaes
1011Jennifer A OldroydFrance2024-04-20Rousseaux, Michael Esq NEW20Xuxue Feng
1012Darci C ButtCanada2024-04-24Printing Dimensions QUALIFIED35Amy Elsner
1013Mayumi I VenereFrance2024-04-15Printing Dimensions NEGOTIATION18Ioni Bowcher
1014Francesco D SlusarskiCanada2024-04-20Rousseaux, Michael Esq NEW96Anna Fali
1015Aditya W WaycottIndia2024-04-01King, Christopher A Esq QUALIFIED53Onyama Limba
1016Cody H SergiJapan2024-04-28Benton, John B Jr NEGOTIATION18Anna Fali
1017Kadeem H GillianAustralia2024-04-27Feltz Printing Service QUALIFIED66Onyama Limba
1018Aika H WaycottItaly2024-04-14Rousseaux, Michael Esq UNQUALIFIED69Stephen Shaw
1019Murillo B TollnerBrazil2024-04-25Chapman, Ross E Esq PROPOSAL49Amy Elsner
1020Kaitlin P DoeGermany2024-04-19Chapman, Ross E Esq NEW2Amy Elsner
1021Clifford R OldroydSpain2024-04-21Dorl, James J Esq QUALIFIED86Anna Fali
1022Munro Q VenereGermany2024-04-13Rangoni Of Florence PROPOSAL30Anna Fali
1023Nicolas V WhobreyItaly2024-04-10Chapman, Ross E Esq UNQUALIFIED86Elwin Sharvill
1024Sinclair M CaldareraGermany2024-04-12Feiner Bros RENEWAL9Bernardo Dominic
1025Faith E VocelkaItaly2024-04-21Chemel, James L Cpa NEW99Ivan Magalhaes
1026Morrow O NestleSpain2024-04-05Feiner Bros RENEWAL10Stephen Shaw
1027Silvio K SchemmerUnited Kingdom2024-04-12Morlong Associates QUALIFIED74Ivan Magalhaes
1028Rodrigues N KolmetzRussia2024-04-03King, Christopher A Esq PROPOSAL0Bernardo Dominic
1029Jones B CaudyBrazil2024-04-27Dorl, James J Esq UNQUALIFIED29Asiya Javayant
1030Sinclair K VenereArgentina2024-04-18Printing Dimensions NEGOTIATION91Ivan Magalhaes
1031Emily F CaudyCanada2024-04-28Rangoni Of Florence UNQUALIFIED15Stephen Shaw
1032David I FollerJapan2024-04-07King, Christopher A Esq QUALIFIED1Xuxue Feng
1033Smith X IturbideArgentina2024-04-03Chapman, Ross E Esq QUALIFIED28Anna Fali
1034Julie K DilliardUnited Kingdom2024-04-06Truhlar And Truhlar Attys PROPOSAL85Stephen Shaw
1035Silvio U CaldareraAustralia2024-04-15Commercial Press NEW95Asiya Javayant
1036Munro M SlusarskiArgentina2024-04-06Chanay, Jeffrey A Esq QUALIFIED44Elwin Sharvill
1037Deepesh E GillianCanada2024-04-08Feltz Printing Service QUALIFIED63Amy Elsner
1038Kadeem M ChuiAustralia2024-04-14Buckley Miller Wright UNQUALIFIED16Onyama Limba
1039Ricardo Z FlosiIndia2024-04-29Truhlar And Truhlar Attys NEGOTIATION37Xuxue Feng
1040Ashley M CampainSpain2024-04-17King, Christopher A Esq NEW63Bernardo Dominic
1041Wickens I NickaSpain2024-04-12Chemel, James L Cpa RENEWAL73Asiya Javayant
1042Izzy F NestleIndia2024-04-04Printing Dimensions UNQUALIFIED86Elwin Sharvill
1043Juan H BowleyJapan2024-04-16Truhlar And Truhlar Attys UNQUALIFIED24Bernardo Dominic
1044Aika V FigeroaUnited Kingdom2024-04-12Chapman, Ross E Esq RENEWAL65Asiya Javayant
1045Silvio O RutaItaly2024-04-19Chemel, James L Cpa NEW19Stephen Shaw
1046Mujtaba R SaylorsAustralia2024-04-26Printing Dimensions PROPOSAL32Xuxue Feng
1047Johnson Y BologniaCanada2024-04-13Buckley Miller Wright RENEWAL51Ivan Magalhaes
1048Tony D AmigonIndia2024-04-07Rangoni Of Florence NEW82Anna Fali
1049Kadeem M BologniaIndia2024-04-30Truhlar And Truhlar Attys RENEWAL67Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois Q FlosiAustraliaBernardo Dominic NEW
Aruna N WaycottSpainIvan Magalhaes UNQUALIFIED
Faith J DilliardFranceXuxue Feng UNQUALIFIED
Darci P KuskoFranceAsiya Javayant RENEWAL
Maisha R KuskoAustraliaOnyama Limba NEW
Silvio Y CaldareraAustraliaAsiya Javayant UNQUALIFIED
Ricardo X AmigonBrazilAnna Fali QUALIFIED
Francesco M NickaJapanAnna Fali QUALIFIED
Jeanfrancois U NickaIndiaIvan Magalhaes QUALIFIED
Wickens S SaylorsSpainElwin Sharvill NEGOTIATION
Ivar N RimCanadaAsiya Javayant NEW
Clifford S PerinCanadaXuxue Feng UNQUALIFIED
Mujtaba X ChuiAustraliaIoni Bowcher NEW
Faith N FlosiJapanIoni Bowcher QUALIFIED
Maisha P MarrierBrazilStephen Shaw NEW
Leon F MaletSpainXuxue Feng RENEWAL
Emily B FerenczRussiaIvan Magalhaes RENEWAL
Claire I CaudyArgentinaAnna Fali NEGOTIATION
Jefferson Y BriddickBrazilBernardo Dominic NEW
Nicolas X GarufiArgentinaIoni Bowcher NEW
David H BowleyCanadaIoni Bowcher QUALIFIED
Ricardo U PerinUnited KingdomAsiya Javayant QUALIFIED
Leon M WaycottBrazilStephen Shaw NEW
Juan W MorascaSpainAnna Fali PROPOSAL
Juan Z RutaRussiaElwin Sharvill PROPOSAL
Morrow Y ButtIndiaIvan Magalhaes QUALIFIED
Izzy B SchemmerUnited KingdomElwin Sharvill PROPOSAL
Arvin M MaletSpainIvan Magalhaes QUALIFIED
Maria M SlusarskiSpainAnna Fali UNQUALIFIED
Ivar T StensethJapanIvan Magalhaes UNQUALIFIED
Jones P RimUnited KingdomIvan Magalhaes NEGOTIATION
Octavia Z GarufiItalyBernardo Dominic QUALIFIED
Isabel A BologniaAustraliaElwin Sharvill RENEWAL
Smith U ShinkoRussiaOnyama Limba QUALIFIED
Mujtaba Z TollnerIndiaOnyama Limba QUALIFIED
Stacey T SaylorsCanadaIoni Bowcher NEW
Francesco D GillianUnited KingdomXuxue Feng UNQUALIFIED
Nicolas D WaycottCanadaXuxue Feng UNQUALIFIED
Mujtaba V RulapaughSpainAmy Elsner PROPOSAL
Mujtaba W AlbaresFranceXuxue Feng RENEWAL
Chavez Z CaldareraCanadaAsiya Javayant UNQUALIFIED
Aruna I SlusarskiGermanyOnyama Limba PROPOSAL
Munro L FerenczSpainAsiya Javayant QUALIFIED
Rodrigues A NickaArgentinaBernardo Dominic NEW
Silvio M FigeroaArgentinaAnna Fali RENEWAL
Leon Z InouyeFranceElwin Sharvill QUALIFIED
Jennifer E WhobreyAustraliaOnyama Limba RENEWAL
Greenwood U GillianAustraliaIoni Bowcher QUALIFIED
Cody N WieserBrazilAsiya Javayant NEGOTIATION
Jefferson K MorascaFranceXuxue Feng UNQUALIFIED
Frozen Columns
Name
Murillo N Morasca
Murillo R Gaucho
Sinclair N Whobrey
Leon M Whobrey
Claire B Wieser
Izzy O Slusarski
Maria A Ferencz
Stacey I Amigon
Aruna W Rulapaugh
Julie C Kusko
Maria J Malet
Arvin Q Chui
Kadeem M Chui
Chavez L Nestle
Izzy N Tollner
Aruna E Maclead
Costa F Bowley
Francesco M Gaucho
Darci M Marrier
Jennifer M Albares
Munro Q Morasca
Munro E Ruta
Munro V Sergi
Cody V Maclead
Aditya M Sergi
Ivar A Venere
Jefferson H Bolognia
Murillo Y Poquette
Aruna Y Vocelka
Aika T Gillian
Maria A Perin
Jones N Chui
Cody S Whobrey
Leon Y Wieser
Leon C Maclead
Murillo N Kusko
Cody G Stockham
Munro T Foller
Kadeem P Waycott
Leon C Campain
Ashley E Maclead
Sinclair M Doe
James E Foller
Izzy K Ruta
Smith K Bowley
Johnson T Maclead
Ivar K Gillian
Wickens X Caldarera
Deepesh C Glick
Julie J Tollner
IdCountryDate
1000Spain2024-04-23
1001France2024-04-26
1002Spain2024-04-27
1003Argentina2024-04-03
1004Argentina2024-04-24
1005Brazil2024-04-04
1006Canada2024-04-30
1007Russia2024-04-30
1008Brazil2024-04-14
1009Italy2024-04-19
1010Spain2024-04-04
1011Italy2024-04-30
1012Australia2024-04-25
1013Australia2024-04-11
1014Germany2024-04-11
1015Australia2024-04-23
1016Argentina2024-04-27
1017Brazil2024-04-14
1018Russia2024-04-23
1019France2024-04-27
1020Australia2024-04-13
1021Argentina2024-04-21
1022Russia2024-04-05
1023Germany2024-04-09
1024Spain2024-04-16
1025Argentina2024-04-09
1026Australia2024-04-09
1027France2024-04-18
1028Australia2024-04-24
1029India2024-04-27
1030Brazil2024-04-03
1031India2024-04-05
1032Japan2024-04-12
1033India2024-04-17
1034Brazil2024-04-18
1035Italy2024-04-19
1036Australia2024-04-08
1037Italy2024-04-22
1038United Kingdom2024-04-14
1039Brazil2024-04-28
1040Russia2024-04-10
1041Spain2024-04-04
1042Australia2024-04-01
1043Australia2024-04-09
1044Brazil2024-04-16
1045Spain2024-04-05
1046Australia2024-04-30
1047Italy2024-04-10
1048Canada2024-04-21
1049Brazil2024-04-01

On-Demand Data

NameIdCountryDate
Julie G Malet1000Germany2024-04-20
Johnson U Morasca1001Japan2024-04-22
Murillo L Darakjy1002Russia2024-04-05
Julie J Schemmer1003India2024-04-03
Rodrigues S Shinko1004Canada2024-04-22
Aditya E Amigon1005Argentina2024-04-17
Cody C Bolognia1006India2024-04-10
Kaitlin G Kolmetz1007Russia2024-04-29
Sinclair H Kusko1008Japan2024-04-25
Ricardo P Marrier1009Australia2024-04-07
Alejandro D Rim1010Italy2024-04-22
Morrow L Ostrosky1011United Kingdom2024-04-07
Aditya U Amigon1012Canada2024-04-04
Chavez N Ostrosky1013Spain2024-04-23
Francesco I Maclead1014Argentina2024-04-11
Deepesh U Sergi1015Brazil2024-04-11
Jones K Figeroa1016Canada2024-04-29
Smith O Rulapaugh1017India2024-04-07
Tony F Poquette1018Japan2024-04-18
Isabel F Inouye1019Japan2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford P OstroskyIndiaXuxue Feng QUALIFIED
Emily J TollnerAustraliaStephen Shaw RENEWAL
Maisha G OstroskyFranceOnyama Limba PROPOSAL
Jones B RimSpainElwin Sharvill NEGOTIATION
Faith U BowleyJapanXuxue Feng PROPOSAL
Faith X RoysterUnited KingdomIoni Bowcher UNQUALIFIED
Izzy P DoeCanadaAsiya Javayant UNQUALIFIED
Kaitlin C StensethBrazilOnyama Limba QUALIFIED
Ashley T CaudyBrazilAmy Elsner RENEWAL
Silvio B VenereArgentinaIoni Bowcher PROPOSAL
Johnson P OldroydSpainAmy Elsner RENEWAL
Clifford D OldroydGermanyXuxue Feng UNQUALIFIED
Morrow E DilliardJapanOnyama Limba QUALIFIED
Smith U WieserArgentinaXuxue Feng NEW
Stacey O OldroydFranceOnyama Limba QUALIFIED
Clifford O FollerUnited KingdomOnyama Limba NEW
Salvatore S FerenczItalyOnyama Limba PROPOSAL
Rodrigues C BologniaAustraliaIvan Magalhaes UNQUALIFIED
David U VenereAustraliaElwin Sharvill QUALIFIED
Cody X WhobreyAustraliaIvan Magalhaes QUALIFIED
Smith Z DilliardSpainAsiya Javayant NEW
Mujtaba I IturbideRussiaOnyama Limba NEGOTIATION
Leon S SchemmerCanadaBernardo Dominic NEW
Deepesh L RulapaughCanadaBernardo Dominic PROPOSAL
Aika X StockhamSpainIoni Bowcher PROPOSAL
Misaki V VocelkaRussiaBernardo Dominic UNQUALIFIED
Ricardo S SaylorsBrazilIoni Bowcher QUALIFIED
Alejandro D InouyeCanadaBernardo Dominic PROPOSAL
Costa I OldroydSpainOnyama Limba NEW
David I SergiGermanyBernardo Dominic UNQUALIFIED
Tony W PoquetteAustraliaAsiya Javayant NEGOTIATION
James G BologniaCanadaOnyama Limba UNQUALIFIED
Leja I PaprockiFranceAnna Fali NEGOTIATION
Aika K BologniaSpainAmy Elsner UNQUALIFIED
Jennifer M NestleBrazilAsiya Javayant UNQUALIFIED
Adams R PoquetteArgentinaOnyama Limba NEW
Darci H PoquetteGermanyIoni Bowcher NEGOTIATION
Rodrigues E DarakjyBrazilIvan Magalhaes RENEWAL
Emily U OldroydGermanyBernardo Dominic RENEWAL
Leon V OldroydItalyStephen Shaw UNQUALIFIED

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