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
Emily G BowleyArgentinaBernardo Dominic QUALIFIED
Costa X PerinBrazilXuxue Feng NEGOTIATION
Morrow X VenereBrazilElwin Sharvill NEW
Aruna Q FollerRussiaElwin Sharvill NEGOTIATION
Alejandro H AlbaresArgentinaIvan Magalhaes PROPOSAL
Izzy M SlusarskiAustraliaElwin Sharvill RENEWAL
James N SaylorsFranceAnna Fali RENEWAL
Aika T BowleyJapanAmy Elsner NEW
Rodrigues F PoquetteBrazilIvan Magalhaes PROPOSAL
Ashley O IturbideAustraliaOnyama Limba NEGOTIATION
Silvio P DilliardRussiaOnyama Limba UNQUALIFIED
Kadeem M DarakjyFranceAsiya Javayant QUALIFIED
Claire O MaletGermanyOnyama Limba UNQUALIFIED
Misaki I ButtSpainElwin Sharvill NEW
Adams D RimIndiaAmy Elsner RENEWAL
Jeanfrancois J ShinkoUnited KingdomBernardo Dominic UNQUALIFIED
Jefferson B ChuiArgentinaBernardo Dominic QUALIFIED
Leon P WieserFranceOnyama Limba NEW
Jefferson Z DoeAustraliaAmy Elsner PROPOSAL
Jennifer B FerenczFranceBernardo Dominic RENEWAL
David F ButtGermanyStephen Shaw UNQUALIFIED
Ashley B GauchoIndiaXuxue Feng QUALIFIED
Ashley D BowleyJapanBernardo Dominic QUALIFIED
Leon F DarakjyFranceStephen Shaw QUALIFIED
Antonio U SaylorsBrazilAsiya Javayant PROPOSAL
Claire B PoquetteUnited KingdomIoni Bowcher NEW
Arvin B StockhamIndiaOnyama Limba RENEWAL
Jennifer F MorascaFranceIvan Magalhaes QUALIFIED
James X FlosiFranceBernardo Dominic QUALIFIED
Darci G FigeroaJapanIvan Magalhaes RENEWAL
Munro W PoquetteArgentinaAsiya Javayant PROPOSAL
Maisha S FerenczIndiaBernardo Dominic QUALIFIED
Antonio A RoysterArgentinaAmy Elsner UNQUALIFIED
Wickens X StockhamItalyOnyama Limba PROPOSAL
Johnson M FollerArgentinaStephen Shaw UNQUALIFIED
Francesco V TollnerAustraliaAmy Elsner UNQUALIFIED
Mujtaba R RimBrazilAsiya Javayant NEGOTIATION
Aruna R NickaJapanAnna Fali UNQUALIFIED
Maisha C RutaRussiaAsiya Javayant QUALIFIED
Munro Q PerinRussiaAnna Fali NEGOTIATION
Arvin T GarufiUnited KingdomXuxue Feng UNQUALIFIED
Rodrigues N MacleadFranceBernardo Dominic UNQUALIFIED
Kaitlin O BowleyAustraliaAmy Elsner UNQUALIFIED
Ashley P GlickAustraliaAsiya Javayant PROPOSAL
Mujtaba S RimItalyOnyama Limba PROPOSAL
James C MarrierBrazilBernardo Dominic NEGOTIATION
Munro R RimArgentinaBernardo Dominic UNQUALIFIED
David Z NestleAustraliaIvan Magalhaes RENEWAL
Cody W FollerRussiaXuxue Feng NEW
Jeanfrancois D MaletCanadaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Morrow H MorascaCanadaOnyama Limba NEGOTIATION
David K StensethUnited KingdomAmy Elsner UNQUALIFIED
Jeanfrancois O WhobreySpainIvan Magalhaes PROPOSAL
Jennifer V OstroskyCanadaIoni Bowcher RENEWAL
Leon Z IturbideCanadaAmy Elsner NEGOTIATION
Juan I MorascaGermanyOnyama Limba NEGOTIATION
Ashley M GarufiArgentinaIoni Bowcher NEW
Francesco C NickaBrazilIoni Bowcher NEGOTIATION
Ashley T FollerSpainAsiya Javayant PROPOSAL
Silvio S ButtAustraliaAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika T NestleFrance2024-04-14Commercial Press QUALIFIED37Elwin Sharvill
1001Ricardo X NickaIndia2024-04-05King, Christopher A Esq UNQUALIFIED75Amy Elsner
1002Darci Y VenereGermany2024-04-17Chapman, Ross E Esq PROPOSAL15Asiya Javayant
1003Jennifer N GillianItaly2024-04-12Rousseaux, Michael Esq PROPOSAL92Elwin Sharvill
1004Alejandro X GlickBrazil2024-04-14Morlong Associates PROPOSAL95Onyama Limba
1005Jones U BowleyRussia2024-04-30Rousseaux, Michael Esq UNQUALIFIED47Xuxue Feng
1006Johnson K AmigonFrance2024-04-11Chapman, Ross E Esq UNQUALIFIED70Ivan Magalhaes
1007Izzy P BowleyIndia2024-04-06Buckley Miller Wright NEW55Ivan Magalhaes
1008Aika K KuskoGermany2024-04-18Printing Dimensions QUALIFIED75Bernardo Dominic
1009Aika G KolmetzUnited Kingdom2024-04-09Chapman, Ross E Esq PROPOSAL9Elwin Sharvill
1010Maisha F FlosiJapan2024-04-11Benton, John B Jr RENEWAL51Stephen Shaw
1011Ricardo L CaldareraCanada2024-04-30Printing Dimensions RENEWAL76Xuxue Feng
1012Leja H MaletArgentina2024-04-14Morlong Associates NEGOTIATION20Xuxue Feng
1013Clifford G ShinkoItaly2024-04-10Printing Dimensions PROPOSAL77Bernardo Dominic
1014Arvin N WhobreyBrazil2024-04-24Benton, John B Jr NEGOTIATION40Amy Elsner
1015Cody Z WhobreySpain2024-04-26Morlong Associates QUALIFIED77Asiya Javayant
1016Misaki W MaletJapan2024-04-10Benton, John B Jr UNQUALIFIED32Stephen Shaw
1017Morrow S StockhamArgentina2024-04-27Benton, John B Jr UNQUALIFIED32Elwin Sharvill
1018Adams V InouyeCanada2024-05-02Rangoni Of Florence UNQUALIFIED56Amy Elsner
1019Ashley H OstroskyItaly2024-04-23Dorl, James J Esq UNQUALIFIED75Ioni Bowcher
1020Jefferson Z OstroskyFrance2024-05-04Rangoni Of Florence NEGOTIATION67Amy Elsner
1021David N MaletJapan2024-04-12Chanay, Jeffrey A Esq UNQUALIFIED28Asiya Javayant
1022Francesco E FerenczBrazil2024-04-10Feiner Bros PROPOSAL89Ioni Bowcher
1023Emily Q BriddickJapan2024-04-29Chemel, James L Cpa PROPOSAL0Bernardo Dominic
1024David X OldroydSpain2024-04-28King, Christopher A Esq UNQUALIFIED57Anna Fali
1025Mujtaba Z MaletBrazil2024-04-05Truhlar And Truhlar Attys NEGOTIATION66Asiya Javayant
1026Nicolas P ShinkoBrazil2024-04-11Chanay, Jeffrey A Esq RENEWAL4Asiya Javayant
1027Costa R DarakjyArgentina2024-04-11Chemel, James L Cpa NEGOTIATION16Amy Elsner
1028Tony Q FollerGermany2024-04-18Commercial Press PROPOSAL24Amy Elsner
1029Clifford R RutaItaly2024-04-26Truhlar And Truhlar Attys RENEWAL82Ivan Magalhaes
1030Antonio B KuskoGermany2024-04-24Chanay, Jeffrey A Esq NEW75Ioni Bowcher
1031Juan N PerinAustralia2024-04-16Truhlar And Truhlar Attys NEGOTIATION16Asiya Javayant
1032Smith F BologniaRussia2024-04-12Truhlar And Truhlar Attys RENEWAL70Xuxue Feng
1033Stacey L CampainJapan2024-04-09Feltz Printing Service UNQUALIFIED31Ivan Magalhaes
1034Chavez D GillianRussia2024-04-07Dorl, James J Esq QUALIFIED54Asiya Javayant
1035Munro Q RimArgentina2024-04-11King, Christopher A Esq QUALIFIED86Amy Elsner
1036Chavez L SlusarskiArgentina2024-04-13Printing Dimensions QUALIFIED79Elwin Sharvill
1037Jennifer U VenereRussia2024-05-03King, Christopher A Esq RENEWAL62Ivan Magalhaes
1038Adams X DoeBrazil2024-04-16Feiner Bros NEW13Anna Fali
1039Aruna K RulapaughFrance2024-04-30King, Christopher A Esq UNQUALIFIED36Ioni Bowcher
1040Tony V MaletIndia2024-04-29Truhlar And Truhlar Attys UNQUALIFIED75Elwin Sharvill
1041Jeanfrancois N FollerJapan2024-04-27Buckley Miller Wright NEW81Anna Fali
1042Rodrigues L ButtCanada2024-04-13Morlong Associates PROPOSAL67Ivan Magalhaes
1043Silvio T MaletGermany2024-04-06Chemel, James L Cpa UNQUALIFIED37Asiya Javayant
1044Francesco I MorascaAustralia2024-04-06Printing Dimensions PROPOSAL22Stephen Shaw
1045Aruna L GillianRussia2024-04-19Dorl, James J Esq UNQUALIFIED0Asiya Javayant
1046Nicolas V ButtAustralia2024-04-29Benton, John B Jr NEW50Ioni Bowcher
1047Ivar U GillianRussia2024-04-27Benton, John B Jr NEGOTIATION28Xuxue Feng
1048Silvio E DoeRussia2024-05-04Morlong Associates QUALIFIED12Ioni Bowcher
1049Claire X OstroskyItaly2024-05-01Morlong Associates PROPOSAL60Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Izzy O CampainCanadaIoni Bowcher RENEWAL
Deepesh V SlusarskiUnited KingdomIoni Bowcher RENEWAL
Alejandro N PerinFranceXuxue Feng RENEWAL
Kadeem N PoquetteIndiaIoni Bowcher RENEWAL
Isabel S RoysterCanadaAmy Elsner RENEWAL
Alejandro I InouyeRussiaAnna Fali NEGOTIATION
Mujtaba M RoysterUnited KingdomElwin Sharvill PROPOSAL
Leja M StockhamIndiaElwin Sharvill RENEWAL
Kaitlin T DilliardJapanIvan Magalhaes PROPOSAL
Ashley D GarufiUnited KingdomAnna Fali RENEWAL
Murillo E StensethJapanAsiya Javayant QUALIFIED
Arvin U VenereGermanyIoni Bowcher PROPOSAL
Wickens R RutaCanadaElwin Sharvill QUALIFIED
Greenwood G InouyeItalyIvan Magalhaes RENEWAL
Kadeem J WhobreyItalyElwin Sharvill QUALIFIED
Clifford R VocelkaArgentinaIvan Magalhaes NEGOTIATION
Stacey U InouyeJapanStephen Shaw UNQUALIFIED
Octavia X DoeItalyIoni Bowcher PROPOSAL
Misaki Y SlusarskiBrazilIvan Magalhaes UNQUALIFIED
Aruna W MacleadBrazilIoni Bowcher PROPOSAL
Kadeem J RimSpainXuxue Feng QUALIFIED
Wickens A SergiGermanyStephen Shaw PROPOSAL
Adams Q DoeArgentinaOnyama Limba UNQUALIFIED
Salvatore X KolmetzFranceAmy Elsner RENEWAL
Leon S RimRussiaAsiya Javayant UNQUALIFIED
Francesco C RimArgentinaXuxue Feng RENEWAL
Smith V FlosiArgentinaStephen Shaw UNQUALIFIED
Nicolas C BologniaFranceOnyama Limba QUALIFIED
Nicolas A GillianFranceIvan Magalhaes NEGOTIATION
Misaki Q CaudyCanadaAnna Fali NEW
Smith T MarrierJapanXuxue Feng PROPOSAL
Ashley U PerinSpainAnna Fali UNQUALIFIED
Ivar P OstroskyCanadaAsiya Javayant NEGOTIATION
Munro Z ButtGermanyBernardo Dominic PROPOSAL
Stacey I NickaSpainStephen Shaw NEW
James Y PaprockiAustraliaAnna Fali NEW
Maria T WhobreyGermanyIvan Magalhaes QUALIFIED
Emily N PaprockiUnited KingdomBernardo Dominic NEW
Johnson D MaletIndiaOnyama Limba RENEWAL
Wickens A WieserCanadaAsiya Javayant QUALIFIED
Izzy A ShinkoJapanStephen Shaw PROPOSAL
Ricardo P KolmetzFranceAsiya Javayant QUALIFIED
Aruna J GlickAustraliaStephen Shaw QUALIFIED
Tony O MorascaAustraliaAmy Elsner UNQUALIFIED
Darci Q RutaCanadaIoni Bowcher NEW
Ashley L PoquetteCanadaStephen Shaw RENEWAL
Mujtaba U BriddickUnited KingdomOnyama Limba UNQUALIFIED
Faith Z CaudyArgentinaBernardo Dominic UNQUALIFIED
Faith X BowleySpainElwin Sharvill PROPOSAL
Octavia P FlosiIndiaIoni Bowcher NEW
Frozen Columns
Name
Munro X Vocelka
Greenwood A Sergi
Faith X Kolmetz
Ricardo C Shinko
Jennifer S Amigon
Kaitlin M Whobrey
Greenwood V Paprocki
Ivar U Briddick
Mujtaba O Rulapaugh
Costa Q Tollner
Jefferson D Bowley
Darci K Gaucho
Jones G Whobrey
Jefferson D Tollner
Jones I Royster
Maisha V Garufi
Silvio I Vocelka
Darci E Stenseth
Kaitlin D Venere
Kaitlin X Kusko
Silvio L Foller
Nicolas I Ruta
Leon G Nicka
Francesco A Glick
Jones A Maclead
Kaitlin M Maclead
Jones C Amigon
Salvatore E Doe
Misaki Z Doe
Stacey Y Rim
Aika B Wieser
Kaitlin Q Caldarera
Ivar E Kolmetz
Octavia D Wieser
Leon U Perin
Arvin Q Dilliard
Aditya Q Dilliard
Sinclair D Marrier
Isabel T Shinko
Darci P Inouye
Arvin H Ostrosky
Rodrigues P Albares
Jeanfrancois H Flosi
Deepesh O Paprocki
Maria C Gillian
Jeanfrancois A Flosi
Jennifer C Kusko
Johnson T Amigon
Arvin J Sergi
Nicolas W Stockham
IdCountryDate
1000Italy2024-05-03
1001Spain2024-04-23
1002Canada2024-04-26
1003United Kingdom2024-04-05
1004Russia2024-04-18
1005Italy2024-04-12
1006France2024-04-23
1007United Kingdom2024-04-15
1008Brazil2024-04-07
1009France2024-04-26
1010Japan2024-04-05
1011United Kingdom2024-04-24
1012France2024-04-09
1013France2024-04-11
1014India2024-04-09
1015United Kingdom2024-04-21
1016India2024-04-24
1017Japan2024-05-01
1018India2024-04-15
1019Spain2024-04-14
1020Spain2024-05-02
1021Canada2024-04-08
1022Italy2024-05-02
1023Italy2024-04-06
1024Argentina2024-04-27
1025Russia2024-04-06
1026Russia2024-04-22
1027France2024-04-27
1028Italy2024-04-16
1029Argentina2024-04-17
1030Japan2024-04-07
1031United Kingdom2024-05-03
1032India2024-04-06
1033France2024-04-25
1034India2024-04-21
1035Argentina2024-04-30
1036Canada2024-04-14
1037Russia2024-04-05
1038Germany2024-04-15
1039Canada2024-05-01
1040Brazil2024-04-20
1041Italy2024-04-23
1042Argentina2024-04-26
1043United Kingdom2024-04-28
1044Italy2024-05-02
1045Spain2024-04-23
1046Russia2024-04-26
1047Russia2024-04-26
1048Australia2024-04-14
1049Argentina2024-04-10

