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
Stacey X OldroydFranceBernardo Dominic NEW
Jones Y BowleySpainXuxue Feng QUALIFIED
Leon G MorascaBrazilElwin Sharvill QUALIFIED
Kadeem X ButtAustraliaAsiya Javayant UNQUALIFIED
Kadeem C SchemmerCanadaOnyama Limba NEGOTIATION
Jennifer O WaycottBrazilIvan Magalhaes PROPOSAL
Aruna N StockhamArgentinaXuxue Feng RENEWAL
Darci C FerenczRussiaAnna Fali RENEWAL
Francesco F CaudySpainStephen Shaw NEGOTIATION
Julie L MaletAustraliaAsiya Javayant PROPOSAL
Jones W PoquetteSpainAsiya Javayant NEGOTIATION
Izzy V GarufiAustraliaOnyama Limba NEGOTIATION
Darci T SchemmerArgentinaOnyama Limba QUALIFIED
Sinclair S AmigonAustraliaElwin Sharvill RENEWAL
Morrow K RutaCanadaXuxue Feng PROPOSAL
Sinclair B DilliardSpainAnna Fali RENEWAL
Adams I GillianAustraliaAnna Fali QUALIFIED
Claire L GarufiBrazilOnyama Limba QUALIFIED
Deepesh O GlickBrazilAmy Elsner NEW
Smith I GillianArgentinaElwin Sharvill NEGOTIATION
Ricardo J RutaBrazilStephen Shaw UNQUALIFIED
Octavia K DoeRussiaAnna Fali NEGOTIATION
Tony B CampainFranceAnna Fali UNQUALIFIED
Francesco D MarrierJapanAsiya Javayant RENEWAL
Stacey A PoquetteArgentinaIoni Bowcher QUALIFIED
Francesco H CaldareraIndiaAsiya Javayant PROPOSAL
Morrow L FlosiBrazilBernardo Dominic PROPOSAL
Ricardo E GauchoAustraliaAsiya Javayant RENEWAL
Murillo B TollnerIndiaAnna Fali NEW
Emily F RimUnited KingdomAmy Elsner NEW
Tony D DarakjySpainElwin Sharvill UNQUALIFIED
Leja S RimGermanyOnyama Limba RENEWAL
Alejandro K SlusarskiGermanyAnna Fali UNQUALIFIED
Clifford L VocelkaSpainIvan Magalhaes RENEWAL
James I BologniaRussiaElwin Sharvill NEW
Munro Y IturbideBrazilIvan Magalhaes PROPOSAL
Jeanfrancois U VenereCanadaOnyama Limba RENEWAL
Costa W BriddickArgentinaIvan Magalhaes UNQUALIFIED
Johnson U NickaItalyXuxue Feng QUALIFIED
Maria B MaletGermanyOnyama Limba NEW
Costa D RutaUnited KingdomOnyama Limba PROPOSAL
Murillo Z PaprockiRussiaAmy Elsner RENEWAL
Aditya V DarakjyFranceStephen Shaw UNQUALIFIED
Smith B NickaGermanyIoni Bowcher NEW
Emily U ChuiAustraliaStephen Shaw NEW
Aruna O TollnerGermanyIoni Bowcher PROPOSAL
Adams J PerinJapanBernardo Dominic UNQUALIFIED
Julie J DarakjyFranceOnyama Limba RENEWAL
Emily S DarakjyFranceIoni Bowcher PROPOSAL
James V StensethArgentinaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Salvatore X MaletSpainBernardo Dominic RENEWAL
Darci G SchemmerCanadaOnyama Limba RENEWAL
Wickens T SlusarskiRussiaIoni Bowcher RENEWAL
Jennifer N OstroskyUnited KingdomOnyama Limba UNQUALIFIED
Nicolas O StockhamRussiaStephen Shaw UNQUALIFIED
Juan Y StockhamFranceIoni Bowcher QUALIFIED
Tony F ButtArgentinaIoni Bowcher PROPOSAL
Wickens X SaylorsJapanIoni Bowcher NEW
Costa C DoeIndiaAsiya Javayant UNQUALIFIED
Isabel F IturbideUnited KingdomAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore V NestleJapan2024-04-12King, Christopher A Esq PROPOSAL14Elwin Sharvill
1001Silvio J BriddickBrazil2024-04-16Feiner Bros PROPOSAL82Amy Elsner
1002Aditya R MaletIndia2024-04-18King, Christopher A Esq QUALIFIED62Ivan Magalhaes
1003Chavez P MacleadRussia2024-03-28Commercial Press NEW80Xuxue Feng
1004Costa M FlosiFrance2024-04-09Benton, John B Jr NEW12Elwin Sharvill
1005Greenwood N CampainRussia2024-03-29Rousseaux, Michael Esq NEGOTIATION33Elwin Sharvill
1006Octavia G MarrierBrazil2024-04-02Feltz Printing Service QUALIFIED10Ivan Magalhaes
1007Juan A ChuiArgentina2024-04-04Commercial Press NEGOTIATION1Amy Elsner
1008Stacey B SergiIndia2024-04-06Commercial Press QUALIFIED92Amy Elsner
1009Arvin J WhobreyAustralia2024-04-05Truhlar And Truhlar Attys PROPOSAL37Bernardo Dominic
1010Kadeem T WaycottUnited Kingdom2024-03-27Truhlar And Truhlar Attys QUALIFIED29Amy Elsner
1011Jones V WhobreySpain2024-04-13Rousseaux, Michael Esq PROPOSAL65Ioni Bowcher
1012Stacey L FerenczArgentina2024-04-13Morlong Associates RENEWAL29Amy Elsner
1013Wickens L PerinJapan2024-03-28Morlong Associates UNQUALIFIED52Ioni Bowcher
1014Tony P WaycottSpain2024-04-16Chanay, Jeffrey A Esq UNQUALIFIED95Onyama Limba
1015Aika U SchemmerFrance2024-04-15Truhlar And Truhlar Attys QUALIFIED16Stephen Shaw
1016Wickens E BologniaArgentina2024-04-17Feiner Bros PROPOSAL41Onyama Limba
1017Juan F FerenczFrance2024-04-02Feiner Bros NEGOTIATION11Ivan Magalhaes
1018Rodrigues J RoysterFrance2024-04-05Chapman, Ross E Esq PROPOSAL6Amy Elsner
1019Claire F PoquetteAustralia2024-03-25Rangoni Of Florence RENEWAL13Ivan Magalhaes
1020Juan O SaylorsFrance2024-03-31Buckley Miller Wright NEW77Anna Fali
1021Mujtaba L FerenczGermany2024-04-15Dorl, James J Esq NEW64Ioni Bowcher
1022Ivar I WaycottRussia2024-04-03Dorl, James J Esq NEW59Anna Fali
1023Darci J GlickJapan2024-04-11Rangoni Of Florence NEW31Ioni Bowcher
1024Johnson R DoeItaly2024-03-25Chemel, James L Cpa RENEWAL86Amy Elsner
1025Faith A DilliardUnited Kingdom2024-04-08Buckley Miller Wright RENEWAL91Elwin Sharvill
1026Wickens E PaprockiArgentina2024-04-17Printing Dimensions NEW20Elwin Sharvill
1027Rodrigues T PoquetteJapan2024-03-29Buckley Miller Wright RENEWAL81Anna Fali
1028Ivar O GlickBrazil2024-03-31Dorl, James J Esq PROPOSAL44Ioni Bowcher
1029Aika F NestleIndia2024-04-07Feiner Bros UNQUALIFIED69Bernardo Dominic
1030Jones M GillianIndia2024-03-28Buckley Miller Wright RENEWAL33Stephen Shaw
1031Chavez Z DilliardUnited Kingdom2024-04-03Chanay, Jeffrey A Esq NEGOTIATION20Ivan Magalhaes
1032Arvin G SergiUnited Kingdom2024-04-04Feiner Bros RENEWAL73Elwin Sharvill
1033Emily T PoquetteGermany2024-04-22Chapman, Ross E Esq PROPOSAL94Ioni Bowcher
1034Isabel I MaletArgentina2024-03-29Rousseaux, Michael Esq UNQUALIFIED97Xuxue Feng
1035Stacey J IturbideFrance2024-03-28Rousseaux, Michael Esq NEGOTIATION73Onyama Limba
1036Mayumi U ShinkoAustralia2024-04-01Rangoni Of Florence QUALIFIED17Onyama Limba
1037Rodrigues T StockhamArgentina2024-03-31Buckley Miller Wright NEW6Elwin Sharvill
1038Smith M GlickCanada2024-04-06Chanay, Jeffrey A Esq NEW76Xuxue Feng
1039Izzy O FigeroaIndia2024-04-13Morlong Associates PROPOSAL3Asiya Javayant
1040Adams H ChuiJapan2024-04-15Chanay, Jeffrey A Esq RENEWAL67Amy Elsner
1041Misaki Y GlickItaly2024-04-04Feltz Printing Service UNQUALIFIED14Xuxue Feng
1042Kadeem H KuskoRussia2024-04-05Chanay, Jeffrey A Esq PROPOSAL64Asiya Javayant
1043Clifford X RulapaughArgentina2024-04-22Dorl, James J Esq QUALIFIED68Ivan Magalhaes
1044Aika M ChuiSpain2024-04-08Rousseaux, Michael Esq RENEWAL33Amy Elsner
1045Smith O CaudyFrance2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED84Onyama Limba
1046Emily T InouyeIndia2024-04-14Dorl, James J Esq RENEWAL54Xuxue Feng
1047Costa R CampainIndia2024-04-06Truhlar And Truhlar Attys RENEWAL65Asiya Javayant
1048Ashley Q WieserBrazil2024-04-06Truhlar And Truhlar Attys RENEWAL60Ivan Magalhaes
1049Aika P SlusarskiAustralia2024-04-14Chanay, Jeffrey A Esq RENEWAL91Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Adams O InouyeUnited KingdomIvan Magalhaes NEGOTIATION
Nicolas C CaldareraFranceIoni Bowcher RENEWAL
Arvin X TollnerAustraliaAsiya Javayant NEW
Silvio V DilliardUnited KingdomAsiya Javayant PROPOSAL
Cody A MorascaJapanAmy Elsner NEGOTIATION
Smith F OldroydGermanyAsiya Javayant RENEWAL
Nicolas D SchemmerUnited KingdomXuxue Feng PROPOSAL
Alejandro T SergiBrazilOnyama Limba PROPOSAL
Morrow V SergiIndiaAsiya Javayant NEW
Johnson D RutaGermanyElwin Sharvill NEGOTIATION
Kaitlin U BologniaAustraliaIoni Bowcher NEGOTIATION
Claire Z FerenczIndiaAmy Elsner UNQUALIFIED
Deepesh P RulapaughAustraliaElwin Sharvill QUALIFIED
Cody F MorascaFranceIoni Bowcher QUALIFIED
Johnson A FollerItalyIvan Magalhaes QUALIFIED
Ricardo N MacleadRussiaBernardo Dominic NEW
Nicolas B MorascaJapanIoni Bowcher PROPOSAL
Murillo R DilliardItalyElwin Sharvill QUALIFIED
Smith S ButtCanadaBernardo Dominic RENEWAL
Juan L CaldareraSpainXuxue Feng QUALIFIED
Izzy J TollnerRussiaXuxue Feng PROPOSAL
Arvin W NickaIndiaElwin Sharvill NEGOTIATION
Ivar B VenereCanadaBernardo Dominic QUALIFIED
Chavez R KolmetzRussiaIvan Magalhaes QUALIFIED
Misaki T OldroydRussiaElwin Sharvill NEGOTIATION
Ashley S GillianJapanAnna Fali PROPOSAL
Aika E PoquetteUnited KingdomAnna Fali RENEWAL
Mayumi I AlbaresCanadaStephen Shaw PROPOSAL
Kadeem E SlusarskiAustraliaElwin Sharvill PROPOSAL
Julie E IturbideArgentinaIvan Magalhaes QUALIFIED
James U GlickRussiaXuxue Feng RENEWAL
Mayumi L SaylorsItalyIvan Magalhaes PROPOSAL
Aika N BologniaFranceXuxue Feng QUALIFIED
Stacey Z TollnerItalyElwin Sharvill PROPOSAL
Juan V PerinArgentinaIoni Bowcher NEW
Francesco N DarakjyJapanIoni Bowcher NEGOTIATION
Clifford W OstroskyJapanAsiya Javayant NEGOTIATION
Chavez X MaletGermanyIvan Magalhaes UNQUALIFIED
Aruna S FigeroaJapanIoni Bowcher NEGOTIATION
Jones U SlusarskiUnited KingdomAsiya Javayant NEW
Mujtaba W FerenczArgentinaXuxue Feng PROPOSAL
Isabel G DilliardCanadaAnna Fali UNQUALIFIED
Kadeem L GarufiAustraliaIoni Bowcher PROPOSAL
Johnson F StockhamIndiaElwin Sharvill QUALIFIED
James T InouyeGermanyAmy Elsner PROPOSAL
Jeanfrancois J FollerFranceOnyama Limba NEGOTIATION
Kaitlin X NickaIndiaIvan Magalhaes RENEWAL
Nicolas R ButtFranceAmy Elsner UNQUALIFIED
Antonio U WhobreyJapanElwin Sharvill PROPOSAL
Morrow K PerinAustraliaXuxue Feng UNQUALIFIED
Frozen Columns
Name
Jefferson J Vocelka
Clifford Z Rulapaugh
Juan V Chui
Ashley Y Amigon
Jones X Briddick
Murillo S Poquette
Misaki X Malet
Octavia I Butt
Jennifer O Rulapaugh
Arvin G Sergi
Arvin Y Malet
Jeanfrancois M Chui
Faith C Amigon
Julie U Maclead
Murillo Q Chui
Stacey A Briddick
Francesco Y Slusarski
Maisha T Caudy
Sinclair L Figeroa
Deepesh B Foller
Alejandro J Bolognia
Antonio M Kusko
Chavez N Butt
Izzy D Shinko
Emily Y Slusarski
Francesco G Sergi
Greenwood C Kusko
Maisha R Kusko
Antonio B Stenseth
Jennifer D Flosi
Octavia L Marrier
Ashley W Oldroyd
Kaitlin Q Doe
Maria U Maclead
Silvio T Shinko
Rodrigues Y Caldarera
Jefferson B Bowley
Ashley M Albares
Tony Q Paprocki
Juan K Glick
Octavia L Oldroyd
Arvin Y Ruta
Murillo V Rim
Greenwood T Inouye
Mayumi H Campain
James H Flosi
James Z Schemmer
Ashley Y Iturbide
Emily V Flosi
Salvatore B Rulapaugh
IdCountryDate
1000Japan2024-04-01
1001Canada2024-04-04
1002Russia2024-04-07
1003France2024-04-15
1004France2024-04-22
1005Spain2024-04-23
1006Russia2024-04-20
1007France2024-04-22
1008France2024-04-02
1009Argentina2024-04-16
1010Brazil2024-03-29
1011Brazil2024-04-22
1012Japan2024-04-19
1013Italy2024-04-11
1014United Kingdom2024-04-12
1015Italy2024-04-22
1016Spain2024-04-14
1017United Kingdom2024-03-25
1018Germany2024-04-16
1019Germany2024-04-11
1020Germany2024-03-30
1021United Kingdom2024-04-03
1022Brazil2024-03-29
1023Australia2024-03-27
1024Australia2024-03-25
1025Spain2024-04-21
1026France2024-04-21
1027India2024-03-31
1028Germany2024-04-18
1029United Kingdom2024-04-02
1030France2024-04-23
1031Spain2024-04-11
1032Australia2024-04-02
1033Brazil2024-03-25
1034Germany2024-04-17
1035Italy2024-04-17
1036Brazil2024-03-30
1037Japan2024-04-18
1038Argentina2024-04-18
1039Australia2024-04-08
1040Australia2024-04-04
1041Germany2024-04-02
1042Canada2024-04-21
1043Spain2024-04-08
1044France2024-03-27
1045Germany2024-03-30
1046Japan2024-04-01
1047Brazil2024-04-22
1048Argentina2024-04-09
1049Germany2024-03-29

