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
David M AlbaresGermanyOnyama Limba PROPOSAL
Smith F DoeArgentinaOnyama Limba NEW
Isabel F MorascaGermanyIoni Bowcher QUALIFIED
Francesco D MorascaAustraliaIvan Magalhaes NEW
Ivar T PerinFranceAmy Elsner NEW
Jennifer W GlickIndiaAnna Fali NEGOTIATION
Kaitlin I FerenczArgentinaIvan Magalhaes NEW
Leon T MaletRussiaStephen Shaw RENEWAL
Morrow X DarakjyArgentinaXuxue Feng PROPOSAL
Octavia A StockhamBrazilIvan Magalhaes QUALIFIED
Antonio C GauchoRussiaElwin Sharvill NEW
Rodrigues Q IturbideGermanyAnna Fali NEW
Juan E MaletBrazilIvan Magalhaes NEW
Leon P FerenczJapanElwin Sharvill PROPOSAL
Maria M ChuiJapanOnyama Limba QUALIFIED
Rodrigues L GarufiBrazilAnna Fali NEW
Darci T StockhamRussiaXuxue Feng PROPOSAL
Tony T GauchoArgentinaAnna Fali NEGOTIATION
Maisha E StensethItalyXuxue Feng QUALIFIED
Leon K NickaJapanAnna Fali QUALIFIED
Ivar B MarrierIndiaAsiya Javayant NEW
Ricardo N VocelkaAustraliaIvan Magalhaes UNQUALIFIED
James D ChuiJapanElwin Sharvill RENEWAL
Clifford R CaudyIndiaBernardo Dominic QUALIFIED
Cody P AlbaresAustraliaAnna Fali QUALIFIED
Johnson M VenereCanadaXuxue Feng UNQUALIFIED
Izzy B WhobreySpainAnna Fali QUALIFIED
Francesco N ChuiJapanIoni Bowcher PROPOSAL
Mayumi R NickaGermanyStephen Shaw NEW
Salvatore C DilliardSpainXuxue Feng UNQUALIFIED
Francesco T KuskoJapanElwin Sharvill NEW
Munro C GlickGermanyAsiya Javayant RENEWAL
Juan K VocelkaAustraliaIvan Magalhaes NEW
Octavia H StockhamGermanyAnna Fali NEGOTIATION
Ivar B AmigonCanadaElwin Sharvill RENEWAL
Alejandro K ShinkoFranceXuxue Feng PROPOSAL
Ashley W FigeroaJapanAmy Elsner NEW
Johnson V StockhamIndiaIoni Bowcher NEW
Alejandro S GarufiJapanAnna Fali QUALIFIED
Johnson E NickaSpainAnna Fali NEGOTIATION
Juan L RulapaughItalyAnna Fali UNQUALIFIED
Tony Z VocelkaFranceAnna Fali NEGOTIATION
Sinclair J ShinkoAustraliaIvan Magalhaes UNQUALIFIED
Kaitlin Y VocelkaIndiaXuxue Feng NEW
Clifford Y MacleadRussiaStephen Shaw QUALIFIED
Mujtaba T MarrierUnited KingdomElwin Sharvill UNQUALIFIED
Aika S StensethBrazilIvan Magalhaes RENEWAL
Kadeem P AmigonItalyOnyama Limba RENEWAL
Mujtaba V NestleCanadaBernardo Dominic QUALIFIED
Cody V PaprockiIndiaIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Clifford U AmigonUnited KingdomIvan Magalhaes QUALIFIED
Emily F TollnerAustraliaXuxue Feng RENEWAL
Kaitlin F SchemmerJapanAnna Fali PROPOSAL
Mujtaba O OldroydSpainAsiya Javayant NEGOTIATION
Kaitlin W DilliardUnited KingdomOnyama Limba NEGOTIATION
Julie G TollnerItalyElwin Sharvill PROPOSAL
Kadeem J VocelkaAustraliaStephen Shaw NEGOTIATION
Alejandro B KolmetzBrazilAsiya Javayant UNQUALIFIED
Sinclair U NestleIndiaIoni Bowcher RENEWAL
Kadeem M VenereBrazilAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio Q RoysterGermany2024-04-18King, Christopher A Esq QUALIFIED78Elwin Sharvill
1001Aika H MaletFrance2024-04-27Truhlar And Truhlar Attys PROPOSAL6Xuxue Feng
1002Clifford S ShinkoArgentina2024-04-22Rousseaux, Michael Esq RENEWAL7Onyama Limba
1003Deepesh N GarufiFrance2024-04-29Dorl, James J Esq NEGOTIATION77Ivan Magalhaes
1004Deepesh L MaletAustralia2024-04-25Printing Dimensions NEGOTIATION93Onyama Limba
1005Greenwood M ButtItaly2024-05-01Truhlar And Truhlar Attys NEGOTIATION59Anna Fali
1006Ivar K OldroydIndia2024-04-27Truhlar And Truhlar Attys RENEWAL27Ioni Bowcher
1007Smith T ChuiCanada2024-04-07Chemel, James L Cpa NEGOTIATION6Onyama Limba
1008Leon C PerinRussia2024-04-05Morlong Associates NEW22Elwin Sharvill
1009Faith T SlusarskiAustralia2024-04-08Printing Dimensions UNQUALIFIED56Asiya Javayant
1010James U SaylorsSpain2024-04-21Dorl, James J Esq UNQUALIFIED23Onyama Limba
1011Maisha G BowleyItaly2024-04-21King, Christopher A Esq NEW96Xuxue Feng
1012Jennifer G SlusarskiFrance2024-04-27Dorl, James J Esq UNQUALIFIED20Elwin Sharvill
1013Faith S RutaJapan2024-04-07Rangoni Of Florence NEW93Amy Elsner
1014Johnson K WaycottJapan2024-04-30Chanay, Jeffrey A Esq PROPOSAL94Stephen Shaw
1015Misaki K BologniaBrazil2024-04-19Chapman, Ross E Esq NEW18Onyama Limba
1016Silvio O MaletIndia2024-04-20Chemel, James L Cpa UNQUALIFIED11Elwin Sharvill
1017Wickens L ShinkoSpain2024-05-03Feiner Bros RENEWAL71Asiya Javayant
1018Maria A PoquetteArgentina2024-04-12Buckley Miller Wright PROPOSAL61Elwin Sharvill
1019Munro X CampainAustralia2024-04-18Rangoni Of Florence QUALIFIED83Ioni Bowcher
1020Arvin M MorascaFrance2024-04-29Chapman, Ross E Esq RENEWAL2Ioni Bowcher
1021Nicolas N RoysterFrance2024-05-04Benton, John B Jr RENEWAL82Ivan Magalhaes
1022Ivar A CaudyIndia2024-04-25Rangoni Of Florence NEGOTIATION79Ivan Magalhaes
1023Jennifer Q MaletCanada2024-05-02Truhlar And Truhlar Attys NEW69Ioni Bowcher
1024Alejandro V MaletJapan2024-04-05Truhlar And Truhlar Attys PROPOSAL86Anna Fali
1025Jefferson P RulapaughBrazil2024-04-17Feiner Bros QUALIFIED78Onyama Limba
1026Stacey Y SchemmerUnited Kingdom2024-04-30Printing Dimensions QUALIFIED1Onyama Limba
1027Sinclair Z KuskoSpain2024-04-09Truhlar And Truhlar Attys NEGOTIATION88Onyama Limba
1028Aditya E DoeBrazil2024-04-13Chemel, James L Cpa NEGOTIATION38Ivan Magalhaes
1029Jefferson L FerenczRussia2024-04-08Printing Dimensions RENEWAL44Elwin Sharvill
1030Ashley M FerenczJapan2024-04-22Morlong Associates QUALIFIED43Amy Elsner
1031Salvatore P AmigonCanada2024-05-03Chapman, Ross E Esq NEGOTIATION61Amy Elsner
1032Antonio M InouyeArgentina2024-05-01Dorl, James J Esq NEW79Stephen Shaw
1033Deepesh M MorascaAustralia2024-05-03Feiner Bros NEW56Amy Elsner
1034Clifford X RulapaughCanada2024-04-12Feltz Printing Service PROPOSAL55Onyama Limba
1035Aditya R VenereAustralia2024-05-01Rousseaux, Michael Esq QUALIFIED27Bernardo Dominic
1036Ashley S CaudyGermany2024-04-15Benton, John B Jr NEW3Anna Fali
1037Ivar I FlosiAustralia2024-04-28Chapman, Ross E Esq NEGOTIATION10Anna Fali
1038Costa U IturbideGermany2024-04-29Rousseaux, Michael Esq NEGOTIATION31Stephen Shaw
1039Jefferson W MacleadBrazil2024-04-12Rangoni Of Florence UNQUALIFIED61Elwin Sharvill
1040Kaitlin I ButtFrance2024-04-25Morlong Associates UNQUALIFIED52Amy Elsner
1041Aditya D RutaAustralia2024-04-30Chapman, Ross E Esq NEGOTIATION99Amy Elsner
1042Leja G SaylorsJapan2024-04-18Chapman, Ross E Esq NEW64Xuxue Feng
1043Aditya A RimSpain2024-04-06Chemel, James L Cpa QUALIFIED93Xuxue Feng
1044Emily P ChuiAustralia2024-04-29Chemel, James L Cpa UNQUALIFIED56Asiya Javayant
1045Leja R GarufiSpain2024-04-16Truhlar And Truhlar Attys QUALIFIED26Anna Fali
1046Nicolas T SchemmerUnited Kingdom2024-05-01Dorl, James J Esq NEW20Elwin Sharvill
1047Leon W StockhamArgentina2024-04-22Chapman, Ross E Esq UNQUALIFIED3Amy Elsner
1048Munro H NestleGermany2024-04-20Feltz Printing Service RENEWAL73Ioni Bowcher
1049Julie J GillianUnited Kingdom2024-04-24Printing Dimensions PROPOSAL66Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Isabel U VenereArgentinaXuxue Feng NEW
Aika A GillianFranceAnna Fali NEW
Kaitlin B KuskoItalyAmy Elsner PROPOSAL
Munro B BowleyJapanBernardo Dominic QUALIFIED
Jennifer M MarrierAustraliaBernardo Dominic UNQUALIFIED
Ivar D FerenczItalyAmy Elsner QUALIFIED
Mujtaba Q IturbideBrazilStephen Shaw NEGOTIATION
Misaki K MaletFranceIvan Magalhaes PROPOSAL
Nicolas W CaudyArgentinaOnyama Limba RENEWAL
Octavia R FigeroaGermanyElwin Sharvill RENEWAL
Leon X OldroydJapanElwin Sharvill UNQUALIFIED
Claire W RulapaughRussiaOnyama Limba RENEWAL
Mujtaba V KuskoUnited KingdomElwin Sharvill NEGOTIATION
Misaki R KolmetzRussiaStephen Shaw PROPOSAL
Aika Q StensethFranceIoni Bowcher NEGOTIATION
Ashley F SergiAustraliaAnna Fali PROPOSAL
Alejandro C InouyeCanadaOnyama Limba QUALIFIED
Aika W RimArgentinaXuxue Feng UNQUALIFIED
Mayumi Q AlbaresUnited KingdomAmy Elsner NEGOTIATION
Aditya N RulapaughItalyAmy Elsner UNQUALIFIED
Antonio R CaldareraFranceAnna Fali PROPOSAL
Jones I BriddickFranceBernardo Dominic QUALIFIED
Greenwood X SaylorsSpainAnna Fali PROPOSAL
Ivar C WieserFranceBernardo Dominic PROPOSAL
Clifford V BowleyIndiaAnna Fali NEGOTIATION
Ashley V AlbaresJapanXuxue Feng QUALIFIED
Kadeem C SaylorsItalyBernardo Dominic NEW
Tony M AlbaresCanadaStephen Shaw NEW
Darci C OstroskyCanadaElwin Sharvill QUALIFIED
Ricardo R SlusarskiSpainXuxue Feng PROPOSAL
Antonio O ChuiJapanElwin Sharvill NEW
Greenwood G RimSpainIoni Bowcher UNQUALIFIED
Faith T KuskoArgentinaStephen Shaw NEW
Leon T FollerJapanAsiya Javayant NEGOTIATION
Morrow Q FerenczFranceXuxue Feng UNQUALIFIED
Jefferson K CampainSpainAmy Elsner NEGOTIATION
Cody Q PoquetteSpainAmy Elsner PROPOSAL
Jennifer C SaylorsIndiaAmy Elsner RENEWAL
Silvio Z SchemmerArgentinaAmy Elsner NEW
Nicolas Z BologniaRussiaStephen Shaw PROPOSAL
Octavia H PerinFranceXuxue Feng UNQUALIFIED
Ivar P PaprockiSpainElwin Sharvill PROPOSAL
Kadeem O PerinUnited KingdomAsiya Javayant QUALIFIED
Salvatore I TollnerUnited KingdomOnyama Limba PROPOSAL
Ashley D MaletIndiaXuxue Feng NEW
Sinclair G FlosiJapanElwin Sharvill UNQUALIFIED
Greenwood O FlosiGermanyIoni Bowcher PROPOSAL
Ricardo Y OstroskyGermanyStephen Shaw NEW
Emily F BriddickRussiaAnna Fali PROPOSAL
Aruna V FerenczGermanyIvan Magalhaes QUALIFIED
Frozen Columns
Name
Leja X Foller
Salvatore S Ruta
Antonio H Inouye
Adams Q Bolognia
Kadeem Y Darakjy
David G Nestle
Alejandro O Campain
Leja F Chui
David Y Gaucho
Sinclair E Foller
Cody E Venere
Isabel P Nestle
Octavia Z Whobrey
Darci P Iturbide
Greenwood E Briddick
Costa M Whobrey
Juan J Bowley
Chavez A Wieser
Greenwood X Albares
Izzy S Tollner
Jeanfrancois V Amigon
Kadeem X Amigon
Misaki A Butt
Antonio S Morasca
Juan C Bowley
Claire Y Garufi
Julie E Rim
Jeanfrancois I Campain
Cody H Dilliard
Silvio N Chui
Leon W Wieser
Wickens V Glick
Maisha Z Slusarski
Jennifer U Malet
Jones C Garufi
Alejandro V Paprocki
Faith E Tollner
David K Butt
Cody I Ruta
Kaitlin P Vocelka
Ivar N Kusko
Emily O Waycott
Faith F Marrier
Arvin W Chui
Mujtaba Z Campain
Mujtaba W Nicka
David K Kusko
Julie T Paprocki
Smith N Butt
Jennifer Z Foller
IdCountryDate
1000Germany2024-04-23
1001Canada2024-04-08
1002Brazil2024-04-20
1003Italy2024-05-02
1004Japan2024-04-07
1005Argentina2024-04-14
1006Spain2024-04-14
1007Spain2024-04-10
1008Germany2024-04-28
1009Australia2024-04-20
1010France2024-05-01
1011Russia2024-04-17
1012India2024-04-20
1013India2024-04-26
1014France2024-04-22
1015Italy2024-04-16
1016Japan2024-04-22
1017Brazil2024-04-18
1018Japan2024-04-08
1019Italy2024-04-26
1020India2024-04-08
1021Brazil2024-04-29
1022Australia2024-04-20
1023Australia2024-04-29
1024Germany2024-04-23
1025France2024-04-13
1026India2024-04-05
1027United Kingdom2024-05-04
1028Canada2024-04-22
1029Argentina2024-05-04
1030Italy2024-05-01
1031Argentina2024-05-02
1032United Kingdom2024-04-08
1033India2024-04-06
1034Brazil2024-04-11
1035Brazil2024-04-15
1036United Kingdom2024-04-11
1037Canada2024-04-19
1038Argentina2024-04-11
1039United Kingdom2024-05-02
1040Australia2024-04-14
1041Russia2024-04-18
1042Italy2024-04-27
1043Japan2024-04-21
1044Russia2024-04-24
1045Russia2024-04-05
1046France2024-04-19
1047India2024-04-16
1048Brazil2024-04-30
1049Brazil2024-04-15

