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
Izzy V SergiSpainIvan Magalhaes RENEWAL
Costa F ButtUnited KingdomOnyama Limba RENEWAL
Chavez K FigeroaArgentinaIoni Bowcher PROPOSAL
Smith Q TollnerAustraliaAnna Fali UNQUALIFIED
Mayumi F StensethSpainOnyama Limba NEGOTIATION
Costa V BowleySpainIvan Magalhaes PROPOSAL
Leon G OstroskyRussiaAnna Fali PROPOSAL
Alejandro O GarufiBrazilBernardo Dominic QUALIFIED
Jeanfrancois W RulapaughIndiaAmy Elsner UNQUALIFIED
Leon A RulapaughAustraliaBernardo Dominic NEW
Sinclair B BologniaGermanyOnyama Limba QUALIFIED
James J MacleadRussiaAnna Fali NEGOTIATION
Julie Y BologniaGermanyXuxue Feng NEW
Emily E PoquetteArgentinaIvan Magalhaes RENEWAL
Jeanfrancois C DoeJapanAsiya Javayant NEGOTIATION
Darci F SchemmerSpainIoni Bowcher UNQUALIFIED
Aditya B SergiCanadaIvan Magalhaes QUALIFIED
Aditya E TollnerFranceOnyama Limba NEGOTIATION
Juan V FigeroaJapanElwin Sharvill NEGOTIATION
Leja M BologniaSpainIvan Magalhaes RENEWAL
Darci W SaylorsIndiaBernardo Dominic QUALIFIED
Claire O MarrierBrazilElwin Sharvill PROPOSAL
Francesco M RoysterBrazilIvan Magalhaes PROPOSAL
Aruna B CampainJapanAnna Fali NEGOTIATION
Darci M MorascaAustraliaXuxue Feng PROPOSAL
Aditya M WaycottArgentinaXuxue Feng RENEWAL
Morrow J BologniaCanadaIoni Bowcher UNQUALIFIED
Aditya L FlosiUnited KingdomIoni Bowcher NEW
Jeanfrancois J GillianSpainAmy Elsner PROPOSAL
Francesco C AmigonSpainOnyama Limba UNQUALIFIED
Salvatore E FigeroaSpainIvan Magalhaes UNQUALIFIED
Silvio T ChuiUnited KingdomAnna Fali NEGOTIATION
Francesco N MacleadAustraliaAsiya Javayant QUALIFIED
Greenwood W DilliardSpainAmy Elsner NEGOTIATION
Darci O FollerItalyElwin Sharvill QUALIFIED
Alejandro W GlickArgentinaStephen Shaw PROPOSAL
Rodrigues C WieserGermanyIvan Magalhaes PROPOSAL
Claire B DilliardFranceIoni Bowcher NEW
Darci V GlickArgentinaBernardo Dominic NEGOTIATION
Octavia J FerenczJapanAmy Elsner UNQUALIFIED
Adams X PerinCanadaXuxue Feng UNQUALIFIED
Ashley M SergiRussiaAmy Elsner PROPOSAL
Darci W NickaFranceXuxue Feng QUALIFIED
Faith M KuskoUnited KingdomStephen Shaw UNQUALIFIED
Costa V RutaBrazilXuxue Feng NEW
Chavez E SlusarskiUnited KingdomStephen Shaw NEGOTIATION
Jones S GauchoGermanyAsiya Javayant RENEWAL
Kadeem I FerenczArgentinaOnyama Limba NEGOTIATION
Cody L RulapaughCanadaElwin Sharvill RENEWAL
Jones B NestleRussiaBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Maisha S BriddickSpainIvan Magalhaes UNQUALIFIED
Mayumi J FlosiAustraliaElwin Sharvill RENEWAL
Aika V NickaSpainIvan Magalhaes QUALIFIED
Octavia H WieserArgentinaIoni Bowcher RENEWAL
Nicolas V FerenczBrazilXuxue Feng NEGOTIATION
Murillo O VenereCanadaAmy Elsner NEW
Cody B StockhamUnited KingdomStephen Shaw QUALIFIED
Juan B AmigonRussiaStephen Shaw UNQUALIFIED
Costa R MaletItalyStephen Shaw NEGOTIATION
Smith M StockhamArgentinaStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones B KuskoSpain2024-04-18Feiner Bros QUALIFIED10Xuxue Feng
1001Kadeem T AlbaresUnited Kingdom2024-04-11King, Christopher A Esq PROPOSAL67Stephen Shaw
1002Francesco U ShinkoSpain2024-04-19Morlong Associates UNQUALIFIED13Onyama Limba
1003Misaki X GlickUnited Kingdom2024-04-17Buckley Miller Wright RENEWAL50Onyama Limba
1004Francesco O BowleyUnited Kingdom2024-03-23Chemel, James L Cpa NEW93Xuxue Feng
1005Sinclair B FlosiSpain2024-04-02Buckley Miller Wright UNQUALIFIED9Xuxue Feng
1006Silvio E CampainSpain2024-03-24Truhlar And Truhlar Attys QUALIFIED76Ioni Bowcher
1007Jeanfrancois M RulapaughCanada2024-03-25Chemel, James L Cpa UNQUALIFIED99Asiya Javayant
1008Nicolas A CaldareraCanada2024-04-17Chanay, Jeffrey A Esq NEGOTIATION87Amy Elsner
1009Chavez A DarakjyGermany2024-04-16Benton, John B Jr UNQUALIFIED29Anna Fali
1010Deepesh A MaletArgentina2024-04-18Chemel, James L Cpa RENEWAL68Asiya Javayant
1011Misaki X AmigonItaly2024-04-05Printing Dimensions NEGOTIATION11Asiya Javayant
1012Darci P OldroydArgentina2024-04-13Rangoni Of Florence NEW26Asiya Javayant
1013Ricardo S DarakjyGermany2024-04-03Benton, John B Jr PROPOSAL98Amy Elsner
1014Claire K MaletItaly2024-04-19Dorl, James J Esq NEGOTIATION51Ioni Bowcher
1015Ivar G RulapaughArgentina2024-04-14Chemel, James L Cpa UNQUALIFIED74Ivan Magalhaes
1016Darci P PaprockiIndia2024-04-05Chapman, Ross E Esq UNQUALIFIED38Ioni Bowcher
1017Claire X StockhamUnited Kingdom2024-04-03Feltz Printing Service PROPOSAL92Bernardo Dominic
1018Maisha B KolmetzUnited Kingdom2024-04-14King, Christopher A Esq NEGOTIATION31Bernardo Dominic
1019Aditya V MacleadBrazil2024-04-07Benton, John B Jr QUALIFIED52Asiya Javayant
1020Mujtaba P RutaRussia2024-04-10Printing Dimensions PROPOSAL3Ivan Magalhaes
1021Julie U VenereJapan2024-04-17Feiner Bros UNQUALIFIED1Ivan Magalhaes
1022Antonio V DoeFrance2024-04-03King, Christopher A Esq NEGOTIATION79Elwin Sharvill
1023Jennifer O FlosiGermany2024-04-06Truhlar And Truhlar Attys RENEWAL97Asiya Javayant
1024Aditya B PoquetteJapan2024-04-16Feiner Bros UNQUALIFIED12Anna Fali
1025Costa C RoysterIndia2024-04-19Feltz Printing Service UNQUALIFIED18Ioni Bowcher
1026Nicolas H GarufiItaly2024-04-11Truhlar And Truhlar Attys NEW83Onyama Limba
1027Aditya C SlusarskiRussia2024-04-07Feltz Printing Service UNQUALIFIED12Amy Elsner
1028Deepesh X FollerFrance2024-04-17Printing Dimensions RENEWAL35Xuxue Feng
1029Isabel N MarrierSpain2024-04-09Rangoni Of Florence QUALIFIED39Ivan Magalhaes
1030Jeanfrancois Y StockhamItaly2024-04-07Chemel, James L Cpa UNQUALIFIED84Onyama Limba
1031Misaki D RimRussia2024-03-24Rangoni Of Florence PROPOSAL91Bernardo Dominic
1032Chavez R WaycottFrance2024-03-28Chapman, Ross E Esq RENEWAL97Amy Elsner
1033Rodrigues B FollerUnited Kingdom2024-04-03Morlong Associates NEGOTIATION32Stephen Shaw
1034Aruna Y BriddickItaly2024-03-21Rousseaux, Michael Esq RENEWAL49Stephen Shaw
1035Juan B RulapaughBrazil2024-04-14Commercial Press UNQUALIFIED13Anna Fali
1036Darci Y FerenczGermany2024-03-25Chanay, Jeffrey A Esq NEGOTIATION53Asiya Javayant
1037Jeanfrancois M FollerBrazil2024-04-07Dorl, James J Esq NEGOTIATION93Asiya Javayant
1038Kaitlin Z VocelkaUnited Kingdom2024-04-11Printing Dimensions UNQUALIFIED49Ivan Magalhaes
1039Silvio R CaldareraUnited Kingdom2024-03-31Printing Dimensions NEW17Ioni Bowcher
1040Claire P VenereCanada2024-04-17Chanay, Jeffrey A Esq QUALIFIED96Bernardo Dominic
1041Aika G NestleUnited Kingdom2024-04-04Benton, John B Jr NEGOTIATION36Anna Fali
1042Isabel I DarakjyCanada2024-04-08King, Christopher A Esq UNQUALIFIED45Stephen Shaw
1043Ricardo R WaycottJapan2024-04-06Benton, John B Jr QUALIFIED61Elwin Sharvill
1044Antonio E MaletUnited Kingdom2024-04-11Printing Dimensions UNQUALIFIED16Ioni Bowcher
1045Smith C MaletArgentina2024-04-15Feltz Printing Service UNQUALIFIED57Bernardo Dominic
1046Rodrigues O SaylorsAustralia2024-03-30Feltz Printing Service NEGOTIATION63Onyama Limba
1047Alejandro J GillianArgentina2024-03-26Buckley Miller Wright NEGOTIATION11Asiya Javayant
1048Leja U KolmetzArgentina2024-03-25Rangoni Of Florence QUALIFIED50Ivan Magalhaes
1049Nicolas W TollnerCanada2024-03-25Chapman, Ross E Esq NEGOTIATION26Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Chavez X BowleyJapanIvan Magalhaes PROPOSAL
Mayumi F FigeroaItalyXuxue Feng RENEWAL
Misaki W OstroskyCanadaStephen Shaw NEGOTIATION
James P OstroskyIndiaAnna Fali NEW
Adams W MaletArgentinaOnyama Limba UNQUALIFIED
Juan P GillianItalyElwin Sharvill NEGOTIATION
Jones U RulapaughJapanBernardo Dominic UNQUALIFIED
David T NickaArgentinaAsiya Javayant NEW
Emily C GlickJapanOnyama Limba PROPOSAL
Aditya B TollnerItalyElwin Sharvill QUALIFIED
Ivar S NestleCanadaBernardo Dominic RENEWAL
Jeanfrancois U RulapaughItalyXuxue Feng NEGOTIATION
Aditya C DoeAustraliaIvan Magalhaes NEW
Octavia Q RoysterArgentinaOnyama Limba RENEWAL
Adams P BologniaGermanyBernardo Dominic NEW
Emily E RutaArgentinaAnna Fali NEW
Greenwood A BriddickIndiaXuxue Feng QUALIFIED
Nicolas M ChuiFranceIoni Bowcher PROPOSAL
Faith L DoeCanadaAmy Elsner QUALIFIED
Smith E RimIndiaAsiya Javayant RENEWAL
Mayumi C GarufiUnited KingdomElwin Sharvill PROPOSAL
Costa S AmigonIndiaBernardo Dominic UNQUALIFIED
Julie B AlbaresSpainElwin Sharvill NEGOTIATION
Smith K GarufiGermanyIvan Magalhaes NEGOTIATION
Nicolas N ChuiRussiaIoni Bowcher UNQUALIFIED
Kaitlin F AmigonGermanyIoni Bowcher PROPOSAL
Claire I WhobreyCanadaIoni Bowcher NEW
Emily R AlbaresArgentinaIoni Bowcher RENEWAL
James N SergiArgentinaBernardo Dominic NEW
Antonio I WaycottArgentinaAmy Elsner PROPOSAL
Maisha G OldroydSpainStephen Shaw UNQUALIFIED
Greenwood D AlbaresSpainStephen Shaw RENEWAL
Octavia Z KolmetzCanadaStephen Shaw QUALIFIED
Jeanfrancois A KuskoUnited KingdomStephen Shaw NEGOTIATION
Mayumi Q MaletSpainStephen Shaw PROPOSAL
Jeanfrancois A SlusarskiIndiaIvan Magalhaes RENEWAL
Francesco W DarakjyJapanAsiya Javayant PROPOSAL
Morrow Q VocelkaRussiaBernardo Dominic PROPOSAL
Nicolas A FollerIndiaAmy Elsner RENEWAL
Adams P DilliardBrazilAmy Elsner PROPOSAL
Maisha X RutaJapanIvan Magalhaes RENEWAL
Francesco T NestleBrazilAmy Elsner RENEWAL
Wickens J NestleUnited KingdomStephen Shaw UNQUALIFIED
Jones T WhobreyCanadaIvan Magalhaes QUALIFIED
Leon U DoeUnited KingdomStephen Shaw UNQUALIFIED
Stacey I CaudyArgentinaStephen Shaw NEGOTIATION
Julie O FlosiFranceAsiya Javayant NEW
Francesco H NestleUnited KingdomElwin Sharvill QUALIFIED
Jones P DoeIndiaOnyama Limba NEGOTIATION
Arvin R PerinFranceBernardo Dominic RENEWAL
Frozen Columns
Name
Nicolas U Caudy
David F Vocelka
Maisha Q Bowley
Murillo O Paprocki
Aika X Briddick
Kadeem J Doe
Emily Z Kolmetz
Kaitlin F Malet
Antonio V Dilliard
Aika I Caudy
Mujtaba K Stenseth
Antonio I Slusarski
Nicolas J Amigon
Alejandro V Nestle
Aruna Z Darakjy
Morrow E Rulapaugh
Rodrigues B Sergi
David W Poquette
Emily B Gillian
Ricardo X Briddick
Tony E Rulapaugh
Adams C Doe
Maisha J Albares
Adams J Butt
Alejandro R Stockham
Ivar P Ostrosky
Juan V Morasca
Rodrigues Y Flosi
Smith F Poquette
Ricardo T Venere
Juan A Maclead
Rodrigues J Malet
Emily W Maclead
Tony D Schemmer
Chavez I Chui
Mayumi U Glick
Salvatore E Ferencz
Smith B Ostrosky
Antonio C Perin
Jennifer S Ruta
Jones M Briddick
Ricardo X Rulapaugh
Chavez J Gillian
Leja W Iturbide
Faith K Rulapaugh
Emily L Sergi
Morrow S Kolmetz
Ivar G Amigon
Arvin F Gillian
Darci B Kusko
IdCountryDate
1000Italy2024-03-29
1001Argentina2024-04-03
1002Russia2024-04-03
1003United Kingdom2024-04-05
1004Russia2024-03-21
1005Japan2024-04-19
1006Canada2024-04-09
1007Italy2024-04-16
1008Japan2024-04-02
1009Canada2024-03-27
1010Japan2024-04-03
1011Canada2024-03-28
1012Brazil2024-04-02
1013United Kingdom2024-04-15
1014France2024-03-25
1015Argentina2024-04-16
1016Russia2024-04-01
1017Spain2024-04-06
1018Canada2024-04-10
1019India2024-04-05
1020Spain2024-03-28
1021India2024-04-09
1022Germany2024-03-27
1023Italy2024-03-30
1024France2024-04-15
1025United Kingdom2024-03-23
1026Japan2024-03-28
1027Spain2024-04-19
1028Russia2024-03-27
1029Argentina2024-03-28
1030France2024-04-08
1031Japan2024-04-18
1032United Kingdom2024-04-18
1033France2024-03-28
1034Russia2024-03-29
1035Russia2024-03-30
1036Spain2024-03-30
1037Brazil2024-04-18
1038Italy2024-03-30
1039France2024-04-07
1040France2024-04-11
1041Brazil2024-03-21
1042Brazil2024-04-09
1043United Kingdom2024-04-18
1044United Kingdom2024-04-01
1045India2024-04-08
1046Japan2024-04-05
1047India2024-03-27
1048Argentina2024-03-29
1049Canada2024-04-15

