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
Francesco W FigeroaSpainAmy Elsner NEGOTIATION
Jefferson W StensethGermanyAnna Fali RENEWAL
Greenwood V CaudySpainBernardo Dominic RENEWAL
Emily J RoysterFranceAsiya Javayant NEGOTIATION
Darci D MaletItalyIvan Magalhaes QUALIFIED
Julie H WieserAustraliaStephen Shaw RENEWAL
Mujtaba C PaprockiArgentinaOnyama Limba NEW
Antonio L GlickAustraliaAsiya Javayant UNQUALIFIED
Jones B BologniaSpainElwin Sharvill QUALIFIED
Jennifer V DilliardSpainAmy Elsner NEW
Jefferson X VocelkaUnited KingdomAnna Fali NEW
Jeanfrancois H DarakjyBrazilAnna Fali PROPOSAL
Jones C OstroskyCanadaIvan Magalhaes NEGOTIATION
James D NestleJapanAsiya Javayant NEW
James O NickaCanadaIvan Magalhaes PROPOSAL
Cody B OldroydAustraliaBernardo Dominic RENEWAL
Tony A MacleadBrazilIoni Bowcher UNQUALIFIED
Stacey G VenereUnited KingdomElwin Sharvill PROPOSAL
Aditya W ChuiIndiaAnna Fali QUALIFIED
Antonio T TollnerIndiaAnna Fali UNQUALIFIED
Greenwood S TollnerSpainAsiya Javayant UNQUALIFIED
Izzy K MacleadBrazilStephen Shaw QUALIFIED
Arvin K BriddickArgentinaOnyama Limba PROPOSAL
Emily Y KuskoAustraliaIvan Magalhaes PROPOSAL
Alejandro F IturbideIndiaXuxue Feng PROPOSAL
Jefferson V FlosiCanadaAmy Elsner NEGOTIATION
Leja M IturbideSpainBernardo Dominic NEGOTIATION
Alejandro F GauchoFranceOnyama Limba RENEWAL
Costa Y VocelkaIndiaAsiya Javayant UNQUALIFIED
Smith N WaycottCanadaOnyama Limba NEW
Stacey G CaudyFranceAsiya Javayant UNQUALIFIED
Smith N TollnerSpainAnna Fali RENEWAL
Kaitlin K NickaGermanyAmy Elsner NEGOTIATION
Antonio C BologniaCanadaStephen Shaw NEGOTIATION
Ivar R PaprockiBrazilElwin Sharvill UNQUALIFIED
Ashley F VenereCanadaBernardo Dominic NEGOTIATION
Alejandro V MorascaUnited KingdomStephen Shaw UNQUALIFIED
Leon I DilliardSpainAmy Elsner QUALIFIED
Sinclair L GillianCanadaStephen Shaw PROPOSAL
Isabel S WhobreySpainAnna Fali QUALIFIED
Ashley A FigeroaUnited KingdomElwin Sharvill NEW
Alejandro I SergiArgentinaBernardo Dominic UNQUALIFIED
Misaki Z OstroskyBrazilIoni Bowcher NEW
Ivar I FigeroaAustraliaAmy Elsner PROPOSAL
David M TollnerJapanElwin Sharvill NEW
Faith X SergiSpainOnyama Limba NEW
Emily N CaldareraAustraliaAsiya Javayant QUALIFIED
James L GlickSpainIvan Magalhaes NEGOTIATION
Mayumi R VenereSpainOnyama Limba PROPOSAL
Kaitlin R PerinItalyXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Izzy S StensethRussiaElwin Sharvill NEGOTIATION
Antonio S GillianSpainIvan Magalhaes UNQUALIFIED
Greenwood M CampainCanadaXuxue Feng RENEWAL
Kadeem G StockhamJapanAmy Elsner NEGOTIATION
Darci Z AlbaresFranceAsiya Javayant NEGOTIATION
Sinclair L CaldareraFranceIvan Magalhaes NEGOTIATION
Clifford U FigeroaUnited KingdomBernardo Dominic NEW
Alejandro J KuskoJapanElwin Sharvill QUALIFIED
Smith G NickaItalyElwin Sharvill QUALIFIED
Francesco M RutaJapanIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh Z GarufiIndia2024-04-10King, Christopher A Esq NEW54Xuxue Feng
1001Kadeem N OldroydAustralia2024-03-29Chemel, James L Cpa UNQUALIFIED99Bernardo Dominic
1002Ashley C RulapaughBrazil2024-04-01Truhlar And Truhlar Attys QUALIFIED52Ivan Magalhaes
1003Francesco E GauchoUnited Kingdom2024-04-13Rangoni Of Florence QUALIFIED35Ioni Bowcher
1004Isabel H BologniaCanada2024-03-31Chanay, Jeffrey A Esq RENEWAL47Anna Fali
1005Jeanfrancois Z CampainCanada2024-04-22Feltz Printing Service NEW24Onyama Limba
1006Ivar Z NestleCanada2024-04-02Rousseaux, Michael Esq NEW95Bernardo Dominic
1007Mujtaba B FerenczUnited Kingdom2024-04-20Commercial Press RENEWAL19Stephen Shaw
1008Tony T BologniaItaly2024-04-19Buckley Miller Wright QUALIFIED7Ioni Bowcher
1009Clifford I PoquetteFrance2024-04-06Morlong Associates QUALIFIED79Stephen Shaw
1010Jennifer R ChuiJapan2024-04-26Truhlar And Truhlar Attys QUALIFIED62Stephen Shaw
1011Leja D OldroydUnited Kingdom2024-03-31Feiner Bros NEGOTIATION34Asiya Javayant
1012Jefferson K FigeroaJapan2024-04-13Rousseaux, Michael Esq UNQUALIFIED17Ioni Bowcher
1013Sinclair N RulapaughFrance2024-04-07Truhlar And Truhlar Attys NEGOTIATION10Stephen Shaw
1014Smith Z SergiSpain2024-04-11Truhlar And Truhlar Attys QUALIFIED66Stephen Shaw
1015Chavez K GillianUnited Kingdom2024-04-10Chanay, Jeffrey A Esq NEGOTIATION70Elwin Sharvill
1016Jennifer Z AlbaresJapan2024-04-09King, Christopher A Esq QUALIFIED46Elwin Sharvill
1017Mayumi K StockhamCanada2024-04-08Feiner Bros RENEWAL15Amy Elsner
1018Clifford K SlusarskiJapan2024-04-19Rangoni Of Florence NEGOTIATION6Stephen Shaw
1019Chavez G IturbideRussia2024-04-08Rangoni Of Florence UNQUALIFIED54Anna Fali
1020Ashley N DoeIndia2024-04-08Printing Dimensions NEGOTIATION67Elwin Sharvill
1021Mujtaba V SaylorsItaly2024-04-24King, Christopher A Esq NEGOTIATION57Ivan Magalhaes
1022Claire L ChuiRussia2024-04-13Feltz Printing Service QUALIFIED57Elwin Sharvill
1023Isabel B CampainJapan2024-04-14Rangoni Of Florence NEW81Onyama Limba
1024Leja Q RoysterBrazil2024-04-14Rangoni Of Florence QUALIFIED91Amy Elsner
1025Emily X SaylorsArgentina2024-04-22Benton, John B Jr PROPOSAL69Ivan Magalhaes
1026Leja Q SaylorsCanada2024-04-09Truhlar And Truhlar Attys QUALIFIED14Ivan Magalhaes
1027Isabel Q BowleyCanada2024-04-03Rangoni Of Florence NEGOTIATION60Stephen Shaw
1028Aika R KuskoRussia2024-04-23Feltz Printing Service QUALIFIED43Ioni Bowcher
1029Emily X WhobreyRussia2024-04-23Commercial Press PROPOSAL47Ioni Bowcher
1030Silvio J SlusarskiArgentina2024-04-07Buckley Miller Wright PROPOSAL98Elwin Sharvill
1031Kaitlin P OldroydArgentina2024-04-27King, Christopher A Esq NEW12Asiya Javayant
1032Deepesh F MorascaAustralia2024-04-05Dorl, James J Esq RENEWAL67Stephen Shaw
1033Costa B VenereBrazil2024-03-31Rangoni Of Florence NEW41Onyama Limba
1034Alejandro C GauchoGermany2024-04-03Chemel, James L Cpa RENEWAL4Stephen Shaw
1035Octavia I StockhamBrazil2024-04-14Chemel, James L Cpa PROPOSAL96Onyama Limba
1036Francesco B FigeroaJapan2024-04-01Buckley Miller Wright NEW35Ivan Magalhaes
1037Cody Q BologniaRussia2024-04-18Rangoni Of Florence PROPOSAL9Stephen Shaw
1038Deepesh Z FollerRussia2024-04-02Buckley Miller Wright UNQUALIFIED5Bernardo Dominic
1039Tony D FigeroaJapan2024-04-22Chemel, James L Cpa NEGOTIATION27Ioni Bowcher
1040Rodrigues E ButtRussia2024-04-04Printing Dimensions UNQUALIFIED99Ioni Bowcher
1041Faith X RulapaughBrazil2024-04-06Printing Dimensions UNQUALIFIED87Elwin Sharvill
1042Juan Q ButtBrazil2024-04-13Chanay, Jeffrey A Esq PROPOSAL25Asiya Javayant
1043Antonio A FigeroaFrance2024-04-06Buckley Miller Wright NEW12Onyama Limba
1044Nicolas J WhobreyCanada2024-04-22Truhlar And Truhlar Attys NEGOTIATION90Onyama Limba
1045Adams S DarakjyUnited Kingdom2024-04-12Rousseaux, Michael Esq PROPOSAL47Bernardo Dominic
1046Jefferson B SlusarskiRussia2024-03-31Printing Dimensions NEGOTIATION51Asiya Javayant
1047David L DoeJapan2024-04-25Printing Dimensions QUALIFIED89Ioni Bowcher
1048Tony U MarrierIndia2024-04-08Rousseaux, Michael Esq PROPOSAL46Ioni Bowcher
1049Julie E FerenczAustralia2024-04-07Dorl, James J Esq PROPOSAL75Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Alejandro V TollnerJapanIoni Bowcher QUALIFIED
Emily Z RulapaughRussiaStephen Shaw UNQUALIFIED
Greenwood X SaylorsFranceIoni Bowcher RENEWAL
Aika B GillianFranceAsiya Javayant RENEWAL
Rodrigues E MaletIndiaIoni Bowcher NEW
Mujtaba J NickaSpainAmy Elsner UNQUALIFIED
Salvatore Q StockhamItalyBernardo Dominic NEW
Izzy K SaylorsAustraliaAnna Fali RENEWAL
Munro K RutaUnited KingdomBernardo Dominic QUALIFIED
James S VenereFranceElwin Sharvill NEGOTIATION
Chavez Q BowleyBrazilOnyama Limba RENEWAL
Mujtaba T ChuiItalyIvan Magalhaes NEW
Adams Q SlusarskiCanadaOnyama Limba RENEWAL
Murillo K TollnerItalyIvan Magalhaes NEGOTIATION
James O DilliardJapanStephen Shaw UNQUALIFIED
David R NestleArgentinaIvan Magalhaes QUALIFIED
Julie E SchemmerBrazilAsiya Javayant UNQUALIFIED
Cody R CaldareraUnited KingdomElwin Sharvill NEW
Jefferson F StensethRussiaAmy Elsner PROPOSAL
Misaki U GlickUnited KingdomXuxue Feng NEGOTIATION
Kaitlin W AlbaresCanadaOnyama Limba QUALIFIED
Rodrigues X TollnerAustraliaAnna Fali UNQUALIFIED
Leon I DoeBrazilElwin Sharvill NEW
Mayumi U MaletFranceIoni Bowcher NEW
Faith Y RulapaughAustraliaStephen Shaw QUALIFIED
Darci C PerinCanadaStephen Shaw QUALIFIED
Maria D SergiCanadaAnna Fali QUALIFIED
Costa J ShinkoArgentinaIvan Magalhaes RENEWAL
Chavez M OldroydUnited KingdomAsiya Javayant UNQUALIFIED
Chavez O GauchoAustraliaAnna Fali PROPOSAL
Aika A CaudyIndiaStephen Shaw NEGOTIATION
Ivar Q PerinIndiaAmy Elsner NEW
Kadeem Y CaudyFranceOnyama Limba NEGOTIATION
Jennifer Y KuskoFranceIoni Bowcher NEGOTIATION
Isabel O MorascaAustraliaIvan Magalhaes NEGOTIATION
Ricardo W PaprockiBrazilBernardo Dominic NEW
Rodrigues R WhobreyJapanIoni Bowcher UNQUALIFIED
Rodrigues P RimFranceIoni Bowcher NEGOTIATION
Alejandro F WhobreyBrazilBernardo Dominic NEGOTIATION
Kadeem P FigeroaUnited KingdomAsiya Javayant QUALIFIED
Maria L PoquetteJapanIoni Bowcher NEGOTIATION
Kaitlin B FollerSpainAnna Fali NEW
Rodrigues O MaletItalyAmy Elsner NEGOTIATION
Cody A FlosiGermanyIvan Magalhaes NEGOTIATION
Munro J GlickJapanAsiya Javayant RENEWAL
Murillo M OldroydArgentinaOnyama Limba NEGOTIATION
Izzy B NestleArgentinaXuxue Feng PROPOSAL
Izzy M WhobreyRussiaIvan Magalhaes UNQUALIFIED
Aruna L MacleadAustraliaElwin Sharvill RENEWAL
Julie O MaletCanadaAmy Elsner UNQUALIFIED
Frozen Columns
Name
Claire M Rim
Claire Q Foller
Julie K Oldroyd
Clifford Z Gaucho
Greenwood J Stockham
Chavez T Campain
Chavez O Venere
Darci Z Kusko
Silvio T Oldroyd
Antonio Q Waycott
Faith Y Doe
David F Sergi
Johnson H Kolmetz
Emily K Glick
Claire E Paprocki
Maria Y Oldroyd
Chavez I Darakjy
Chavez Y Gaucho
Aika F Venere
Murillo K Oldroyd
Juan R Iturbide
Rodrigues J Saylors
Wickens S Whobrey
Ivar X Rulapaugh
Aditya Z Caldarera
Smith K Saylors
Aika V Albares
Ivar J Caudy
Jennifer I Amigon
James G Malet
Chavez L Marrier
Murillo W Ostrosky
Stacey M Bowley
Arvin P Royster
Deepesh L Slusarski
Faith G Ostrosky
Silvio E Butt
Aika O Gaucho
Kaitlin L Chui
Arvin A Briddick
Juan Y Gaucho
Rodrigues Y Iturbide
Greenwood C Slusarski
Ashley Z Inouye
Rodrigues F Campain
Faith Y Royster
Julie R Caudy
Ashley Q Gaucho
Ricardo E Iturbide
Smith D Amigon
IdCountryDate
1000Spain2024-04-25
1001Brazil2024-04-15
1002Canada2024-03-31
1003Germany2024-04-19
1004Russia2024-04-01
1005Brazil2024-04-21
1006Germany2024-04-05
1007Japan2024-04-18
1008India2024-04-23
1009Australia2024-04-01
1010Australia2024-04-08
1011Spain2024-04-11
1012Brazil2024-04-04
1013India2024-04-05
1014Spain2024-04-23
1015Russia2024-03-29
1016Brazil2024-04-11
1017Australia2024-04-01
1018Italy2024-04-25
1019Russia2024-04-15
1020United Kingdom2024-03-31
1021Germany2024-04-27
1022France2024-04-04
1023Japan2024-04-22
1024Germany2024-04-21
1025Germany2024-04-18
1026United Kingdom2024-04-17
1027Japan2024-04-22
1028Argentina2024-03-31
1029India2024-04-18
1030India2024-04-21
1031Spain2024-04-03
1032United Kingdom2024-04-06
1033Japan2024-04-08
1034Spain2024-04-16
1035Brazil2024-04-16
1036Germany2024-03-30
1037Italy2024-04-19
1038Argentina2024-04-24
1039France2024-04-09
1040Australia2024-03-31
1041Australia2024-04-27
1042Germany2024-04-25
1043Italy2024-04-09
1044United Kingdom2024-04-07
1045Argentina2024-04-06
1046Russia2024-04-15
1047Brazil2024-04-12
1048India2024-04-11
1049Germany2024-04-27

