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
Murillo I BowleyItalyAsiya Javayant NEGOTIATION
Darci L ButtAustraliaBernardo Dominic UNQUALIFIED
Maria L OstroskyItalyStephen Shaw RENEWAL
Clifford P IturbideBrazilStephen Shaw NEW
Costa R MorascaSpainXuxue Feng PROPOSAL
Wickens C NickaRussiaStephen Shaw RENEWAL
Aika V CaldareraItalyAnna Fali NEGOTIATION
Murillo U WaycottJapanBernardo Dominic RENEWAL
Octavia Z GarufiItalyIvan Magalhaes UNQUALIFIED
Leon R KolmetzArgentinaIoni Bowcher PROPOSAL
Francesco R PerinArgentinaXuxue Feng RENEWAL
Smith I BowleyBrazilOnyama Limba RENEWAL
Octavia W TollnerRussiaXuxue Feng NEW
Izzy I GarufiIndiaIoni Bowcher NEW
Juan O InouyeJapanOnyama Limba QUALIFIED
Silvio M DarakjyItalyIoni Bowcher NEGOTIATION
Ivar A KuskoIndiaAmy Elsner NEGOTIATION
James G MaletJapanIoni Bowcher NEW
Maria O StensethCanadaAnna Fali NEW
Cody H AlbaresFranceXuxue Feng PROPOSAL
Julie Y CampainRussiaAsiya Javayant UNQUALIFIED
Misaki M AlbaresAustraliaAnna Fali UNQUALIFIED
Juan E WhobreyAustraliaAmy Elsner UNQUALIFIED
Nicolas H RoysterBrazilAnna Fali RENEWAL
Munro J PerinCanadaAnna Fali RENEWAL
Nicolas F MorascaSpainElwin Sharvill UNQUALIFIED
Maisha S StockhamAustraliaStephen Shaw NEW
Jones D DilliardUnited KingdomIoni Bowcher NEW
Clifford N PerinFranceIvan Magalhaes RENEWAL
Clifford V NestleArgentinaAnna Fali NEGOTIATION
Rodrigues F OldroydItalyAsiya Javayant RENEWAL
Aruna O FollerIndiaAmy Elsner NEW
Isabel B OldroydItalyBernardo Dominic UNQUALIFIED
Sinclair I RulapaughIndiaAsiya Javayant PROPOSAL
Mujtaba V GlickCanadaIoni Bowcher UNQUALIFIED
Mujtaba X OstroskyCanadaIvan Magalhaes RENEWAL
Morrow R MacleadFranceStephen Shaw PROPOSAL
Francesco Y RimBrazilBernardo Dominic RENEWAL
Greenwood S VenereGermanyStephen Shaw NEGOTIATION
Mujtaba R GillianIndiaStephen Shaw UNQUALIFIED
Mujtaba E PoquetteItalyBernardo Dominic UNQUALIFIED
Tony E FlosiUnited KingdomAmy Elsner UNQUALIFIED
Morrow T NestleAustraliaElwin Sharvill PROPOSAL
Sinclair W IturbideIndiaStephen Shaw NEGOTIATION
Smith W RoysterUnited KingdomOnyama Limba RENEWAL
Faith O OldroydSpainOnyama Limba NEW
Munro N FigeroaBrazilAmy Elsner NEW
Murillo Q WieserRussiaIvan Magalhaes UNQUALIFIED
Silvio N WieserItalyBernardo Dominic NEGOTIATION
Morrow F SaylorsJapanStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Tony O CampainArgentinaBernardo Dominic NEGOTIATION
Claire X GlickCanadaXuxue Feng RENEWAL
Aruna C OstroskyRussiaElwin Sharvill NEGOTIATION
Wickens G WhobreyArgentinaIvan Magalhaes PROPOSAL
Aika S KolmetzJapanIoni Bowcher RENEWAL
Costa Q BologniaCanadaStephen Shaw UNQUALIFIED
Kadeem Y PoquetteGermanyXuxue Feng QUALIFIED
Morrow F SlusarskiRussiaElwin Sharvill NEGOTIATION
Sinclair Z AmigonJapanStephen Shaw RENEWAL
Maria W FlosiCanadaAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez J BowleyBrazil2024-04-14Chemel, James L Cpa NEW17Amy Elsner
1001Chavez P OldroydUnited Kingdom2024-03-29Rousseaux, Michael Esq RENEWAL15Anna Fali
1002Murillo H MarrierSpain2024-03-23Benton, John B Jr NEGOTIATION0Stephen Shaw
1003Octavia F GarufiSpain2024-03-29Rousseaux, Michael Esq QUALIFIED67Xuxue Feng
1004Aika R GlickUnited Kingdom2024-03-23Benton, John B Jr UNQUALIFIED39Ivan Magalhaes
1005Juan J PaprockiAustralia2024-04-08Truhlar And Truhlar Attys NEGOTIATION32Amy Elsner
1006Juan D CampainGermany2024-04-06Chemel, James L Cpa NEW57Ioni Bowcher
1007Tony X GillianFrance2024-04-07Chemel, James L Cpa NEW90Ivan Magalhaes
1008Leja M FlosiUnited Kingdom2024-03-31Chapman, Ross E Esq NEGOTIATION55Amy Elsner
1009Alejandro M SchemmerFrance2024-04-16Feiner Bros QUALIFIED2Ivan Magalhaes
1010Claire Q AlbaresItaly2024-03-29Chapman, Ross E Esq NEW56Amy Elsner
1011Arvin E KuskoIndia2024-03-25King, Christopher A Esq PROPOSAL7Anna Fali
1012Maria N WaycottAustralia2024-04-08Feiner Bros PROPOSAL5Bernardo Dominic
1013Jeanfrancois Y KolmetzArgentina2024-04-10Printing Dimensions QUALIFIED41Stephen Shaw
1014Tony H TollnerCanada2024-04-08Feiner Bros UNQUALIFIED84Xuxue Feng
1015Faith U DilliardItaly2024-03-24Chapman, Ross E Esq RENEWAL75Onyama Limba
1016Jones A NestleFrance2024-03-31Feltz Printing Service NEW88Bernardo Dominic
1017Sinclair G SlusarskiUnited Kingdom2024-03-24Buckley Miller Wright NEW90Bernardo Dominic
1018Jennifer Z CaldareraCanada2024-04-10Printing Dimensions PROPOSAL86Anna Fali
1019Wickens I MaletSpain2024-04-14Rangoni Of Florence PROPOSAL84Ivan Magalhaes
1020Johnson O StockhamUnited Kingdom2024-04-01Feiner Bros QUALIFIED33Ioni Bowcher
1021Misaki Y FerenczCanada2024-03-26Feiner Bros PROPOSAL26Asiya Javayant
1022Leja A ButtUnited Kingdom2024-04-09Rousseaux, Michael Esq UNQUALIFIED83Asiya Javayant
1023Leon U TollnerUnited Kingdom2024-03-31Printing Dimensions NEGOTIATION66Stephen Shaw
1024Mayumi X TollnerGermany2024-04-06Truhlar And Truhlar Attys NEGOTIATION67Asiya Javayant
1025Aika V FerenczSpain2024-04-08Buckley Miller Wright NEW22Asiya Javayant
1026Chavez R PoquetteAustralia2024-04-17Dorl, James J Esq UNQUALIFIED25Elwin Sharvill
1027Mujtaba G SaylorsSpain2024-04-16Morlong Associates NEGOTIATION63Elwin Sharvill
1028Antonio E CaldareraAustralia2024-04-11Feltz Printing Service PROPOSAL58Ioni Bowcher
1029Jefferson C ButtSpain2024-04-01Feltz Printing Service NEGOTIATION29Amy Elsner
1030Julie M MaletJapan2024-04-10Chanay, Jeffrey A Esq NEW54Stephen Shaw
1031Leon R WhobreyItaly2024-04-16Rousseaux, Michael Esq UNQUALIFIED95Stephen Shaw
1032Aditya X WaycottCanada2024-04-12Morlong Associates QUALIFIED72Ivan Magalhaes
1033Claire R VenereItaly2024-04-16King, Christopher A Esq RENEWAL9Bernardo Dominic
1034Kaitlin S InouyeBrazil2024-04-03Chemel, James L Cpa UNQUALIFIED52Asiya Javayant
1035Johnson T BriddickFrance2024-04-16Rangoni Of Florence NEW52Amy Elsner
1036Salvatore K KuskoBrazil2024-03-23Rousseaux, Michael Esq RENEWAL61Xuxue Feng
1037Jefferson H FlosiSpain2024-04-04Benton, John B Jr PROPOSAL18Xuxue Feng
1038Nicolas Q SergiRussia2024-03-23Feltz Printing Service UNQUALIFIED78Elwin Sharvill
1039Octavia O WaycottFrance2024-03-31Feltz Printing Service QUALIFIED23Xuxue Feng
1040Misaki P CaudyCanada2024-03-24Truhlar And Truhlar Attys NEGOTIATION52Anna Fali
1041Ivar C DarakjyRussia2024-04-15Benton, John B Jr PROPOSAL71Xuxue Feng
1042Ricardo E BowleyArgentina2024-03-25Dorl, James J Esq RENEWAL1Elwin Sharvill
1043Johnson Q GauchoArgentina2024-03-26King, Christopher A Esq NEW20Stephen Shaw
1044Chavez C OstroskyIndia2024-04-07Truhlar And Truhlar Attys QUALIFIED24Anna Fali
1045Costa O KuskoIndia2024-04-03Chemel, James L Cpa UNQUALIFIED61Stephen Shaw
1046Ivar F PerinSpain2024-04-12Chapman, Ross E Esq QUALIFIED85Xuxue Feng
1047Ricardo F RoysterSpain2024-04-14Printing Dimensions NEGOTIATION37Asiya Javayant
1048Jefferson A AmigonSpain2024-04-10Buckley Miller Wright NEW8Elwin Sharvill
1049Francesco O MarrierCanada2024-03-23Chanay, Jeffrey A Esq UNQUALIFIED23Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Johnson S MorascaUnited KingdomAmy Elsner UNQUALIFIED
Aika I BriddickRussiaOnyama Limba QUALIFIED
Darci X NestleFranceBernardo Dominic QUALIFIED
Morrow N CampainCanadaAmy Elsner NEGOTIATION
Ricardo T RoysterAustraliaOnyama Limba NEW
Maisha M CaldareraIndiaOnyama Limba NEGOTIATION
Julie M CaldareraCanadaBernardo Dominic QUALIFIED
Antonio Q FollerUnited KingdomIoni Bowcher UNQUALIFIED
Salvatore Y DoeAustraliaIoni Bowcher NEGOTIATION
Sinclair D FollerSpainAsiya Javayant NEW
Stacey X ShinkoSpainElwin Sharvill UNQUALIFIED
Costa F CampainArgentinaOnyama Limba PROPOSAL
Clifford Z VocelkaBrazilElwin Sharvill RENEWAL
David J WieserArgentinaIoni Bowcher PROPOSAL
Salvatore X NestleArgentinaXuxue Feng UNQUALIFIED
Morrow R DarakjyJapanXuxue Feng NEGOTIATION
Jones P CaudyUnited KingdomStephen Shaw QUALIFIED
Maisha U TollnerUnited KingdomXuxue Feng RENEWAL
Darci A AlbaresUnited KingdomAnna Fali RENEWAL
Emily P CampainCanadaOnyama Limba NEGOTIATION
Aruna G BowleyIndiaIoni Bowcher NEW
Mujtaba U TollnerBrazilAmy Elsner RENEWAL
Nicolas H SergiUnited KingdomBernardo Dominic NEW
Stacey O MaletIndiaAnna Fali NEW
Rodrigues F BowleyIndiaIvan Magalhaes PROPOSAL
Jeanfrancois X RulapaughJapanAnna Fali UNQUALIFIED
Tony G TollnerFranceAmy Elsner UNQUALIFIED
Maisha O ShinkoJapanAsiya Javayant NEW
Greenwood B BriddickItalyAsiya Javayant QUALIFIED
Arvin Y WieserSpainElwin Sharvill UNQUALIFIED
Nicolas S RulapaughCanadaOnyama Limba UNQUALIFIED
Munro L GarufiUnited KingdomIoni Bowcher QUALIFIED
Aditya S SlusarskiBrazilStephen Shaw NEGOTIATION
Mujtaba X SchemmerArgentinaAnna Fali NEGOTIATION
Rodrigues H MaletUnited KingdomIvan Magalhaes RENEWAL
Maisha D RoysterGermanyAsiya Javayant RENEWAL
Nicolas U WhobreyRussiaIvan Magalhaes UNQUALIFIED
Aditya A NickaIndiaAnna Fali NEW
Smith K KolmetzSpainAsiya Javayant UNQUALIFIED
Adams W ShinkoUnited KingdomAnna Fali UNQUALIFIED
Greenwood U GauchoGermanyIvan Magalhaes UNQUALIFIED
Faith K PoquetteItalyIvan Magalhaes QUALIFIED
Darci P MacleadUnited KingdomElwin Sharvill UNQUALIFIED
Rodrigues U MaletFranceBernardo Dominic RENEWAL
Costa I GlickFranceIoni Bowcher NEW
Rodrigues Q KuskoItalyStephen Shaw QUALIFIED
Ashley Y MarrierItalyStephen Shaw UNQUALIFIED
Rodrigues I AmigonJapanAnna Fali PROPOSAL
Morrow T PoquetteFranceAmy Elsner PROPOSAL
Kaitlin U FlosiIndiaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Aika G Paprocki
Wickens D Inouye
Salvatore H Flosi
Johnson E Campain
Ivar Y Stockham
Aruna I Ferencz
Leja R Rulapaugh
Jefferson A Doe
Ivar X Poquette
Aika H Morasca
Murillo Q Whobrey
Ricardo E Venere
Rodrigues G Stockham
Aruna J Dilliard
Mayumi Z Royster
Claire Z Saylors
Murillo H Schemmer
Costa C Slusarski
Darci B Gaucho
Faith G Wieser
Nicolas F Glick
Maisha B Rim
Morrow G Iturbide
Jeanfrancois B Ruta
James S Rulapaugh
Costa F Nicka
Claire J Morasca
Murillo E Sergi
Morrow I Shinko
Jennifer S Stockham
Munro I Venere
Smith Z Rim
Leja N Amigon
Sinclair I Whobrey
Johnson Q Iturbide
Deepesh D Bolognia
Faith G Bolognia
Misaki P Saylors
Jones U Kusko
Antonio T Dilliard
Mayumi L Kusko
Cody K Venere
Jeanfrancois Z Glick
Greenwood I Marrier
Smith P Paprocki
Leon E Bowley
Jeanfrancois N Perin
Mujtaba U Vocelka
Tony O Morasca
Darci F Figeroa
IdCountryDate
1000Australia2024-03-22
1001Argentina2024-04-17
1002Japan2024-03-20
1003Japan2024-03-24
1004France2024-04-11
1005France2024-03-25
1006Australia2024-04-13
1007Germany2024-03-30
1008Russia2024-03-25
1009Australia2024-04-02
1010Argentina2024-04-06
1011Spain2024-03-30
1012Brazil2024-03-30
1013Brazil2024-03-20
1014Canada2024-04-05
1015Spain2024-04-05
1016Canada2024-03-26
1017India2024-03-23
1018United Kingdom2024-04-02
1019Italy2024-03-21
1020Australia2024-04-02
1021India2024-04-02
1022Italy2024-04-03
1023Spain2024-04-16
1024Italy2024-03-24
1025Japan2024-04-06
1026Spain2024-04-13
1027Canada2024-04-02
1028Australia2024-04-14
1029Russia2024-03-23
1030Argentina2024-03-29
1031France2024-04-06
1032Germany2024-04-15
1033Australia2024-03-19
1034Spain2024-04-04
1035Brazil2024-03-31
1036Spain2024-04-11
1037Argentina2024-03-24
1038Japan2024-04-01
1039Argentina2024-04-04
1040Spain2024-04-15
1041Russia2024-03-22
1042Canada2024-04-17
1043Brazil2024-04-16
1044Japan2024-03-20
1045Australia2024-04-01
1046Argentina2024-04-03
1047France2024-04-02
1048Canada2024-04-08
1049Italy2024-04-14

