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
Darci Q OstroskyJapanIvan Magalhaes UNQUALIFIED
Murillo E FlosiRussiaBernardo Dominic NEGOTIATION
Aika M GillianAustraliaBernardo Dominic UNQUALIFIED
Leon E GarufiJapanIoni Bowcher NEGOTIATION
Kadeem P CaldareraIndiaIoni Bowcher PROPOSAL
David W ChuiBrazilIoni Bowcher QUALIFIED
Maria O TollnerBrazilIoni Bowcher NEW
Octavia B GillianItalyOnyama Limba UNQUALIFIED
Ricardo T GlickCanadaBernardo Dominic PROPOSAL
Aika M GauchoSpainElwin Sharvill QUALIFIED
Arvin H NickaFranceElwin Sharvill PROPOSAL
Kadeem Q RoysterRussiaElwin Sharvill RENEWAL
Clifford W ButtAustraliaOnyama Limba QUALIFIED
Munro I RulapaughJapanAnna Fali RENEWAL
Ivar Z FollerCanadaBernardo Dominic NEW
Stacey X IturbideFranceOnyama Limba NEGOTIATION
Julie Y AlbaresRussiaOnyama Limba PROPOSAL
Smith O BowleyGermanyOnyama Limba NEW
Costa J KuskoAustraliaIvan Magalhaes NEGOTIATION
Rodrigues O ShinkoRussiaBernardo Dominic RENEWAL
David B RimItalyAsiya Javayant PROPOSAL
Darci C GauchoGermanyStephen Shaw RENEWAL
Antonio L NickaGermanyAsiya Javayant UNQUALIFIED
Jefferson V KuskoUnited KingdomIvan Magalhaes NEW
Faith O DoeJapanStephen Shaw NEGOTIATION
Misaki L RoysterUnited KingdomIoni Bowcher NEGOTIATION
Leja W NickaSpainOnyama Limba UNQUALIFIED
Greenwood U AmigonIndiaElwin Sharvill NEW
Francesco P VocelkaRussiaAmy Elsner UNQUALIFIED
Morrow T GillianFranceAmy Elsner RENEWAL
Emily F AlbaresGermanyIoni Bowcher QUALIFIED
Kaitlin C InouyeAustraliaXuxue Feng QUALIFIED
James J SergiIndiaAsiya Javayant NEGOTIATION
Maisha V AlbaresUnited KingdomAnna Fali RENEWAL
Costa C WieserJapanAsiya Javayant RENEWAL
Tony K PaprockiArgentinaOnyama Limba RENEWAL
Sinclair W KolmetzJapanAnna Fali RENEWAL
Chavez N DarakjyGermanyXuxue Feng NEGOTIATION
David L SergiArgentinaElwin Sharvill NEW
Aika J KuskoItalyBernardo Dominic PROPOSAL
Aika K WaycottRussiaElwin Sharvill PROPOSAL
Antonio U VocelkaIndiaAsiya Javayant NEW
Aruna F KuskoJapanOnyama Limba UNQUALIFIED
Julie C TollnerFranceIvan Magalhaes QUALIFIED
Octavia H PaprockiJapanAmy Elsner RENEWAL
Greenwood G AmigonBrazilIvan Magalhaes UNQUALIFIED
Kadeem H RoysterAustraliaIoni Bowcher RENEWAL
Cody P SlusarskiBrazilAmy Elsner PROPOSAL
Mayumi M OstroskyItalyAsiya Javayant QUALIFIED
Ashley Y WaycottCanadaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Chavez E PaprockiSpainElwin Sharvill PROPOSAL
Murillo H PerinIndiaStephen Shaw UNQUALIFIED
Salvatore N MaletGermanyIvan Magalhaes NEGOTIATION
Ashley I BowleyCanadaAmy Elsner UNQUALIFIED
Maria P RimBrazilOnyama Limba NEGOTIATION
Adams O GauchoIndiaAnna Fali RENEWAL
Maisha T PerinGermanyAsiya Javayant UNQUALIFIED
Johnson Z AlbaresFranceBernardo Dominic QUALIFIED
Aruna X OldroydGermanyIoni Bowcher PROPOSAL
Munro U GarufiJapanAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki L NestleGermany2024-04-12Chanay, Jeffrey A Esq QUALIFIED65Amy Elsner
1001Arvin B GillianItaly2024-04-15Printing Dimensions NEW75Elwin Sharvill
1002Rodrigues Z MaletArgentina2024-03-26Feltz Printing Service RENEWAL19Bernardo Dominic
1003Adams Y SchemmerAustralia2024-04-04Dorl, James J Esq PROPOSAL37Stephen Shaw
1004Ricardo B AmigonCanada2024-03-18Buckley Miller Wright QUALIFIED8Anna Fali
1005Munro C SaylorsSpain2024-04-09Dorl, James J Esq PROPOSAL20Xuxue Feng
1006Misaki S GauchoGermany2024-04-15Chemel, James L Cpa QUALIFIED43Anna Fali
1007Aika Z BologniaGermany2024-03-20Feiner Bros QUALIFIED49Anna Fali
1008Maria F BowleySpain2024-03-29Dorl, James J Esq NEGOTIATION64Xuxue Feng
1009Antonio N BowleySpain2024-03-31Truhlar And Truhlar Attys NEW62Elwin Sharvill
1010Misaki C IturbideFrance2024-03-25Benton, John B Jr NEGOTIATION63Asiya Javayant
1011Francesco V FlosiArgentina2024-04-13Chapman, Ross E Esq PROPOSAL22Ivan Magalhaes
1012Faith A MaletIndia2024-04-12Chemel, James L Cpa QUALIFIED24Ioni Bowcher
1013Johnson Q BologniaCanada2024-03-31Chemel, James L Cpa NEGOTIATION24Ivan Magalhaes
1014Kaitlin M SaylorsArgentina2024-04-12King, Christopher A Esq UNQUALIFIED8Xuxue Feng
1015James B MaletAustralia2024-04-14Chapman, Ross E Esq NEGOTIATION24Anna Fali
1016Isabel E SaylorsIndia2024-04-04Rousseaux, Michael Esq NEGOTIATION99Ivan Magalhaes
1017Kaitlin J MaletCanada2024-04-10Feiner Bros PROPOSAL1Xuxue Feng
1018Morrow K VenereJapan2024-04-12Rousseaux, Michael Esq NEW74Bernardo Dominic
1019Juan E BologniaRussia2024-04-02Morlong Associates NEW63Amy Elsner
1020Jennifer R SlusarskiAustralia2024-04-09Chanay, Jeffrey A Esq NEW72Stephen Shaw
1021Costa H ShinkoFrance2024-04-05Rousseaux, Michael Esq NEGOTIATION41Onyama Limba
1022Mayumi P GlickCanada2024-04-09Dorl, James J Esq PROPOSAL13Ivan Magalhaes
1023Stacey Y BriddickCanada2024-03-22Rousseaux, Michael Esq NEW93Anna Fali
1024Jeanfrancois J VenereBrazil2024-04-08Printing Dimensions NEW70Onyama Limba
1025Wickens J SchemmerRussia2024-04-15Rousseaux, Michael Esq QUALIFIED48Elwin Sharvill
1026Ivar K MorascaCanada2024-04-05Rangoni Of Florence QUALIFIED48Amy Elsner
1027Stacey P GlickSpain2024-04-07King, Christopher A Esq NEGOTIATION61Anna Fali
1028Adams K DilliardAustralia2024-04-07Feltz Printing Service RENEWAL76Onyama Limba
1029Alejandro D ChuiJapan2024-03-22Benton, John B Jr PROPOSAL15Elwin Sharvill
1030Clifford Z NestleSpain2024-03-27Chemel, James L Cpa UNQUALIFIED55Xuxue Feng
1031Nicolas N GarufiFrance2024-04-15Buckley Miller Wright NEW87Ivan Magalhaes
1032Ivar Y BologniaItaly2024-03-23Chanay, Jeffrey A Esq PROPOSAL71Stephen Shaw
1033Nicolas S WieserAustralia2024-03-28Chanay, Jeffrey A Esq PROPOSAL52Anna Fali
1034Ricardo S AlbaresCanada2024-04-02King, Christopher A Esq NEW82Onyama Limba
1035Wickens C ChuiJapan2024-03-21Feiner Bros QUALIFIED36Bernardo Dominic
1036Salvatore G PerinRussia2024-04-14Rousseaux, Michael Esq PROPOSAL11Xuxue Feng
1037James V MaletBrazil2024-04-15Morlong Associates PROPOSAL91Onyama Limba
1038Kaitlin E MorascaArgentina2024-04-11Chemel, James L Cpa QUALIFIED87Onyama Limba
1039Arvin H SlusarskiAustralia2024-04-14Buckley Miller Wright QUALIFIED57Stephen Shaw
1040Kadeem K WhobreyGermany2024-04-09Chemel, James L Cpa NEW66Bernardo Dominic
1041Kaitlin W ChuiAustralia2024-03-18Benton, John B Jr QUALIFIED58Ivan Magalhaes
1042Ricardo G DilliardGermany2024-04-05Chapman, Ross E Esq QUALIFIED92Ivan Magalhaes
1043Aika C RimCanada2024-03-17Printing Dimensions NEGOTIATION43Xuxue Feng
1044Izzy E CaldareraRussia2024-03-28Dorl, James J Esq UNQUALIFIED4Asiya Javayant
1045Deepesh E PoquetteIndia2024-03-29Truhlar And Truhlar Attys UNQUALIFIED42Asiya Javayant
1046Morrow Y MaletUnited Kingdom2024-04-11Dorl, James J Esq PROPOSAL69Xuxue Feng
1047James R SlusarskiSpain2024-03-18Rousseaux, Michael Esq RENEWAL92Amy Elsner
1048Greenwood C AlbaresBrazil2024-03-31Feiner Bros NEGOTIATION4Xuxue Feng
1049Greenwood B RulapaughFrance2024-04-03Morlong Associates PROPOSAL11Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Arvin U GlickRussiaXuxue Feng NEGOTIATION
Aditya T PoquetteRussiaAsiya Javayant RENEWAL
Deepesh O PaprockiCanadaStephen Shaw NEGOTIATION
Misaki D AlbaresAustraliaIoni Bowcher NEGOTIATION
Maisha T ShinkoRussiaOnyama Limba NEW
Leon S MaletArgentinaIoni Bowcher NEW
Kadeem Y FigeroaArgentinaOnyama Limba NEW
Chavez T CaldareraJapanAnna Fali NEGOTIATION
Clifford Y IturbideRussiaAmy Elsner PROPOSAL
Johnson M NestleJapanOnyama Limba PROPOSAL
Ricardo F WhobreyJapanIoni Bowcher NEW
Morrow E GillianCanadaStephen Shaw NEGOTIATION
Leon Q PerinJapanXuxue Feng UNQUALIFIED
Jefferson S MorascaUnited KingdomBernardo Dominic RENEWAL
Aruna W SergiAustraliaElwin Sharvill NEGOTIATION
Cody G CaudyAustraliaStephen Shaw UNQUALIFIED
Cody R RoysterGermanyIoni Bowcher PROPOSAL
Octavia R ButtAustraliaBernardo Dominic QUALIFIED
Smith Q DilliardItalyBernardo Dominic PROPOSAL
Tony V KuskoArgentinaStephen Shaw NEW
Smith T SchemmerBrazilOnyama Limba PROPOSAL
Jones D BologniaCanadaAmy Elsner QUALIFIED
Kadeem O InouyeFranceElwin Sharvill NEW
David J SlusarskiJapanAsiya Javayant NEGOTIATION
Chavez X PoquetteAustraliaIvan Magalhaes UNQUALIFIED
Smith V VenereBrazilStephen Shaw QUALIFIED
Jones G NestleCanadaAmy Elsner NEW
Morrow W WaycottUnited KingdomIvan Magalhaes RENEWAL
Juan S OldroydUnited KingdomIvan Magalhaes UNQUALIFIED
Kadeem Z GillianGermanyOnyama Limba UNQUALIFIED
Munro U ChuiItalyAsiya Javayant NEGOTIATION
Jones T InouyeAustraliaBernardo Dominic NEW
Rodrigues K SergiUnited KingdomAnna Fali PROPOSAL
Sinclair R CampainJapanIoni Bowcher RENEWAL
Smith B BriddickItalyIvan Magalhaes UNQUALIFIED
Ashley E PerinItalyOnyama Limba RENEWAL
Claire K SaylorsArgentinaAmy Elsner NEW
Emily L ShinkoBrazilIvan Magalhaes QUALIFIED
Tony R RulapaughCanadaOnyama Limba UNQUALIFIED
Salvatore B OstroskySpainAmy Elsner PROPOSAL
Sinclair F MaletJapanXuxue Feng NEW
Jefferson S VenereJapanAmy Elsner QUALIFIED
Julie R TollnerRussiaIoni Bowcher QUALIFIED
Jeanfrancois W KuskoAustraliaAsiya Javayant PROPOSAL
Faith C ShinkoAustraliaAmy Elsner NEGOTIATION
Kadeem R MarrierJapanAmy Elsner NEW
Isabel D StockhamCanadaBernardo Dominic RENEWAL
Adams Q VenereBrazilAmy Elsner NEW
Ricardo T FollerAustraliaAmy Elsner NEW
Darci T MaletGermanyXuxue Feng NEGOTIATION
Frozen Columns
Name
Jefferson B Garufi
Sinclair L Kolmetz
Munro M Schemmer
Emily M Marrier
Claire T Inouye
Jefferson M Bowley
Salvatore X Marrier
Smith P Schemmer
Faith Z Bolognia
Clifford T Morasca
Cody Z Poquette
Chavez D Albares
Johnson A Whobrey
Jones V Gillian
Kadeem L Perin
Alejandro N Poquette
Smith O Morasca
Costa W Schemmer
Greenwood Q Caudy
Kadeem U Chui
Morrow D Caudy
Tony U Kolmetz
Nicolas U Nestle
Tony D Venere
Tony X Campain
Juan X Ostrosky
Greenwood Z Butt
James Q Nicka
Darci B Oldroyd
Munro D Saylors
Aruna F Vocelka
Francesco T Foller
Octavia T Rulapaugh
Salvatore G Whobrey
Clifford B Gaucho
Stacey S Morasca
Darci K Darakjy
Chavez G Briddick
Juan F Poquette
Morrow Y Morasca
Sinclair Y Dilliard
Chavez X Campain
Octavia D Briddick
Adams C Nicka
Misaki B Figeroa
Deepesh P Nicka
Francesco K Slusarski
Izzy P Venere
Tony T Amigon
Izzy E Nestle
IdCountryDate
1000Spain2024-04-11
1001Japan2024-03-31
1002Argentina2024-03-26
1003Canada2024-04-01
1004Argentina2024-04-06
1005India2024-04-06
1006Japan2024-04-15
1007Brazil2024-03-30
1008Italy2024-04-09
1009Russia2024-04-03
1010Russia2024-03-25
1011Spain2024-04-06
1012Spain2024-04-01
1013Canada2024-03-31
1014Canada2024-03-21
1015Australia2024-04-10
1016France2024-04-12
1017Spain2024-03-29
1018India2024-04-11
1019Brazil2024-03-28
1020France2024-04-03
1021Argentina2024-04-12
1022Russia2024-03-26
1023Canada2024-04-08
1024United Kingdom2024-03-20
1025Japan2024-03-21
1026Brazil2024-04-04
1027Canada2024-03-18
1028France2024-03-18
1029Germany2024-04-13
1030Italy2024-04-10
1031Italy2024-03-18
1032France2024-04-03
1033United Kingdom2024-04-02
1034India2024-04-13
1035Italy2024-04-09
1036India2024-03-30
1037Argentina2024-04-13
1038Brazil2024-04-02
1039Argentina2024-03-19
1040Russia2024-03-24
1041Germany2024-03-23
1042Germany2024-04-01
1043Argentina2024-03-30
1044Italy2024-03-19
1045Canada2024-03-21
1046India2024-03-25
1047Brazil2024-04-10
1048Brazil2024-04-10
1049Russia2024-04-11

