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
Maria Z WieserJapanAmy Elsner NEGOTIATION
Alejandro E CaudyUnited KingdomBernardo Dominic PROPOSAL
Darci D DarakjyGermanyStephen Shaw NEW
Aditya W BologniaCanadaXuxue Feng NEGOTIATION
Mayumi N CaldareraFranceAsiya Javayant UNQUALIFIED
Maria I IturbideItalyAsiya Javayant NEGOTIATION
David B RoysterArgentinaIoni Bowcher UNQUALIFIED
Kadeem P BologniaAustraliaIvan Magalhaes UNQUALIFIED
Arvin N RoysterSpainOnyama Limba RENEWAL
Morrow U TollnerGermanyIoni Bowcher RENEWAL
Francesco L MorascaBrazilElwin Sharvill RENEWAL
Salvatore Y VenereUnited KingdomIvan Magalhaes QUALIFIED
Ivar K WaycottFranceAmy Elsner NEGOTIATION
Morrow J ChuiFranceXuxue Feng RENEWAL
Faith B RoysterItalyAnna Fali RENEWAL
Kadeem R ShinkoUnited KingdomAmy Elsner NEW
Silvio W RutaRussiaXuxue Feng QUALIFIED
Aika E ShinkoJapanAsiya Javayant NEGOTIATION
Cody F StockhamItalyOnyama Limba UNQUALIFIED
Deepesh N NickaJapanStephen Shaw NEW
Johnson R WhobreyJapanAmy Elsner RENEWAL
Mayumi N FigeroaGermanyIoni Bowcher NEGOTIATION
Nicolas W WhobreyIndiaElwin Sharvill NEGOTIATION
Wickens L BowleyItalyIoni Bowcher PROPOSAL
Rodrigues B NickaRussiaOnyama Limba NEW
Smith X VocelkaIndiaIoni Bowcher NEGOTIATION
Wickens B ChuiSpainAmy Elsner RENEWAL
Aditya F PoquetteRussiaXuxue Feng UNQUALIFIED
Aika T PaprockiRussiaOnyama Limba NEW
Kadeem C WaycottFranceOnyama Limba UNQUALIFIED
Stacey M CaudySpainElwin Sharvill NEW
Aika P KuskoJapanIoni Bowcher NEW
Faith K DoeItalyOnyama Limba PROPOSAL
Ashley K TollnerFranceStephen Shaw UNQUALIFIED
Ricardo I StockhamJapanAmy Elsner QUALIFIED
Deepesh W GlickCanadaAsiya Javayant NEW
Izzy E TollnerSpainAsiya Javayant NEW
Tony N DarakjyJapanOnyama Limba NEW
Jeanfrancois Y MaletUnited KingdomAnna Fali UNQUALIFIED
Deepesh Z RoysterFranceOnyama Limba NEW
Jennifer N CampainArgentinaAmy Elsner PROPOSAL
Jones T GillianFranceIoni Bowcher PROPOSAL
Julie A MaletIndiaBernardo Dominic NEW
Mayumi C NickaIndiaXuxue Feng NEGOTIATION
Costa P DilliardJapanAsiya Javayant NEGOTIATION
Juan H WhobreyUnited KingdomIvan Magalhaes UNQUALIFIED
James A NestleArgentinaStephen Shaw QUALIFIED
Tony C SlusarskiFranceIvan Magalhaes NEGOTIATION
Faith Z MaletFranceStephen Shaw NEW
Stacey Y ButtJapanBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Juan I GillianSpainElwin Sharvill PROPOSAL
Misaki P RoysterFranceAnna Fali RENEWAL
Leon W BologniaArgentinaAnna Fali UNQUALIFIED
Kaitlin Z GillianSpainAnna Fali NEW
Cody T WieserArgentinaBernardo Dominic NEW
Jennifer M WhobreyIndiaIvan Magalhaes RENEWAL
Leja M FollerJapanIvan Magalhaes UNQUALIFIED
Tony W DoeArgentinaOnyama Limba NEGOTIATION
Misaki B OstroskySpainXuxue Feng NEGOTIATION
Greenwood I BriddickFranceAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily E MarrierUnited Kingdom2024-04-08Benton, John B Jr QUALIFIED92Xuxue Feng
1001Jones K InouyeGermany2024-04-10Feiner Bros RENEWAL42Elwin Sharvill
1002Francesco B RulapaughGermany2024-04-18Truhlar And Truhlar Attys QUALIFIED39Anna Fali
1003Aika G AlbaresJapan2024-04-03Buckley Miller Wright NEGOTIATION80Onyama Limba
1004Aika W KolmetzRussia2024-04-08Printing Dimensions UNQUALIFIED32Elwin Sharvill
1005Costa E KolmetzUnited Kingdom2024-03-28Buckley Miller Wright UNQUALIFIED50Asiya Javayant
1006Francesco K SchemmerJapan2024-04-16Dorl, James J Esq NEGOTIATION78Ioni Bowcher
1007Aruna K SergiAustralia2024-04-10Feiner Bros NEW47Bernardo Dominic
1008Antonio N RulapaughUnited Kingdom2024-04-09Feiner Bros UNQUALIFIED5Elwin Sharvill
1009Emily D AlbaresIndia2024-03-30Rousseaux, Michael Esq QUALIFIED44Onyama Limba
1010Wickens Y RulapaughBrazil2024-04-24King, Christopher A Esq PROPOSAL87Anna Fali
1011Adams L FerenczBrazil2024-03-31Rousseaux, Michael Esq NEW49Anna Fali
1012Ivar W WieserItaly2024-04-03King, Christopher A Esq UNQUALIFIED24Onyama Limba
1013Juan Z DilliardAustralia2024-04-07Truhlar And Truhlar Attys NEW24Anna Fali
1014Costa W InouyeSpain2024-03-28Rangoni Of Florence PROPOSAL66Amy Elsner
1015Jefferson N AlbaresIndia2024-04-15Chanay, Jeffrey A Esq QUALIFIED36Ioni Bowcher
1016Jennifer U RulapaughSpain2024-04-25Feiner Bros QUALIFIED4Ivan Magalhaes
1017Jeanfrancois W NestleJapan2024-04-08Rangoni Of Florence RENEWAL96Amy Elsner
1018Mayumi U AlbaresGermany2024-04-14Printing Dimensions RENEWAL47Ioni Bowcher
1019Julie N BowleyAustralia2024-03-28Chanay, Jeffrey A Esq QUALIFIED16Stephen Shaw
1020Francesco B StockhamArgentina2024-04-18Benton, John B Jr PROPOSAL3Amy Elsner
1021Ashley D CaudyGermany2024-04-02Rousseaux, Michael Esq QUALIFIED51Bernardo Dominic
1022Mayumi S TollnerArgentina2024-04-10King, Christopher A Esq PROPOSAL99Amy Elsner
1023Leon D NestleJapan2024-04-24Benton, John B Jr NEW36Asiya Javayant
1024Aika D RimUnited Kingdom2024-04-03Truhlar And Truhlar Attys QUALIFIED98Anna Fali
1025Ivar U GarufiJapan2024-04-05Dorl, James J Esq NEGOTIATION29Ivan Magalhaes
1026Aika M ShinkoUnited Kingdom2024-04-11Chemel, James L Cpa PROPOSAL77Onyama Limba
1027Sinclair A MaletItaly2024-04-12Buckley Miller Wright QUALIFIED39Amy Elsner
1028Salvatore Q BriddickCanada2024-04-14Chapman, Ross E Esq RENEWAL72Anna Fali
1029Nicolas S GillianArgentina2024-04-04Commercial Press NEW28Ioni Bowcher
1030Maisha G VenereSpain2024-04-21Commercial Press UNQUALIFIED56Ivan Magalhaes
1031Darci W FlosiItaly2024-03-27Commercial Press UNQUALIFIED48Elwin Sharvill
1032Salvatore R WaycottItaly2024-04-11Buckley Miller Wright UNQUALIFIED68Amy Elsner
1033Cody L FigeroaRussia2024-04-08Benton, John B Jr RENEWAL7Ivan Magalhaes
1034Claire B MorascaItaly2024-04-21Feltz Printing Service UNQUALIFIED51Asiya Javayant
1035Aika M SlusarskiFrance2024-04-19Rangoni Of Florence NEGOTIATION12Asiya Javayant
1036Maisha B BowleyFrance2024-04-06Morlong Associates NEW21Ioni Bowcher
1037James V SlusarskiItaly2024-04-14Rousseaux, Michael Esq NEGOTIATION38Xuxue Feng
1038Ashley Y MaletCanada2024-04-20Buckley Miller Wright RENEWAL91Stephen Shaw
1039Isabel U NestleGermany2024-04-15Dorl, James J Esq UNQUALIFIED71Stephen Shaw
1040Stacey G FollerSpain2024-04-08Dorl, James J Esq PROPOSAL10Stephen Shaw
1041Tony V CampainAustralia2024-04-15Chapman, Ross E Esq QUALIFIED50Ioni Bowcher
1042Misaki S TollnerUnited Kingdom2024-04-18Rangoni Of Florence UNQUALIFIED98Xuxue Feng
1043Darci H OstroskyGermany2024-04-14Chapman, Ross E Esq PROPOSAL45Xuxue Feng
1044Kaitlin S GarufiJapan2024-04-24Chanay, Jeffrey A Esq QUALIFIED39Asiya Javayant
1045Misaki Y SlusarskiSpain2024-03-27Feiner Bros UNQUALIFIED54Asiya Javayant
1046Aditya Y StensethAustralia2024-04-12Buckley Miller Wright NEGOTIATION36Amy Elsner
1047Kadeem W ButtRussia2024-04-21Truhlar And Truhlar Attys PROPOSAL72Asiya Javayant
1048Jeanfrancois N FerenczGermany2024-04-11Buckley Miller Wright PROPOSAL19Onyama Limba
1049Stacey N StockhamArgentina2024-04-06King, Christopher A Esq RENEWAL94Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Greenwood C FerenczItalyXuxue Feng PROPOSAL
Jones J GauchoJapanOnyama Limba QUALIFIED
Deepesh K MaletIndiaElwin Sharvill NEGOTIATION
Silvio V BriddickAustraliaXuxue Feng UNQUALIFIED
Ricardo Q CaldareraFranceAnna Fali NEW
Alejandro Y WieserIndiaIoni Bowcher NEGOTIATION
Mujtaba N RimBrazilIvan Magalhaes RENEWAL
Julie C StensethJapanIoni Bowcher RENEWAL
Deepesh I MarrierBrazilOnyama Limba RENEWAL
Leja C SlusarskiJapanXuxue Feng PROPOSAL
Izzy B FigeroaJapanAmy Elsner PROPOSAL
Silvio U PerinSpainBernardo Dominic PROPOSAL
Arvin Y CampainRussiaAmy Elsner UNQUALIFIED
Stacey A AmigonUnited KingdomXuxue Feng NEGOTIATION
Smith B ChuiIndiaXuxue Feng RENEWAL
Kaitlin U VocelkaSpainAsiya Javayant UNQUALIFIED
Leja X AmigonBrazilBernardo Dominic RENEWAL
Chavez C MorascaGermanyIvan Magalhaes RENEWAL
Aditya N IturbideGermanyAsiya Javayant NEGOTIATION
Alejandro T TollnerArgentinaOnyama Limba NEGOTIATION
Morrow H TollnerCanadaAsiya Javayant QUALIFIED
Maria U GarufiUnited KingdomIvan Magalhaes QUALIFIED
Leja W MaletJapanIoni Bowcher NEGOTIATION
Stacey E IturbideJapanIoni Bowcher RENEWAL
Mujtaba N CampainUnited KingdomIvan Magalhaes UNQUALIFIED
Leja U BowleyRussiaElwin Sharvill NEGOTIATION
Salvatore S MorascaAustraliaIoni Bowcher UNQUALIFIED
Isabel B KuskoCanadaXuxue Feng RENEWAL
Ashley E OldroydCanadaAsiya Javayant UNQUALIFIED
Emily W MorascaUnited KingdomOnyama Limba NEW
David R DilliardFranceXuxue Feng NEW
Rodrigues E AmigonArgentinaIvan Magalhaes NEGOTIATION
Kaitlin A ChuiAustraliaIvan Magalhaes QUALIFIED
Maria A MaletJapanBernardo Dominic QUALIFIED
David A TollnerRussiaOnyama Limba QUALIFIED
Arvin J MaletGermanyAmy Elsner RENEWAL
Salvatore R BologniaIndiaAnna Fali QUALIFIED
Claire U StensethUnited KingdomIvan Magalhaes RENEWAL
Silvio L AmigonCanadaAmy Elsner UNQUALIFIED
Misaki B TollnerCanadaIoni Bowcher PROPOSAL
Jefferson U MorascaBrazilStephen Shaw UNQUALIFIED
Ricardo F ButtUnited KingdomAsiya Javayant QUALIFIED
Chavez A BriddickItalyIoni Bowcher NEW
Maria T RimCanadaIvan Magalhaes RENEWAL
Mujtaba B VenereBrazilXuxue Feng RENEWAL
Wickens F OstroskyAustraliaElwin Sharvill RENEWAL
Kaitlin Z RutaFranceStephen Shaw NEW
Tony W NickaFranceBernardo Dominic NEW
Sinclair X IturbideCanadaXuxue Feng RENEWAL
Costa Z OldroydArgentinaAsiya Javayant NEW
Frozen Columns
Name
Mayumi V Amigon
Alejandro J Paprocki
Clifford E Inouye
Jones R Stockham
Jeanfrancois X Malet
Rodrigues O Poquette
Ricardo F Stockham
Octavia O Vocelka
Cody G Flosi
Salvatore D Ostrosky
Munro F Schemmer
Wickens O Foller
Costa U Whobrey
Arvin T Bolognia
Mujtaba P Perin
Johnson W Nestle
Johnson D Marrier
Aika O Flosi
Jefferson C Shinko
Sinclair Y Poquette
Emily N Tollner
Izzy Y Ostrosky
Deepesh H Gaucho
Sinclair O Venere
Aika T Gillian
Deepesh U Figeroa
Jeanfrancois L Stenseth
Chavez A Gillian
James T Figeroa
Francesco Y Kolmetz
Claire Z Marrier
Adams O Dilliard
Arvin K Shinko
Aditya J Marrier
Stacey P Ostrosky
Mayumi M Inouye
Johnson T Inouye
Arvin F Iturbide
Johnson F Nicka
Izzy Z Inouye
Emily J Flosi
Morrow M Garufi
Nicolas P Flosi
Ivar Z Malet
Maisha F Garufi
Leon A Royster
Stacey D Waycott
Faith T Iturbide
Deepesh H Stenseth
Maisha Y Bolognia
IdCountryDate
1000Argentina2024-04-20
1001Germany2024-04-16
1002Australia2024-04-10
1003Argentina2024-04-16
1004United Kingdom2024-04-02
1005Spain2024-04-17
1006Italy2024-04-16
1007Germany2024-04-14
1008Germany2024-04-02
1009Canada2024-03-27
1010India2024-04-11
1011India2024-03-27
1012Japan2024-04-23
1013Australia2024-04-13
1014Italy2024-04-12
1015Canada2024-04-08
1016United Kingdom2024-04-09
1017Brazil2024-04-16
1018Argentina2024-04-05
1019India2024-04-13
1020Spain2024-04-02
1021France2024-04-18
1022Brazil2024-03-28
1023Argentina2024-04-20
1024United Kingdom2024-04-01
1025Australia2024-03-29
1026India2024-04-22
1027Spain2024-04-01
1028Canada2024-04-11
1029India2024-03-31
1030India2024-03-27
1031Spain2024-04-11
1032Brazil2024-04-20
1033France2024-04-17
1034United Kingdom2024-03-27
1035Canada2024-03-31
1036Spain2024-04-22
1037United Kingdom2024-04-12
1038France2024-04-09
1039Russia2024-04-17
1040France2024-04-15
1041Germany2024-04-13
1042France2024-04-11
1043Argentina2024-04-19
1044Spain2024-04-08
1045France2024-03-27
1046Argentina2024-04-18
1047Spain2024-04-04
1048Australia2024-04-01
1049France2024-04-17

