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 C RoysterRussiaAmy Elsner NEW
Maisha T BologniaUnited KingdomElwin Sharvill QUALIFIED
Aditya H AmigonItalyBernardo Dominic RENEWAL
Ricardo L GauchoIndiaXuxue Feng NEW
Arvin L DarakjyRussiaOnyama Limba RENEWAL
Kadeem D StockhamGermanyIoni Bowcher UNQUALIFIED
Julie H RutaSpainXuxue Feng RENEWAL
Alejandro T NickaSpainOnyama Limba QUALIFIED
David V TollnerIndiaIoni Bowcher PROPOSAL
Salvatore W OstroskyCanadaElwin Sharvill NEW
Francesco A WaycottSpainIvan Magalhaes NEGOTIATION
Murillo Q ChuiCanadaAsiya Javayant NEW
David J GillianIndiaElwin Sharvill RENEWAL
Aditya W PerinAustraliaBernardo Dominic PROPOSAL
Silvio K GauchoArgentinaIvan Magalhaes NEGOTIATION
Nicolas Z WhobreyIndiaIvan Magalhaes PROPOSAL
Maisha A IturbideAustraliaIvan Magalhaes PROPOSAL
Alejandro B MarrierGermanyAnna Fali NEGOTIATION
Salvatore L DilliardCanadaIvan Magalhaes NEGOTIATION
Adams L DoeArgentinaIvan Magalhaes QUALIFIED
Sinclair G DoeBrazilAsiya Javayant UNQUALIFIED
Ashley E GlickCanadaStephen Shaw RENEWAL
Greenwood N BriddickBrazilIvan Magalhaes PROPOSAL
Morrow S GarufiJapanStephen Shaw UNQUALIFIED
Johnson V GauchoCanadaOnyama Limba NEGOTIATION
Aditya W CampainAustraliaAsiya Javayant QUALIFIED
Clifford L VocelkaSpainXuxue Feng NEGOTIATION
Tony C IturbideAustraliaAsiya Javayant RENEWAL
Aika Y WieserCanadaElwin Sharvill NEW
Silvio H ShinkoCanadaIvan Magalhaes QUALIFIED
Aruna I StensethUnited KingdomBernardo Dominic QUALIFIED
Aruna W AmigonRussiaAnna Fali NEGOTIATION
Ivar X BowleyAustraliaXuxue Feng PROPOSAL
Aditya W OstroskyItalyOnyama Limba QUALIFIED
Stacey I AlbaresRussiaAsiya Javayant RENEWAL
Darci R OstroskyItalyAmy Elsner NEGOTIATION
Smith D GarufiSpainOnyama Limba NEW
Kaitlin X GillianJapanAsiya Javayant QUALIFIED
Aika I StockhamGermanyIoni Bowcher UNQUALIFIED
Chavez X RoysterJapanElwin Sharvill QUALIFIED
Alejandro F SergiAustraliaBernardo Dominic PROPOSAL
Leja R GlickRussiaAnna Fali RENEWAL
David B BriddickArgentinaAnna Fali QUALIFIED
Jefferson O FigeroaAustraliaBernardo Dominic NEGOTIATION
Emily Q BowleyJapanAmy Elsner RENEWAL
Leja S IturbideRussiaElwin Sharvill UNQUALIFIED
Aruna L MaletSpainAnna Fali QUALIFIED
Isabel K GillianIndiaStephen Shaw PROPOSAL
Francesco L InouyeCanadaXuxue Feng QUALIFIED
Claire O CaudyBrazilOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois W AmigonCanadaXuxue Feng NEW
Smith Q BologniaFranceIvan Magalhaes NEGOTIATION
Ivar Q SergiAustraliaOnyama Limba RENEWAL
Claire Y RulapaughRussiaIoni Bowcher PROPOSAL
Juan N RoysterRussiaIvan Magalhaes NEW
James T OldroydGermanyIoni Bowcher PROPOSAL
Mayumi T ButtGermanyOnyama Limba RENEWAL
Chavez V FlosiCanadaStephen Shaw NEW
Izzy B GlickUnited KingdomStephen Shaw RENEWAL
Francesco P GillianAustraliaStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David G NestleGermany2024-04-20Dorl, James J Esq UNQUALIFIED5Elwin Sharvill
1001Maria C ChuiAustralia2024-04-16Morlong Associates QUALIFIED64Ivan Magalhaes
1002Maria K IturbideRussia2024-04-11Printing Dimensions NEW42Xuxue Feng
1003Maria W KuskoBrazil2024-04-22Morlong Associates PROPOSAL32Xuxue Feng
1004Jones J AlbaresJapan2024-04-05Printing Dimensions UNQUALIFIED39Elwin Sharvill
1005Octavia S FlosiIndia2024-04-12Chemel, James L Cpa NEW4Anna Fali
1006Costa M MacleadGermany2024-04-06Buckley Miller Wright QUALIFIED55Anna Fali
1007Stacey J OldroydRussia2024-03-31Commercial Press NEW69Ioni Bowcher
1008Wickens E AlbaresUnited Kingdom2024-04-24Rousseaux, Michael Esq UNQUALIFIED37Amy Elsner
1009Darci G ShinkoJapan2024-04-27Commercial Press QUALIFIED66Ivan Magalhaes
1010Octavia I CaldareraRussia2024-04-21Rangoni Of Florence UNQUALIFIED50Xuxue Feng
1011Sinclair E TollnerItaly2024-04-09Dorl, James J Esq NEW54Amy Elsner
1012Maisha M CaldareraGermany2024-04-13Benton, John B Jr RENEWAL46Anna Fali
1013Francesco C FollerFrance2024-04-12Chanay, Jeffrey A Esq NEGOTIATION35Elwin Sharvill
1014Costa U VocelkaJapan2024-04-14Feiner Bros NEGOTIATION67Amy Elsner
1015Maria S WaycottArgentina2024-04-04Chemel, James L Cpa RENEWAL71Ioni Bowcher
1016Aditya L CampainGermany2024-04-23Truhlar And Truhlar Attys NEGOTIATION6Amy Elsner
1017Faith G GarufiFrance2024-04-17Buckley Miller Wright UNQUALIFIED55Stephen Shaw
1018Leja Q CampainAustralia2024-04-10Rangoni Of Florence QUALIFIED42Asiya Javayant
1019Stacey W StockhamUnited Kingdom2024-04-16Commercial Press QUALIFIED24Ioni Bowcher
1020Deepesh X MaletArgentina2024-04-09Rangoni Of Florence NEGOTIATION27Bernardo Dominic
1021Wickens P MacleadCanada2024-04-13Feltz Printing Service NEW45Asiya Javayant
1022Darci B NestleUnited Kingdom2024-04-07Feltz Printing Service UNQUALIFIED33Stephen Shaw
1023Mujtaba X VocelkaGermany2024-04-10Benton, John B Jr NEW6Anna Fali
1024Faith R NickaRussia2024-04-13Commercial Press PROPOSAL14Ioni Bowcher
1025Clifford A StensethSpain2024-04-03Chanay, Jeffrey A Esq PROPOSAL84Onyama Limba
1026Mayumi W RimJapan2024-04-14Commercial Press PROPOSAL79Ioni Bowcher
1027Morrow J WhobreyCanada2024-04-04Rousseaux, Michael Esq NEW72Anna Fali
1028Leja L WaycottArgentina2024-04-01Benton, John B Jr NEW51Amy Elsner
1029Murillo N WieserBrazil2024-04-07Chapman, Ross E Esq PROPOSAL11Amy Elsner
1030Smith O BologniaBrazil2024-04-19Chanay, Jeffrey A Esq NEW61Amy Elsner
1031Leon O BologniaCanada2024-03-31Commercial Press NEGOTIATION56Asiya Javayant
1032Kadeem Z NickaGermany2024-04-01Rangoni Of Florence NEGOTIATION61Xuxue Feng
1033Mayumi J ButtUnited Kingdom2024-04-07King, Christopher A Esq NEW33Amy Elsner
1034Johnson F PaprockiGermany2024-04-08Chanay, Jeffrey A Esq NEGOTIATION46Bernardo Dominic
1035Misaki K SchemmerBrazil2024-04-09Chapman, Ross E Esq UNQUALIFIED84Bernardo Dominic
1036Juan C TollnerUnited Kingdom2024-04-07King, Christopher A Esq RENEWAL48Stephen Shaw
1037Aika E DarakjyRussia2024-04-07Feltz Printing Service RENEWAL10Asiya Javayant
1038Costa O AmigonGermany2024-04-15Buckley Miller Wright NEGOTIATION18Onyama Limba
1039Emily N KolmetzRussia2024-04-24Morlong Associates NEGOTIATION9Onyama Limba
1040Mujtaba Y MacleadArgentina2024-04-10Dorl, James J Esq UNQUALIFIED8Asiya Javayant
1041Rodrigues I MaletUnited Kingdom2024-04-23Rousseaux, Michael Esq QUALIFIED75Ioni Bowcher
1042Maria N MarrierItaly2024-04-21Rousseaux, Michael Esq QUALIFIED56Stephen Shaw
1043Kadeem W WaycottUnited Kingdom2024-04-11Commercial Press QUALIFIED11Ioni Bowcher
1044Rodrigues S VocelkaIndia2024-04-14Buckley Miller Wright NEW26Ivan Magalhaes
1045Tony X ChuiItaly2024-04-03Chapman, Ross E Esq RENEWAL60Amy Elsner
1046Jennifer J SlusarskiBrazil2024-04-27Rangoni Of Florence NEGOTIATION73Asiya Javayant
1047Clifford K FerenczItaly2024-04-21Commercial Press QUALIFIED66Stephen Shaw
1048Wickens S BowleyGermany2024-04-21Commercial Press NEGOTIATION16Asiya Javayant
1049Wickens Q DarakjyIndia2024-04-01Buckley Miller Wright UNQUALIFIED91Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Faith N KuskoRussiaIvan Magalhaes PROPOSAL
Alejandro E KuskoCanadaXuxue Feng PROPOSAL
Kadeem D FigeroaUnited KingdomIvan Magalhaes RENEWAL
Isabel F WaycottRussiaOnyama Limba UNQUALIFIED
Francesco Q TollnerCanadaAnna Fali RENEWAL
Silvio W InouyeRussiaAnna Fali NEW
Kaitlin V SlusarskiAustraliaXuxue Feng RENEWAL
Leja V GlickFranceElwin Sharvill UNQUALIFIED
Jeanfrancois K NestleRussiaIvan Magalhaes QUALIFIED
Aika T WieserCanadaAsiya Javayant PROPOSAL
Kadeem L SlusarskiRussiaOnyama Limba QUALIFIED
Darci X AlbaresItalyAmy Elsner PROPOSAL
Ricardo R VenereJapanAmy Elsner QUALIFIED
Smith E IturbideSpainStephen Shaw NEGOTIATION
Juan L SlusarskiFranceAsiya Javayant RENEWAL
Juan T TollnerBrazilBernardo Dominic RENEWAL
Smith H OldroydGermanyBernardo Dominic PROPOSAL
Francesco M RulapaughGermanyXuxue Feng UNQUALIFIED
Claire B WaycottAustraliaAsiya Javayant NEGOTIATION
Chavez I GillianSpainAmy Elsner RENEWAL
Mujtaba I FerenczSpainIvan Magalhaes UNQUALIFIED
Misaki V ButtGermanyOnyama Limba UNQUALIFIED
Stacey E FlosiCanadaAnna Fali QUALIFIED
Emily S NickaGermanyIoni Bowcher QUALIFIED
Leja L GlickSpainAsiya Javayant RENEWAL
Francesco O GillianFranceBernardo Dominic NEW
Mayumi M DoeUnited KingdomAmy Elsner NEGOTIATION
Salvatore K TollnerUnited KingdomStephen Shaw RENEWAL
Aditya O PaprockiSpainStephen Shaw NEW
Smith O DilliardCanadaIoni Bowcher RENEWAL
Chavez R StockhamRussiaAsiya Javayant QUALIFIED
Adams Y StockhamItalyIvan Magalhaes UNQUALIFIED
Jones I KuskoJapanOnyama Limba PROPOSAL
Tony X SergiUnited KingdomIoni Bowcher NEGOTIATION
Costa W SchemmerRussiaStephen Shaw QUALIFIED
Kaitlin E GarufiGermanyAsiya Javayant RENEWAL
James S SlusarskiBrazilIvan Magalhaes RENEWAL
Izzy L SlusarskiIndiaStephen Shaw PROPOSAL
Ashley A RutaBrazilXuxue Feng NEW
Johnson A VenereAustraliaIoni Bowcher NEW
Aruna Z RoysterFranceIoni Bowcher UNQUALIFIED
Antonio I BowleyArgentinaAnna Fali QUALIFIED
Leja Z VenereGermanyAmy Elsner QUALIFIED
Kadeem A TollnerCanadaIvan Magalhaes UNQUALIFIED
Maisha O NickaJapanAsiya Javayant QUALIFIED
Kadeem R StockhamBrazilBernardo Dominic UNQUALIFIED
Ricardo X RulapaughGermanyStephen Shaw PROPOSAL
Costa H MacleadGermanyAsiya Javayant RENEWAL
Alejandro W PerinUnited KingdomAsiya Javayant UNQUALIFIED
Aditya S WhobreyIndiaStephen Shaw PROPOSAL
Frozen Columns
Name
Ricardo C Sergi
Smith Q Iturbide
Aditya H Darakjy
Antonio L Caldarera
Clifford A Caudy
Wickens Q Maclead
Arvin W Amigon
James U Tollner
Morrow S Figeroa
Ricardo N Nicka
Octavia A Malet
James A Figeroa
Rodrigues Y Inouye
Emily T Stockham
Rodrigues D Perin
Tony M Glick
Ricardo L Paprocki
Nicolas V Caldarera
Maria S Nicka
Misaki R Nestle
Misaki R Venere
Octavia E Saylors
Wickens I Royster
Kadeem H Stockham
Ashley D Wieser
Emily Y Marrier
Faith Z Foller
Leja W Figeroa
Cody C Bowley
Costa U Figeroa
Ashley E Briddick
Deepesh L Saylors
Stacey L Glick
Leja L Oldroyd
Alejandro P Ostrosky
Mujtaba M Foller
Faith X Slusarski
Costa T Slusarski
Aika M Royster
Clifford V Campain
Kaitlin R Nestle
Alejandro H Slusarski
Silvio Q Kolmetz
Aruna B Shinko
Jefferson N Albares
Silvio L Caudy
Nicolas O Iturbide
Mujtaba K Bolognia
Sinclair K Waycott
Jefferson N Campain
IdCountryDate
1000Japan2024-04-10
1001Brazil2024-04-13
1002India2024-04-13
1003Russia2024-04-01
1004Japan2024-04-10
1005India2024-04-05
1006Japan2024-04-13
1007Russia2024-03-30
1008Russia2024-04-02
1009Japan2024-04-19
1010Germany2024-03-29
1011United Kingdom2024-04-23
1012France2024-04-14
1013Canada2024-04-21
1014Japan2024-04-22
1015Australia2024-04-19
1016Canada2024-04-05
1017India2024-04-24
1018Spain2024-04-19
1019Germany2024-03-29
1020India2024-04-19
1021Brazil2024-04-16
1022France2024-04-09
1023Canada2024-04-18
1024France2024-04-21
1025Spain2024-04-17
1026Canada2024-04-14
1027Australia2024-04-07
1028Italy2024-04-17
1029Brazil2024-04-24
1030Russia2024-04-05
1031France2024-04-13
1032Argentina2024-03-30
1033Argentina2024-04-15
1034Germany2024-04-22
1035Canada2024-04-01
1036Italy2024-04-01
1037Australia2024-04-23
1038France2024-03-29
1039Australia2024-04-02
1040France2024-04-22
1041Argentina2024-04-01
1042Germany2024-04-27
1043Argentina2024-03-31
1044India2024-04-06
1045India2024-04-04
1046India2024-04-17
1047Canada2024-04-09
1048United Kingdom2024-04-21
1049France2024-04-10