On-Demand Data

NameIdCountryDate
Antonio L Iturbide1000Argentina2024-04-10
Smith E Nestle1001Spain2024-03-27
Alejandro E Glick1002Argentina2024-03-28
Jefferson R Glick1003Australia2024-04-14
Aruna Q Darakjy1004Japan2024-04-13
Octavia O Waycott1005Japan2024-04-04
Ashley W Iturbide1006Russia2024-04-03
Isabel F Shinko1007Brazil2024-04-06
Isabel O Royster1008India2024-03-19
Clifford F Campain1009Australia2024-04-05
Jefferson U Vocelka1010Canada2024-03-21
Murillo Z Flosi1011Australia2024-04-09
Rodrigues F Kusko1012France2024-04-05
Aika X Vocelka1013Canada2024-03-19
Munro R Gillian1014Spain2024-04-12
Alejandro V Whobrey1015Canada2024-04-14
Francesco V Dilliard1016Spain2024-03-21
Stacey F Caudy1017Brazil2024-03-23
Tony J Gillian1018Italy2024-04-11
Mujtaba L Poquette1019Canada2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams F MaletGermanyElwin Sharvill RENEWAL
Kaitlin E GauchoBrazilAmy Elsner NEW
Rodrigues N MaletGermanyAsiya Javayant NEW
Juan I ButtItalyOnyama Limba PROPOSAL
Jones H GarufiIndiaBernardo Dominic QUALIFIED
Wickens R WaycottFranceIoni Bowcher UNQUALIFIED
Salvatore U MaletFranceIoni Bowcher NEGOTIATION
Juan Z FerenczGermanyBernardo Dominic UNQUALIFIED
Emily O DilliardItalyXuxue Feng PROPOSAL
Kaitlin I PoquetteRussiaAmy Elsner UNQUALIFIED
Aruna J InouyeAustraliaIoni Bowcher NEGOTIATION
David D MorascaGermanyElwin Sharvill PROPOSAL
Silvio W DilliardAustraliaAsiya Javayant NEGOTIATION
Izzy L RutaArgentinaOnyama Limba NEGOTIATION
Aika D RulapaughRussiaXuxue Feng UNQUALIFIED
Aruna M ChuiItalyOnyama Limba NEGOTIATION
Chavez H MacleadGermanyElwin Sharvill PROPOSAL
Chavez M GarufiUnited KingdomIoni Bowcher UNQUALIFIED
Nicolas J WhobreySpainXuxue Feng QUALIFIED
Juan B AmigonCanadaIoni Bowcher UNQUALIFIED
Kaitlin H MaletGermanyIvan Magalhaes RENEWAL
Morrow K WhobreyAustraliaBernardo Dominic QUALIFIED
Cody C OstroskyCanadaStephen Shaw RENEWAL
Darci R NickaCanadaStephen Shaw PROPOSAL
Jefferson T PaprockiSpainBernardo Dominic RENEWAL
Johnson C WieserCanadaBernardo Dominic NEW
Nicolas R ChuiJapanElwin Sharvill NEW
Arvin X SaylorsUnited KingdomElwin Sharvill NEGOTIATION
Leon D InouyeIndiaAsiya Javayant RENEWAL
Alejandro Q ButtArgentinaAmy Elsner NEW
Claire D CaldareraCanadaStephen Shaw NEW
Morrow H TollnerAustraliaStephen Shaw PROPOSAL
Clifford S CaldareraBrazilIvan Magalhaes RENEWAL
David W MaletJapanElwin Sharvill RENEWAL
Aditya M PoquetteCanadaElwin Sharvill PROPOSAL
Costa K AmigonJapanAnna Fali NEW
Leon Q WhobreyArgentinaAmy Elsner NEW
Clifford S TollnerRussiaAmy Elsner PROPOSAL
Emily K WieserItalyBernardo Dominic NEGOTIATION
Mayumi K MarrierRussiaOnyama Limba QUALIFIED

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