On-Demand Data

NameIdCountryDate
Greenwood A Waycott1000Italy2024-04-07
Morrow F Briddick1001Spain2024-04-20
Maria V Rim1002France2024-04-04
Ivar H Kolmetz1003Brazil2024-04-07
Misaki V Whobrey1004Russia2024-04-13
Aruna H Gaucho1005Canada2024-04-07
Johnson M Whobrey1006Canada2024-04-12
Salvatore X Rulapaugh1007Argentina2024-04-22
Octavia I Nicka1008Germany2024-04-24
Tony M Gillian1009Canada2024-04-04
Aruna Q Perin1010Japan2024-04-23
James A Oldroyd1011Canada2024-04-19
Julie T Perin1012India2024-04-15
Darci F Stenseth1013India2024-04-16
James T Wieser1014United Kingdom2024-03-29
Leja N Nestle1015Russia2024-03-31
Aruna G Whobrey1016Germany2024-04-12
Misaki I Doe1017Spain2024-04-16
Salvatore X Rulapaugh1018United Kingdom2024-03-28
Salvatore L Glick1019India2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio A PaprockiGermanyStephen Shaw NEW
Aika F MacleadItalyAmy Elsner NEGOTIATION
Jeanfrancois D IturbideCanadaAmy Elsner PROPOSAL
Aditya A StockhamCanadaStephen Shaw NEGOTIATION
Ashley R RoysterBrazilIoni Bowcher NEW
Jennifer I GlickUnited KingdomIoni Bowcher UNQUALIFIED
Emily D RimRussiaBernardo Dominic NEGOTIATION
Emily A WaycottGermanyAsiya Javayant QUALIFIED
Silvio B GauchoAustraliaBernardo Dominic PROPOSAL
Maisha N TollnerCanadaBernardo Dominic NEW
Aika D MaletGermanyAmy Elsner PROPOSAL
Kadeem T FlosiSpainAnna Fali NEW
Greenwood V GarufiItalyOnyama Limba QUALIFIED
Johnson Y KuskoSpainIoni Bowcher NEGOTIATION
Aruna B IturbideRussiaAsiya Javayant NEW
Aika Y CaudyItalyStephen Shaw PROPOSAL
Maria V BologniaAustraliaAmy Elsner PROPOSAL
Antonio X OldroydItalyXuxue Feng NEW
Mayumi W AmigonItalyElwin Sharvill PROPOSAL
Antonio W WieserBrazilOnyama Limba QUALIFIED
Smith P FollerCanadaBernardo Dominic QUALIFIED
Deepesh C GlickUnited KingdomOnyama Limba NEW
Silvio A NickaArgentinaBernardo Dominic QUALIFIED
Kaitlin K BologniaBrazilElwin Sharvill UNQUALIFIED
Cody I RulapaughIndiaAnna Fali RENEWAL
Antonio R FollerUnited KingdomAmy Elsner NEW
Deepesh L WhobreyBrazilAsiya Javayant RENEWAL
Juan A StockhamAustraliaIoni Bowcher NEGOTIATION
Morrow D SlusarskiCanadaBernardo Dominic NEGOTIATION
Juan Q OstroskyItalyIvan Magalhaes RENEWAL
Julie V BriddickRussiaElwin Sharvill UNQUALIFIED
Murillo X KuskoRussiaBernardo Dominic NEGOTIATION
Misaki R NestleFranceElwin Sharvill UNQUALIFIED
Izzy Y RutaSpainOnyama Limba PROPOSAL
Mayumi I DilliardItalyAmy Elsner NEGOTIATION
Arvin K RulapaughAustraliaAnna Fali UNQUALIFIED
Maisha E NickaItalyElwin Sharvill RENEWAL
Juan K SaylorsJapanElwin Sharvill RENEWAL
Francesco A CaldareraItalyAsiya Javayant UNQUALIFIED
Kaitlin O StensethBrazilStephen Shaw NEGOTIATION

<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>