On-Demand Data

NameIdCountryDate
Misaki R Malet1000Italy2024-04-17
Leja C Wieser1001Japan2024-03-30
Morrow B Saylors1002India2024-03-28
Stacey F Marrier1003Germany2024-04-03
Octavia N Morasca1004Canada2024-03-26
Munro P Whobrey1005India2024-04-02
Francesco Z Wieser1006Australia2024-03-26
Salvatore L Nestle1007Brazil2024-04-18
Johnson K Schemmer1008Russia2024-03-27
Johnson L Amigon1009Brazil2024-04-01
Adams X Sergi1010Canada2024-04-09
James L Ruta1011Russia2024-03-22
Juan Q Ruta1012United Kingdom2024-04-04
Tony M Bowley1013Italy2024-04-12
Kadeem W Ruta1014Brazil2024-03-29
Kadeem K Bolognia1015Italy2024-04-05
Aditya E Flosi1016Brazil2024-04-06
Misaki T Rulapaugh1017Brazil2024-04-19
James J Slusarski1018Russia2024-04-07
Maria B Inouye1019Australia2024-03-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya O InouyeIndiaOnyama Limba NEW
Smith E MaletCanadaBernardo Dominic UNQUALIFIED
Alejandro L CaldareraCanadaIvan Magalhaes NEGOTIATION
Francesco V GlickGermanyElwin Sharvill PROPOSAL
Maisha B FlosiRussiaAmy Elsner NEGOTIATION
Ashley O ChuiIndiaOnyama Limba QUALIFIED
Salvatore Z PerinUnited KingdomElwin Sharvill PROPOSAL
Alejandro R MaletGermanyBernardo Dominic NEW
Maria M GlickFranceAnna Fali NEGOTIATION
Johnson G KuskoArgentinaAnna Fali NEW
Kaitlin D BowleyBrazilElwin Sharvill NEW
Faith L FerenczItalyIvan Magalhaes NEW
Alejandro P WieserAustraliaIoni Bowcher RENEWAL
Izzy E ChuiFranceBernardo Dominic NEGOTIATION
Murillo F FigeroaJapanOnyama Limba QUALIFIED
David T KuskoAustraliaElwin Sharvill UNQUALIFIED
Aruna A KuskoSpainElwin Sharvill UNQUALIFIED
Wickens U CampainArgentinaAsiya Javayant UNQUALIFIED
Stacey D DarakjyItalyElwin Sharvill PROPOSAL
Alejandro B GauchoAustraliaElwin Sharvill NEGOTIATION
Misaki V GauchoGermanyAnna Fali RENEWAL
Emily S MorascaRussiaBernardo Dominic QUALIFIED
Silvio D GlickSpainElwin Sharvill RENEWAL
Mujtaba T GlickItalyAsiya Javayant RENEWAL
Juan N DoeIndiaElwin Sharvill UNQUALIFIED
Claire W BowleyBrazilOnyama Limba UNQUALIFIED
Costa S WaycottItalyIvan Magalhaes QUALIFIED
Jefferson V OstroskyAustraliaIvan Magalhaes PROPOSAL
James J GauchoGermanyAsiya Javayant UNQUALIFIED
Greenwood C MaletJapanStephen Shaw NEW
Tony W WieserArgentinaXuxue Feng NEW
Isabel R GarufiCanadaOnyama Limba RENEWAL
Faith S PerinBrazilXuxue Feng QUALIFIED
Leja T CampainArgentinaStephen Shaw QUALIFIED
Jeanfrancois X MorascaBrazilAsiya Javayant NEW
Mayumi N IturbideItalyStephen Shaw PROPOSAL
Misaki X ButtIndiaAmy Elsner NEW
Aditya A MaletArgentinaOnyama Limba PROPOSAL
Nicolas O GlickUnited KingdomElwin Sharvill RENEWAL
Rodrigues R AmigonJapanOnyama Limba NEW

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