On-Demand Data

NameIdCountryDate
Adams L Stockham1000Argentina2024-04-12
Jefferson M Caudy1001India2024-04-25
Aditya L Stockham1002Italy2024-04-04
Claire U Foller1003Spain2024-04-07
James W Wieser1004United Kingdom2024-03-29
Kadeem N Wieser1005Canada2024-04-10
Jennifer S Poquette1006Argentina2024-04-01
Salvatore O Slusarski1007Japan2024-04-15
Jeanfrancois G Slusarski1008Canada2024-04-13
Deepesh D Iturbide1009Canada2024-03-30
Mayumi D Ferencz1010Italy2024-04-13
Isabel L Figeroa1011Argentina2024-04-02
Mayumi T Vocelka1012United Kingdom2024-03-31
Chavez E Kusko1013France2024-03-29
Adams V Glick1014Italy2024-03-30
Arvin W Glick1015Russia2024-04-04
Sinclair C Iturbide1016Italy2024-04-18
Alejandro A Briddick1017Canada2024-04-13
Rodrigues J Maclead1018Australia2024-04-18
Rodrigues E Inouye1019Germany2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair X CaldareraItalyElwin Sharvill PROPOSAL
Faith Q ShinkoBrazilElwin Sharvill NEW
Clifford E ShinkoGermanyAsiya Javayant PROPOSAL
Francesco B SlusarskiGermanyIvan Magalhaes NEGOTIATION
Kadeem S WhobreyUnited KingdomIoni Bowcher NEGOTIATION
Arvin P BriddickAustraliaBernardo Dominic NEGOTIATION
Leja X BriddickGermanyStephen Shaw QUALIFIED
Ricardo S SlusarskiBrazilIvan Magalhaes NEGOTIATION
Leon C NestleSpainIvan Magalhaes QUALIFIED
Costa F StensethBrazilAmy Elsner NEW
Salvatore M GlickSpainStephen Shaw NEGOTIATION
Deepesh Q BowleyItalyOnyama Limba RENEWAL
Ricardo E PaprockiJapanBernardo Dominic NEW
Francesco E WieserItalyElwin Sharvill NEGOTIATION
Aruna T SlusarskiAustraliaAmy Elsner NEW
Leon Y GillianCanadaAnna Fali PROPOSAL
Ashley F GlickAustraliaBernardo Dominic RENEWAL
David C GlickJapanAnna Fali NEGOTIATION
Munro A StensethFranceIvan Magalhaes PROPOSAL
Leon H CaldareraFranceAnna Fali PROPOSAL
Stacey Y RutaGermanyIoni Bowcher NEW
Costa M BologniaCanadaElwin Sharvill PROPOSAL
Mayumi K MarrierJapanBernardo Dominic UNQUALIFIED
Maria U OstroskyJapanElwin Sharvill NEGOTIATION
Wickens K IturbideGermanyOnyama Limba NEGOTIATION
Nicolas X TollnerFranceElwin Sharvill RENEWAL
Mujtaba I DoeJapanAsiya Javayant NEW
Ashley S RutaSpainIoni Bowcher QUALIFIED
Chavez H GarufiItalyAmy Elsner QUALIFIED
Octavia B DilliardIndiaIvan Magalhaes PROPOSAL
Tony R IturbideJapanOnyama Limba NEW
Francesco E BowleyJapanAnna Fali RENEWAL
Nicolas L MorascaIndiaBernardo Dominic NEW
Munro L PerinCanadaAnna Fali NEGOTIATION
Salvatore D IturbideSpainOnyama Limba NEW
Emily G KuskoArgentinaElwin Sharvill QUALIFIED
Mujtaba U CampainUnited KingdomIoni Bowcher NEW
Smith H GauchoItalyIoni Bowcher NEW
Leon K VocelkaUnited KingdomOnyama Limba NEGOTIATION
Johnson K AmigonCanadaBernardo Dominic 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>