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
Octavia H BologniaSpainIoni Bowcher QUALIFIED
Smith E DarakjyFranceBernardo Dominic RENEWAL
Costa N WaycottRussiaIvan Magalhaes RENEWAL
Morrow S DoeUnited KingdomAsiya Javayant QUALIFIED
Claire Q NickaItalyAnna Fali PROPOSAL
David F TollnerAustraliaBernardo Dominic PROPOSAL
David W WieserRussiaBernardo Dominic NEGOTIATION
Francesco T OstroskyJapanAnna Fali QUALIFIED
Stacey B TollnerJapanBernardo Dominic QUALIFIED
Costa L DilliardItalyStephen Shaw NEGOTIATION
Chavez R OldroydIndiaIvan Magalhaes RENEWAL
Darci S DarakjyIndiaAsiya Javayant RENEWAL
Nicolas B OstroskyUnited KingdomAsiya Javayant NEGOTIATION
Ricardo Y MaletGermanyStephen Shaw RENEWAL
Silvio I WhobreyUnited KingdomAmy Elsner NEW
Greenwood T WaycottItalyStephen Shaw PROPOSAL
Aruna D MarrierItalyIoni Bowcher UNQUALIFIED
Maisha D DilliardArgentinaOnyama Limba NEGOTIATION
Jeanfrancois S OstroskyAustraliaElwin Sharvill PROPOSAL
Stacey A WaycottUnited KingdomIoni Bowcher NEGOTIATION
Francesco Q IturbideGermanyAsiya Javayant NEW
Jefferson I ShinkoFranceIvan Magalhaes NEGOTIATION
Nicolas B PerinAustraliaAnna Fali RENEWAL
Deepesh V TollnerCanadaElwin Sharvill NEGOTIATION
Julie O KuskoFranceStephen Shaw RENEWAL
Arvin T WhobreyBrazilElwin Sharvill PROPOSAL
Adams I RoysterRussiaIvan Magalhaes PROPOSAL
Leon W FerenczGermanyBernardo Dominic QUALIFIED
Rodrigues V RoysterSpainXuxue Feng NEGOTIATION
Deepesh Y AlbaresJapanAnna Fali NEGOTIATION
Tony A FollerFranceOnyama Limba QUALIFIED
Johnson Y OstroskyRussiaXuxue Feng QUALIFIED
Faith Z PerinUnited KingdomXuxue Feng QUALIFIED
Deepesh V WieserBrazilXuxue Feng NEW
Rodrigues Q SergiSpainIvan Magalhaes UNQUALIFIED
David A GauchoGermanyAsiya Javayant QUALIFIED
Antonio O NestleItalyXuxue Feng PROPOSAL
Maria R BriddickIndiaElwin Sharvill UNQUALIFIED
Jefferson U AlbaresFranceAmy Elsner PROPOSAL
Jefferson B BowleySpainOnyama Limba RENEWAL
Stacey H RutaAustraliaAmy Elsner QUALIFIED
Maisha V TollnerCanadaAnna Fali QUALIFIED
Ashley N ChuiBrazilAmy Elsner PROPOSAL
Deepesh M FigeroaJapanAnna Fali NEW
Wickens I GauchoCanadaIoni Bowcher NEW
Juan Z GillianAustraliaBernardo Dominic RENEWAL
Arvin T CaldareraBrazilIoni Bowcher PROPOSAL
Aditya H MorascaItalyAnna Fali NEW
Wickens K DarakjyAustraliaAsiya Javayant QUALIFIED
Jeanfrancois F PerinAustraliaAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Maisha S WhobreySpainAsiya Javayant NEW
Silvio D SergiSpainXuxue Feng NEW
Izzy Y GauchoUnited KingdomAmy Elsner NEGOTIATION
Wickens Z GillianCanadaAnna Fali NEGOTIATION
Kadeem G StensethSpainBernardo Dominic QUALIFIED
Ricardo E GlickGermanyAnna Fali RENEWAL
Misaki Q DilliardUnited KingdomBernardo Dominic NEW
Leja R OldroydJapanStephen Shaw UNQUALIFIED
Salvatore E NestleIndiaIvan Magalhaes RENEWAL
Wickens F SergiIndiaIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin T PoquetteItaly2024-03-30Feltz Printing Service NEW11Stephen Shaw
1001Ashley M FollerArgentina2024-04-23Feiner Bros RENEWAL49Elwin Sharvill
1002Maisha E StensethCanada2024-04-16Rousseaux, Michael Esq PROPOSAL39Amy Elsner
1003Munro L InouyeSpain2024-04-05Feltz Printing Service QUALIFIED92Xuxue Feng
1004Leon Z RoysterFrance2024-04-21King, Christopher A Esq RENEWAL29Onyama Limba
1005Octavia L StockhamRussia2024-04-07Rousseaux, Michael Esq NEW5Amy Elsner
1006Mayumi R StensethGermany2024-03-28Chanay, Jeffrey A Esq PROPOSAL50Xuxue Feng
1007Emily T GillianRussia2024-04-23Chanay, Jeffrey A Esq NEGOTIATION23Onyama Limba
1008Maisha L InouyeSpain2024-04-07Truhlar And Truhlar Attys RENEWAL33Elwin Sharvill
1009Wickens L SergiJapan2024-04-16Printing Dimensions PROPOSAL77Amy Elsner
1010Leon Z AmigonSpain2024-03-31Benton, John B Jr RENEWAL25Asiya Javayant
1011Misaki J GauchoUnited Kingdom2024-04-03Truhlar And Truhlar Attys RENEWAL53Bernardo Dominic
1012Ashley Y RimBrazil2024-04-07Truhlar And Truhlar Attys NEGOTIATION36Stephen Shaw
1013Rodrigues X WhobreyFrance2024-04-08Benton, John B Jr RENEWAL26Stephen Shaw
1014Emily A WhobreyJapan2024-04-09Chanay, Jeffrey A Esq PROPOSAL58Elwin Sharvill
1015Misaki L CaldareraArgentina2024-04-21Dorl, James J Esq RENEWAL49Xuxue Feng
1016Morrow I GarufiJapan2024-04-02Rousseaux, Michael Esq NEGOTIATION82Xuxue Feng
1017Darci Q MaletBrazil2024-04-13Rangoni Of Florence NEW73Stephen Shaw
1018Cody F GauchoBrazil2024-04-05Printing Dimensions QUALIFIED5Bernardo Dominic
1019David S GauchoGermany2024-03-26Morlong Associates QUALIFIED51Xuxue Feng
1020Isabel N MorascaArgentina2024-03-27Truhlar And Truhlar Attys NEGOTIATION48Asiya Javayant
1021Ashley E SaylorsRussia2024-04-15Morlong Associates UNQUALIFIED49Amy Elsner
1022Nicolas Y PaprockiUnited Kingdom2024-04-21Chapman, Ross E Esq PROPOSAL17Stephen Shaw
1023Cody T RimArgentina2024-03-27Feltz Printing Service UNQUALIFIED52Asiya Javayant
1024Aruna U MaletBrazil2024-04-03Rousseaux, Michael Esq RENEWAL74Bernardo Dominic
1025Aruna F SchemmerIndia2024-04-17Rousseaux, Michael Esq NEW71Ioni Bowcher
1026Izzy F GlickJapan2024-04-17Benton, John B Jr UNQUALIFIED36Elwin Sharvill
1027Silvio K GarufiItaly2024-04-14Chapman, Ross E Esq UNQUALIFIED40Onyama Limba
1028Alejandro M CaudySpain2024-03-28Benton, John B Jr RENEWAL43Anna Fali
1029Tony P DoeCanada2024-04-10Feiner Bros NEW5Xuxue Feng
1030Munro X AmigonIndia2024-03-25Feltz Printing Service RENEWAL56Xuxue Feng
1031Jefferson K DilliardRussia2024-04-17Benton, John B Jr PROPOSAL64Ivan Magalhaes
1032David S OldroydCanada2024-04-08Truhlar And Truhlar Attys RENEWAL10Ivan Magalhaes
1033Adams K FigeroaJapan2024-04-22Chanay, Jeffrey A Esq RENEWAL88Onyama Limba
1034Jeanfrancois T SchemmerAustralia2024-04-17Buckley Miller Wright QUALIFIED54Ioni Bowcher
1035Smith X MarrierRussia2024-04-09Chanay, Jeffrey A Esq RENEWAL69Anna Fali
1036Faith O StockhamArgentina2024-04-20Rangoni Of Florence UNQUALIFIED84Amy Elsner
1037Clifford X RoysterIndia2024-04-15Printing Dimensions QUALIFIED22Bernardo Dominic
1038Jefferson A GauchoRussia2024-04-18Rousseaux, Michael Esq UNQUALIFIED51Onyama Limba
1039Isabel Q AmigonIndia2024-04-09Chapman, Ross E Esq NEGOTIATION87Xuxue Feng
1040Jeanfrancois P MarrierAustralia2024-03-25Chapman, Ross E Esq NEW83Asiya Javayant
1041Smith X CaudyFrance2024-04-08King, Christopher A Esq UNQUALIFIED44Xuxue Feng
1042Maisha F FollerArgentina2024-04-08Feltz Printing Service NEW79Bernardo Dominic
1043Maisha J CampainAustralia2024-04-08Morlong Associates PROPOSAL16Bernardo Dominic
1044Tony J GillianSpain2024-04-16Benton, John B Jr NEW18Bernardo Dominic
1045Julie O SergiArgentina2024-04-14Printing Dimensions RENEWAL57Ioni Bowcher
1046Chavez Q BowleyArgentina2024-04-03Truhlar And Truhlar Attys RENEWAL44Asiya Javayant
1047Faith Y CampainArgentina2024-04-08Morlong Associates NEGOTIATION50Xuxue Feng
1048Munro B FlosiSpain2024-04-14Benton, John B Jr QUALIFIED99Bernardo Dominic
1049Nicolas Z DarakjyBrazil2024-04-16Chanay, Jeffrey A Esq NEGOTIATION34Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
James W VocelkaItalyStephen Shaw QUALIFIED
Julie U MaletBrazilOnyama Limba PROPOSAL
Faith O VenereIndiaBernardo Dominic NEGOTIATION
Smith D NestleUnited KingdomAsiya Javayant UNQUALIFIED
Sinclair M MaletBrazilAsiya Javayant QUALIFIED
Julie P PerinArgentinaIvan Magalhaes RENEWAL
Jefferson G GlickJapanAmy Elsner RENEWAL
Ashley X AlbaresBrazilIoni Bowcher NEGOTIATION
Octavia Z BowleyIndiaElwin Sharvill PROPOSAL
Kaitlin K CaudyJapanAnna Fali UNQUALIFIED
Antonio Z StockhamCanadaAsiya Javayant UNQUALIFIED
Isabel V NestleSpainAnna Fali PROPOSAL
Munro A SlusarskiIndiaAsiya Javayant NEGOTIATION
Morrow S BologniaGermanyAmy Elsner UNQUALIFIED
Antonio U DoeGermanyStephen Shaw NEW
Sinclair P WaycottFranceAmy Elsner QUALIFIED
Jeanfrancois G StensethRussiaIoni Bowcher UNQUALIFIED
Maisha Y RoysterItalyOnyama Limba UNQUALIFIED
Nicolas W TollnerRussiaAmy Elsner QUALIFIED
Cody G RulapaughRussiaIoni Bowcher NEW
James L WieserUnited KingdomAsiya Javayant UNQUALIFIED
Claire T MaletJapanIvan Magalhaes RENEWAL
Ricardo M MaletItalyXuxue Feng PROPOSAL
Ashley K StockhamFranceOnyama Limba QUALIFIED
Kaitlin C SergiGermanyOnyama Limba PROPOSAL
Murillo A FollerGermanyAsiya Javayant NEW
Jeanfrancois V CaudySpainElwin Sharvill NEW
Claire Q GlickArgentinaAnna Fali NEW
Leja T SaylorsUnited KingdomElwin Sharvill PROPOSAL
Jennifer F FollerCanadaAmy Elsner NEGOTIATION
Silvio X FigeroaJapanAmy Elsner RENEWAL
Adams C RimSpainOnyama Limba RENEWAL
Wickens S RutaItalyAmy Elsner QUALIFIED
Silvio S InouyeItalyStephen Shaw QUALIFIED
Munro M BologniaFranceStephen Shaw RENEWAL
Ashley R MacleadCanadaAsiya Javayant UNQUALIFIED
Claire G PerinUnited KingdomXuxue Feng RENEWAL
Adams Q BriddickCanadaIvan Magalhaes NEW
Claire K OldroydCanadaElwin Sharvill PROPOSAL
David B CaudyCanadaOnyama Limba UNQUALIFIED
Antonio D WaycottBrazilAnna Fali NEGOTIATION
Izzy P FlosiAustraliaBernardo Dominic NEGOTIATION
Leon B SergiJapanXuxue Feng PROPOSAL
Morrow Q RutaFranceStephen Shaw QUALIFIED
Darci K WieserJapanXuxue Feng PROPOSAL
Mayumi R CaudyJapanAsiya Javayant QUALIFIED
Clifford F GillianRussiaOnyama Limba RENEWAL
Misaki S FerenczIndiaElwin Sharvill QUALIFIED
Ivar W GauchoAustraliaAsiya Javayant NEW
Leon C KolmetzGermanyIoni Bowcher RENEWAL
Frozen Columns
Name
Smith D Caudy
Francesco A Oldroyd
Misaki N Darakjy
Izzy V Stockham
Chavez U Bolognia
Wickens R Saylors
James X Gillian
Nicolas N Ostrosky
Emily O Campain
Jeanfrancois H Whobrey
Jones B Malet
Johnson L Paprocki
Ashley I Amigon
Stacey Y Shinko
Nicolas C Wieser
Mujtaba B Iturbide
Ricardo D Briddick
Claire L Tollner
Smith R Marrier
Izzy P Inouye
Aruna N Inouye
David A Venere
Munro G Schemmer
Adams R Briddick
Francesco X Rim
Juan U Vocelka
Ivar W Iturbide
Sinclair Q Sergi
Nicolas M Campain
Mujtaba D Morasca
Greenwood D Royster
Morrow J Iturbide
James N Vocelka
Izzy U Rulapaugh
Salvatore C Morasca
Leja K Kolmetz
Leja O Rim
Murillo X Saylors
Ricardo G Foller
Misaki Z Ostrosky
Wickens Z Morasca
Deepesh M Vocelka
David F Shinko
Clifford R Butt
Ashley K Stockham
Morrow P Inouye
Ivar I Rulapaugh
Jones N Ruta
Alejandro N Caldarera
Kadeem P Dilliard
IdCountryDate
1000Italy2024-04-07
1001Brazil2024-04-07
1002Australia2024-04-06
1003India2024-04-20
1004Spain2024-04-06
1005Japan2024-04-15
1006United Kingdom2024-04-17
1007Canada2024-04-10
1008Australia2024-04-21
1009Japan2024-03-25
1010United Kingdom2024-04-22
1011Spain2024-03-28
1012Brazil2024-04-06
1013France2024-04-04
1014France2024-04-19
1015Japan2024-04-06
1016United Kingdom2024-04-04
1017Italy2024-04-03
1018India2024-04-10
1019Argentina2024-04-02
1020Italy2024-03-27
1021Italy2024-04-21
1022Italy2024-04-15
1023Russia2024-04-07
1024United Kingdom2024-04-13
1025India2024-04-07
1026United Kingdom2024-04-08
1027United Kingdom2024-04-17
1028Brazil2024-04-20
1029Brazil2024-03-26
1030India2024-04-09
1031Argentina2024-03-27
1032Russia2024-04-19
1033Italy2024-04-12
1034Italy2024-03-28
1035Russia2024-04-12
1036Japan2024-04-13
1037France2024-04-02
1038Italy2024-04-15
1039Germany2024-04-01
1040Russia2024-03-31
1041Russia2024-04-03
1042Australia2024-04-06
1043Argentina2024-04-18
1044Russia2024-04-13
1045Brazil2024-04-02
1046Spain2024-04-04
1047Spain2024-03-26
1048Italy2024-04-11
1049Canada2024-04-08