On-Demand Data

NameIdCountryDate
Maisha Q Campain1000India2024-04-22
Aruna D Bolognia1001Germany2024-04-11
Juan D Waycott1002United Kingdom2024-04-16
Francesco R Slusarski1003Italy2024-05-02
Francesco P Nestle1004Argentina2024-04-15
Jennifer A Gaucho1005Argentina2024-04-18
Maisha S Rim1006Italy2024-04-27
David X Chui1007United Kingdom2024-05-04
Deepesh K Doe1008Spain2024-04-28
Silvio K Perin1009Argentina2024-04-29
Rodrigues M Oldroyd1010Spain2024-04-23
Leon A Nicka1011France2024-04-16
Rodrigues F Royster1012Spain2024-04-07
Octavia X Kusko1013Canada2024-04-06
Smith N Ruta1014Japan2024-04-30
Emily J Stockham1015Russia2024-04-11
Jefferson D Kusko1016Russia2024-04-27
Leon G Schemmer1017United Kingdom2024-04-27
Jeanfrancois H Flosi1018India2024-04-12
Rodrigues H Stockham1019Brazil2024-04-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore X CampainItalyStephen Shaw NEW
Adams S SergiGermanyAsiya Javayant UNQUALIFIED
Jefferson N PaprockiSpainBernardo Dominic NEGOTIATION
Claire A BologniaIndiaOnyama Limba NEW
Juan Q DoeFranceElwin Sharvill PROPOSAL
Nicolas O KolmetzUnited KingdomBernardo Dominic NEW
Silvio J GarufiUnited KingdomStephen Shaw PROPOSAL
Morrow Y RimAustraliaAmy Elsner UNQUALIFIED
Faith T PoquetteRussiaStephen Shaw RENEWAL
Leon I NestleJapanXuxue Feng QUALIFIED
Francesco M CaudyCanadaAsiya Javayant NEGOTIATION
Mayumi Q OstroskyArgentinaAsiya Javayant NEGOTIATION
Silvio T ButtGermanyBernardo Dominic PROPOSAL
Morrow O BriddickGermanyStephen Shaw RENEWAL
Wickens F GillianJapanOnyama Limba RENEWAL
Tony T BologniaCanadaElwin Sharvill PROPOSAL
Leon Y BriddickBrazilElwin Sharvill PROPOSAL
Deepesh I MaletUnited KingdomOnyama Limba PROPOSAL
Morrow J SaylorsUnited KingdomAnna Fali NEGOTIATION
Octavia B KolmetzSpainXuxue Feng NEGOTIATION
Rodrigues R IturbideIndiaBernardo Dominic RENEWAL
Aruna D AmigonCanadaAnna Fali NEW
Chavez K ButtRussiaAmy Elsner NEW
Juan M FigeroaFranceAnna Fali PROPOSAL
Adams Z OstroskySpainAmy Elsner QUALIFIED
Deepesh F InouyeAustraliaBernardo Dominic UNQUALIFIED
Isabel A NestleCanadaIoni Bowcher RENEWAL
Isabel A MaletItalyBernardo Dominic NEW
Ricardo X RulapaughItalyIoni Bowcher NEGOTIATION
Salvatore G SchemmerBrazilElwin Sharvill RENEWAL
Wickens Q FlosiGermanyXuxue Feng RENEWAL
Ricardo U GlickJapanIvan Magalhaes PROPOSAL
Adams U DilliardCanadaIvan Magalhaes QUALIFIED
Aika J MaletIndiaIvan Magalhaes UNQUALIFIED
Claire R DilliardArgentinaIvan Magalhaes RENEWAL
Clifford B CaudyGermanyXuxue Feng NEW
Aruna M VocelkaSpainAmy Elsner NEW
Aika E WhobreyGermanyAsiya Javayant RENEWAL
Deepesh J MacleadJapanElwin Sharvill QUALIFIED
Costa Q CaudySpainXuxue Feng 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>