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
Aruna K RulapaughAustraliaIoni Bowcher RENEWAL
Greenwood Q MarrierGermanyIvan Magalhaes RENEWAL
Maria T WhobreyArgentinaAsiya Javayant RENEWAL
Isabel Y KuskoArgentinaStephen Shaw QUALIFIED
Arvin S SchemmerRussiaIvan Magalhaes PROPOSAL
Ricardo Q MaletArgentinaIoni Bowcher NEGOTIATION
Ivar H FollerBrazilIoni Bowcher NEW
Sinclair B OldroydFranceBernardo Dominic QUALIFIED
David D RoysterCanadaAsiya Javayant NEW
Maria H SergiBrazilAnna Fali UNQUALIFIED
Izzy H WhobreyAustraliaIoni Bowcher NEGOTIATION
Murillo W BologniaArgentinaIoni Bowcher UNQUALIFIED
Aditya V IturbideGermanyStephen Shaw NEGOTIATION
Clifford L AmigonIndiaIoni Bowcher NEW
Misaki X MacleadJapanElwin Sharvill RENEWAL
Jennifer K BologniaBrazilAsiya Javayant QUALIFIED
Stacey X WhobreyItalyElwin Sharvill RENEWAL
David G MaletCanadaXuxue Feng RENEWAL
Octavia J SergiJapanAmy Elsner PROPOSAL
Jennifer R WhobreyAustraliaAnna Fali UNQUALIFIED
Faith A StensethCanadaIvan Magalhaes RENEWAL
Ivar I RutaAustraliaBernardo Dominic UNQUALIFIED
Nicolas W MorascaUnited KingdomOnyama Limba RENEWAL
Alejandro Z ShinkoBrazilAmy Elsner NEGOTIATION
Adams D RutaUnited KingdomStephen Shaw NEGOTIATION
Munro S RoysterRussiaElwin Sharvill RENEWAL
Stacey A SaylorsUnited KingdomIoni Bowcher PROPOSAL
Aditya Q StockhamFranceIoni Bowcher NEW
Isabel Y WhobreyCanadaIvan Magalhaes PROPOSAL
Julie L FollerSpainBernardo Dominic PROPOSAL
Greenwood I NickaCanadaAmy Elsner PROPOSAL
Rodrigues L WaycottArgentinaAnna Fali PROPOSAL
Kaitlin U CaldareraGermanyAsiya Javayant PROPOSAL
Faith Z DarakjyAustraliaBernardo Dominic PROPOSAL
Mujtaba L FerenczGermanyXuxue Feng UNQUALIFIED
Faith N InouyeSpainStephen Shaw UNQUALIFIED
Johnson M TollnerBrazilBernardo Dominic UNQUALIFIED
David B MaletFranceBernardo Dominic PROPOSAL
Morrow L PerinCanadaIoni Bowcher UNQUALIFIED
Chavez J PoquetteArgentinaBernardo Dominic NEW
Kadeem Z SergiUnited KingdomStephen Shaw RENEWAL
Izzy J DoeJapanAmy Elsner QUALIFIED
Darci A KuskoFranceIvan Magalhaes QUALIFIED
Julie R BriddickRussiaStephen Shaw RENEWAL
Greenwood M SchemmerItalyAnna Fali UNQUALIFIED
Octavia N PerinBrazilBernardo Dominic NEGOTIATION
Kaitlin O SergiCanadaAsiya Javayant PROPOSAL
Clifford X GillianAustraliaStephen Shaw NEGOTIATION
Juan G FerenczAustraliaAnna Fali NEGOTIATION
Darci E NestleCanadaStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro W AmigonRussiaOnyama Limba QUALIFIED
Aruna T NestleAustraliaXuxue Feng UNQUALIFIED
Jeanfrancois S StockhamFranceOnyama Limba RENEWAL
Maria U NestleSpainIoni Bowcher NEGOTIATION
Jones R MacleadFranceIoni Bowcher NEW
Stacey W CampainIndiaXuxue Feng PROPOSAL
Salvatore T WieserGermanyOnyama Limba QUALIFIED
Greenwood T DarakjyUnited KingdomAsiya Javayant UNQUALIFIED
Arvin V CaudyCanadaElwin Sharvill PROPOSAL
Stacey C KolmetzItalyAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco G BriddickAustralia2024-04-05Feltz Printing Service QUALIFIED33Ivan Magalhaes
1001Kaitlin B FlosiFrance2024-03-25Rousseaux, Michael Esq PROPOSAL1Amy Elsner
1002Octavia X RimSpain2024-04-10Rousseaux, Michael Esq NEGOTIATION4Asiya Javayant
1003Faith L FlosiRussia2024-04-13Rousseaux, Michael Esq QUALIFIED0Amy Elsner
1004Costa V StensethUnited Kingdom2024-04-11King, Christopher A Esq PROPOSAL18Ioni Bowcher
1005Johnson F RimRussia2024-03-23Chapman, Ross E Esq NEGOTIATION7Amy Elsner
1006Salvatore Y SchemmerItaly2024-04-14Feiner Bros UNQUALIFIED95Amy Elsner
1007Kaitlin X FollerUnited Kingdom2024-04-16King, Christopher A Esq RENEWAL61Ivan Magalhaes
1008Juan G ShinkoGermany2024-04-06King, Christopher A Esq PROPOSAL7Ivan Magalhaes
1009Ashley M FollerCanada2024-04-09Buckley Miller Wright RENEWAL71Ivan Magalhaes
1010Rodrigues R OldroydArgentina2024-04-14Feiner Bros NEGOTIATION53Elwin Sharvill
1011Morrow L PaprockiSpain2024-03-26Chemel, James L Cpa QUALIFIED33Onyama Limba
1012Maria U StockhamRussia2024-04-16Commercial Press NEGOTIATION85Amy Elsner
1013Wickens K FerenczCanada2024-03-23Benton, John B Jr RENEWAL91Amy Elsner
1014Munro Q CaldareraGermany2024-03-31Chanay, Jeffrey A Esq UNQUALIFIED41Anna Fali
1015Smith Y RulapaughJapan2024-04-13Chapman, Ross E Esq QUALIFIED32Amy Elsner
1016Nicolas S CampainSpain2024-03-22Morlong Associates PROPOSAL83Amy Elsner
1017Claire Y RulapaughJapan2024-04-07Commercial Press UNQUALIFIED82Onyama Limba
1018Claire Y KuskoRussia2024-03-28Dorl, James J Esq QUALIFIED23Amy Elsner
1019Smith O VenereFrance2024-04-13Dorl, James J Esq UNQUALIFIED71Stephen Shaw
1020Kaitlin T FlosiCanada2024-03-25Truhlar And Truhlar Attys NEGOTIATION96Amy Elsner
1021Jones A WieserUnited Kingdom2024-03-31Truhlar And Truhlar Attys QUALIFIED7Xuxue Feng
1022Costa C IturbideSpain2024-04-18Rousseaux, Michael Esq PROPOSAL56Asiya Javayant
1023Jefferson W RutaJapan2024-03-31Dorl, James J Esq UNQUALIFIED26Ivan Magalhaes
1024Jones I FigeroaRussia2024-03-21Feltz Printing Service QUALIFIED81Ioni Bowcher
1025Morrow J KuskoArgentina2024-04-08Benton, John B Jr NEGOTIATION82Elwin Sharvill
1026Leon S RulapaughBrazil2024-03-29Chemel, James L Cpa RENEWAL99Elwin Sharvill
1027Morrow Q ButtJapan2024-03-30Rousseaux, Michael Esq QUALIFIED44Anna Fali
1028Clifford R BologniaGermany2024-03-25Rousseaux, Michael Esq UNQUALIFIED72Asiya Javayant
1029Juan V SaylorsGermany2024-04-07King, Christopher A Esq QUALIFIED37Bernardo Dominic
1030Aruna M KuskoRussia2024-04-05Chemel, James L Cpa RENEWAL75Xuxue Feng
1031Emily L RimIndia2024-03-24Truhlar And Truhlar Attys NEW69Bernardo Dominic
1032Alejandro O AmigonFrance2024-03-21Printing Dimensions RENEWAL58Bernardo Dominic
1033Johnson F SchemmerItaly2024-03-24Truhlar And Truhlar Attys RENEWAL63Elwin Sharvill
1034Jones K BowleyBrazil2024-03-28Truhlar And Truhlar Attys RENEWAL79Xuxue Feng
1035Jeanfrancois Q GauchoSpain2024-03-20Feltz Printing Service NEW92Ioni Bowcher
1036Greenwood N CaldareraJapan2024-04-12Chemel, James L Cpa PROPOSAL98Stephen Shaw
1037Arvin J NickaArgentina2024-04-04Truhlar And Truhlar Attys RENEWAL2Ioni Bowcher
1038Johnson P AmigonGermany2024-04-03Rangoni Of Florence NEGOTIATION30Ivan Magalhaes
1039Tony V NestleArgentina2024-04-07King, Christopher A Esq RENEWAL73Ivan Magalhaes
1040Cody V FigeroaAustralia2024-03-26Dorl, James J Esq NEW41Amy Elsner
1041Jones L CaldareraItaly2024-04-03Dorl, James J Esq NEW65Stephen Shaw
1042Stacey Z GlickBrazil2024-04-02Rangoni Of Florence RENEWAL75Asiya Javayant
1043James B WhobreySpain2024-04-15Rousseaux, Michael Esq NEGOTIATION35Stephen Shaw
1044Costa V AlbaresGermany2024-03-26Feiner Bros PROPOSAL98Asiya Javayant
1045Greenwood C PaprockiUnited Kingdom2024-04-09King, Christopher A Esq RENEWAL44Stephen Shaw
1046Aika F DilliardItaly2024-03-30Feltz Printing Service NEW25Stephen Shaw
1047Smith Q MaletArgentina2024-04-16Feltz Printing Service NEGOTIATION54Stephen Shaw
1048Maisha G CampainIndia2024-04-03Buckley Miller Wright RENEWAL89Bernardo Dominic
1049Rodrigues J RutaArgentina2024-04-02Chanay, Jeffrey A Esq NEGOTIATION57Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba D DilliardRussiaAnna Fali RENEWAL
Mayumi M FollerUnited KingdomBernardo Dominic QUALIFIED
Johnson Q WaycottSpainStephen Shaw UNQUALIFIED
Murillo S StockhamBrazilBernardo Dominic NEGOTIATION
Wickens J StockhamAustraliaAnna Fali NEGOTIATION
Clifford J CaudyFranceElwin Sharvill RENEWAL
Silvio L BologniaArgentinaIvan Magalhaes RENEWAL
Jefferson D BowleyBrazilAnna Fali NEW
Julie C TollnerGermanyXuxue Feng RENEWAL
Smith R DoeArgentinaAnna Fali QUALIFIED
Jennifer E MaletAustraliaIoni Bowcher QUALIFIED
Kaitlin C FlosiFranceAnna Fali PROPOSAL
Sinclair L CaldareraJapanIoni Bowcher RENEWAL
Jennifer P MacleadCanadaAsiya Javayant UNQUALIFIED
Leja C FlosiGermanyIoni Bowcher NEW
Wickens M VocelkaItalyAsiya Javayant QUALIFIED
Wickens Y IturbideArgentinaStephen Shaw PROPOSAL
Faith Z SergiArgentinaAmy Elsner NEW
Silvio T FollerAustraliaAmy Elsner PROPOSAL
Jones T GillianJapanOnyama Limba NEW
Octavia R AmigonRussiaAmy Elsner PROPOSAL
Salvatore X DoeUnited KingdomStephen Shaw NEGOTIATION
Johnson H SlusarskiBrazilStephen Shaw PROPOSAL
Jennifer A AmigonIndiaAmy Elsner NEGOTIATION
Mayumi W PaprockiUnited KingdomAnna Fali RENEWAL
Mayumi H PoquetteCanadaAnna Fali UNQUALIFIED
Adams B FerenczIndiaIvan Magalhaes RENEWAL
Ashley I ButtRussiaAsiya Javayant UNQUALIFIED
Izzy L GlickSpainAsiya Javayant RENEWAL
Smith V MacleadRussiaElwin Sharvill NEW
Ivar O PoquetteCanadaAsiya Javayant NEW
Maria M RutaIndiaAmy Elsner NEW
James O IturbideIndiaElwin Sharvill UNQUALIFIED
Emily Z StockhamUnited KingdomAnna Fali RENEWAL
Juan I StensethFranceAnna Fali QUALIFIED
Aditya C MarrierArgentinaElwin Sharvill RENEWAL
Julie I KolmetzSpainAnna Fali NEW
Clifford H NickaSpainBernardo Dominic RENEWAL
Faith B AmigonJapanIoni Bowcher RENEWAL
Kadeem Q RutaBrazilXuxue Feng UNQUALIFIED
Aika Q PoquetteFranceIoni Bowcher NEGOTIATION
Tony C FigeroaRussiaElwin Sharvill NEGOTIATION
Aditya H GlickFranceBernardo Dominic NEW
Deepesh J SlusarskiUnited KingdomAmy Elsner NEW
Sinclair W CaudyGermanyAmy Elsner UNQUALIFIED
Rodrigues Q GillianSpainIoni Bowcher RENEWAL
Rodrigues Q CaudyIndiaAsiya Javayant UNQUALIFIED
Maisha X FlosiItalyIvan Magalhaes UNQUALIFIED
Greenwood U NickaRussiaElwin Sharvill NEGOTIATION
Morrow G NickaIndiaBernardo Dominic RENEWAL
Frozen Columns
Name
Jennifer S Malet
Morrow R Marrier
Salvatore M Albares
Alejandro T Amigon
Smith X Wieser
Jeanfrancois Y Nicka
Kadeem P Chui
Chavez N Slusarski
Mayumi H Briddick
Alejandro G Oldroyd
Aditya O Butt
Nicolas U Campain
Claire A Marrier
Octavia B Butt
Kadeem M Tollner
Costa P Chui
Julie J Tollner
Leja R Garufi
Izzy T Gillian
Darci C Tollner
Claire F Butt
Julie Q Maclead
Alejandro M Albares
Smith I Stenseth
Isabel M Ostrosky
Alejandro U Doe
Salvatore S Shinko
Jones S Wieser
Faith P Malet
Clifford L Poquette
Jeanfrancois J Kusko
Maisha X Darakjy
Wickens A Amigon
Antonio N Marrier
Julie F Bowley
Aditya S Doe
Morrow V Nestle
Tony I Rulapaugh
Aruna W Ostrosky
Johnson K Kolmetz
Sinclair U Malet
Jennifer Y Caldarera
Wickens R Campain
James Z Ferencz
Ivar Y Saylors
Leja N Venere
Mayumi R Bowley
Stacey X Amigon
Claire C Saylors
Deepesh C Glick
IdCountryDate
1000Brazil2024-03-21
1001Japan2024-04-08
1002France2024-03-31
1003Germany2024-04-18
1004Japan2024-04-10
1005Australia2024-04-06
1006Canada2024-04-15
1007France2024-04-15
1008Russia2024-04-17
1009Argentina2024-03-28
1010Japan2024-04-02
1011France2024-03-27
1012United Kingdom2024-04-12
1013Japan2024-03-30
1014Argentina2024-04-10
1015Canada2024-03-31
1016Brazil2024-04-11
1017Germany2024-04-18
1018Spain2024-03-31
1019Brazil2024-03-20
1020India2024-03-24
1021Argentina2024-04-14
1022Canada2024-04-14
1023Australia2024-04-07
1024Germany2024-03-21
1025India2024-03-22
1026Russia2024-03-21
1027Canada2024-04-03
1028Canada2024-04-05
1029Japan2024-04-06
1030India2024-04-17
1031Italy2024-03-24
1032Canada2024-04-18
1033Italy2024-04-05
1034France2024-03-20
1035Argentina2024-04-18
1036United Kingdom2024-04-06
1037France2024-03-25
1038Argentina2024-03-30
1039United Kingdom2024-03-27
1040India2024-04-10
1041France2024-04-01
1042Germany2024-03-26
1043Italy2024-03-31
1044Russia2024-04-08
1045Australia2024-03-20
1046Spain2024-04-16
1047Spain2024-03-23
1048Russia2024-03-28
1049Italy2024-04-02

