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
Claire V StensethBrazilOnyama Limba RENEWAL
Munro L StockhamSpainIvan Magalhaes QUALIFIED
Clifford B OldroydArgentinaElwin Sharvill QUALIFIED
Mayumi F StensethItalyXuxue Feng RENEWAL
Juan L InouyeItalyAnna Fali QUALIFIED
Tony Z RutaFranceIvan Magalhaes UNQUALIFIED
Emily Y InouyeBrazilBernardo Dominic NEGOTIATION
Tony D ButtSpainOnyama Limba QUALIFIED
Salvatore M ButtSpainOnyama Limba QUALIFIED
Sinclair N DilliardCanadaAnna Fali NEGOTIATION
Mayumi C MaletGermanyStephen Shaw QUALIFIED
Morrow I BowleyGermanyIvan Magalhaes UNQUALIFIED
Ivar K WieserFranceOnyama Limba NEW
Tony Y WhobreyArgentinaAsiya Javayant RENEWAL
Arvin E ChuiFranceIoni Bowcher QUALIFIED
Antonio O BriddickGermanyAsiya Javayant NEGOTIATION
Antonio N ChuiRussiaXuxue Feng RENEWAL
Leon Z FerenczUnited KingdomOnyama Limba QUALIFIED
Murillo E KuskoBrazilIvan Magalhaes QUALIFIED
Isabel T SergiIndiaAnna Fali NEGOTIATION
Mujtaba A FigeroaRussiaOnyama Limba UNQUALIFIED
Darci F CaudyFranceElwin Sharvill UNQUALIFIED
Jennifer T RulapaughFranceAnna Fali NEGOTIATION
Munro J ShinkoJapanAmy Elsner NEW
Ashley H VocelkaFranceAsiya Javayant UNQUALIFIED
Costa W WhobreyAustraliaAsiya Javayant PROPOSAL
Darci F MorascaRussiaAnna Fali NEGOTIATION
Murillo B MorascaItalyIoni Bowcher PROPOSAL
Kadeem E BowleyIndiaAnna Fali PROPOSAL
Salvatore Y MaletJapanAnna Fali NEGOTIATION
Mayumi U PerinUnited KingdomIvan Magalhaes PROPOSAL
Francesco X NickaAustraliaXuxue Feng NEGOTIATION
Stacey W FollerBrazilElwin Sharvill NEW
Jones H FlosiIndiaIoni Bowcher UNQUALIFIED
Smith J TollnerAustraliaAnna Fali NEW
Claire T MorascaArgentinaAsiya Javayant NEW
James A AmigonUnited KingdomIoni Bowcher PROPOSAL
Antonio U BologniaRussiaStephen Shaw UNQUALIFIED
Murillo P RulapaughArgentinaBernardo Dominic QUALIFIED
David L WieserRussiaStephen Shaw PROPOSAL
Murillo J StockhamIndiaIvan Magalhaes PROPOSAL
Julie D RutaSpainElwin Sharvill UNQUALIFIED
Julie G GarufiItalyAmy Elsner RENEWAL
Jones C GillianFranceXuxue Feng RENEWAL
Juan D NestleCanadaXuxue Feng UNQUALIFIED
Julie W StockhamIndiaXuxue Feng NEGOTIATION
Maisha W PerinAustraliaAnna Fali UNQUALIFIED
Morrow G FollerJapanAsiya Javayant NEGOTIATION
Misaki P FollerUnited KingdomXuxue Feng NEGOTIATION
Mayumi L WaycottItalyAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ricardo P InouyeBrazilIvan Magalhaes NEGOTIATION
Deepesh U NestleJapanAsiya Javayant NEW
Wickens S AlbaresAustraliaIvan Magalhaes RENEWAL
Stacey B PoquetteSpainXuxue Feng UNQUALIFIED
Julie G FerenczCanadaBernardo Dominic PROPOSAL
Silvio I IturbideItalyAnna Fali UNQUALIFIED
Emily E BologniaJapanAsiya Javayant NEGOTIATION
Stacey D CaudyIndiaAsiya Javayant RENEWAL
Maisha S FlosiIndiaAnna Fali NEW
Maria O ShinkoIndiaAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya E RutaIndia2024-04-19Buckley Miller Wright UNQUALIFIED36Asiya Javayant
1001Costa G RulapaughRussia2024-04-24Truhlar And Truhlar Attys NEW68Anna Fali
1002Faith J BologniaFrance2024-04-01Commercial Press QUALIFIED61Amy Elsner
1003Julie J MaletAustralia2024-04-17Buckley Miller Wright NEGOTIATION17Stephen Shaw
1004Kadeem N SlusarskiFrance2024-04-14Rangoni Of Florence UNQUALIFIED56Amy Elsner
1005Johnson X RimArgentina2024-03-28Chemel, James L Cpa NEGOTIATION61Anna Fali
1006Antonio K WaycottRussia2024-03-30Chemel, James L Cpa NEGOTIATION77Onyama Limba
1007Faith F StensethUnited Kingdom2024-04-16Truhlar And Truhlar Attys PROPOSAL1Amy Elsner
1008Antonio D CaldareraItaly2024-04-03Rousseaux, Michael Esq RENEWAL37Ivan Magalhaes
1009Kadeem A FollerItaly2024-04-01Feiner Bros RENEWAL58Elwin Sharvill
1010Costa S MacleadFrance2024-04-24Chanay, Jeffrey A Esq NEGOTIATION36Asiya Javayant
1011Rodrigues T VenereGermany2024-04-15Rousseaux, Michael Esq RENEWAL50Onyama Limba
1012Aditya M FigeroaIndia2024-03-27Rangoni Of Florence QUALIFIED87Asiya Javayant
1013Cody E DilliardItaly2024-04-16Printing Dimensions UNQUALIFIED45Stephen Shaw
1014Cody G IturbideRussia2024-04-07Buckley Miller Wright NEGOTIATION0Bernardo Dominic
1015Antonio P MaletGermany2024-04-14King, Christopher A Esq UNQUALIFIED86Bernardo Dominic
1016Francesco X DoeAustralia2024-04-12Rousseaux, Michael Esq RENEWAL52Elwin Sharvill
1017Isabel N FerenczGermany2024-04-12Printing Dimensions NEGOTIATION9Ivan Magalhaes
1018Kaitlin B GarufiIndia2024-04-22Morlong Associates UNQUALIFIED22Bernardo Dominic
1019Mayumi O DilliardGermany2024-03-27Morlong Associates NEGOTIATION31Onyama Limba
1020Mujtaba K OstroskyJapan2024-03-27Morlong Associates NEGOTIATION3Anna Fali
1021Jeanfrancois C PaprockiFrance2024-04-03Commercial Press UNQUALIFIED46Bernardo Dominic
1022Costa W RulapaughJapan2024-03-28Feltz Printing Service NEGOTIATION39Xuxue Feng
1023Nicolas D GlickSpain2024-03-28Dorl, James J Esq PROPOSAL20Elwin Sharvill
1024Jeanfrancois Q MorascaUnited Kingdom2024-04-12Rangoni Of Florence PROPOSAL6Stephen Shaw
1025Emily G PaprockiJapan2024-04-23Printing Dimensions QUALIFIED39Amy Elsner
1026Mayumi Y SchemmerJapan2024-04-08Feiner Bros UNQUALIFIED39Stephen Shaw
1027Ashley F PaprockiBrazil2024-04-12Benton, John B Jr QUALIFIED14Amy Elsner
1028Octavia L WieserCanada2024-03-31Chanay, Jeffrey A Esq QUALIFIED21Stephen Shaw
1029Smith R SaylorsSpain2024-03-30Feltz Printing Service NEGOTIATION61Anna Fali
1030Morrow N AmigonAustralia2024-04-19King, Christopher A Esq PROPOSAL10Anna Fali
1031Deepesh O TollnerAustralia2024-04-24Dorl, James J Esq RENEWAL78Onyama Limba
1032Claire T NickaJapan2024-04-02Benton, John B Jr NEGOTIATION83Ioni Bowcher
1033Stacey I MaletUnited Kingdom2024-04-02Commercial Press NEGOTIATION63Onyama Limba
1034Leon Z CaldareraArgentina2024-04-10Rousseaux, Michael Esq QUALIFIED66Bernardo Dominic
1035Adams G NestleArgentina2024-04-09Commercial Press NEW76Amy Elsner
1036Claire Z DarakjyFrance2024-04-03Benton, John B Jr PROPOSAL48Asiya Javayant
1037Aika K PaprockiAustralia2024-04-02King, Christopher A Esq RENEWAL88Anna Fali
1038Faith W VocelkaBrazil2024-04-16Chapman, Ross E Esq PROPOSAL35Xuxue Feng
1039Jones X TollnerBrazil2024-04-06Morlong Associates NEGOTIATION41Ioni Bowcher
1040Tony Q AmigonJapan2024-04-03Feltz Printing Service QUALIFIED36Elwin Sharvill
1041Aika G MaletSpain2024-04-21King, Christopher A Esq NEW48Asiya Javayant
1042Mayumi A BologniaItaly2024-04-01Printing Dimensions NEGOTIATION0Asiya Javayant
1043Tony K FigeroaCanada2024-03-31Feltz Printing Service QUALIFIED38Asiya Javayant
1044Isabel W BriddickUnited Kingdom2024-04-16Feltz Printing Service NEW33Elwin Sharvill
1045Sinclair T StensethItaly2024-04-21Commercial Press NEGOTIATION50Elwin Sharvill
1046Antonio R SchemmerAustralia2024-04-23Rousseaux, Michael Esq PROPOSAL32Stephen Shaw
1047Darci D InouyeGermany2024-04-16Chapman, Ross E Esq UNQUALIFIED76Xuxue Feng
1048Claire T PerinArgentina2024-04-03Dorl, James J Esq NEGOTIATION92Ivan Magalhaes
1049James H SergiSpain2024-04-01Buckley Miller Wright QUALIFIED97Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Murillo H GarufiFranceElwin Sharvill UNQUALIFIED
Nicolas U TollnerGermanyStephen Shaw PROPOSAL
Ashley M ButtRussiaElwin Sharvill NEW
Kaitlin U CaldareraSpainOnyama Limba UNQUALIFIED
Darci K WieserJapanOnyama Limba NEW
Murillo B StensethGermanyXuxue Feng UNQUALIFIED
Jones X FollerCanadaAnna Fali QUALIFIED
Juan D FlosiGermanyIvan Magalhaes QUALIFIED
Nicolas F DarakjyFranceStephen Shaw NEGOTIATION
Mayumi O KolmetzBrazilElwin Sharvill RENEWAL
Aditya C WaycottSpainAsiya Javayant NEW
Kadeem H RimItalyAnna Fali UNQUALIFIED
Arvin B MacleadItalyIoni Bowcher QUALIFIED
Julie I RulapaughSpainOnyama Limba PROPOSAL
Munro R WhobreyRussiaXuxue Feng PROPOSAL
Adams C MacleadJapanElwin Sharvill QUALIFIED
Mujtaba J RulapaughIndiaBernardo Dominic PROPOSAL
Julie G BriddickUnited KingdomStephen Shaw RENEWAL
Leja W VenereJapanXuxue Feng UNQUALIFIED
Francesco X ShinkoSpainAnna Fali UNQUALIFIED
Chavez O StockhamSpainStephen Shaw QUALIFIED
Ricardo R AmigonIndiaAnna Fali UNQUALIFIED
Leja W PaprockiCanadaIoni Bowcher NEGOTIATION
Tony K ButtSpainXuxue Feng PROPOSAL
Jones W RulapaughFranceBernardo Dominic NEGOTIATION
Octavia W StensethIndiaAnna Fali NEGOTIATION
Leja W RulapaughBrazilOnyama Limba NEW
Adams S StockhamAustraliaAmy Elsner PROPOSAL
Nicolas L FerenczJapanIoni Bowcher QUALIFIED
Emily H SchemmerItalyBernardo Dominic UNQUALIFIED
Izzy C OstroskyUnited KingdomOnyama Limba UNQUALIFIED
Faith V VenereRussiaIvan Magalhaes UNQUALIFIED
Faith T MaletRussiaStephen Shaw UNQUALIFIED
David B PoquetteAustraliaOnyama Limba UNQUALIFIED
Faith D RimArgentinaAnna Fali UNQUALIFIED
Emily I BowleyItalyBernardo Dominic PROPOSAL
Ricardo B SlusarskiAustraliaIvan Magalhaes QUALIFIED
Aruna A MarrierCanadaAsiya Javayant UNQUALIFIED
Munro N ChuiArgentinaXuxue Feng NEGOTIATION
Adams M GauchoJapanAmy Elsner NEGOTIATION
Costa E IturbideUnited KingdomXuxue Feng QUALIFIED
Kaitlin I VocelkaIndiaXuxue Feng UNQUALIFIED
Jennifer H RimCanadaAnna Fali PROPOSAL
Darci N SergiBrazilAmy Elsner PROPOSAL
Misaki V AlbaresArgentinaIvan Magalhaes NEW
Sinclair Q VenereGermanyXuxue Feng NEGOTIATION
Murillo L RulapaughItalyBernardo Dominic QUALIFIED
Chavez O DilliardArgentinaIvan Magalhaes QUALIFIED
Jefferson K SlusarskiJapanElwin Sharvill UNQUALIFIED
Aruna Z DilliardFranceOnyama Limba UNQUALIFIED
Frozen Columns
Name
Jefferson L Doe
Misaki K Amigon
Claire N Caudy
Claire D Stenseth
Kadeem P Briddick
Ivar L Butt
Maria Q Oldroyd
Francesco I Inouye
Octavia T Butt
Aika O Caudy
Ivar T Dilliard
Jefferson I Chui
Claire B Campain
Aruna Y Kolmetz
Nicolas R Dilliard
Emily B Albares
Mujtaba P Amigon
Jefferson Y Poquette
Darci C Oldroyd
Cody K Albares
Stacey D Royster
Maria S Slusarski
Juan Z Tollner
Adams I Doe
Kaitlin M Venere
Francesco Z Albares
Emily Y Iturbide
Arvin X Nicka
Wickens R Stockham
Arvin B Caldarera
Deepesh M Gaucho
Kadeem C Caudy
Darci D Gaucho
Mujtaba D Vocelka
Murillo Q Foller
Rodrigues F Ostrosky
Mujtaba U Chui
Jennifer Z Flosi
Chavez C Ferencz
Octavia N Vocelka
Stacey Q Ruta
Emily U Flosi
Julie T Bolognia
Stacey N Caldarera
Munro M Shinko
Izzy F Stockham
Claire Q Chui
Jeanfrancois Q Marrier
Darci F Glick
Darci J Gillian
IdCountryDate
1000Italy2024-04-02
1001Brazil2024-04-12
1002Brazil2024-04-17
1003Germany2024-03-27
1004Australia2024-04-25
1005Argentina2024-04-02
1006Italy2024-04-07
1007Germany2024-04-01
1008Germany2024-04-08
1009Spain2024-04-06
1010Germany2024-04-03
1011Spain2024-04-04
1012Argentina2024-04-12
1013Japan2024-04-14
1014Japan2024-03-30
1015Germany2024-04-18
1016Australia2024-04-06
1017Argentina2024-04-23
1018Australia2024-03-31
1019Brazil2024-03-30
1020Australia2024-04-20
1021United Kingdom2024-04-25
1022Spain2024-04-10
1023Spain2024-04-08
1024Argentina2024-04-16
1025Australia2024-04-16
1026France2024-04-02
1027Argentina2024-04-25
1028Brazil2024-04-04
1029Germany2024-04-18
1030Argentina2024-04-17
1031Russia2024-04-01
1032Spain2024-04-24
1033Spain2024-04-09
1034France2024-04-05
1035Australia2024-04-24
1036Spain2024-03-31
1037Russia2024-03-28
1038Brazil2024-04-15
1039Argentina2024-04-02
1040Brazil2024-04-02
1041Spain2024-04-14
1042Australia2024-04-11
1043Japan2024-04-18
1044Japan2024-03-28
1045Brazil2024-03-29
1046Italy2024-03-28
1047Japan2024-04-07
1048Canada2024-03-28
1049Canada2024-04-10

