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 F WhobreyArgentinaBernardo Dominic QUALIFIED
Jeanfrancois Q RutaBrazilAnna Fali RENEWAL
Arvin X FigeroaFranceAnna Fali NEW
Antonio F KuskoAustraliaStephen Shaw QUALIFIED
Ricardo Z FollerSpainAmy Elsner UNQUALIFIED
Ivar I InouyeSpainAmy Elsner NEGOTIATION
James S DilliardBrazilAmy Elsner RENEWAL
Munro F KolmetzArgentinaAsiya Javayant QUALIFIED
Chavez W FerenczUnited KingdomElwin Sharvill RENEWAL
Johnson N BologniaBrazilElwin Sharvill RENEWAL
Aditya X FlosiBrazilIoni Bowcher NEW
Rodrigues C KolmetzSpainAnna Fali NEGOTIATION
Emily N VenereIndiaOnyama Limba UNQUALIFIED
Johnson Y ShinkoCanadaIoni Bowcher QUALIFIED
Sinclair R BologniaArgentinaBernardo Dominic NEW
Leja L RoysterBrazilXuxue Feng PROPOSAL
Leon R GlickArgentinaAsiya Javayant NEGOTIATION
James Y PerinFranceStephen Shaw NEW
Kadeem I RimCanadaAmy Elsner NEW
Salvatore P GillianRussiaAsiya Javayant QUALIFIED
Jennifer O MacleadFranceAnna Fali PROPOSAL
Stacey F MarrierRussiaIoni Bowcher RENEWAL
Claire E GarufiSpainOnyama Limba NEW
Jeanfrancois M FollerUnited KingdomIoni Bowcher PROPOSAL
Mayumi A KuskoBrazilElwin Sharvill QUALIFIED
Tony Q SergiSpainIvan Magalhaes NEW
Adams G GarufiFranceOnyama Limba QUALIFIED
Kaitlin R FigeroaItalyStephen Shaw PROPOSAL
Jennifer P WhobreyFranceOnyama Limba NEGOTIATION
Aditya O ChuiUnited KingdomOnyama Limba UNQUALIFIED
James F GarufiFranceIoni Bowcher NEW
Silvio P CaudyAustraliaAmy Elsner PROPOSAL
Murillo F AlbaresArgentinaAnna Fali PROPOSAL
Kaitlin S CaldareraItalyElwin Sharvill PROPOSAL
Adams P PerinCanadaIvan Magalhaes PROPOSAL
Jones K IturbideItalyAsiya Javayant PROPOSAL
Deepesh X WaycottCanadaStephen Shaw RENEWAL
Darci B AmigonIndiaAmy Elsner NEW
James F BologniaSpainElwin Sharvill NEW
Jennifer Z GlickBrazilBernardo Dominic NEGOTIATION
Ricardo G GarufiFranceIvan Magalhaes NEGOTIATION
Sinclair D RoysterArgentinaIvan Magalhaes QUALIFIED
Antonio C KuskoArgentinaIvan Magalhaes PROPOSAL
Mayumi S CaldareraItalyAmy Elsner UNQUALIFIED
Greenwood B SchemmerGermanyIvan Magalhaes UNQUALIFIED
Arvin R AmigonSpainAnna Fali PROPOSAL
Claire W SergiUnited KingdomBernardo Dominic PROPOSAL
Stacey C MacleadIndiaAsiya Javayant UNQUALIFIED
Smith K AlbaresBrazilIvan Magalhaes PROPOSAL
Leon M BriddickSpainIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Cody S MorascaBrazilXuxue Feng UNQUALIFIED
Munro A BowleyJapanOnyama Limba QUALIFIED
Maria H RutaIndiaAmy Elsner PROPOSAL
Francesco T FerenczCanadaXuxue Feng QUALIFIED
Francesco E MacleadCanadaAsiya Javayant RENEWAL
Leja V WaycottArgentinaXuxue Feng PROPOSAL
Wickens Y MaletArgentinaIoni Bowcher QUALIFIED
Murillo W DarakjyBrazilBernardo Dominic UNQUALIFIED
Aruna A GillianItalyAsiya Javayant UNQUALIFIED
Nicolas P PoquetteUnited KingdomXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio T KuskoUnited Kingdom2024-04-11Commercial Press UNQUALIFIED39Bernardo Dominic
1001Chavez W FlosiGermany2024-03-29Rousseaux, Michael Esq NEW54Asiya Javayant
1002Wickens P MacleadGermany2024-04-20Feiner Bros NEGOTIATION23Anna Fali
1003Ricardo P AmigonSpain2024-04-20Dorl, James J Esq NEGOTIATION92Asiya Javayant
1004James M FerenczJapan2024-04-18Truhlar And Truhlar Attys QUALIFIED71Xuxue Feng
1005Julie G PerinCanada2024-04-08Dorl, James J Esq RENEWAL86Stephen Shaw
1006Mujtaba P NickaAustralia2024-04-07Chapman, Ross E Esq RENEWAL54Stephen Shaw
1007Johnson P RoysterAustralia2024-04-02Feiner Bros QUALIFIED35Bernardo Dominic
1008Jennifer S MorascaJapan2024-04-08Feiner Bros QUALIFIED8Anna Fali
1009Arvin H IturbideGermany2024-03-31Feiner Bros NEW42Ivan Magalhaes
1010Kadeem K GarufiUnited Kingdom2024-04-16Benton, John B Jr NEW13Stephen Shaw
1011Faith W FerenczBrazil2024-04-18Buckley Miller Wright RENEWAL64Onyama Limba
1012Leja N RoysterBrazil2024-03-30King, Christopher A Esq QUALIFIED50Asiya Javayant
1013Morrow N ButtSpain2024-04-04King, Christopher A Esq UNQUALIFIED28Onyama Limba
1014Julie B MarrierAustralia2024-04-06Chemel, James L Cpa UNQUALIFIED36Xuxue Feng
1015Isabel S FollerFrance2024-04-22Buckley Miller Wright NEGOTIATION62Amy Elsner
1016Jennifer U TollnerArgentina2024-04-26King, Christopher A Esq QUALIFIED87Ioni Bowcher
1017Julie Q RoysterCanada2024-04-04Printing Dimensions NEW33Ivan Magalhaes
1018Morrow E CampainFrance2024-04-04Feiner Bros RENEWAL23Onyama Limba
1019Wickens V MorascaJapan2024-04-01Morlong Associates UNQUALIFIED1Anna Fali
1020Ashley P MaletJapan2024-04-19Buckley Miller Wright NEGOTIATION14Amy Elsner
1021Kadeem K InouyeArgentina2024-04-19Dorl, James J Esq NEGOTIATION41Amy Elsner
1022Leon Q DilliardBrazil2024-04-03Chapman, Ross E Esq UNQUALIFIED30Bernardo Dominic
1023Morrow L RoysterAustralia2024-04-14Benton, John B Jr PROPOSAL16Bernardo Dominic
1024Tony J StockhamIndia2024-04-04Chanay, Jeffrey A Esq NEW30Anna Fali
1025Deepesh Q NestleBrazil2024-04-02Rangoni Of Florence PROPOSAL99Stephen Shaw
1026Munro I RoysterItaly2024-04-23Dorl, James J Esq QUALIFIED16Ioni Bowcher
1027Ivar I VocelkaSpain2024-04-12Rangoni Of Florence PROPOSAL73Elwin Sharvill
1028Jones G GauchoArgentina2024-03-30Dorl, James J Esq NEW22Asiya Javayant
1029James V GillianGermany2024-04-19Dorl, James J Esq NEGOTIATION0Bernardo Dominic
1030Isabel R CaudyCanada2024-04-25Dorl, James J Esq UNQUALIFIED46Ioni Bowcher
1031Kaitlin D WieserIndia2024-04-20Rangoni Of Florence NEGOTIATION63Ivan Magalhaes
1032Leja S CampainIndia2024-04-11Benton, John B Jr NEW48Anna Fali
1033Juan O KolmetzCanada2024-04-08Chemel, James L Cpa NEGOTIATION76Stephen Shaw
1034Rodrigues Y GauchoCanada2024-04-14Printing Dimensions PROPOSAL1Onyama Limba
1035James P VenereAustralia2024-03-31King, Christopher A Esq RENEWAL73Stephen Shaw
1036Cody T GarufiJapan2024-04-26Feltz Printing Service RENEWAL91Stephen Shaw
1037Adams U WieserRussia2024-04-03Feiner Bros QUALIFIED30Stephen Shaw
1038Salvatore Q WaycottSpain2024-04-11Printing Dimensions NEGOTIATION7Onyama Limba
1039Claire R RoysterJapan2024-04-12Printing Dimensions NEGOTIATION17Xuxue Feng
1040Izzy S KolmetzCanada2024-04-09Feltz Printing Service QUALIFIED75Onyama Limba
1041Munro J WhobreyCanada2024-03-30Commercial Press NEGOTIATION63Asiya Javayant
1042David N RimRussia2024-04-01Feltz Printing Service NEW84Bernardo Dominic
1043Antonio M MaletIndia2024-04-03Dorl, James J Esq QUALIFIED61Amy Elsner
1044Jefferson H SlusarskiSpain2024-04-02Morlong Associates NEGOTIATION65Ioni Bowcher
1045Claire M MacleadSpain2024-04-18Commercial Press PROPOSAL91Asiya Javayant
1046Smith Z StockhamAustralia2024-04-21Buckley Miller Wright RENEWAL89Bernardo Dominic
1047Adams J OldroydGermany2024-03-31Chanay, Jeffrey A Esq PROPOSAL0Ioni Bowcher
1048Ricardo Z SchemmerSpain2024-03-31Dorl, James J Esq UNQUALIFIED39Anna Fali
1049Jennifer K KolmetzBrazil2024-04-09Commercial Press RENEWAL17Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Stacey W TollnerJapanElwin Sharvill NEW
Maisha C TollnerRussiaAsiya Javayant UNQUALIFIED
Cody T RimRussiaXuxue Feng PROPOSAL
Claire A ShinkoAustraliaAnna Fali UNQUALIFIED
Salvatore U PerinBrazilAsiya Javayant UNQUALIFIED
Juan C MarrierAustraliaAsiya Javayant UNQUALIFIED
Sinclair U FerenczJapanIvan Magalhaes PROPOSAL
Kaitlin D StockhamCanadaAsiya Javayant QUALIFIED
Leja D FerenczIndiaAnna Fali PROPOSAL
Mayumi F GauchoGermanyAsiya Javayant RENEWAL
Ricardo F MorascaIndiaIoni Bowcher UNQUALIFIED
Darci Y RutaFranceOnyama Limba PROPOSAL
Jones O ShinkoBrazilOnyama Limba PROPOSAL
Sinclair J GauchoFranceIvan Magalhaes QUALIFIED
Chavez R MacleadBrazilXuxue Feng NEW
Jefferson G FigeroaAustraliaOnyama Limba NEGOTIATION
Chavez L PaprockiBrazilIvan Magalhaes PROPOSAL
Aika Q PerinFranceAmy Elsner QUALIFIED
Claire X PoquetteRussiaIvan Magalhaes RENEWAL
James R GauchoRussiaXuxue Feng NEGOTIATION
Johnson A ChuiCanadaIoni Bowcher NEGOTIATION
Misaki B RoysterJapanIvan Magalhaes UNQUALIFIED
Emily D CaudyArgentinaOnyama Limba NEGOTIATION
Morrow M RutaFranceAnna Fali PROPOSAL
Misaki F GillianBrazilStephen Shaw UNQUALIFIED
Cody Z PoquetteArgentinaIvan Magalhaes NEW
Leja X ShinkoGermanyBernardo Dominic PROPOSAL
Cody L StockhamFranceAmy Elsner PROPOSAL
Costa R StockhamArgentinaOnyama Limba QUALIFIED
Octavia M KuskoBrazilBernardo Dominic NEW
Rodrigues D WhobreyIndiaBernardo Dominic RENEWAL
Deepesh X SlusarskiItalyAmy Elsner NEGOTIATION
Cody J PoquetteRussiaStephen Shaw QUALIFIED
Kaitlin J GauchoArgentinaXuxue Feng QUALIFIED
Ashley D MorascaIndiaAnna Fali QUALIFIED
Antonio X ShinkoRussiaAnna Fali QUALIFIED
Munro F SchemmerFranceAnna Fali NEGOTIATION
David C MarrierJapanElwin Sharvill RENEWAL
Leon R PerinUnited KingdomStephen Shaw NEGOTIATION
Morrow C DoeSpainOnyama Limba PROPOSAL
Octavia R WieserFranceStephen Shaw UNQUALIFIED
Chavez K ChuiArgentinaXuxue Feng RENEWAL
Chavez C MacleadJapanAsiya Javayant NEW
Salvatore Z OldroydJapanOnyama Limba QUALIFIED
Ricardo A BriddickFranceXuxue Feng NEW
Claire H SergiUnited KingdomAnna Fali RENEWAL
Darci Q WaycottArgentinaAmy Elsner NEW
Greenwood V StensethAustraliaAmy Elsner UNQUALIFIED
Francesco X KuskoUnited KingdomBernardo Dominic RENEWAL
Aditya Y IturbideBrazilAsiya Javayant NEGOTIATION
Frozen Columns
Name
Aruna N Slusarski
Aditya O Venere
Faith Y Foller
Isabel A Figeroa
Misaki M Dilliard
Clifford Z Dilliard
Faith N Caudy
Leon O Caldarera
Silvio Y Wieser
Stacey S Perin
Aruna P Inouye
Ricardo F Caudy
Adams G Ruta
Aika L Butt
Alejandro K Darakjy
Antonio R Nicka
Morrow H Ruta
Mayumi V Amigon
Jennifer L Saylors
Maisha L Stockham
Leon B Glick
Maisha V Inouye
Stacey L Schemmer
Aruna E Flosi
Maisha O Flosi
Aruna X Marrier
Morrow U Darakjy
Jeanfrancois B Figeroa
Darci J Chui
Aika G Amigon
Morrow C Perin
Darci K Doe
Ricardo O Wieser
Munro N Rim
Morrow H Figeroa
Ashley E Kusko
Izzy T Inouye
Alejandro Y Sergi
Cody U Marrier
Kaitlin F Campain
Leja L Ruta
Leon W Caudy
Antonio I Stockham
Johnson X Perin
Silvio Q Oldroyd
Rodrigues L Rulapaugh
Cody Y Saylors
Salvatore F Saylors
Tony U Malet
Leja F Garufi
IdCountryDate
1000Russia2024-04-26
1001Brazil2024-04-02
1002Canada2024-04-11
1003Canada2024-04-21
1004Australia2024-04-23
1005India2024-04-17
1006France2024-04-22
1007Argentina2024-04-21
1008Italy2024-04-24
1009Argentina2024-04-24
1010India2024-04-18
1011Russia2024-04-14
1012India2024-04-15
1013Germany2024-04-01
1014Japan2024-04-18
1015India2024-04-11
1016Argentina2024-03-31
1017France2024-04-25
1018Italy2024-04-13
1019Italy2024-04-22
1020Brazil2024-04-27
1021France2024-04-15
1022Australia2024-04-08
1023Australia2024-04-03
1024France2024-03-30
1025Russia2024-04-15
1026Japan2024-04-18
1027Canada2024-03-29
1028Germany2024-04-22
1029Russia2024-04-12
1030Russia2024-04-12
1031Spain2024-04-11
1032France2024-04-21
1033Australia2024-04-01
1034Germany2024-04-20
1035Argentina2024-04-17
1036France2024-04-12
1037Brazil2024-04-21
1038Brazil2024-04-12
1039France2024-03-30
1040Russia2024-04-18
1041India2024-04-03
1042Argentina2024-04-17
1043India2024-04-26
1044Germany2024-04-20
1045Argentina2024-04-18
1046Spain2024-04-17
1047Brazil2024-04-21
1048Spain2024-04-26
1049Spain2024-04-09