On-Demand Data

NameIdCountryDate
Leon X Foller1000Italy2024-04-11
Kaitlin V Flosi1001Brazil2024-04-10
Aruna G Bolognia1002Australia2024-04-08
Adams J Saylors1003Canada2024-04-11
Silvio Q Poquette1004India2024-04-05
Adams S Butt1005Germany2024-04-14
Greenwood A Poquette1006United Kingdom2024-04-11
Aditya V Saylors1007Spain2024-03-26
Jefferson D Oldroyd1008Australia2024-04-17
Kaitlin S Ferencz1009Brazil2024-04-03
Adams G Vocelka1010Japan2024-04-07
Leon X Butt1011Spain2024-04-17
Murillo E Poquette1012India2024-03-26
Leja B Waycott1013United Kingdom2024-04-05
Ivar U Flosi1014Japan2024-03-31
Ivar X Oldroyd1015India2024-04-02
Ricardo H Poquette1016Italy2024-04-23
Maisha E Tollner1017Italy2024-04-20
Murillo A Vocelka1018Brazil2024-04-02
Tony N Poquette1019Japan2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith A MaletBrazilOnyama Limba NEW
Jeanfrancois A MaletItalyXuxue Feng NEW
Stacey B IturbideCanadaAsiya Javayant RENEWAL
Rodrigues S GarufiJapanXuxue Feng NEW
Kadeem I FollerArgentinaAmy Elsner UNQUALIFIED
Morrow M BologniaItalyOnyama Limba UNQUALIFIED
David V NestleItalyAsiya Javayant UNQUALIFIED
Arvin K WieserUnited KingdomAnna Fali PROPOSAL
Kadeem N RimJapanXuxue Feng QUALIFIED
Arvin O RimArgentinaOnyama Limba RENEWAL
Kadeem D RoysterUnited KingdomAmy Elsner RENEWAL
Aditya B RimSpainElwin Sharvill PROPOSAL
Claire I MorascaSpainAsiya Javayant UNQUALIFIED
Izzy J StensethGermanyXuxue Feng QUALIFIED
Kaitlin O WhobreyArgentinaBernardo Dominic QUALIFIED
David O GillianRussiaIoni Bowcher PROPOSAL
Aika W DoeFranceElwin Sharvill QUALIFIED
Antonio X KuskoSpainAnna Fali PROPOSAL
Sinclair R GlickItalyAnna Fali RENEWAL
Rodrigues N NickaGermanyElwin Sharvill NEW
Ricardo B CampainGermanyAmy Elsner NEW
Nicolas Y SaylorsUnited KingdomXuxue Feng NEW
Claire S NestleItalyAmy Elsner QUALIFIED
Jefferson F FollerUnited KingdomAnna Fali UNQUALIFIED
Antonio F FigeroaSpainAmy Elsner QUALIFIED
Alejandro A CaldareraFranceIoni Bowcher PROPOSAL
Jefferson Y WaycottRussiaAsiya Javayant PROPOSAL
Faith L IturbideItalyBernardo Dominic UNQUALIFIED
Kadeem W StensethItalyXuxue Feng RENEWAL
Costa J PoquetteItalyBernardo Dominic UNQUALIFIED
Jeanfrancois W VocelkaIndiaIvan Magalhaes RENEWAL
Aditya C WhobreyGermanyOnyama Limba NEW
Maisha R AlbaresUnited KingdomAmy Elsner UNQUALIFIED
Jeanfrancois J BriddickGermanyAsiya Javayant RENEWAL
Cody B ShinkoJapanOnyama Limba NEW
Antonio F BologniaCanadaIoni Bowcher UNQUALIFIED
Isabel A CampainItalyBernardo Dominic RENEWAL
Arvin Q ChuiGermanyOnyama Limba NEGOTIATION
Adams D RoysterCanadaIoni Bowcher NEW
Aditya O KuskoUnited KingdomAsiya Javayant 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>