On-Demand Data

NameIdCountryDate
Silvio H Gillian1000Argentina2024-03-31
Maria M Gillian1001India2024-04-18
Tony F Nicka1002United Kingdom2024-03-22
Clifford S Caldarera1003Brazil2024-03-25
Ashley V Stenseth1004Italy2024-04-11
Cody J Darakjy1005Italy2024-03-27
Nicolas F Poquette1006United Kingdom2024-03-26
Maisha R Caldarera1007Italy2024-04-07
Tony V Rulapaugh1008France2024-04-17
Mujtaba G Saylors1009Russia2024-04-05
Maria E Shinko1010United Kingdom2024-04-15
Faith N Rulapaugh1011Argentina2024-03-24
Aditya A Whobrey1012Spain2024-03-31
Isabel P Stenseth1013France2024-03-22
Chavez N Bowley1014Brazil2024-04-02
Costa X Kolmetz1015Japan2024-03-23
Ashley O Poquette1016Germany2024-03-28
Ashley W Perin1017United Kingdom2024-03-23
Julie O Nicka1018Italy2024-04-11
Salvatore O Glick1019Brazil2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford V AmigonItalyAsiya Javayant RENEWAL
Mujtaba T WhobreyArgentinaXuxue Feng NEGOTIATION
Isabel J PoquetteCanadaAnna Fali NEGOTIATION
Cody L FerenczFranceElwin Sharvill QUALIFIED
Nicolas T VocelkaArgentinaXuxue Feng RENEWAL
Francesco L CaldareraSpainStephen Shaw UNQUALIFIED
James F CampainSpainAnna Fali RENEWAL
Johnson W GlickIndiaStephen Shaw QUALIFIED
Arvin B FerenczFranceIvan Magalhaes PROPOSAL
Ricardo G NickaAustraliaAsiya Javayant UNQUALIFIED
Arvin F AlbaresJapanIoni Bowcher QUALIFIED
Smith W CaldareraItalyBernardo Dominic NEW
Morrow C GarufiGermanyBernardo Dominic NEW
Jones N AmigonUnited KingdomElwin Sharvill RENEWAL
Kadeem Q WieserFranceElwin Sharvill NEW
Maria G ShinkoArgentinaAnna Fali RENEWAL
Alejandro N OstroskyGermanyOnyama Limba NEW
Arvin Y RutaJapanElwin Sharvill QUALIFIED
Arvin M BowleyRussiaAsiya Javayant UNQUALIFIED
Murillo J MaletAustraliaOnyama Limba NEGOTIATION
Aika B RutaSpainOnyama Limba PROPOSAL
Tony L KuskoUnited KingdomElwin Sharvill UNQUALIFIED
Aika C KolmetzArgentinaAnna Fali QUALIFIED
Mujtaba C FerenczUnited KingdomIvan Magalhaes NEGOTIATION
Ricardo P MacleadRussiaIvan Magalhaes NEW
Silvio N DarakjyArgentinaAnna Fali PROPOSAL
Morrow D FlosiGermanyElwin Sharvill UNQUALIFIED
Jones Q DilliardIndiaIvan Magalhaes NEW
Juan L CaldareraBrazilBernardo Dominic PROPOSAL
Juan F ButtArgentinaElwin Sharvill NEW
Deepesh H InouyeBrazilXuxue Feng RENEWAL
Smith N GauchoAustraliaAmy Elsner UNQUALIFIED
Kadeem Z DarakjyUnited KingdomOnyama Limba NEGOTIATION
Smith W RimSpainIoni Bowcher NEGOTIATION
Leja P CampainFranceIvan Magalhaes QUALIFIED
Cody Y CaldareraIndiaBernardo Dominic NEW
Aditya A RoysterCanadaBernardo Dominic RENEWAL
Stacey J RutaGermanyAmy Elsner UNQUALIFIED
Kadeem G VenereArgentinaAsiya Javayant QUALIFIED
Murillo M RimSpainElwin Sharvill 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>