On-Demand Data

NameIdCountryDate
Izzy U Maclead1000Argentina2024-04-07
Mujtaba P Rim1001United Kingdom2024-04-12
Maria C Doe1002Russia2024-03-30
Kaitlin W Maclead1003Russia2024-04-13
Stacey A Gaucho1004Spain2024-04-13
Isabel Y Whobrey1005Brazil2024-04-19
Maisha C Kolmetz1006India2024-04-11
James C Rim1007India2024-04-17
Izzy X Maclead1008Australia2024-04-08
Nicolas B Rulapaugh1009France2024-04-05
Jefferson M Wieser1010Australia2024-04-17
Maisha Y Campain1011Argentina2024-04-22
Smith R Schemmer1012Australia2024-04-04
Greenwood V Iturbide1013Spain2024-04-22
Stacey Q Wieser1014Brazil2024-04-18
Leon G Flosi1015Canada2024-03-31
Isabel C Nestle1016Italy2024-04-18
Emily E Malet1017United Kingdom2024-04-01
Salvatore Z Darakjy1018Japan2024-04-12
Emily F Waycott1019Argentina2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel R WieserFranceIvan Magalhaes RENEWAL
Isabel T IturbideJapanOnyama Limba RENEWAL
Aditya I FlosiGermanyAmy Elsner PROPOSAL
Leja A WhobreyJapanAmy Elsner QUALIFIED
Tony U RulapaughFranceXuxue Feng RENEWAL
Tony E PerinIndiaAmy Elsner RENEWAL
Chavez E DoeArgentinaAmy Elsner UNQUALIFIED
Misaki J AlbaresCanadaXuxue Feng RENEWAL
Johnson R DilliardRussiaAmy Elsner QUALIFIED
Izzy E KolmetzBrazilElwin Sharvill PROPOSAL
Ivar A VocelkaIndiaStephen Shaw UNQUALIFIED
Silvio M OldroydRussiaAsiya Javayant PROPOSAL
Claire K WhobreyGermanyIvan Magalhaes NEGOTIATION
Mujtaba O MaletRussiaOnyama Limba NEW
Adams G RimIndiaIvan Magalhaes RENEWAL
Leon O VenereArgentinaOnyama Limba QUALIFIED
Aika B RoysterArgentinaElwin Sharvill QUALIFIED
Juan B WaycottGermanyBernardo Dominic PROPOSAL
Darci J DoeIndiaElwin Sharvill NEW
Silvio V BriddickCanadaAnna Fali NEGOTIATION
Deepesh J SlusarskiItalyAsiya Javayant NEW
Johnson F DilliardRussiaBernardo Dominic NEGOTIATION
Juan X RulapaughItalyIvan Magalhaes RENEWAL
Isabel K BriddickArgentinaElwin Sharvill QUALIFIED
Octavia S AmigonRussiaAnna Fali NEGOTIATION
Juan W ButtIndiaElwin Sharvill PROPOSAL
Ivar J FigeroaGermanyOnyama Limba PROPOSAL
Julie K FigeroaBrazilElwin Sharvill PROPOSAL
Ricardo D DilliardItalyOnyama Limba NEGOTIATION
Francesco I DoeFranceAmy Elsner UNQUALIFIED
Ricardo W AmigonItalyBernardo Dominic NEGOTIATION
Alejandro I BriddickCanadaXuxue Feng NEGOTIATION
Maisha Y PerinCanadaBernardo Dominic NEGOTIATION
Johnson D TollnerCanadaIoni Bowcher NEW
Munro K SaylorsAustraliaAsiya Javayant NEW
Ricardo F WaycottFranceBernardo Dominic RENEWAL
Antonio M PaprockiFranceAnna Fali UNQUALIFIED
Jeanfrancois T FlosiJapanAmy Elsner UNQUALIFIED
Tony W PerinItalyAmy Elsner PROPOSAL
Nicolas Q MaletJapanOnyama Limba 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>