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
Octavia N PoquetteUnited KingdomAmy Elsner RENEWAL
Darci K DarakjyRussiaXuxue Feng NEGOTIATION
Darci E BriddickItalyElwin Sharvill RENEWAL
Aruna R GlickIndiaXuxue Feng RENEWAL
Mujtaba N WieserUnited KingdomAmy Elsner QUALIFIED
Jennifer T SaylorsIndiaXuxue Feng UNQUALIFIED
Clifford B MaletCanadaElwin Sharvill UNQUALIFIED
Sinclair H BowleyUnited KingdomAsiya Javayant PROPOSAL
Kaitlin O ChuiBrazilIvan Magalhaes RENEWAL
Johnson A OldroydUnited KingdomBernardo Dominic QUALIFIED
Stacey U StensethBrazilOnyama Limba QUALIFIED
Ricardo K PerinAustraliaBernardo Dominic NEW
Johnson C SaylorsArgentinaIoni Bowcher NEW
Darci B IturbideSpainStephen Shaw RENEWAL
Nicolas H AmigonArgentinaElwin Sharvill QUALIFIED
Aditya T CaldareraAustraliaStephen Shaw PROPOSAL
Adams B CaudyFranceBernardo Dominic NEW
Kadeem K SlusarskiUnited KingdomStephen Shaw UNQUALIFIED
Adams L FerenczItalyElwin Sharvill NEW
Stacey P SaylorsRussiaXuxue Feng NEW
Octavia Y RulapaughCanadaAmy Elsner PROPOSAL
Leja V ShinkoIndiaIoni Bowcher UNQUALIFIED
Arvin V WieserFranceIoni Bowcher UNQUALIFIED
Jennifer J CaldareraAustraliaIoni Bowcher PROPOSAL
Murillo C AmigonBrazilIvan Magalhaes UNQUALIFIED
Chavez U SaylorsItalyBernardo Dominic PROPOSAL
Jennifer J OstroskyBrazilBernardo Dominic NEW
Adams J AmigonJapanIvan Magalhaes NEGOTIATION
Juan D KolmetzItalyStephen Shaw PROPOSAL
Chavez F SergiFranceBernardo Dominic NEGOTIATION
Maria B ChuiArgentinaOnyama Limba RENEWAL
Ivar A DarakjyRussiaIoni Bowcher NEGOTIATION
Adams V TollnerUnited KingdomElwin Sharvill PROPOSAL
David N InouyeItalyAsiya Javayant NEW
Costa V StockhamUnited KingdomIvan Magalhaes NEW
Rodrigues Y FollerCanadaAnna Fali UNQUALIFIED
Faith G KolmetzUnited KingdomXuxue Feng QUALIFIED
Silvio S SchemmerGermanyXuxue Feng NEW
Greenwood P SaylorsJapanBernardo Dominic UNQUALIFIED
Francesco V StockhamJapanIvan Magalhaes QUALIFIED
Johnson U StensethBrazilElwin Sharvill UNQUALIFIED
Darci U IturbideGermanyBernardo Dominic QUALIFIED
Stacey V BriddickCanadaAnna Fali PROPOSAL
Wickens X MorascaJapanStephen Shaw NEW
Salvatore R SergiUnited KingdomElwin Sharvill QUALIFIED
Mujtaba Q AmigonItalyAnna Fali PROPOSAL
Faith T CaldareraBrazilAmy Elsner NEGOTIATION
David C RimBrazilAnna Fali QUALIFIED
Misaki N DarakjyJapanStephen Shaw UNQUALIFIED
Jennifer M GlickRussiaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Costa M DarakjyCanadaIvan Magalhaes UNQUALIFIED
Greenwood L FollerArgentinaBernardo Dominic RENEWAL
Jeanfrancois J StensethJapanAnna Fali QUALIFIED
Mayumi C MacleadItalyXuxue Feng UNQUALIFIED
Chavez X WhobreyIndiaXuxue Feng NEW
Morrow H BowleyFranceOnyama Limba PROPOSAL
James X MorascaBrazilElwin Sharvill RENEWAL
David C ShinkoItalyAnna Fali NEGOTIATION
Ivar R OldroydJapanIoni Bowcher NEW
Tony L WieserUnited KingdomOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens H StensethIndia2024-05-14Dorl, James J Esq NEW57Ivan Magalhaes
1001Adams L DilliardSpain2024-04-23Buckley Miller Wright PROPOSAL21Elwin Sharvill
1002Stacey W WhobreyAustralia2024-04-28Printing Dimensions RENEWAL27Ivan Magalhaes
1003Arvin C KolmetzSpain2024-05-17Rousseaux, Michael Esq RENEWAL69Amy Elsner
1004Aditya J PoquetteIndia2024-05-07Feiner Bros NEGOTIATION47Bernardo Dominic
1005Kaitlin A NestleAustralia2024-05-08Rangoni Of Florence PROPOSAL4Onyama Limba
1006Kaitlin C GauchoCanada2024-05-07Truhlar And Truhlar Attys NEGOTIATION0Elwin Sharvill
1007Aika E NestleArgentina2024-05-06Chanay, Jeffrey A Esq PROPOSAL25Stephen Shaw
1008Darci A SchemmerRussia2024-04-29Buckley Miller Wright RENEWAL47Anna Fali
1009Faith Z FigeroaCanada2024-05-14Feltz Printing Service NEGOTIATION98Asiya Javayant
1010Maisha W GlickIndia2024-05-08Truhlar And Truhlar Attys RENEWAL13Xuxue Feng
1011David P MarrierJapan2024-04-28Feltz Printing Service PROPOSAL64Anna Fali
1012Octavia K MacleadAustralia2024-05-09Buckley Miller Wright PROPOSAL18Stephen Shaw
1013Rodrigues J PoquetteArgentina2024-04-22Printing Dimensions NEGOTIATION30Xuxue Feng
1014Emily X PoquetteRussia2024-05-17Dorl, James J Esq RENEWAL30Xuxue Feng
1015Julie J StensethAustralia2024-05-13Morlong Associates UNQUALIFIED24Xuxue Feng
1016Rodrigues W PaprockiIndia2024-05-14Chanay, Jeffrey A Esq QUALIFIED32Xuxue Feng
1017Jones V GarufiItaly2024-05-07Rousseaux, Michael Esq UNQUALIFIED34Ivan Magalhaes
1018Mayumi U CaudyItaly2024-05-12Truhlar And Truhlar Attys QUALIFIED10Asiya Javayant
1019Francesco J VocelkaJapan2024-05-01King, Christopher A Esq NEW74Bernardo Dominic
1020Costa N NestleJapan2024-04-23Feltz Printing Service NEGOTIATION73Ioni Bowcher
1021Aruna V DilliardCanada2024-04-24Buckley Miller Wright UNQUALIFIED30Ioni Bowcher
1022Antonio F SlusarskiArgentina2024-05-09Benton, John B Jr UNQUALIFIED45Bernardo Dominic
1023Kadeem H KuskoAustralia2024-05-07Rousseaux, Michael Esq PROPOSAL89Ioni Bowcher
1024Clifford O WaycottIndia2024-05-20Feiner Bros NEW19Elwin Sharvill
1025Nicolas J SlusarskiBrazil2024-05-19Morlong Associates RENEWAL97Ioni Bowcher
1026Jefferson Q FollerGermany2024-04-30Buckley Miller Wright UNQUALIFIED51Elwin Sharvill
1027Kadeem Z CaudyUnited Kingdom2024-04-28Chanay, Jeffrey A Esq QUALIFIED74Onyama Limba
1028David E DoeArgentina2024-05-02Chanay, Jeffrey A Esq NEGOTIATION16Xuxue Feng
1029Morrow O WaycottIndia2024-05-14King, Christopher A Esq NEGOTIATION8Bernardo Dominic
1030Leon G AmigonBrazil2024-05-05Rousseaux, Michael Esq UNQUALIFIED80Anna Fali
1031Isabel B ShinkoBrazil2024-05-18Chanay, Jeffrey A Esq NEW47Xuxue Feng
1032Tony U CaudyBrazil2024-05-07Morlong Associates NEGOTIATION63Ivan Magalhaes
1033Murillo N RoysterArgentina2024-04-25Feltz Printing Service RENEWAL80Xuxue Feng
1034Leja B AlbaresFrance2024-05-09Buckley Miller Wright PROPOSAL30Ivan Magalhaes
1035Aditya W DilliardBrazil2024-05-06Rangoni Of Florence UNQUALIFIED39Bernardo Dominic
1036Ricardo Z GarufiAustralia2024-05-12Rangoni Of Florence QUALIFIED25Stephen Shaw
1037Misaki G AlbaresGermany2024-05-18Chemel, James L Cpa RENEWAL6Anna Fali
1038Kadeem U SaylorsSpain2024-04-28Dorl, James J Esq QUALIFIED62Bernardo Dominic
1039Kadeem O GarufiCanada2024-05-02Dorl, James J Esq PROPOSAL84Asiya Javayant
1040Ricardo O GauchoJapan2024-04-23Chapman, Ross E Esq RENEWAL33Elwin Sharvill
1041Maisha I WhobreyUnited Kingdom2024-05-01Chanay, Jeffrey A Esq PROPOSAL7Onyama Limba
1042Izzy V SlusarskiItaly2024-05-02Chemel, James L Cpa PROPOSAL97Ivan Magalhaes
1043James L WhobreySpain2024-04-25Chemel, James L Cpa NEW56Ivan Magalhaes
1044Claire J MaletFrance2024-05-19Dorl, James J Esq UNQUALIFIED82Stephen Shaw
1045Deepesh J FerenczFrance2024-05-15Chapman, Ross E Esq PROPOSAL10Ioni Bowcher
1046Darci O PerinRussia2024-05-09Benton, John B Jr PROPOSAL84Xuxue Feng
1047Wickens I NestleBrazil2024-05-18Printing Dimensions QUALIFIED7Stephen Shaw
1048Wickens B IturbideJapan2024-05-04Rousseaux, Michael Esq QUALIFIED39Amy Elsner
1049Francesco X StockhamIndia2024-04-30Rangoni Of Florence PROPOSAL86Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Ashley I OldroydCanadaAsiya Javayant NEGOTIATION
Francesco P StensethIndiaXuxue Feng PROPOSAL
Jefferson J SchemmerGermanyXuxue Feng PROPOSAL
Tony L DilliardIndiaBernardo Dominic RENEWAL
Costa C BriddickSpainOnyama Limba QUALIFIED
David X CaudySpainElwin Sharvill RENEWAL
Aika M DarakjyCanadaBernardo Dominic NEGOTIATION
Sinclair R IturbideIndiaOnyama Limba UNQUALIFIED
Jeanfrancois V OstroskyBrazilIvan Magalhaes RENEWAL
Darci S NestleArgentinaIvan Magalhaes NEW
Morrow E FigeroaBrazilElwin Sharvill NEGOTIATION
Kaitlin A MaletFranceAsiya Javayant PROPOSAL
Jones K BowleyGermanyAnna Fali PROPOSAL
Emily N StockhamGermanyAnna Fali PROPOSAL
Ricardo W WieserIndiaAsiya Javayant NEGOTIATION
Emily S SlusarskiItalyAnna Fali UNQUALIFIED
Mujtaba I KuskoBrazilIvan Magalhaes RENEWAL
Aika P BriddickIndiaBernardo Dominic PROPOSAL
Kaitlin I AlbaresBrazilElwin Sharvill NEW
Misaki W FerenczSpainXuxue Feng NEW
Munro Z MorascaCanadaBernardo Dominic RENEWAL
Kaitlin L TollnerGermanyIoni Bowcher UNQUALIFIED
Darci N ChuiSpainAmy Elsner NEW
Jefferson O StensethUnited KingdomXuxue Feng QUALIFIED
Chavez Z AmigonJapanElwin Sharvill NEW
Deepesh Q GarufiRussiaElwin Sharvill UNQUALIFIED
Tony M MarrierJapanElwin Sharvill QUALIFIED
Costa Y InouyeIndiaAnna Fali NEW
Greenwood C RoysterCanadaBernardo Dominic UNQUALIFIED
Sinclair R GarufiRussiaOnyama Limba RENEWAL
Smith Z MarrierAustraliaAmy Elsner RENEWAL
Murillo K NickaRussiaAmy Elsner PROPOSAL
Antonio V KuskoAustraliaBernardo Dominic UNQUALIFIED
Claire Y MaletBrazilOnyama Limba NEGOTIATION
Jones L BowleyIndiaAnna Fali UNQUALIFIED
Ashley D NestleGermanyIvan Magalhaes UNQUALIFIED
Maisha L InouyeUnited KingdomBernardo Dominic RENEWAL
Adams R VenereArgentinaOnyama Limba NEW
Jeanfrancois A BologniaRussiaStephen Shaw QUALIFIED
Adams V GarufiRussiaAsiya Javayant PROPOSAL
Juan Q IturbideIndiaXuxue Feng NEW
Leon D AmigonItalyXuxue Feng UNQUALIFIED
Maisha P RoysterGermanyIvan Magalhaes NEGOTIATION
Aruna E KolmetzCanadaElwin Sharvill RENEWAL
Wickens V BowleyArgentinaXuxue Feng QUALIFIED
Kadeem F PerinItalyElwin Sharvill UNQUALIFIED
Ivar Z KolmetzArgentinaIoni Bowcher NEW
David C WaycottArgentinaStephen Shaw QUALIFIED
Murillo S CaudyItalyAnna Fali PROPOSAL
David A StockhamJapanElwin Sharvill NEGOTIATION
Frozen Columns
Name
Ivar P Schemmer
Rodrigues X Whobrey
Alejandro R Flosi
Antonio Y Gaucho
Costa S Rim
Rodrigues P Maclead
Ricardo S Schemmer
Clifford L Marrier
Adams L Venere
Leon E Garufi
Maria G Saylors
Claire J Nestle
Aika E Albares
Ricardo J Slusarski
Clifford F Stenseth
Alejandro U Schemmer
Darci D Shinko
Aruna J Caldarera
Johnson N Perin
Claire H Albares
Chavez B Wieser
Juan V Bolognia
Darci L Chui
Murillo X Ruta
Sinclair E Doe
Murillo E Maclead
Leja J Marrier
Salvatore Q Gillian
Munro L Caldarera
Jefferson J Ruta
Jefferson G Poquette
Wickens Q Malet
Misaki C Briddick
Jeanfrancois E Gillian
Leja Y Ruta
Ivar X Doe
Chavez O Glick
Morrow B Whobrey
Ivar T Gaucho
Kaitlin V Caudy
Leja G Butt
Stacey D Rim
Arvin Z Stockham
Emily J Morasca
Deepesh V Tollner
Tony M Royster
Stacey B Kusko
Cody R Bolognia
Aika B Doe
Aika M Venere
IdCountryDate
1000Brazil2024-05-12
1001Brazil2024-04-26
1002United Kingdom2024-05-09
1003Spain2024-04-25
1004Argentina2024-04-22
1005France2024-05-21
1006Brazil2024-04-27
1007United Kingdom2024-04-25
1008United Kingdom2024-05-04
1009Brazil2024-05-11
1010United Kingdom2024-05-21
1011France2024-04-27
1012Argentina2024-05-01
1013Russia2024-05-02
1014Brazil2024-05-18
1015Argentina2024-04-24
1016United Kingdom2024-05-10
1017Russia2024-05-03
1018Japan2024-05-07
1019France2024-04-23
1020Australia2024-05-21
1021Japan2024-05-02
1022France2024-04-24
1023Japan2024-05-05
1024Argentina2024-04-23
1025Japan2024-05-13
1026Italy2024-05-04
1027Italy2024-04-27
1028Japan2024-05-21
1029Australia2024-05-02
1030Italy2024-04-27
1031Japan2024-04-24
1032Italy2024-04-27
1033Italy2024-04-26
1034Spain2024-05-08
1035Japan2024-04-30
1036India2024-05-03
1037Japan2024-05-05
1038Canada2024-05-16
1039Argentina2024-04-23
1040Spain2024-05-21
1041France2024-04-24
1042India2024-05-09
1043Italy2024-05-09
1044Germany2024-04-25
1045Canada2024-05-20
1046Germany2024-05-13
1047Australia2024-05-14
1048Germany2024-04-25
1049Argentina2024-05-08

