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
Silvio T TollnerItalyXuxue Feng NEGOTIATION
Kaitlin A WhobreyFranceElwin Sharvill QUALIFIED
Morrow L InouyeCanadaElwin Sharvill NEW
Clifford S RoysterAustraliaXuxue Feng QUALIFIED
Silvio H PerinUnited KingdomAsiya Javayant QUALIFIED
Isabel Y FollerArgentinaStephen Shaw QUALIFIED
Costa N BologniaCanadaAmy Elsner NEW
Greenwood O GarufiRussiaIoni Bowcher PROPOSAL
Rodrigues U KuskoGermanyStephen Shaw PROPOSAL
Munro J WieserIndiaAnna Fali NEGOTIATION
Clifford E StensethSpainXuxue Feng NEGOTIATION
Deepesh H WaycottItalyOnyama Limba RENEWAL
Salvatore J DoeIndiaElwin Sharvill QUALIFIED
Emily H WhobreyIndiaIoni Bowcher RENEWAL
Stacey B InouyeFranceAsiya Javayant RENEWAL
Ivar P OldroydJapanXuxue Feng NEGOTIATION
Arvin Z RutaFranceElwin Sharvill RENEWAL
Clifford B MarrierArgentinaAnna Fali QUALIFIED
Leja B TollnerJapanAnna Fali QUALIFIED
Francesco M FerenczGermanyOnyama Limba PROPOSAL
Silvio I ChuiCanadaBernardo Dominic QUALIFIED
Nicolas R FigeroaCanadaOnyama Limba QUALIFIED
Silvio T FlosiAustraliaOnyama Limba NEW
Sinclair T MorascaAustraliaIoni Bowcher QUALIFIED
Sinclair H IturbideItalyBernardo Dominic RENEWAL
Misaki O BologniaRussiaAsiya Javayant PROPOSAL
Leja F NickaSpainAsiya Javayant PROPOSAL
Morrow W ButtRussiaAsiya Javayant UNQUALIFIED
Jennifer D WhobreyRussiaAsiya Javayant RENEWAL
Misaki G WhobreyBrazilAnna Fali NEGOTIATION
Francesco X StensethItalyAmy Elsner PROPOSAL
Cody P FerenczSpainStephen Shaw RENEWAL
Alejandro I GlickCanadaElwin Sharvill PROPOSAL
Alejandro T AlbaresJapanAnna Fali UNQUALIFIED
Chavez X DoeSpainAnna Fali PROPOSAL
Munro E StensethIndiaBernardo Dominic QUALIFIED
Salvatore M WhobreyCanadaAnna Fali NEGOTIATION
Cody J PerinSpainElwin Sharvill NEGOTIATION
Francesco T StensethBrazilXuxue Feng NEGOTIATION
Silvio S CampainItalyElwin Sharvill UNQUALIFIED
Ricardo S GlickGermanyIoni Bowcher RENEWAL
Morrow J WaycottIndiaBernardo Dominic UNQUALIFIED
Misaki S MaletSpainOnyama Limba NEGOTIATION
Costa P SchemmerGermanyIvan Magalhaes RENEWAL
Silvio K MarrierFranceIoni Bowcher QUALIFIED
Faith K MaletFranceIoni Bowcher NEW
Smith X SergiBrazilBernardo Dominic RENEWAL
Adams P WhobreyIndiaAmy Elsner RENEWAL
Alejandro T BologniaUnited KingdomIoni Bowcher QUALIFIED
Antonio D NestleSpainStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Silvio E NickaBrazilAmy Elsner QUALIFIED
Julie T RoysterSpainOnyama Limba PROPOSAL
Maria T SaylorsArgentinaIvan Magalhaes RENEWAL
Francesco P VocelkaIndiaIoni Bowcher NEW
Izzy H FlosiSpainAnna Fali PROPOSAL
Ivar L BologniaIndiaAmy Elsner UNQUALIFIED
Misaki W SergiUnited KingdomAnna Fali QUALIFIED
Ricardo N NickaBrazilXuxue Feng RENEWAL
Kaitlin X ShinkoSpainIvan Magalhaes RENEWAL
Isabel M ChuiBrazilStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi B DoeArgentina2024-04-23Chapman, Ross E Esq NEGOTIATION30Stephen Shaw
1001Maria L PoquetteAustralia2024-04-23King, Christopher A Esq QUALIFIED16Asiya Javayant
1002Maisha S DarakjyItaly2024-04-02Dorl, James J Esq PROPOSAL34Amy Elsner
1003Ashley W GlickItaly2024-04-12Rousseaux, Michael Esq UNQUALIFIED61Anna Fali
1004Leon V SchemmerAustralia2024-04-02Morlong Associates PROPOSAL75Onyama Limba
1005Juan W FlosiJapan2024-04-03Benton, John B Jr NEGOTIATION5Stephen Shaw
1006Octavia J MaletRussia2024-04-21Feiner Bros UNQUALIFIED42Amy Elsner
1007Deepesh B MaletFrance2024-04-05Feltz Printing Service QUALIFIED28Onyama Limba
1008Aditya D VocelkaBrazil2024-04-20King, Christopher A Esq RENEWAL11Ivan Magalhaes
1009Francesco E TollnerFrance2024-03-29Truhlar And Truhlar Attys UNQUALIFIED89Bernardo Dominic
1010Tony K KolmetzBrazil2024-04-01Printing Dimensions NEGOTIATION14Asiya Javayant
1011Antonio T RutaItaly2024-04-03Morlong Associates UNQUALIFIED89Amy Elsner
1012Misaki V DilliardRussia2024-04-19Feiner Bros NEW56Elwin Sharvill
1013Ricardo S FerenczJapan2024-04-11Morlong Associates NEW2Onyama Limba
1014Emily W SergiItaly2024-04-22Benton, John B Jr UNQUALIFIED45Ivan Magalhaes
1015Misaki R IturbideSpain2024-04-19King, Christopher A Esq UNQUALIFIED9Elwin Sharvill
1016Jefferson D FerenczGermany2024-03-29King, Christopher A Esq QUALIFIED66Ioni Bowcher
1017Arvin U ButtFrance2024-04-19Rousseaux, Michael Esq PROPOSAL9Ioni Bowcher
1018Kaitlin G RimAustralia2024-03-30Dorl, James J Esq QUALIFIED10Asiya Javayant
1019Mujtaba R DoeArgentina2024-04-24Chanay, Jeffrey A Esq PROPOSAL39Anna Fali
1020Chavez L PaprockiFrance2024-04-17Dorl, James J Esq QUALIFIED76Asiya Javayant
1021Jefferson M NickaUnited Kingdom2024-04-18Truhlar And Truhlar Attys RENEWAL26Stephen Shaw
1022Jeanfrancois M TollnerAustralia2024-04-22Chemel, James L Cpa QUALIFIED73Ivan Magalhaes
1023Leon B SaylorsRussia2024-04-14Benton, John B Jr UNQUALIFIED42Bernardo Dominic
1024Emily D MaletItaly2024-04-16King, Christopher A Esq PROPOSAL39Ioni Bowcher
1025Alejandro X InouyeAustralia2024-04-15Chemel, James L Cpa NEGOTIATION73Anna Fali
1026Misaki I MaletRussia2024-04-03Truhlar And Truhlar Attys QUALIFIED45Asiya Javayant
1027Kadeem S KuskoArgentina2024-03-31Rousseaux, Michael Esq NEW4Amy Elsner
1028Izzy Z ButtFrance2024-04-20Rangoni Of Florence NEGOTIATION99Ivan Magalhaes
1029Greenwood R TollnerAustralia2024-04-10Chapman, Ross E Esq PROPOSAL44Bernardo Dominic
1030Aika P DilliardJapan2024-04-09King, Christopher A Esq UNQUALIFIED2Onyama Limba
1031Johnson Z DarakjyArgentina2024-04-25Benton, John B Jr RENEWAL73Anna Fali
1032Izzy L RimFrance2024-04-01Rousseaux, Michael Esq NEW32Amy Elsner
1033Francesco F WieserGermany2024-04-09Feltz Printing Service PROPOSAL20Ioni Bowcher
1034Sinclair P RoysterJapan2024-04-13Morlong Associates NEW83Stephen Shaw
1035Jeanfrancois B MacleadBrazil2024-04-11Truhlar And Truhlar Attys QUALIFIED38Ivan Magalhaes
1036Smith T MarrierUnited Kingdom2024-04-17Chemel, James L Cpa UNQUALIFIED24Amy Elsner
1037Silvio K AlbaresSpain2024-04-21Chemel, James L Cpa UNQUALIFIED47Stephen Shaw
1038Munro P SlusarskiItaly2024-03-27Commercial Press NEW44Stephen Shaw
1039Darci P PoquetteGermany2024-04-25Morlong Associates PROPOSAL21Onyama Limba
1040Tony R DoeGermany2024-04-11Chemel, James L Cpa NEW85Ioni Bowcher
1041Alejandro Y MaletRussia2024-03-30Chapman, Ross E Esq RENEWAL29Bernardo Dominic
1042Jones Z PaprockiItaly2024-04-10Printing Dimensions UNQUALIFIED25Ioni Bowcher
1043Silvio Y SergiSpain2024-03-27Rangoni Of Florence UNQUALIFIED48Xuxue Feng
1044Sinclair K SchemmerFrance2024-04-02Rousseaux, Michael Esq PROPOSAL11Asiya Javayant
1045Faith W DarakjyAustralia2024-04-16Buckley Miller Wright UNQUALIFIED5Stephen Shaw
1046Silvio H ChuiArgentina2024-04-19Commercial Press NEW37Amy Elsner
1047Sinclair E PerinFrance2024-03-30Commercial Press NEW33Bernardo Dominic
1048Salvatore O CaudySpain2024-04-14Printing Dimensions QUALIFIED79Bernardo Dominic
1049Juan U DoeUnited Kingdom2024-04-19Rousseaux, Michael Esq UNQUALIFIED95Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Chavez K VenereCanadaElwin Sharvill QUALIFIED
Cody C SaylorsSpainElwin Sharvill QUALIFIED
Silvio E MarrierUnited KingdomAsiya Javayant NEGOTIATION
Antonio K StockhamUnited KingdomIvan Magalhaes QUALIFIED
Costa S ShinkoJapanXuxue Feng UNQUALIFIED
Greenwood Z CampainRussiaStephen Shaw QUALIFIED
Greenwood W CaldareraAustraliaElwin Sharvill QUALIFIED
Misaki K SaylorsIndiaOnyama Limba PROPOSAL
Jones Y SchemmerFranceBernardo Dominic UNQUALIFIED
Morrow A BriddickGermanyStephen Shaw UNQUALIFIED
Smith I DarakjyUnited KingdomXuxue Feng QUALIFIED
Costa J NickaItalyElwin Sharvill UNQUALIFIED
Ashley N PaprockiItalyAmy Elsner QUALIFIED
Francesco A CampainRussiaIvan Magalhaes NEW
Claire H ButtAustraliaIvan Magalhaes NEW
Cody F ChuiRussiaAsiya Javayant NEGOTIATION
Maisha D GarufiItalyAsiya Javayant UNQUALIFIED
Jefferson F DarakjyArgentinaAnna Fali QUALIFIED
Jeanfrancois N RimArgentinaXuxue Feng PROPOSAL
Rodrigues M SlusarskiSpainIoni Bowcher NEGOTIATION
Kaitlin D KuskoCanadaAmy Elsner NEGOTIATION
Deepesh R DilliardItalyBernardo Dominic NEGOTIATION
Francesco M WieserFranceBernardo Dominic UNQUALIFIED
Mujtaba Y CaldareraFranceAnna Fali RENEWAL
Ricardo L DarakjySpainAmy Elsner PROPOSAL
Aika F SlusarskiFranceAsiya Javayant NEW
Jeanfrancois K InouyeGermanyAmy Elsner PROPOSAL
Misaki S StensethSpainElwin Sharvill NEGOTIATION
Rodrigues B FlosiIndiaElwin Sharvill UNQUALIFIED
Kadeem H ButtJapanAnna Fali RENEWAL
Kadeem Y VenereArgentinaOnyama Limba RENEWAL
Aika M CampainUnited KingdomAsiya Javayant NEGOTIATION
Isabel D MaletJapanIoni Bowcher UNQUALIFIED
Ricardo X GillianJapanAsiya Javayant PROPOSAL
Darci S BriddickUnited KingdomAsiya Javayant PROPOSAL
Aditya M FollerCanadaStephen Shaw RENEWAL
Antonio C TollnerCanadaAmy Elsner PROPOSAL
Juan F CaldareraArgentinaOnyama Limba PROPOSAL
David F OldroydJapanAnna Fali NEW
Nicolas I GlickArgentinaIvan Magalhaes NEGOTIATION
Nicolas F FigeroaGermanyOnyama Limba RENEWAL
Rodrigues V KolmetzRussiaXuxue Feng RENEWAL
Salvatore X RoysterJapanAsiya Javayant RENEWAL
Sinclair S VenereAustraliaBernardo Dominic RENEWAL
Jeanfrancois X AlbaresGermanyElwin Sharvill RENEWAL
Jennifer T TollnerIndiaAsiya Javayant NEGOTIATION
Julie A StensethRussiaAsiya Javayant UNQUALIFIED
Darci F KolmetzBrazilIvan Magalhaes QUALIFIED
Aditya B DilliardRussiaXuxue Feng PROPOSAL
Maria N VocelkaCanadaIvan Magalhaes RENEWAL
Frozen Columns
Name
Silvio O Tollner
Aruna I Ruta
Octavia I Venere
Kadeem O Morasca
Kaitlin U Stenseth
Octavia J Paprocki
Aika V Briddick
Jefferson E Ruta
Cody B Oldroyd
Kaitlin A Darakjy
Misaki K Darakjy
Smith P Nestle
Adams K Darakjy
Greenwood C Chui
Deepesh C Campain
Munro B Maclead
Greenwood H Tollner
Arvin Z Maclead
Mayumi I Slusarski
Claire I Waycott
Smith J Oldroyd
James C Rulapaugh
Ricardo T Albares
Leon A Ruta
Leja O Whobrey
Aditya G Gillian
Chavez U Briddick
Ricardo Z Gaucho
Darci C Chui
Isabel H Rulapaugh
Nicolas S Gaucho
Clifford A Gaucho
Julie D Ostrosky
Adams C Wieser
Aika H Marrier
Deepesh K Bolognia
Ivar K Gaucho
Chavez V Ostrosky
Silvio L Amigon
Clifford N Ruta
Stacey W Venere
Maria X Briddick
Francesco I Ruta
Munro X Gaucho
Nicolas H Poquette
Stacey H Bolognia
Juan X Glick
Misaki L Malet
Alejandro O Figeroa
David B Paprocki
IdCountryDate
1000France2024-03-28
1001Russia2024-04-03
1002Italy2024-03-27
1003Australia2024-04-16
1004Italy2024-04-08
1005Argentina2024-04-08
1006France2024-03-29
1007India2024-04-13
1008Canada2024-04-11
1009Germany2024-03-31
1010Spain2024-04-23
1011India2024-04-10
1012France2024-04-01
1013Germany2024-04-05
1014France2024-04-24
1015Russia2024-04-03
1016Argentina2024-04-10
1017France2024-04-10
1018Germany2024-04-06
1019Japan2024-04-01
1020Italy2024-04-09
1021France2024-04-24
1022Brazil2024-04-02
1023Germany2024-04-16
1024Spain2024-04-09
1025India2024-04-22
1026Russia2024-04-16
1027Russia2024-04-21
1028Germany2024-03-27
1029Spain2024-04-20
1030Argentina2024-04-11
1031Brazil2024-04-15
1032India2024-03-28
1033United Kingdom2024-04-02
1034Germany2024-04-13
1035Japan2024-04-14
1036Australia2024-04-21
1037Canada2024-04-03
1038Argentina2024-04-19
1039Japan2024-04-25
1040Argentina2024-04-25
1041Spain2024-04-13
1042Spain2024-04-19
1043Germany2024-03-29
1044Germany2024-04-07
1045France2024-04-17
1046Germany2024-04-14
1047United Kingdom2024-04-18
1048Germany2024-04-22
1049Japan2024-04-16

