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
Sinclair O ShinkoRussiaStephen Shaw RENEWAL
Greenwood G OldroydIndiaXuxue Feng QUALIFIED
Arvin O WhobreyItalyAsiya Javayant PROPOSAL
Murillo A RimFranceAsiya Javayant QUALIFIED
Clifford S MaletIndiaAnna Fali QUALIFIED
Salvatore M VocelkaRussiaIoni Bowcher RENEWAL
James B SaylorsItalyXuxue Feng RENEWAL
Faith J RutaUnited KingdomIvan Magalhaes NEW
Ashley N GlickCanadaStephen Shaw RENEWAL
Nicolas V RulapaughFranceAmy Elsner QUALIFIED
Ivar A MorascaIndiaBernardo Dominic QUALIFIED
Izzy U StensethArgentinaAsiya Javayant RENEWAL
Aika F FlosiCanadaAsiya Javayant NEW
Ricardo L StensethItalyAmy Elsner PROPOSAL
Antonio L SlusarskiRussiaIoni Bowcher PROPOSAL
Clifford Q GarufiRussiaXuxue Feng PROPOSAL
Wickens M RutaArgentinaAmy Elsner PROPOSAL
Clifford J SchemmerRussiaAmy Elsner NEW
Nicolas C StensethGermanyBernardo Dominic PROPOSAL
Juan C KuskoItalyIoni Bowcher NEW
Cody C RutaRussiaAnna Fali RENEWAL
Claire Q NickaRussiaBernardo Dominic NEGOTIATION
Deepesh G ShinkoSpainAmy Elsner QUALIFIED
Adams M SlusarskiBrazilXuxue Feng QUALIFIED
Mayumi C WaycottRussiaElwin Sharvill RENEWAL
Antonio K DilliardGermanyBernardo Dominic QUALIFIED
Tony A ButtIndiaIoni Bowcher NEGOTIATION
Misaki D GarufiIndiaXuxue Feng NEGOTIATION
Ivar F GarufiRussiaOnyama Limba QUALIFIED
Rodrigues T MacleadFranceAsiya Javayant UNQUALIFIED
Emily Q OstroskyUnited KingdomStephen Shaw PROPOSAL
Alejandro P PaprockiFranceAsiya Javayant NEGOTIATION
Jones I OstroskyFranceOnyama Limba RENEWAL
Julie J MaletItalyStephen Shaw NEGOTIATION
Munro V RutaGermanyOnyama Limba UNQUALIFIED
Stacey R GillianRussiaAnna Fali QUALIFIED
Ashley P BriddickIndiaIoni Bowcher QUALIFIED
Francesco F PoquetteRussiaAsiya Javayant RENEWAL
Nicolas R StockhamFranceIoni Bowcher NEW
Misaki P ChuiBrazilAsiya Javayant QUALIFIED
Salvatore X BriddickFranceElwin Sharvill PROPOSAL
Aika L NestleCanadaElwin Sharvill RENEWAL
Ivar X CaldareraJapanIvan Magalhaes NEGOTIATION
James X CaldareraCanadaOnyama Limba QUALIFIED
Arvin K RoysterSpainAmy Elsner NEW
Ricardo V SchemmerSpainAsiya Javayant PROPOSAL
Arvin U DilliardBrazilIvan Magalhaes PROPOSAL
Emily D CaudyFranceAnna Fali NEW
Kaitlin F AlbaresArgentinaAnna Fali NEW
Ivar M GauchoUnited KingdomIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Salvatore S DarakjyJapanBernardo Dominic QUALIFIED
David G VocelkaItalyAsiya Javayant QUALIFIED
Alejandro Z CaudySpainXuxue Feng NEGOTIATION
Jennifer I AmigonSpainElwin Sharvill NEGOTIATION
Rodrigues C PoquetteIndiaBernardo Dominic RENEWAL
Juan D CampainBrazilOnyama Limba UNQUALIFIED
Antonio E GlickIndiaIvan Magalhaes UNQUALIFIED
Aruna C BologniaJapanAnna Fali UNQUALIFIED
Cody Z FlosiItalyBernardo Dominic NEW
Jennifer U GarufiJapanAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio P NickaRussia2024-04-23Rousseaux, Michael Esq QUALIFIED7Onyama Limba
1001Adams V BriddickGermany2024-03-31Rangoni Of Florence QUALIFIED92Bernardo Dominic
1002Ashley O FlosiIndia2024-04-28Rousseaux, Michael Esq NEW93Stephen Shaw
1003Izzy J PoquetteSpain2024-04-27Rangoni Of Florence QUALIFIED19Asiya Javayant
1004Julie R ChuiIndia2024-04-06Rangoni Of Florence NEW23Ioni Bowcher
1005Greenwood X WieserBrazil2024-04-19Feiner Bros NEGOTIATION59Ivan Magalhaes
1006Johnson Z DoeIndia2024-04-10Feltz Printing Service NEW7Bernardo Dominic
1007Rodrigues S CaldareraJapan2024-04-10Printing Dimensions PROPOSAL20Ioni Bowcher
1008Juan Q SlusarskiRussia2024-04-08Truhlar And Truhlar Attys QUALIFIED12Onyama Limba
1009Munro H AmigonCanada2024-04-24Chemel, James L Cpa UNQUALIFIED34Elwin Sharvill
1010Leon W OldroydRussia2024-04-13Feiner Bros QUALIFIED72Elwin Sharvill
1011Stacey U DarakjyJapan2024-04-25Feltz Printing Service PROPOSAL64Anna Fali
1012Adams A RutaArgentina2024-04-19Feiner Bros NEW89Asiya Javayant
1013James R StockhamBrazil2024-04-06Benton, John B Jr NEW13Stephen Shaw
1014Silvio S MaletRussia2024-04-07Chanay, Jeffrey A Esq RENEWAL9Bernardo Dominic
1015Morrow K MaletSpain2024-04-24Commercial Press NEW73Ioni Bowcher
1016Jefferson P MaletSpain2024-04-20Rangoni Of Florence RENEWAL6Bernardo Dominic
1017Wickens N SchemmerUnited Kingdom2024-04-06Chemel, James L Cpa QUALIFIED33Xuxue Feng
1018Antonio Y NestleAustralia2024-04-13Buckley Miller Wright RENEWAL82Elwin Sharvill
1019Jennifer O TollnerIndia2024-04-27Printing Dimensions NEGOTIATION35Asiya Javayant
1020Leon L SchemmerBrazil2024-04-17King, Christopher A Esq UNQUALIFIED46Onyama Limba
1021Antonio U FigeroaGermany2024-04-23Morlong Associates PROPOSAL64Ivan Magalhaes
1022Octavia Z BowleyRussia2024-04-03King, Christopher A Esq NEW68Amy Elsner
1023Antonio T AmigonArgentina2024-04-05Rousseaux, Michael Esq UNQUALIFIED82Ivan Magalhaes
1024Francesco D MorascaAustralia2024-04-10Chapman, Ross E Esq UNQUALIFIED28Anna Fali
1025Jennifer A KuskoItaly2024-04-05Commercial Press NEW30Ioni Bowcher
1026Greenwood N OldroydSpain2024-04-18Rousseaux, Michael Esq NEW40Elwin Sharvill
1027Leja F VenereItaly2024-04-08Commercial Press QUALIFIED40Ivan Magalhaes
1028Chavez G KolmetzUnited Kingdom2024-04-10Chapman, Ross E Esq UNQUALIFIED1Ioni Bowcher
1029Rodrigues D OldroydBrazil2024-04-02Truhlar And Truhlar Attys RENEWAL12Stephen Shaw
1030Greenwood V FollerUnited Kingdom2024-04-20Rangoni Of Florence PROPOSAL12Xuxue Feng
1031Aika C IturbideFrance2024-04-25Feiner Bros NEW89Onyama Limba
1032Jennifer U IturbideJapan2024-04-20Benton, John B Jr RENEWAL58Elwin Sharvill
1033Tony A BowleySpain2024-04-24Commercial Press NEW69Onyama Limba
1034Julie A WieserRussia2024-04-24Printing Dimensions RENEWAL23Anna Fali
1035Jefferson W CaudyBrazil2024-04-15Benton, John B Jr UNQUALIFIED48Xuxue Feng
1036Johnson L GauchoIndia2024-04-25Rousseaux, Michael Esq QUALIFIED26Xuxue Feng
1037Ricardo I NickaUnited Kingdom2024-04-11Chemel, James L Cpa UNQUALIFIED68Stephen Shaw
1038Salvatore L NestleAustralia2024-04-02Printing Dimensions UNQUALIFIED85Amy Elsner
1039Silvio H KuskoUnited Kingdom2024-04-27Feiner Bros NEGOTIATION70Ioni Bowcher
1040Misaki V MorascaBrazil2024-04-28Rousseaux, Michael Esq RENEWAL45Amy Elsner
1041Jennifer A RoysterRussia2024-03-30Dorl, James J Esq QUALIFIED75Stephen Shaw
1042Aruna E MorascaIndia2024-04-05Dorl, James J Esq QUALIFIED35Ioni Bowcher
1043Adams J SergiItaly2024-04-09Chemel, James L Cpa UNQUALIFIED6Asiya Javayant
1044David Z BowleyIndia2024-04-19Chanay, Jeffrey A Esq NEGOTIATION6Amy Elsner
1045Tony B ButtSpain2024-04-20Truhlar And Truhlar Attys NEW65Stephen Shaw
1046Stacey G DarakjyIndia2024-04-13Truhlar And Truhlar Attys PROPOSAL68Xuxue Feng
1047Kadeem K GlickCanada2024-04-21Commercial Press RENEWAL12Onyama Limba
1048David G MarrierSpain2024-04-20Feltz Printing Service UNQUALIFIED44Xuxue Feng
1049Kaitlin N FerenczGermany2024-04-23Feltz Printing Service QUALIFIED81Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Wickens I RoysterArgentinaAmy Elsner RENEWAL
Mayumi W VocelkaIndiaIoni Bowcher PROPOSAL
Darci B NickaArgentinaStephen Shaw NEW
Jefferson O DarakjyUnited KingdomAmy Elsner RENEWAL
Chavez C FerenczBrazilIoni Bowcher NEGOTIATION
Leja S FollerItalyIvan Magalhaes UNQUALIFIED
Sinclair D BologniaRussiaAsiya Javayant QUALIFIED
Jeanfrancois Q PaprockiArgentinaIvan Magalhaes UNQUALIFIED
David F NickaArgentinaStephen Shaw QUALIFIED
Arvin T MaletBrazilAsiya Javayant RENEWAL
Johnson C RimRussiaIvan Magalhaes NEGOTIATION
Ivar X WaycottBrazilStephen Shaw NEW
Greenwood E CaldareraBrazilBernardo Dominic UNQUALIFIED
Antonio Z RoysterFranceElwin Sharvill NEGOTIATION
Nicolas L MaletAustraliaAnna Fali NEGOTIATION
Jennifer C ButtFranceAsiya Javayant NEGOTIATION
Izzy I OldroydBrazilAsiya Javayant RENEWAL
James X SchemmerCanadaElwin Sharvill QUALIFIED
Isabel X FigeroaIndiaStephen Shaw PROPOSAL
Francesco D NestleAustraliaIoni Bowcher UNQUALIFIED
Isabel S MaletGermanyAnna Fali NEGOTIATION
Costa K DilliardItalyAmy Elsner UNQUALIFIED
Silvio Q DoeAustraliaStephen Shaw RENEWAL
Kadeem S PerinFranceBernardo Dominic UNQUALIFIED
Aika H MaletUnited KingdomOnyama Limba UNQUALIFIED
Aditya N InouyeArgentinaIvan Magalhaes RENEWAL
Isabel G RoysterCanadaOnyama Limba PROPOSAL
Antonio D OldroydRussiaAmy Elsner NEW
Francesco W RutaAustraliaElwin Sharvill RENEWAL
Rodrigues J AlbaresJapanAnna Fali PROPOSAL
Misaki G BologniaSpainBernardo Dominic UNQUALIFIED
Darci S DarakjySpainStephen Shaw PROPOSAL
Deepesh J BowleyGermanyElwin Sharvill UNQUALIFIED
Francesco Q GlickSpainAsiya Javayant RENEWAL
Jennifer R WhobreyFranceIoni Bowcher PROPOSAL
Izzy W TollnerCanadaBernardo Dominic NEW
Ivar H WaycottUnited KingdomStephen Shaw RENEWAL
Munro I VocelkaJapanIvan Magalhaes NEW
Isabel Y PaprockiFranceBernardo Dominic PROPOSAL
Kaitlin R AlbaresArgentinaStephen Shaw UNQUALIFIED
Silvio J ShinkoBrazilOnyama Limba QUALIFIED
Leon D WaycottArgentinaStephen Shaw RENEWAL
Sinclair S WaycottCanadaStephen Shaw RENEWAL
Aika K CampainGermanyIoni Bowcher QUALIFIED
Jones G RutaSpainAmy Elsner UNQUALIFIED
Faith W DilliardBrazilIoni Bowcher QUALIFIED
Greenwood L CaldareraSpainElwin Sharvill RENEWAL
Jeanfrancois B VocelkaIndiaElwin Sharvill QUALIFIED
David T ButtItalyBernardo Dominic NEGOTIATION
Chavez O WaycottIndiaElwin Sharvill PROPOSAL
Frozen Columns
Name
Salvatore B Perin
Ashley W Glick
David Z Kolmetz
Ashley D Rim
Silvio T Gillian
Jefferson I Albares
Misaki O Schemmer
Aika X Dilliard
Jennifer M Caudy
Salvatore Z Malet
Juan W Tollner
Darci A Nicka
Misaki D Paprocki
Francesco M Sergi
David S Whobrey
Salvatore C Kolmetz
Cody O Tollner
Darci G Shinko
Ashley D Slusarski
Ricardo P Doe
Maisha C Poquette
Greenwood F Saylors
Silvio S Perin
Tony J Rim
Jones K Albares
Cody C Flosi
Alejandro N Bowley
Antonio Z Wieser
Aditya W Flosi
Clifford A Rim
Tony Y Shinko
Kadeem S Inouye
Octavia L Ruta
Ashley V Marrier
Stacey D Malet
Chavez I Vocelka
David S Figeroa
James Z Bowley
Jefferson O Sergi
Morrow D Shinko
Morrow M Doe
Sinclair Z Saylors
Julie P Sergi
Tony C Paprocki
Ricardo B Briddick
Faith H Whobrey
Greenwood V Kusko
Ashley F Glick
Kadeem L Venere
Nicolas P Shinko
IdCountryDate
1000Australia2024-04-08
1001United Kingdom2024-04-22
1002India2024-04-12
1003Australia2024-04-11
1004Germany2024-04-23
1005Australia2024-04-06
1006Italy2024-04-17
1007Australia2024-04-19
1008Russia2024-04-17
1009Japan2024-04-20
1010Germany2024-04-24
1011Argentina2024-04-13
1012India2024-03-30
1013Spain2024-04-04
1014India2024-04-27
1015United Kingdom2024-04-14
1016France2024-04-21
1017Argentina2024-04-08
1018Germany2024-04-17
1019Germany2024-04-19
1020India2024-04-10
1021Brazil2024-04-10
1022Japan2024-04-05
1023Brazil2024-04-01
1024Australia2024-04-13
1025Spain2024-04-14
1026United Kingdom2024-04-04
1027Germany2024-04-17
1028Canada2024-04-24
1029Germany2024-04-07
1030Germany2024-04-11
1031France2024-04-04
1032Italy2024-03-30
1033Italy2024-03-31
1034Russia2024-03-31
1035France2024-04-14
1036Australia2024-04-02
1037Japan2024-04-15
1038Japan2024-03-30
1039Italy2024-04-04
1040India2024-04-27
1041United Kingdom2024-04-16
1042Canada2024-04-15
1043Japan2024-04-24
1044Japan2024-04-07
1045France2024-04-19
1046Australia2024-04-10
1047France2024-04-08
1048Spain2024-04-26
1049France2024-04-02

