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
Mayumi O WhobreySpainOnyama Limba UNQUALIFIED
Izzy F KolmetzItalyAnna Fali UNQUALIFIED
Mujtaba T SergiFranceXuxue Feng RENEWAL
Aruna J MarrierCanadaXuxue Feng NEW
Jefferson S VenereJapanXuxue Feng RENEWAL
Sinclair J IturbideAustraliaAsiya Javayant UNQUALIFIED
Francesco V VenereBrazilAnna Fali PROPOSAL
Ivar X SaylorsArgentinaIvan Magalhaes QUALIFIED
Misaki U SaylorsArgentinaOnyama Limba QUALIFIED
Mayumi Z CaldareraAustraliaXuxue Feng RENEWAL
Wickens U GillianArgentinaOnyama Limba RENEWAL
Maria X SlusarskiBrazilXuxue Feng QUALIFIED
Salvatore E DarakjyBrazilAsiya Javayant UNQUALIFIED
Jones E SaylorsGermanyIoni Bowcher QUALIFIED
Octavia K DarakjyArgentinaAmy Elsner UNQUALIFIED
Jefferson D PerinJapanOnyama Limba RENEWAL
Nicolas N StockhamCanadaXuxue Feng UNQUALIFIED
Claire Q VocelkaItalyBernardo Dominic PROPOSAL
Adams Y FollerAustraliaAsiya Javayant NEGOTIATION
Smith D PaprockiAustraliaStephen Shaw NEGOTIATION
Jefferson S StensethSpainAnna Fali NEW
Mujtaba U PaprockiCanadaXuxue Feng NEW
Chavez U GarufiUnited KingdomIvan Magalhaes UNQUALIFIED
Morrow N GarufiBrazilIvan Magalhaes PROPOSAL
Faith G SaylorsIndiaIvan Magalhaes QUALIFIED
Kadeem C MacleadSpainXuxue Feng QUALIFIED
Nicolas C NestleBrazilIvan Magalhaes PROPOSAL
Cody T SergiGermanyBernardo Dominic NEGOTIATION
Maria R WaycottFranceIoni Bowcher UNQUALIFIED
Morrow Y OldroydFranceBernardo Dominic UNQUALIFIED
Leon V WhobreyArgentinaElwin Sharvill PROPOSAL
Ivar F CampainCanadaXuxue Feng UNQUALIFIED
Ivar C BowleyItalyElwin Sharvill NEGOTIATION
Alejandro J OldroydGermanyIoni Bowcher QUALIFIED
Munro V GillianFranceIvan Magalhaes NEW
Ricardo O FlosiRussiaIvan Magalhaes PROPOSAL
Johnson I GlickUnited KingdomAsiya Javayant UNQUALIFIED
Emily F NestleCanadaElwin Sharvill RENEWAL
Jennifer W GauchoArgentinaStephen Shaw NEGOTIATION
Alejandro S VocelkaBrazilAmy Elsner PROPOSAL
Antonio D MorascaCanadaBernardo Dominic NEGOTIATION
Johnson U MaletBrazilIoni Bowcher NEGOTIATION
Stacey V ButtItalyElwin Sharvill NEW
Silvio X ChuiItalyOnyama Limba QUALIFIED
Salvatore K RimArgentinaIvan Magalhaes NEW
Chavez V BriddickRussiaStephen Shaw QUALIFIED
Leja Y GauchoAustraliaElwin Sharvill QUALIFIED
Julie I IturbideSpainBernardo Dominic NEW
James Y BowleySpainIoni Bowcher NEGOTIATION
Octavia N SergiSpainBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Antonio B PerinAustraliaElwin Sharvill NEGOTIATION
Adams U SchemmerAustraliaElwin Sharvill QUALIFIED
Deepesh B DilliardJapanXuxue Feng UNQUALIFIED
Tony J PoquetteCanadaIvan Magalhaes NEW
Jones M FerenczSpainIvan Magalhaes PROPOSAL
James S BowleySpainOnyama Limba NEW
Arvin P KuskoJapanOnyama Limba UNQUALIFIED
Smith D CampainJapanStephen Shaw UNQUALIFIED
Julie N ButtRussiaXuxue Feng NEGOTIATION
Izzy B StockhamFranceXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Arvin H VocelkaSpain2024-04-10Dorl, James J Esq QUALIFIED44Onyama Limba
1001David E GarufiSpain2024-03-31Commercial Press NEW89Onyama Limba
1002Claire H KolmetzIndia2024-04-04Rousseaux, Michael Esq PROPOSAL92Onyama Limba
1003Maria S ShinkoCanada2024-04-17Chanay, Jeffrey A Esq NEW54Anna Fali
1004Ashley G DoeSpain2024-04-09Morlong Associates UNQUALIFIED31Asiya Javayant
1005Kaitlin Z MaletJapan2024-04-10Rangoni Of Florence PROPOSAL50Ioni Bowcher
1006Ricardo V SergiItaly2024-03-31Chapman, Ross E Esq UNQUALIFIED24Anna Fali
1007Greenwood O AmigonIndia2024-04-11Feltz Printing Service QUALIFIED47Stephen Shaw
1008Ashley Z MaletJapan2024-04-27Rousseaux, Michael Esq NEW50Asiya Javayant
1009Julie T KuskoCanada2024-04-20King, Christopher A Esq UNQUALIFIED41Anna Fali
1010Emily H KuskoCanada2024-04-21Morlong Associates UNQUALIFIED92Ioni Bowcher
1011Stacey H KolmetzArgentina2024-04-14Buckley Miller Wright RENEWAL82Anna Fali
1012Misaki Q MaletArgentina2024-04-16Printing Dimensions NEW99Xuxue Feng
1013Jennifer Y IturbideIndia2024-04-23Chanay, Jeffrey A Esq QUALIFIED33Anna Fali
1014Wickens L MacleadAustralia2024-04-10Chemel, James L Cpa PROPOSAL60Xuxue Feng
1015Mujtaba I SergiJapan2024-04-02Truhlar And Truhlar Attys PROPOSAL20Elwin Sharvill
1016Jennifer K WaycottJapan2024-04-22Truhlar And Truhlar Attys NEW59Xuxue Feng
1017David Q CaudyItaly2024-04-26Printing Dimensions QUALIFIED35Onyama Limba
1018Mayumi Y InouyeAustralia2024-04-19Feltz Printing Service NEGOTIATION0Amy Elsner
1019Isabel X ButtItaly2024-04-06Buckley Miller Wright NEGOTIATION86Xuxue Feng
1020Greenwood B DilliardAustralia2024-04-19Truhlar And Truhlar Attys PROPOSAL15Asiya Javayant
1021Clifford U MacleadUnited Kingdom2024-04-26Truhlar And Truhlar Attys PROPOSAL2Asiya Javayant
1022Mayumi R VocelkaItaly2024-04-01Buckley Miller Wright NEGOTIATION40Onyama Limba
1023Greenwood E CampainItaly2024-04-25Commercial Press RENEWAL87Elwin Sharvill
1024Mujtaba C GarufiCanada2024-04-08Feltz Printing Service QUALIFIED54Anna Fali
1025Greenwood W AlbaresItaly2024-04-02Buckley Miller Wright QUALIFIED33Ivan Magalhaes
1026Aditya R MorascaCanada2024-04-28Rousseaux, Michael Esq RENEWAL47Elwin Sharvill
1027Clifford W BowleyRussia2024-04-19Chanay, Jeffrey A Esq PROPOSAL62Xuxue Feng
1028Mayumi L BriddickRussia2024-04-12Feiner Bros UNQUALIFIED32Bernardo Dominic
1029Aruna S AlbaresFrance2024-04-03Chemel, James L Cpa NEGOTIATION7Xuxue Feng
1030Kaitlin E SaylorsBrazil2024-04-19Chanay, Jeffrey A Esq NEW14Ivan Magalhaes
1031Claire O ButtJapan2024-04-04Buckley Miller Wright PROPOSAL54Stephen Shaw
1032Murillo Z GauchoUnited Kingdom2024-04-08Chanay, Jeffrey A Esq PROPOSAL67Elwin Sharvill
1033Ashley F FollerArgentina2024-04-05Chanay, Jeffrey A Esq RENEWAL57Ioni Bowcher
1034Tony G OstroskyArgentina2024-04-21Chanay, Jeffrey A Esq PROPOSAL71Stephen Shaw
1035Adams A BriddickIndia2024-04-08Truhlar And Truhlar Attys NEGOTIATION84Ioni Bowcher
1036Aditya D RoysterRussia2024-04-13Chanay, Jeffrey A Esq PROPOSAL42Asiya Javayant
1037Kadeem F MarrierJapan2024-04-10Feltz Printing Service PROPOSAL60Ivan Magalhaes
1038Salvatore D DoeUnited Kingdom2024-04-16Rousseaux, Michael Esq NEW12Elwin Sharvill
1039Nicolas H KuskoArgentina2024-04-22Buckley Miller Wright QUALIFIED1Xuxue Feng
1040Juan L IturbideJapan2024-04-18Feiner Bros NEGOTIATION4Amy Elsner
1041Cody V RulapaughCanada2024-04-24Truhlar And Truhlar Attys UNQUALIFIED25Bernardo Dominic
1042Morrow B GarufiRussia2024-04-11Chanay, Jeffrey A Esq NEGOTIATION91Onyama Limba
1043Mujtaba R GarufiGermany2024-04-19Chemel, James L Cpa NEGOTIATION92Elwin Sharvill
1044Munro C RutaBrazil2024-04-05Dorl, James J Esq PROPOSAL30Asiya Javayant
1045Tony O ChuiGermany2024-04-10Feltz Printing Service NEGOTIATION60Elwin Sharvill
1046Morrow H RulapaughCanada2024-04-15King, Christopher A Esq QUALIFIED74Xuxue Feng
1047Julie M MaletJapan2024-04-21Chanay, Jeffrey A Esq RENEWAL53Xuxue Feng
1048Faith Q CaldareraGermany2024-04-15Chanay, Jeffrey A Esq UNQUALIFIED41Bernardo Dominic
1049Tony B MorascaCanada2024-04-24Benton, John B Jr QUALIFIED66Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Deepesh C IturbideBrazilIoni Bowcher PROPOSAL
Maisha H TollnerItalyAnna Fali PROPOSAL
Darci Z PoquetteGermanyIoni Bowcher UNQUALIFIED
Aruna U SlusarskiUnited KingdomIvan Magalhaes PROPOSAL
Stacey R PoquetteRussiaStephen Shaw UNQUALIFIED
Stacey J BriddickRussiaAsiya Javayant NEW
Rodrigues K WaycottBrazilIoni Bowcher UNQUALIFIED
Leja V MorascaUnited KingdomOnyama Limba PROPOSAL
Aruna Y DarakjyArgentinaElwin Sharvill PROPOSAL
Tony X AlbaresJapanOnyama Limba UNQUALIFIED
Murillo T ButtAustraliaBernardo Dominic QUALIFIED
Cody D BologniaUnited KingdomAnna Fali QUALIFIED
Emily S ShinkoGermanyXuxue Feng NEW
Kadeem Y VenereJapanIvan Magalhaes RENEWAL
Jefferson E DoeItalyElwin Sharvill NEW
Aditya P WieserIndiaElwin Sharvill NEW
Maisha N VenereArgentinaXuxue Feng QUALIFIED
Misaki B StockhamItalyAsiya Javayant QUALIFIED
Chavez I MorascaGermanyAnna Fali NEW
Octavia J SaylorsItalyAnna Fali NEW
David X MarrierSpainElwin Sharvill QUALIFIED
Sinclair C TollnerRussiaIoni Bowcher RENEWAL
Sinclair Z CaudyIndiaIvan Magalhaes UNQUALIFIED
Costa J FerenczArgentinaAmy Elsner NEGOTIATION
Cody M VenereIndiaBernardo Dominic QUALIFIED
Octavia O GarufiUnited KingdomOnyama Limba UNQUALIFIED
Julie G AlbaresBrazilAmy Elsner QUALIFIED
Clifford Q KolmetzRussiaAsiya Javayant NEGOTIATION
Kadeem O PerinCanadaAmy Elsner PROPOSAL
Smith A KuskoItalyAnna Fali PROPOSAL
Izzy Q CampainJapanBernardo Dominic QUALIFIED
Maria Q RoysterUnited KingdomOnyama Limba RENEWAL
Jefferson H PoquetteBrazilBernardo Dominic NEW
Wickens Q RimUnited KingdomBernardo Dominic RENEWAL
Clifford X PoquetteUnited KingdomOnyama Limba NEGOTIATION
Murillo C AlbaresGermanyAnna Fali RENEWAL
Costa C RutaSpainStephen Shaw RENEWAL
Maisha Y WhobreyArgentinaElwin Sharvill PROPOSAL
Stacey H SchemmerUnited KingdomXuxue Feng NEW
Clifford C WhobreyUnited KingdomElwin Sharvill RENEWAL
Francesco R PoquetteIndiaAmy Elsner RENEWAL
Aika T StensethSpainAsiya Javayant UNQUALIFIED
Salvatore N PaprockiAustraliaBernardo Dominic NEGOTIATION
Emily P ChuiJapanAmy Elsner UNQUALIFIED
Deepesh W OstroskySpainXuxue Feng NEGOTIATION
Leja J GarufiBrazilAnna Fali UNQUALIFIED
Munro X BologniaAustraliaXuxue Feng PROPOSAL
Rodrigues K GillianCanadaXuxue Feng RENEWAL
Darci R GauchoRussiaAsiya Javayant UNQUALIFIED
Kadeem O DoeRussiaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Jones S Campain
Nicolas I Saylors
Chavez R Paprocki
Maisha Q Bowley
Leja B Stockham
Emily K Oldroyd
Tony E Chui
Leon S Ostrosky
Silvio N Schemmer
David Q Garufi
Johnson U Kusko
Maria T Malet
Arvin F Paprocki
Jennifer R Briddick
Cody I Garufi
Mayumi S Perin
Greenwood V Glick
Maisha Y Foller
Sinclair K Inouye
Francesco A Malet
Claire V Albares
Emily J Garufi
Murillo Z Saylors
Wickens O Kusko
Kaitlin G Caudy
Deepesh X Maclead
Murillo A Paprocki
Jones V Malet
Aika I Caudy
Mujtaba K Doe
Claire O Figeroa
Cody T Iturbide
Wickens A Whobrey
Adams Y Gillian
Mayumi V Albares
Nicolas B Albares
Aditya C Perin
Jones Z Vocelka
Julie S Saylors
Adams W Ferencz
Jones H Butt
Isabel W Maclead
Alejandro T Wieser
Ricardo V Poquette
James Z Caldarera
Isabel C Dilliard
Aika J Glick
Adams O Marrier
Jeanfrancois A Tollner
Ashley N Amigon
IdCountryDate
1000Russia2024-04-10
1001United Kingdom2024-04-09
1002Brazil2024-04-06
1003Italy2024-04-20
1004United Kingdom2024-04-02
1005Japan2024-04-08
1006France2024-04-23
1007Italy2024-04-12
1008Italy2024-04-15
1009Japan2024-04-26
1010Germany2024-04-07
1011Brazil2024-04-28
1012Japan2024-04-01
1013Canada2024-04-28
1014Germany2024-04-23
1015Russia2024-03-30
1016France2024-04-11
1017Australia2024-04-18
1018India2024-04-04
1019Australia2024-04-28
1020Canada2024-04-11
1021India2024-04-05
1022Germany2024-04-20
1023Argentina2024-04-02
1024India2024-04-24
1025United Kingdom2024-04-19
1026Argentina2024-04-11
1027Spain2024-04-17
1028Germany2024-04-27
1029Brazil2024-04-14
1030Italy2024-04-22
1031Australia2024-04-16
1032Argentina2024-04-12
1033France2024-04-03
1034Japan2024-04-12
1035Argentina2024-04-09
1036Russia2024-04-21
1037Japan2024-04-18
1038Japan2024-04-21
1039Spain2024-04-06
1040Argentina2024-04-24
1041Russia2024-04-04
1042Canada2024-04-06
1043Spain2024-04-19
1044Germany2024-04-24
1045Japan2024-04-21
1046Brazil2024-04-12
1047Italy2024-04-15
1048United Kingdom2024-04-13
1049Germany2024-04-12