On-Demand Data

NameIdCountryDate
Aruna Q Butt1000Spain2024-04-26
Claire S Marrier1001Canada2024-04-15
Salvatore R Tollner1002Japan2024-04-15
Kadeem T Kolmetz1003Canada2024-04-16
Aruna F Albares1004India2024-04-12
Munro Q Venere1005Germany2024-04-16
Aditya M Tollner1006United Kingdom2024-04-21
Aika J Butt1007Canada2024-03-29
Aruna H Caldarera1008Italy2024-04-14
Aika G Malet1009Canada2024-03-29
Jeanfrancois X Flosi1010Australia2024-04-15
Ricardo I Flosi1011Italy2024-04-24
Adams B Poquette1012Argentina2024-04-17
Jeanfrancois R Nicka1013Russia2024-04-21
Jones F Inouye1014India2024-04-26
Jennifer X Waycott1015Spain2024-04-18
Aditya A Malet1016Italy2024-04-24
Costa F Oldroyd1017United Kingdom2024-04-09
Murillo F Amigon1018Argentina2024-04-27
Aditya F Perin1019Japan2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi B MaletArgentinaBernardo Dominic NEGOTIATION
Kadeem P MaletRussiaIvan Magalhaes UNQUALIFIED
Mujtaba Y DilliardRussiaIvan Magalhaes QUALIFIED
Silvio L DilliardRussiaOnyama Limba QUALIFIED
Claire T CaldareraRussiaIoni Bowcher NEGOTIATION
James R FlosiArgentinaBernardo Dominic RENEWAL
Cody R FollerRussiaBernardo Dominic UNQUALIFIED
Alejandro C MacleadCanadaIoni Bowcher NEW
Arvin P PerinIndiaAmy Elsner RENEWAL
Claire O VocelkaFranceXuxue Feng NEGOTIATION
Isabel O GauchoBrazilBernardo Dominic RENEWAL
Sinclair Y FigeroaJapanAsiya Javayant NEGOTIATION
Claire F PerinArgentinaOnyama Limba QUALIFIED
Maria U KuskoSpainElwin Sharvill RENEWAL
Isabel Q FerenczArgentinaBernardo Dominic NEGOTIATION
Claire C CaudyAustraliaIoni Bowcher NEGOTIATION
Adams W PerinIndiaXuxue Feng PROPOSAL
Murillo Z PoquetteRussiaIvan Magalhaes UNQUALIFIED
Jeanfrancois V BriddickBrazilAmy Elsner QUALIFIED
Deepesh N PaprockiJapanAsiya Javayant NEGOTIATION
Maria Z DoeIndiaIvan Magalhaes UNQUALIFIED
Greenwood T FerenczAustraliaBernardo Dominic UNQUALIFIED
Antonio F DilliardCanadaOnyama Limba UNQUALIFIED
Leon V DoeItalyElwin Sharvill NEW
Aruna T FollerRussiaOnyama Limba QUALIFIED
Mujtaba L StockhamIndiaStephen Shaw PROPOSAL
Isabel D IturbideCanadaElwin Sharvill PROPOSAL
Kadeem M WaycottItalyAmy Elsner PROPOSAL
Deepesh E MorascaBrazilIoni Bowcher QUALIFIED
Jennifer V OstroskyRussiaXuxue Feng NEW
Clifford C IturbideIndiaAmy Elsner UNQUALIFIED
Clifford K FerenczBrazilIvan Magalhaes NEW
Maisha R InouyeFranceOnyama Limba PROPOSAL
Ricardo O MacleadSpainAnna Fali RENEWAL
Tony D MorascaGermanyIoni Bowcher PROPOSAL
Jennifer B GarufiAustraliaIvan Magalhaes NEW
Jennifer H FollerGermanyBernardo Dominic NEW
Aika I OldroydGermanyIvan Magalhaes QUALIFIED
Maria L RoysterUnited KingdomIoni Bowcher QUALIFIED
Claire W InouyeCanadaIvan Magalhaes QUALIFIED

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