On-Demand Data

NameIdCountryDate
Kaitlin E Marrier1000Japan2024-04-10
Arvin D Rulapaugh1001United Kingdom2024-04-19
Costa X Bowley1002Brazil2024-04-16
Juan L Bolognia1003Australia2024-04-15
Julie P Flosi1004Spain2024-04-04
Jeanfrancois X Caldarera1005Australia2024-04-13
Antonio B Dilliard1006Australia2024-04-26
Misaki H Figeroa1007United Kingdom2024-04-08
Jennifer Z Nestle1008Spain2024-03-30
Francesco I Flosi1009Australia2024-04-05
David C Rim1010Argentina2024-04-21
Sinclair S Kusko1011Japan2024-04-28
Ashley A Perin1012Australia2024-04-25
Jefferson M Marrier1013Brazil2024-04-08
Francesco L Perin1014Japan2024-04-25
Adams X Rim1015Japan2024-04-03
Morrow J Malet1016Germany2024-04-19
Costa Z Shinko1017Russia2024-04-15
Jefferson V Caldarera1018Japan2024-04-17
Aika M Stenseth1019Spain2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith J OldroydJapanOnyama Limba PROPOSAL
Chavez J FerenczItalyIoni Bowcher RENEWAL
Jones J CaudyGermanyIvan Magalhaes PROPOSAL
Jennifer O BowleyArgentinaXuxue Feng UNQUALIFIED
Mujtaba N AmigonGermanyAmy Elsner NEW
Murillo K MorascaItalyStephen Shaw UNQUALIFIED
Cody Y MaletItalyAmy Elsner UNQUALIFIED
Misaki C FollerUnited KingdomAnna Fali NEGOTIATION
Emily N FollerGermanyElwin Sharvill PROPOSAL
Maria Z NickaIndiaAmy Elsner NEGOTIATION
Leon L GillianItalyElwin Sharvill QUALIFIED
Murillo Y MorascaGermanyAmy Elsner NEW
Clifford I NestleRussiaBernardo Dominic NEW
Kaitlin H BowleyGermanyIvan Magalhaes RENEWAL
Rodrigues K RoysterFranceXuxue Feng UNQUALIFIED
Morrow K InouyeCanadaIoni Bowcher RENEWAL
Maisha O FollerItalyStephen Shaw PROPOSAL
Smith J FlosiSpainElwin Sharvill UNQUALIFIED
Sinclair X FerenczBrazilAnna Fali NEW
Sinclair F GauchoBrazilIoni Bowcher NEW
Leja O GarufiArgentinaElwin Sharvill UNQUALIFIED
Deepesh N WieserFranceAsiya Javayant QUALIFIED
Sinclair S VenereItalyBernardo Dominic NEW
Ricardo F DilliardAustraliaIoni Bowcher NEW
Misaki E GarufiGermanyStephen Shaw PROPOSAL
Jennifer A ShinkoGermanyXuxue Feng PROPOSAL
Ivar N SergiJapanAnna Fali PROPOSAL
Leja H BriddickJapanElwin Sharvill NEGOTIATION
Aditya J SaylorsUnited KingdomElwin Sharvill NEGOTIATION
Jefferson C PoquetteBrazilBernardo Dominic PROPOSAL
Antonio X AmigonAustraliaStephen Shaw PROPOSAL
Tony I MorascaIndiaIvan Magalhaes QUALIFIED
Chavez W WhobreyFranceAnna Fali QUALIFIED
Munro F MarrierItalyElwin Sharvill UNQUALIFIED
Stacey A ButtGermanyElwin Sharvill QUALIFIED
Maisha Y PerinJapanElwin Sharvill PROPOSAL
Mayumi X StockhamItalyIvan Magalhaes NEGOTIATION
Julie Z DilliardAustraliaXuxue Feng NEW
Julie C MarrierJapanElwin Sharvill NEW
Cody D StockhamSpainAnna Fali 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>