On-Demand Data

NameIdCountryDate
Chavez D Waycott1000Italy2024-04-03
Smith X Chui1001Argentina2024-04-04
Clifford R Ferencz1002Brazil2024-04-04
Octavia X Venere1003Spain2024-04-23
Costa W Flosi1004Russia2024-04-11
Wickens H Flosi1005Argentina2024-04-03
Wickens T Garufi1006Spain2024-04-24
Claire I Schemmer1007Spain2024-04-12
Izzy K Maclead1008Italy2024-04-03
Tony B Dilliard1009Canada2024-04-06
Kadeem G Malet1010Russia2024-04-11
Costa K Nicka1011Italy2024-04-14
Greenwood G Vocelka1012France2024-04-06
Clifford P Gillian1013Japan2024-04-19
Juan Q Figeroa1014Australia2024-04-18
Octavia E Butt1015France2024-04-04
Mujtaba T Saylors1016Italy2024-04-22
Cody O Kolmetz1017Italy2024-04-28
Emily I Inouye1018Canada2024-04-19
Smith D Slusarski1019Germany2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
David Z RutaJapanElwin Sharvill NEW
Leja F CaldareraRussiaBernardo Dominic RENEWAL
Wickens N SlusarskiAustraliaAnna Fali NEGOTIATION
Johnson C DoeIndiaStephen Shaw RENEWAL
Mujtaba R MaletGermanyXuxue Feng NEGOTIATION
Antonio L ShinkoFranceBernardo Dominic RENEWAL
Emily R FollerArgentinaAsiya Javayant UNQUALIFIED
Francesco R RulapaughFranceIoni Bowcher NEW
Silvio I WhobreyJapanStephen Shaw NEGOTIATION
Jefferson K BowleySpainIvan Magalhaes UNQUALIFIED
Francesco Z ButtAustraliaAnna Fali UNQUALIFIED
Misaki D SaylorsAustraliaBernardo Dominic UNQUALIFIED
Alejandro V RulapaughUnited KingdomXuxue Feng PROPOSAL
Jones O WieserAustraliaAnna Fali NEW
Ricardo B SaylorsBrazilAsiya Javayant NEGOTIATION
Aruna A NickaArgentinaStephen Shaw QUALIFIED
Salvatore F DarakjyAustraliaElwin Sharvill NEW
Ashley O GauchoItalyXuxue Feng PROPOSAL
Octavia Y RimArgentinaIoni Bowcher QUALIFIED
Johnson W PaprockiAustraliaIvan Magalhaes UNQUALIFIED
Aika C BologniaIndiaBernardo Dominic NEW
Octavia H WaycottBrazilIoni Bowcher NEW
Salvatore G BriddickBrazilBernardo Dominic NEW
Murillo J WieserCanadaStephen Shaw RENEWAL
Francesco F PaprockiFranceElwin Sharvill NEGOTIATION
David J MorascaUnited KingdomAnna Fali UNQUALIFIED
Salvatore T AlbaresRussiaAsiya Javayant RENEWAL
Isabel G PoquetteUnited KingdomOnyama Limba PROPOSAL
Morrow A TollnerRussiaStephen Shaw QUALIFIED
Maria W VenereItalyBernardo Dominic NEW
Mujtaba R CaudyJapanAmy Elsner NEW
Johnson W GlickArgentinaAnna Fali UNQUALIFIED
Antonio O SergiIndiaBernardo Dominic NEW
Jennifer H PerinUnited KingdomStephen Shaw RENEWAL
Aruna T BriddickBrazilBernardo Dominic QUALIFIED
Jones Y FollerItalyXuxue Feng NEGOTIATION
Misaki J CampainBrazilElwin Sharvill NEGOTIATION
Jeanfrancois W MaletBrazilAsiya Javayant PROPOSAL
Maisha L TollnerArgentinaAnna Fali RENEWAL
Deepesh T CaudyItalyXuxue Feng RENEWAL

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