On-Demand Data

NameIdCountryDate
Leon H Doe1000Australia2024-03-27
Jeanfrancois M Saylors1001Italy2024-03-31
Misaki Q Poquette1002France2024-04-14
Misaki P Dilliard1003India2024-04-02
Cody V Iturbide1004Brazil2024-03-31
Jefferson J Malet1005Russia2024-03-27
Wickens B Iturbide1006Italy2024-04-06
Aruna A Rulapaugh1007Canada2024-04-10
Octavia G Amigon1008Brazil2024-04-14
James Z Foller1009Australia2024-04-07
Francesco L Bowley1010India2024-04-05
Rodrigues S Garufi1011Italy2024-03-28
David G Dilliard1012India2024-04-22
Mujtaba P Ruta1013Canada2024-04-08
Jeanfrancois T Schemmer1014Spain2024-04-15
Morrow D Caudy1015Japan2024-04-17
Darci L Waycott1016Germany2024-04-18
Maisha R Glick1017India2024-03-31
Ashley F Whobrey1018Japan2024-04-15
Jeanfrancois I Nicka1019Russia2024-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson R SchemmerJapanBernardo Dominic UNQUALIFIED
Aditya N WaycottItalyAsiya Javayant NEW
Francesco O MorascaGermanyStephen Shaw PROPOSAL
Alejandro O BriddickSpainIvan Magalhaes QUALIFIED
Greenwood O GlickAustraliaElwin Sharvill NEGOTIATION
Julie I IturbideArgentinaStephen Shaw NEGOTIATION
Darci U StensethIndiaBernardo Dominic PROPOSAL
Adams E RulapaughFranceIvan Magalhaes PROPOSAL
Smith K BowleyArgentinaIvan Magalhaes RENEWAL
Aditya W VenereSpainXuxue Feng RENEWAL
Chavez X FollerAustraliaStephen Shaw UNQUALIFIED
Mayumi C TollnerItalyElwin Sharvill UNQUALIFIED
Faith M OldroydUnited KingdomOnyama Limba QUALIFIED
Aruna Q AmigonUnited KingdomAnna Fali UNQUALIFIED
Johnson R ButtItalyIvan Magalhaes NEGOTIATION
Maria B NestleJapanOnyama Limba QUALIFIED
Antonio K ButtRussiaAnna Fali NEGOTIATION
Leja H TollnerCanadaAsiya Javayant PROPOSAL
Octavia K CampainBrazilAsiya Javayant NEGOTIATION
James H OldroydItalyIoni Bowcher PROPOSAL
Claire K VenereUnited KingdomAsiya Javayant QUALIFIED
Rodrigues B KolmetzUnited KingdomStephen Shaw PROPOSAL
Arvin R StensethIndiaAnna Fali RENEWAL
Greenwood Z SchemmerUnited KingdomAmy Elsner NEGOTIATION
David N AlbaresBrazilIvan Magalhaes RENEWAL
Kadeem N MacleadGermanyIvan Magalhaes NEW
Murillo J PaprockiItalyAsiya Javayant PROPOSAL
Julie W StensethSpainIoni Bowcher NEW
Leja M GauchoJapanAnna Fali NEW
Adams J WieserIndiaStephen Shaw QUALIFIED
Misaki B ShinkoCanadaBernardo Dominic QUALIFIED
Arvin U PoquetteArgentinaBernardo Dominic QUALIFIED
Johnson Y FerenczCanadaElwin Sharvill QUALIFIED
Rodrigues E WhobreyFranceIoni Bowcher NEW
Julie Y StockhamSpainBernardo Dominic UNQUALIFIED
Arvin H MarrierBrazilAnna Fali NEW
Misaki R SchemmerGermanyOnyama Limba UNQUALIFIED
Kaitlin Z StockhamArgentinaIvan Magalhaes NEW
Jennifer G FerenczIndiaAnna Fali NEW
Tony O GarufiFranceBernardo Dominic 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>