On-Demand Data

NameIdCountryDate
Aditya N Oldroyd1000Germany2024-04-03
Maria O Wieser1001Australia2024-04-16
Juan F Slusarski1002India2024-04-18
Cody Z Wieser1003Canada2024-04-25
Leja F Shinko1004Spain2024-03-27
Izzy F Flosi1005India2024-03-29
Munro W Rim1006Brazil2024-04-04
Maisha O Schemmer1007Russia2024-04-17
Jones Q Perin1008Canada2024-04-18
Costa W Nestle1009Brazil2024-04-17
Faith W Butt1010Japan2024-04-02
Misaki U Albares1011Japan2024-04-02
Clifford U Gillian1012Spain2024-03-29
Isabel R Stenseth1013Brazil2024-04-16
Silvio W Poquette1014Russia2024-04-23
Jefferson T Morasca1015Canada2024-04-01
Aruna D Ferencz1016United Kingdom2024-04-18
Sinclair Z Foller1017Brazil2024-04-09
Ivar N Glick1018Spain2024-04-07
James J Paprocki1019Germany2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria S NickaCanadaIvan Magalhaes NEGOTIATION
Jefferson B GillianFranceStephen Shaw UNQUALIFIED
Wickens T CaudyArgentinaAmy Elsner RENEWAL
David G BowleyRussiaAnna Fali RENEWAL
Ricardo F RutaRussiaXuxue Feng NEGOTIATION
Aika W WieserItalyAmy Elsner NEW
Aditya V MorascaAustraliaAnna Fali NEGOTIATION
Aditya D KolmetzItalyAmy Elsner UNQUALIFIED
Rodrigues M StensethIndiaAsiya Javayant UNQUALIFIED
Alejandro P MorascaRussiaAmy Elsner RENEWAL
Ricardo X ShinkoSpainOnyama Limba PROPOSAL
Munro H DarakjyFranceIoni Bowcher UNQUALIFIED
Octavia E VenereCanadaOnyama Limba RENEWAL
Johnson Y CaldareraCanadaOnyama Limba RENEWAL
Cody V OldroydAustraliaIvan Magalhaes NEW
Smith L VocelkaUnited KingdomIoni Bowcher PROPOSAL
Faith E KolmetzSpainIoni Bowcher NEW
Aruna O ShinkoUnited KingdomAmy Elsner QUALIFIED
Octavia Q CampainArgentinaAnna Fali RENEWAL
Murillo H FlosiIndiaAnna Fali NEGOTIATION
Kadeem L PoquetteAustraliaIoni Bowcher RENEWAL
Ivar K PerinArgentinaStephen Shaw QUALIFIED
Stacey J NickaSpainIvan Magalhaes PROPOSAL
Alejandro Z StockhamFranceBernardo Dominic PROPOSAL
Maria M SergiBrazilOnyama Limba NEGOTIATION
Claire T DoeItalyAsiya Javayant RENEWAL
Rodrigues L MaletArgentinaStephen Shaw NEW
Stacey F GauchoIndiaIvan Magalhaes NEGOTIATION
Maria U ButtItalyIvan Magalhaes PROPOSAL
Claire C DilliardIndiaXuxue Feng RENEWAL
Maria B DoeAustraliaAsiya Javayant PROPOSAL
Clifford X NickaFranceIvan Magalhaes NEW
Adams J VenereItalyIoni Bowcher UNQUALIFIED
Misaki A NickaItalyAsiya Javayant RENEWAL
Juan Y WieserIndiaElwin Sharvill PROPOSAL
Darci Y ButtArgentinaXuxue Feng PROPOSAL
Leja G BriddickSpainXuxue Feng QUALIFIED
Mayumi J WaycottFranceXuxue Feng RENEWAL
Aditya A CaudyRussiaAnna Fali UNQUALIFIED
Clifford S OldroydFranceStephen 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>