On-Demand Data

NameIdCountryDate
Ricardo W Waycott1000Australia2024-03-25
Darci S Caldarera1001Russia2024-03-20
Morrow L Morasca1002France2024-03-22
Johnson Z Darakjy1003Spain2024-03-23
Jeanfrancois T Kusko1004Germany2024-03-22
Leja O Nicka1005Italy2024-04-08
Faith N Garufi1006Italy2024-04-14
Mujtaba H Bowley1007France2024-03-20
Adams J Darakjy1008Spain2024-03-20
Francesco F Schemmer1009Australia2024-03-18
Maisha B Kolmetz1010Spain2024-04-10
Antonio L Inouye1011Australia2024-04-13
Alejandro E Stockham1012India2024-03-25
Kadeem B Morasca1013Spain2024-03-26
Stacey X Flosi1014Spain2024-04-13
Smith V Glick1015Argentina2024-04-12
Clifford R Chui1016Japan2024-03-26
Munro I Shinko1017United Kingdom2024-03-21
Wickens F Albares1018India2024-04-01
Kadeem N Perin1019Italy2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily V AmigonArgentinaXuxue Feng NEGOTIATION
Cody Y RoysterItalyAsiya Javayant UNQUALIFIED
Ashley Z KolmetzFranceElwin Sharvill UNQUALIFIED
Faith K MorascaJapanAmy Elsner PROPOSAL
Misaki J GauchoRussiaXuxue Feng UNQUALIFIED
Munro B DilliardCanadaAnna Fali NEGOTIATION
Stacey K SaylorsCanadaXuxue Feng UNQUALIFIED
Kaitlin J VocelkaRussiaIvan Magalhaes UNQUALIFIED
Leon R StensethAustraliaIvan Magalhaes UNQUALIFIED
Misaki I MacleadItalyElwin Sharvill NEGOTIATION
Ricardo O VenereSpainAsiya Javayant NEGOTIATION
Kaitlin P StensethGermanyIvan Magalhaes UNQUALIFIED
Tony L SaylorsBrazilIvan Magalhaes UNQUALIFIED
Jones V PoquetteGermanyOnyama Limba NEGOTIATION
David A MarrierIndiaAmy Elsner RENEWAL
Murillo K SchemmerSpainElwin Sharvill RENEWAL
Isabel U GlickIndiaIoni Bowcher QUALIFIED
Salvatore K DilliardUnited KingdomElwin Sharvill QUALIFIED
Maria F RutaItalyIoni Bowcher UNQUALIFIED
Wickens X OstroskyGermanyAmy Elsner QUALIFIED
Mayumi S StockhamRussiaAnna Fali UNQUALIFIED
Wickens Y AlbaresSpainIoni Bowcher NEW
Kadeem N NestleUnited KingdomXuxue Feng UNQUALIFIED
Alejandro V SaylorsCanadaOnyama Limba NEGOTIATION
Alejandro K GarufiItalyAnna Fali NEW
Murillo O FerenczRussiaElwin Sharvill NEGOTIATION
Munro L FlosiArgentinaIvan Magalhaes PROPOSAL
Clifford R SaylorsRussiaAsiya Javayant PROPOSAL
Misaki Q IturbideAustraliaOnyama Limba UNQUALIFIED
Jennifer K PaprockiRussiaAnna Fali RENEWAL
James X PaprockiSpainAmy Elsner UNQUALIFIED
Maria B MaletArgentinaAnna Fali RENEWAL
Rodrigues Y WieserIndiaIvan Magalhaes QUALIFIED
Rodrigues G RulapaughFranceStephen Shaw NEGOTIATION
James X ButtRussiaAsiya Javayant NEGOTIATION
Emily C GauchoSpainBernardo Dominic PROPOSAL
Emily T KuskoBrazilElwin Sharvill UNQUALIFIED
Deepesh L PaprockiCanadaAmy Elsner RENEWAL
Maria X MaletRussiaOnyama Limba PROPOSAL
Adams Q FlosiFranceElwin Sharvill 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>