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
Misaki S SergiBrazilIvan Magalhaes NEGOTIATION
Stacey N TollnerUnited KingdomIoni Bowcher PROPOSAL
Rodrigues I StockhamJapanStephen Shaw NEW
Darci J RutaArgentinaIvan Magalhaes RENEWAL
Tony P DarakjyUnited KingdomOnyama Limba UNQUALIFIED
David X WhobreyUnited KingdomIoni Bowcher PROPOSAL
Jeanfrancois Q RimFranceXuxue Feng UNQUALIFIED
Antonio C WhobreyRussiaAmy Elsner NEW
Isabel H RutaCanadaAsiya Javayant NEW
Mayumi H RimRussiaAnna Fali QUALIFIED
Morrow X ShinkoUnited KingdomBernardo Dominic RENEWAL
Jones U WaycottGermanyAmy Elsner QUALIFIED
Munro Y CaudyFranceStephen Shaw NEGOTIATION
Ivar O MarrierGermanyAsiya Javayant NEGOTIATION
Silvio N VenereGermanyAmy Elsner UNQUALIFIED
Alejandro G ButtItalyAsiya Javayant QUALIFIED
Rodrigues I BriddickCanadaStephen Shaw NEW
Misaki G MaletAustraliaAmy Elsner NEGOTIATION
Jennifer A BriddickBrazilIoni Bowcher NEGOTIATION
Morrow M StockhamGermanyIoni Bowcher NEGOTIATION
Emily H MaletArgentinaAnna Fali NEGOTIATION
Clifford Z WieserGermanyAsiya Javayant QUALIFIED
Kadeem N MaletItalyAnna Fali QUALIFIED
Maisha Y RulapaughFranceElwin Sharvill NEW
Kadeem K SaylorsSpainBernardo Dominic NEGOTIATION
James H VocelkaCanadaIoni Bowcher NEGOTIATION
Silvio D WaycottIndiaIoni Bowcher NEGOTIATION
Nicolas L FlosiRussiaAmy Elsner NEW
Chavez Q WhobreyBrazilIoni Bowcher RENEWAL
Adams J StensethAustraliaIvan Magalhaes UNQUALIFIED
Sinclair G FlosiCanadaAmy Elsner NEGOTIATION
Juan I AlbaresItalyStephen Shaw QUALIFIED
Salvatore V FollerUnited KingdomOnyama Limba NEW
Mujtaba A DoeSpainIvan Magalhaes QUALIFIED
Misaki G BriddickAustraliaElwin Sharvill PROPOSAL
Aditya F WaycottAustraliaAsiya Javayant RENEWAL
Morrow G ShinkoCanadaStephen Shaw RENEWAL
Aika G GauchoFranceIvan Magalhaes UNQUALIFIED
Maisha Z BowleyArgentinaAnna Fali UNQUALIFIED
Francesco K BologniaGermanyStephen Shaw PROPOSAL
Darci B GillianArgentinaXuxue Feng PROPOSAL
Jefferson P MorascaCanadaAsiya Javayant RENEWAL
Mujtaba R MarrierSpainOnyama Limba QUALIFIED
Alejandro C MarrierUnited KingdomAnna Fali UNQUALIFIED
David H PaprockiAustraliaOnyama Limba UNQUALIFIED
Cody N GauchoGermanyIoni Bowcher NEGOTIATION
Emily U MorascaUnited KingdomAmy Elsner UNQUALIFIED
Jennifer M FollerJapanBernardo Dominic UNQUALIFIED
Ivar S CaldareraItalyBernardo Dominic QUALIFIED
Deepesh S StockhamFranceAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois Y FerenczRussiaAmy Elsner RENEWAL
Johnson X WaycottAustraliaIvan Magalhaes NEGOTIATION
Aika W GauchoFranceAsiya Javayant NEW
Jeanfrancois K GlickArgentinaAsiya Javayant PROPOSAL
Francesco V ButtFranceXuxue Feng PROPOSAL
Silvio S SlusarskiArgentinaAmy Elsner UNQUALIFIED
Ricardo D SchemmerRussiaAsiya Javayant NEGOTIATION
Kaitlin R BologniaUnited KingdomStephen Shaw QUALIFIED
Wickens X RoysterFranceAmy Elsner NEW
Francesco J CaudyBrazilElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya O MaletBrazil2024-04-21Rousseaux, Michael Esq RENEWAL41Ivan Magalhaes
1001Izzy H OldroydJapan2024-03-28Chemel, James L Cpa PROPOSAL64Elwin Sharvill
1002Mujtaba B KuskoItaly2024-04-17Printing Dimensions PROPOSAL33Ivan Magalhaes
1003Francesco T OstroskyItaly2024-04-08Feltz Printing Service RENEWAL65Amy Elsner
1004Maisha P MarrierFrance2024-04-03Feltz Printing Service UNQUALIFIED52Anna Fali
1005Alejandro J StockhamRussia2024-04-15Dorl, James J Esq PROPOSAL64Asiya Javayant
1006Izzy T MarrierGermany2024-03-29Feltz Printing Service QUALIFIED36Elwin Sharvill
1007Tony L CaudyAustralia2024-04-04Chanay, Jeffrey A Esq QUALIFIED72Asiya Javayant
1008Jefferson I FlosiCanada2024-04-07Rousseaux, Michael Esq NEW79Asiya Javayant
1009Aditya K CaudyItaly2024-04-10Feiner Bros QUALIFIED7Bernardo Dominic
1010Juan E SlusarskiCanada2024-03-31Feltz Printing Service UNQUALIFIED36Ioni Bowcher
1011Tony I FollerIndia2024-04-17Benton, John B Jr NEGOTIATION88Ivan Magalhaes
1012Silvio E TollnerUnited Kingdom2024-04-25King, Christopher A Esq PROPOSAL18Bernardo Dominic
1013Silvio U InouyeJapan2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED18Asiya Javayant
1014Murillo W SlusarskiItaly2024-04-05Printing Dimensions PROPOSAL24Ivan Magalhaes
1015Emily C PerinIndia2024-04-11Rousseaux, Michael Esq NEGOTIATION9Onyama Limba
1016Emily D FollerAustralia2024-04-04Benton, John B Jr NEW40Ivan Magalhaes
1017Silvio H RulapaughAustralia2024-04-21King, Christopher A Esq PROPOSAL16Stephen Shaw
1018Antonio I StensethUnited Kingdom2024-04-15Morlong Associates QUALIFIED67Ivan Magalhaes
1019Deepesh A SlusarskiIndia2024-04-18Dorl, James J Esq PROPOSAL14Ioni Bowcher
1020Juan M WieserSpain2024-04-18Chemel, James L Cpa NEGOTIATION0Anna Fali
1021Izzy H CaudyRussia2024-04-24Printing Dimensions NEW58Xuxue Feng
1022David S IturbideIndia2024-04-14Morlong Associates UNQUALIFIED59Onyama Limba
1023Mujtaba Z BowleyRussia2024-04-19Feiner Bros PROPOSAL43Asiya Javayant
1024Leja Q FerenczCanada2024-04-21Feiner Bros NEW20Stephen Shaw
1025Stacey S DoeArgentina2024-04-14Benton, John B Jr NEW88Asiya Javayant
1026Murillo C PaprockiAustralia2024-04-08Chapman, Ross E Esq NEW80Ioni Bowcher
1027Faith E KolmetzCanada2024-04-10Chanay, Jeffrey A Esq NEGOTIATION67Bernardo Dominic
1028Morrow F OldroydSpain2024-04-14Chanay, Jeffrey A Esq UNQUALIFIED39Amy Elsner
1029Deepesh T GauchoJapan2024-03-29Benton, John B Jr QUALIFIED70Xuxue Feng
1030Murillo L GarufiRussia2024-04-22Feiner Bros NEGOTIATION81Ivan Magalhaes
1031Jefferson V NickaBrazil2024-04-13Feltz Printing Service NEGOTIATION58Asiya Javayant
1032Aruna V GarufiBrazil2024-04-21Benton, John B Jr UNQUALIFIED74Elwin Sharvill
1033Mujtaba T FlosiArgentina2024-04-04Dorl, James J Esq QUALIFIED0Elwin Sharvill
1034Greenwood N MaletBrazil2024-04-13Chapman, Ross E Esq QUALIFIED58Amy Elsner
1035Morrow L StockhamIndia2024-03-31Dorl, James J Esq UNQUALIFIED28Asiya Javayant
1036Francesco P RulapaughSpain2024-04-16Chapman, Ross E Esq RENEWAL20Bernardo Dominic
1037Rodrigues Z BriddickArgentina2024-04-13Rangoni Of Florence NEW65Elwin Sharvill
1038Cody O ShinkoAustralia2024-04-13Buckley Miller Wright NEW33Ioni Bowcher
1039Jefferson P SergiBrazil2024-04-24Feiner Bros QUALIFIED79Bernardo Dominic
1040Mujtaba G BriddickBrazil2024-04-13Rousseaux, Michael Esq NEW56Asiya Javayant
1041Darci P ButtArgentina2024-03-30Chanay, Jeffrey A Esq QUALIFIED8Xuxue Feng
1042Stacey L PerinBrazil2024-04-20Chanay, Jeffrey A Esq RENEWAL85Amy Elsner
1043Darci D MaletArgentina2024-04-09Commercial Press PROPOSAL81Xuxue Feng
1044Aruna V MorascaArgentina2024-04-05Feiner Bros UNQUALIFIED87Bernardo Dominic
1045Isabel V WhobreyBrazil2024-04-22Benton, John B Jr QUALIFIED91Amy Elsner
1046Stacey O WieserSpain2024-04-19Printing Dimensions UNQUALIFIED30Ioni Bowcher
1047Francesco I PaprockiArgentina2024-04-26Rousseaux, Michael Esq NEW74Anna Fali
1048Jeanfrancois H NestleBrazil2024-04-15Morlong Associates RENEWAL36Anna Fali
1049Nicolas I PerinItaly2024-03-31Commercial Press NEW91Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Clifford K VenereCanadaStephen Shaw PROPOSAL
Isabel A GillianGermanyAsiya Javayant NEW
Stacey O MaletJapanBernardo Dominic PROPOSAL
Leja M RimCanadaIvan Magalhaes RENEWAL
Mujtaba C GauchoIndiaStephen Shaw NEW
Mayumi Q BologniaBrazilIvan Magalhaes UNQUALIFIED
Alejandro A FlosiBrazilXuxue Feng RENEWAL
Faith J PaprockiGermanyBernardo Dominic PROPOSAL
Maisha E GauchoJapanOnyama Limba NEGOTIATION
Adams X WhobreyArgentinaIoni Bowcher RENEWAL
Stacey A OstroskyRussiaAnna Fali UNQUALIFIED
Costa N PoquetteGermanyAnna Fali UNQUALIFIED
Greenwood P FlosiSpainOnyama Limba UNQUALIFIED
Sinclair N StockhamRussiaAmy Elsner RENEWAL
James U DoeRussiaOnyama Limba NEW
Alejandro Y KuskoAustraliaBernardo Dominic UNQUALIFIED
Chavez Z BologniaCanadaOnyama Limba NEW
Sinclair J FerenczRussiaXuxue Feng NEW
Adams Z RimItalyElwin Sharvill PROPOSAL
Murillo I GillianRussiaIoni Bowcher PROPOSAL
Smith N IturbideUnited KingdomXuxue Feng NEW
Tony U RutaSpainAsiya Javayant NEW
Rodrigues P KuskoFranceAmy Elsner PROPOSAL
Costa X MaletFranceStephen Shaw QUALIFIED
Ashley H ChuiUnited KingdomIoni Bowcher NEW
Alejandro G SlusarskiRussiaXuxue Feng RENEWAL
Julie F StensethUnited KingdomIvan Magalhaes UNQUALIFIED
Munro D SlusarskiUnited KingdomAmy Elsner QUALIFIED
Antonio M InouyeBrazilIvan Magalhaes QUALIFIED
Munro Z OldroydAustraliaAmy Elsner RENEWAL
Jones C MaletGermanyStephen Shaw RENEWAL
Jennifer Z ChuiCanadaIvan Magalhaes NEW
Ashley R FigeroaSpainOnyama Limba NEW
Francesco C PerinArgentinaAsiya Javayant QUALIFIED
Alejandro I AlbaresBrazilElwin Sharvill NEGOTIATION
Sinclair J BologniaBrazilAsiya Javayant NEW
Emily L GauchoGermanyElwin Sharvill PROPOSAL
Ivar B OstroskyGermanyIvan Magalhaes NEGOTIATION
Ivar V GillianSpainElwin Sharvill PROPOSAL
Jefferson T ShinkoSpainAnna Fali NEW
Nicolas F VenereRussiaBernardo Dominic UNQUALIFIED
Octavia F DilliardItalyBernardo Dominic NEGOTIATION
Ivar P PoquetteGermanyAsiya Javayant UNQUALIFIED
Faith A ButtJapanAsiya Javayant PROPOSAL
Salvatore A GauchoSpainIoni Bowcher RENEWAL
Alejandro Y FollerItalyIvan Magalhaes PROPOSAL
Wickens I PerinJapanIvan Magalhaes QUALIFIED
Maisha F FollerRussiaAmy Elsner RENEWAL
Kaitlin O GauchoUnited KingdomBernardo Dominic NEW
Maria B WhobreyGermanyIoni Bowcher QUALIFIED
Frozen Columns
Name
Francesco F Kusko
Tony I Sergi
Jeanfrancois V Caldarera
Murillo T Malet
Jennifer I Waycott
Greenwood U Butt
Maisha X Slusarski
Aditya L Waycott
Claire A Oldroyd
Salvatore Y Slusarski
Antonio S Caudy
Clifford M Butt
Antonio O Foller
Leja Y Malet
Jones H Nicka
Leja F Inouye
Adams I Malet
Munro O Ruta
Rodrigues I Vocelka
Morrow E Dilliard
Jefferson M Glick
Aruna E Paprocki
Nicolas Q Gaucho
Murillo I Ruta
Maisha Y Shinko
Salvatore G Stenseth
Clifford C Rulapaugh
Izzy E Sergi
Morrow E Briddick
Silvio Z Butt
Tony N Paprocki
Juan W Schemmer
Arvin W Garufi
Kaitlin S Tollner
Adams Y Caudy
Chavez S Albares
Emily U Inouye
Arvin J Garufi
Aruna P Stenseth
Stacey Q Ostrosky
Emily A Vocelka
Jeanfrancois A Nestle
Emily Z Flosi
Arvin R Chui
Arvin E Slusarski
Jones W Gaucho
Tony J Rulapaugh
Aika L Paprocki
Octavia P Flosi
Julie F Doe
IdCountryDate
1000United Kingdom2024-04-19
1001United Kingdom2024-04-20
1002Brazil2024-04-08
1003Brazil2024-04-09
1004Italy2024-03-30
1005United Kingdom2024-03-28
1006France2024-03-31
1007United Kingdom2024-04-09
1008India2024-04-17
1009India2024-04-05
1010Brazil2024-04-19
1011Brazil2024-03-31
1012India2024-04-04
1013Spain2024-04-18
1014Brazil2024-04-06
1015Australia2024-04-08
1016Argentina2024-04-11
1017Russia2024-04-19
1018Brazil2024-04-26
1019Argentina2024-04-09
1020United Kingdom2024-04-25
1021Japan2024-04-02
1022Australia2024-04-23
1023Canada2024-04-04
1024India2024-04-25
1025Brazil2024-03-29
1026Brazil2024-04-06
1027Argentina2024-04-17
1028Australia2024-04-26
1029Argentina2024-04-17
1030Argentina2024-04-25
1031Japan2024-04-21
1032Argentina2024-04-16
1033India2024-04-19
1034Germany2024-04-26
1035United Kingdom2024-04-03
1036Argentina2024-04-22
1037Australia2024-04-17
1038France2024-04-24
1039Canada2024-04-12
1040India2024-04-20
1041France2024-04-21
1042Russia2024-04-26
1043United Kingdom2024-03-31
1044Japan2024-04-03
1045France2024-04-06
1046Japan2024-04-12
1047Spain2024-04-22
1048Canada2024-04-22
1049Argentina2024-04-14