On-Demand Data

NameIdCountryDate
Nicolas L Darakjy1000Spain2024-05-20
Leon W Rulapaugh1001India2024-05-15
Rodrigues N Gillian1002Germany2024-05-17
Mujtaba U Marrier1003Italy2024-05-08
Francesco I Saylors1004Brazil2024-05-02
Wickens P Bowley1005France2024-05-12
Smith A Glick1006Russia2024-04-26
Mayumi C Whobrey1007Canada2024-04-23
Cody H Wieser1008Australia2024-05-13
Octavia E Briddick1009Australia2024-04-30
Ivar C Caudy1010Italy2024-04-22
Kadeem G Maclead1011Spain2024-04-26
Sinclair R Bolognia1012Canada2024-04-30
Maria S Glick1013Japan2024-05-07
Ashley K Whobrey1014Argentina2024-05-06
Mayumi N Nicka1015Argentina2024-05-21
Jones S Bolognia1016France2024-05-21
Ivar R Sergi1017Germany2024-05-20
Arvin O Amigon1018Russia2024-05-01
Leon Z Sergi1019India2024-05-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues X MacleadFranceOnyama Limba PROPOSAL
Aditya E GauchoJapanXuxue Feng PROPOSAL
Deepesh K BologniaGermanyIvan Magalhaes NEW
Faith U SergiItalyXuxue Feng NEGOTIATION
James V SergiRussiaIvan Magalhaes NEGOTIATION
Isabel C KolmetzGermanyIoni Bowcher PROPOSAL
Adams P PaprockiCanadaAmy Elsner NEW
Adams V RimGermanyAmy Elsner NEW
Costa A DarakjyRussiaAmy Elsner PROPOSAL
Morrow X WaycottRussiaAmy Elsner UNQUALIFIED
Mayumi Z MacleadArgentinaBernardo Dominic UNQUALIFIED
Ivar J PoquetteJapanStephen Shaw QUALIFIED
Greenwood Q NestleJapanBernardo Dominic NEGOTIATION
Maria I NestleCanadaAnna Fali PROPOSAL
Julie I CampainArgentinaElwin Sharvill NEGOTIATION
Greenwood R GarufiBrazilElwin Sharvill NEGOTIATION
Mujtaba E FlosiJapanAnna Fali QUALIFIED
Jefferson M RulapaughAustraliaXuxue Feng QUALIFIED
Morrow Q MaletSpainIoni Bowcher PROPOSAL
Misaki X VocelkaJapanAnna Fali RENEWAL
Kaitlin J BowleyRussiaElwin Sharvill UNQUALIFIED
Chavez Q KuskoIndiaAnna Fali PROPOSAL
Jones K NestleRussiaXuxue Feng UNQUALIFIED
Deepesh G WhobreyBrazilBernardo Dominic UNQUALIFIED
Johnson V StensethArgentinaBernardo Dominic RENEWAL
Wickens Z GauchoBrazilXuxue Feng UNQUALIFIED
Maisha X DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Smith C GauchoUnited KingdomBernardo Dominic QUALIFIED
Claire D KolmetzGermanyStephen Shaw RENEWAL
Chavez O SchemmerAustraliaIvan Magalhaes NEW
Jennifer X NestleRussiaIvan Magalhaes UNQUALIFIED
Kadeem F KuskoCanadaBernardo Dominic UNQUALIFIED
Alejandro O DilliardBrazilIvan Magalhaes UNQUALIFIED
Jones K FlosiBrazilBernardo Dominic QUALIFIED
Nicolas S InouyeCanadaIoni Bowcher NEGOTIATION
Aruna P NickaArgentinaXuxue Feng QUALIFIED
Rodrigues V RutaItalyElwin Sharvill UNQUALIFIED
Aruna P GauchoItalyAnna Fali NEGOTIATION
Juan K WieserBrazilAsiya Javayant RENEWAL
Isabel O AlbaresGermanyOnyama 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>