On-Demand Data

NameIdCountryDate
Aika U Ostrosky1000Italy2024-04-06
Claire G Royster1001Italy2024-03-27
Isabel X Stockham1002Japan2024-03-29
Munro E Poquette1003Spain2024-04-04
Aditya Y Gaucho1004Argentina2024-04-06
Wickens O Amigon1005Russia2024-04-23
Mujtaba B Nicka1006Germany2024-04-11
Ashley G Malet1007Japan2024-04-11
Adams Q Caudy1008France2024-03-25
Smith D Ruta1009Germany2024-04-21
Jones U Bowley1010Canada2024-04-23
Ashley R Kusko1011Australia2024-04-21
Murillo O Foller1012India2024-03-29
Arvin U Ruta1013Italy2024-04-23
Antonio G Paprocki1014Australia2024-04-04
Misaki A Rim1015France2024-04-21
Isabel G Whobrey1016France2024-04-23
Munro Y Perin1017United Kingdom2024-04-08
Stacey R Doe1018Germany2024-04-02
Mayumi Z Malet1019Russia2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie P ShinkoUnited KingdomAsiya Javayant RENEWAL
Jennifer E SaylorsSpainBernardo Dominic UNQUALIFIED
Adams L FollerIndiaAnna Fali RENEWAL
Isabel L PoquetteArgentinaStephen Shaw UNQUALIFIED
Alejandro W DarakjyItalyAmy Elsner NEGOTIATION
Clifford M CaldareraFranceIvan Magalhaes PROPOSAL
Darci P VenereJapanIvan Magalhaes NEW
Jeanfrancois Y VenereAustraliaAsiya Javayant NEGOTIATION
Deepesh D InouyeSpainXuxue Feng RENEWAL
Chavez Z InouyeArgentinaIvan Magalhaes QUALIFIED
Silvio W BowleyUnited KingdomElwin Sharvill QUALIFIED
Alejandro O BowleyGermanyXuxue Feng QUALIFIED
Claire M PaprockiSpainAnna Fali NEGOTIATION
Sinclair A GauchoJapanAsiya Javayant NEW
Jefferson W AmigonSpainIvan Magalhaes NEW
Morrow D SlusarskiCanadaIvan Magalhaes NEGOTIATION
Rodrigues U StockhamBrazilXuxue Feng NEGOTIATION
James F MacleadFranceAnna Fali QUALIFIED
Isabel O OldroydJapanOnyama Limba UNQUALIFIED
Juan S VenereRussiaIoni Bowcher NEGOTIATION
Jones Y SchemmerBrazilIvan Magalhaes NEGOTIATION
Maisha Y SergiCanadaXuxue Feng PROPOSAL
Costa L NestleIndiaAsiya Javayant UNQUALIFIED
Mayumi G KolmetzBrazilAsiya Javayant QUALIFIED
Chavez J GarufiGermanyIoni Bowcher NEW
Claire O PoquetteGermanyIvan Magalhaes NEGOTIATION
Jones B AmigonJapanElwin Sharvill UNQUALIFIED
Misaki O GarufiUnited KingdomIvan Magalhaes NEW
Claire R ChuiItalyIoni Bowcher NEGOTIATION
Octavia D VocelkaSpainIoni Bowcher NEW
Silvio G WieserUnited KingdomAnna Fali RENEWAL
Tony H FlosiCanadaStephen Shaw PROPOSAL
Adams A NickaCanadaIoni Bowcher QUALIFIED
Isabel R PerinAustraliaElwin Sharvill PROPOSAL
Mujtaba F GlickGermanyIvan Magalhaes UNQUALIFIED
Smith V SlusarskiUnited KingdomAsiya Javayant NEW
James H FollerAustraliaIvan Magalhaes NEGOTIATION
Rodrigues Y PoquetteJapanIvan Magalhaes UNQUALIFIED
Chavez I NestleJapanBernardo Dominic UNQUALIFIED
Jefferson X DarakjyUnited KingdomXuxue Feng 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>