On-Demand Data

NameIdCountryDate
Kadeem A Garufi1000Italy2024-04-04
Smith F Flosi1001Germany2024-03-30
Emily G Tollner1002Australia2024-04-21
Misaki B Bowley1003Canada2024-04-20
Jefferson G Rim1004Brazil2024-04-14
Munro X Paprocki1005Brazil2024-04-01
Wickens E Ferencz1006United Kingdom2024-04-10
Leja C Iturbide1007Australia2024-04-01
Wickens N Stenseth1008Argentina2024-03-29
Jefferson L Doe1009Germany2024-04-01
Alejandro P Nicka1010United Kingdom2024-04-07
Izzy H Albares1011France2024-04-17
Aruna H Whobrey1012Brazil2024-04-25
Salvatore Y Schemmer1013Australia2024-04-14
Jennifer T Briddick1014Argentina2024-04-05
Clifford L Vocelka1015India2024-04-12
Antonio S Oldroyd1016Italy2024-04-23
Maria Z Shinko1017India2024-03-31
Francesco E Ostrosky1018France2024-04-14
Costa T Darakjy1019India2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody A StockhamArgentinaIoni Bowcher QUALIFIED
Clifford V CaudyGermanyIvan Magalhaes NEW
Kadeem G MaletRussiaElwin Sharvill NEW
Stacey V KolmetzJapanAmy Elsner UNQUALIFIED
Stacey F AmigonCanadaAsiya Javayant NEW
Juan F SergiRussiaStephen Shaw PROPOSAL
Nicolas A CaldareraGermanyBernardo Dominic NEW
Leon B DoeJapanIvan Magalhaes PROPOSAL
Darci D StensethIndiaStephen Shaw UNQUALIFIED
Octavia U FlosiSpainStephen Shaw UNQUALIFIED
Deepesh Z VocelkaIndiaAnna Fali NEGOTIATION
Leja Y NickaJapanXuxue Feng PROPOSAL
Smith S DoeFranceStephen Shaw PROPOSAL
Maria U WieserJapanXuxue Feng UNQUALIFIED
Leon E FigeroaSpainAmy Elsner RENEWAL
Smith X FlosiIndiaStephen Shaw QUALIFIED
Kaitlin Y NickaUnited KingdomStephen Shaw NEW
Alejandro T SchemmerRussiaXuxue Feng NEGOTIATION
Kadeem M CampainJapanXuxue Feng NEGOTIATION
Mayumi V IturbideRussiaXuxue Feng UNQUALIFIED
Clifford Q NestleRussiaBernardo Dominic NEGOTIATION
Arvin C RulapaughItalyBernardo Dominic NEGOTIATION
Ivar L RutaSpainAnna Fali UNQUALIFIED
Leja R GillianUnited KingdomAnna Fali UNQUALIFIED
Juan H CaldareraJapanAsiya Javayant PROPOSAL
James V FollerArgentinaStephen Shaw UNQUALIFIED
Leja X MarrierAustraliaAsiya Javayant QUALIFIED
Leja Q IturbideSpainAsiya Javayant PROPOSAL
Jeanfrancois R WieserUnited KingdomAnna Fali NEW
Julie X MaletBrazilOnyama Limba PROPOSAL
Morrow B KolmetzFranceStephen Shaw RENEWAL
Adams C KolmetzIndiaStephen Shaw PROPOSAL
Antonio R VocelkaIndiaOnyama Limba PROPOSAL
Chavez T BologniaBrazilOnyama Limba PROPOSAL
Greenwood Q WieserBrazilStephen Shaw QUALIFIED
Aruna D AlbaresFranceOnyama Limba UNQUALIFIED
Costa U WieserJapanAnna Fali NEGOTIATION
Rodrigues B SchemmerArgentinaAnna Fali NEGOTIATION
Chavez E MorascaBrazilStephen Shaw PROPOSAL
Nicolas P AlbaresJapanAmy Elsner 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>