On-Demand Data

NameIdCountryDate
Maisha E Slusarski1000Canada2024-04-09
Mujtaba V Ferencz1001Argentina2024-05-03
Leon N Stenseth1002Japan2024-04-30
Juan R Bowley1003Australia2024-04-18
Ivar H Slusarski1004United Kingdom2024-04-09
Arvin A Chui1005Spain2024-04-11
Ivar K Saylors1006Japan2024-04-30
Silvio L Ruta1007Japan2024-04-15
Clifford W Rulapaugh1008Germany2024-04-18
Faith Z Stenseth1009Russia2024-04-19
Emily I Stenseth1010Canada2024-04-12
Morrow W Whobrey1011India2024-05-02
David M Poquette1012Spain2024-04-11
Isabel U Campain1013Germany2024-04-22
Greenwood X Briddick1014United Kingdom2024-04-15
Faith I Nicka1015United Kingdom2024-04-23
Cody W Schemmer1016Argentina2024-04-07
David O Kolmetz1017Argentina2024-04-20
Greenwood I Flosi1018Canada2024-04-16
Cody C Foller1019Italy2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith D InouyeFranceXuxue Feng NEW
Francesco C TollnerSpainOnyama Limba PROPOSAL
Antonio Q KolmetzJapanAmy Elsner UNQUALIFIED
Smith L WaycottIndiaIoni Bowcher UNQUALIFIED
Greenwood J OstroskyBrazilIoni Bowcher PROPOSAL
Isabel C VenereSpainStephen Shaw NEGOTIATION
Smith H KuskoBrazilIvan Magalhaes NEGOTIATION
Antonio D CampainCanadaAnna Fali PROPOSAL
Cody F AlbaresArgentinaStephen Shaw RENEWAL
Emily N PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Arvin C SlusarskiGermanyXuxue Feng NEW
Isabel A ShinkoFranceIvan Magalhaes UNQUALIFIED
Tony H CaudyAustraliaIvan Magalhaes UNQUALIFIED
Costa B BriddickIndiaOnyama Limba PROPOSAL
Jefferson I FerenczItalyAsiya Javayant RENEWAL
Alejandro C GarufiIndiaIvan Magalhaes PROPOSAL
Arvin Q RulapaughGermanyAnna Fali NEGOTIATION
Kaitlin H RoysterBrazilIvan Magalhaes UNQUALIFIED
Misaki K CampainBrazilBernardo Dominic NEW
Izzy C GillianBrazilStephen Shaw PROPOSAL
Greenwood M MaletAustraliaStephen Shaw NEGOTIATION
Jeanfrancois I StockhamJapanIoni Bowcher QUALIFIED
Murillo L RulapaughGermanyElwin Sharvill RENEWAL
Nicolas R ShinkoJapanAnna Fali NEGOTIATION
Octavia I MarrierBrazilStephen Shaw NEGOTIATION
Jefferson N VocelkaGermanyIoni Bowcher QUALIFIED
Darci G DoeSpainAnna Fali NEW
Maisha I GarufiBrazilBernardo Dominic RENEWAL
Tony U BologniaUnited KingdomStephen Shaw QUALIFIED
Jennifer N IturbideGermanyIvan Magalhaes QUALIFIED
Cody X SchemmerArgentinaStephen Shaw PROPOSAL
Isabel F MarrierBrazilAnna Fali PROPOSAL
Aruna A IturbideIndiaStephen Shaw RENEWAL
James U VocelkaCanadaXuxue Feng NEGOTIATION
Emily V VenereJapanIvan Magalhaes QUALIFIED
Costa Q WaycottAustraliaElwin Sharvill RENEWAL
Alejandro R WhobreyAustraliaAmy Elsner NEW
Emily B MaletAustraliaIvan Magalhaes PROPOSAL
Costa H SchemmerSpainOnyama Limba UNQUALIFIED
Misaki O AmigonItalyAsiya Javayant 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>