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
Misaki J SchemmerGermanyElwin Sharvill RENEWAL
Maria B SergiItalyBernardo Dominic RENEWAL
Jefferson N OstroskyRussiaIvan Magalhaes RENEWAL
Mujtaba H PerinUnited KingdomXuxue Feng UNQUALIFIED
Ashley C SergiRussiaIoni Bowcher PROPOSAL
Deepesh M CaldareraRussiaElwin Sharvill PROPOSAL
Costa U TollnerUnited KingdomElwin Sharvill NEW
Jennifer F VocelkaCanadaAnna Fali NEGOTIATION
Isabel B CampainBrazilIvan Magalhaes UNQUALIFIED
Francesco L RulapaughItalyElwin Sharvill NEGOTIATION
Ricardo V MaletAustraliaAsiya Javayant RENEWAL
Clifford Y DilliardUnited KingdomOnyama Limba PROPOSAL
Francesco A DoeFranceIoni Bowcher NEGOTIATION
Stacey O SergiAustraliaAnna Fali QUALIFIED
Octavia D BriddickJapanOnyama Limba NEW
Ricardo S OstroskyGermanyAmy Elsner QUALIFIED
Mujtaba C RulapaughBrazilAnna Fali UNQUALIFIED
Claire S MorascaUnited KingdomElwin Sharvill UNQUALIFIED
Ashley Q RoysterSpainXuxue Feng NEGOTIATION
Ivar H OstroskyItalyAmy Elsner RENEWAL
Tony P CampainFranceAsiya Javayant NEGOTIATION
Antonio Y WhobreyGermanyXuxue Feng PROPOSAL
James V ShinkoItalyElwin Sharvill UNQUALIFIED
Misaki R CampainCanadaStephen Shaw NEW
Chavez X PaprockiBrazilIoni Bowcher PROPOSAL
Morrow T NestleIndiaAnna Fali UNQUALIFIED
Nicolas B ChuiRussiaIvan Magalhaes QUALIFIED
Misaki P DoeFranceIvan Magalhaes PROPOSAL
Costa S IturbideCanadaAmy Elsner PROPOSAL
Smith R ShinkoUnited KingdomIvan Magalhaes PROPOSAL
Kadeem I OstroskySpainIvan Magalhaes RENEWAL
Kadeem V RutaBrazilOnyama Limba UNQUALIFIED
Aditya P GillianItalyElwin Sharvill NEW
Rodrigues A StockhamFranceBernardo Dominic PROPOSAL
Aruna V MacleadUnited KingdomIoni Bowcher NEW
David P OstroskyItalyXuxue Feng RENEWAL
Clifford N VenereJapanElwin Sharvill NEW
Julie F FigeroaAustraliaXuxue Feng QUALIFIED
Kaitlin O IturbideGermanyXuxue Feng RENEWAL
Rodrigues C ButtJapanAmy Elsner QUALIFIED
Izzy F NestleArgentinaIoni Bowcher NEW
Deepesh K SlusarskiUnited KingdomAsiya Javayant UNQUALIFIED
Sinclair G SchemmerJapanElwin Sharvill RENEWAL
Juan I BriddickFranceAnna Fali NEGOTIATION
Antonio X RulapaughSpainIvan Magalhaes QUALIFIED
Johnson V FollerRussiaBernardo Dominic NEW
Arvin J WieserSpainIvan Magalhaes RENEWAL
Aditya B OstroskyBrazilBernardo Dominic NEW
Kaitlin K AlbaresSpainAsiya Javayant RENEWAL
Octavia P PaprockiItalyAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Stacey C PaprockiUnited KingdomOnyama Limba NEW
Smith X GarufiRussiaAnna Fali RENEWAL
Greenwood F KolmetzFranceAmy Elsner NEW
Misaki Q OldroydRussiaIvan Magalhaes NEW
Francesco X NickaSpainOnyama Limba PROPOSAL
Stacey B BriddickIndiaBernardo Dominic QUALIFIED
Mujtaba C DoeFranceAsiya Javayant PROPOSAL
Darci T MarrierRussiaAmy Elsner QUALIFIED
Maisha R DilliardItalyOnyama Limba UNQUALIFIED
Kaitlin K GillianFranceIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci P PoquetteArgentina2024-04-14Benton, John B Jr RENEWAL15Anna Fali
1001Salvatore C OstroskyAustralia2024-04-16Truhlar And Truhlar Attys UNQUALIFIED10Asiya Javayant
1002Octavia J WaycottArgentina2024-04-08Commercial Press QUALIFIED56Anna Fali
1003Faith T PaprockiSpain2024-04-29Chemel, James L Cpa QUALIFIED82Ioni Bowcher
1004Salvatore W CaudyJapan2024-05-07Feiner Bros QUALIFIED6Bernardo Dominic
1005Leon C ShinkoBrazil2024-04-23Benton, John B Jr QUALIFIED91Asiya Javayant
1006Cody M StensethCanada2024-04-26Morlong Associates PROPOSAL93Bernardo Dominic
1007James G MarrierItaly2024-04-30Truhlar And Truhlar Attys NEGOTIATION32Elwin Sharvill
1008Costa C BriddickBrazil2024-04-29Truhlar And Truhlar Attys UNQUALIFIED91Amy Elsner
1009Smith V ShinkoBrazil2024-04-30Truhlar And Truhlar Attys PROPOSAL53Amy Elsner
1010Kaitlin Z VocelkaCanada2024-05-02Commercial Press PROPOSAL39Stephen Shaw
1011Aditya P SaylorsFrance2024-04-28King, Christopher A Esq PROPOSAL30Ivan Magalhaes
1012Claire E WaycottAustralia2024-05-06Chemel, James L Cpa QUALIFIED91Anna Fali
1013Claire F VocelkaRussia2024-04-13Chemel, James L Cpa NEGOTIATION21Ioni Bowcher
1014Maisha W OstroskyItaly2024-05-06King, Christopher A Esq UNQUALIFIED1Stephen Shaw
1015Mayumi V FigeroaRussia2024-04-10Chemel, James L Cpa PROPOSAL43Stephen Shaw
1016Ivar C FigeroaItaly2024-05-06King, Christopher A Esq RENEWAL18Xuxue Feng
1017Ivar T NickaUnited Kingdom2024-04-26Morlong Associates NEGOTIATION22Bernardo Dominic
1018Francesco C DilliardRussia2024-04-08Truhlar And Truhlar Attys QUALIFIED33Amy Elsner
1019Maria I RulapaughIndia2024-04-24Chemel, James L Cpa RENEWAL16Bernardo Dominic
1020Francesco D BriddickArgentina2024-04-28Commercial Press NEGOTIATION90Onyama Limba
1021Johnson E FigeroaArgentina2024-04-23Truhlar And Truhlar Attys PROPOSAL58Elwin Sharvill
1022Nicolas R MaletBrazil2024-04-18Chapman, Ross E Esq UNQUALIFIED59Bernardo Dominic
1023Sinclair J SlusarskiSpain2024-04-10Feiner Bros UNQUALIFIED86Stephen Shaw
1024Cody K BowleyUnited Kingdom2024-04-14Morlong Associates QUALIFIED49Stephen Shaw
1025Wickens M BowleyIndia2024-04-15Buckley Miller Wright NEW33Stephen Shaw
1026Faith R AlbaresItaly2024-04-28Feltz Printing Service NEGOTIATION19Asiya Javayant
1027Jefferson F WaycottItaly2024-04-22Feiner Bros UNQUALIFIED22Anna Fali
1028Deepesh G WhobreyRussia2024-04-28Morlong Associates RENEWAL64Anna Fali
1029Ricardo H StockhamSpain2024-04-17Rousseaux, Michael Esq RENEWAL35Anna Fali
1030Francesco X MacleadFrance2024-05-02Benton, John B Jr NEW96Ioni Bowcher
1031Isabel F DoeItaly2024-04-08Buckley Miller Wright PROPOSAL40Elwin Sharvill
1032Octavia C ButtJapan2024-05-02Morlong Associates UNQUALIFIED35Asiya Javayant
1033Mujtaba R VocelkaGermany2024-04-08Buckley Miller Wright NEGOTIATION32Elwin Sharvill
1034Darci Q CampainJapan2024-05-04Feltz Printing Service PROPOSAL75Stephen Shaw
1035Mayumi T GauchoBrazil2024-04-16Chanay, Jeffrey A Esq RENEWAL22Ivan Magalhaes
1036Costa T RutaArgentina2024-04-09Printing Dimensions UNQUALIFIED55Ioni Bowcher
1037Smith D KuskoCanada2024-04-13Feltz Printing Service QUALIFIED66Stephen Shaw
1038David S ShinkoJapan2024-04-25King, Christopher A Esq RENEWAL42Ivan Magalhaes
1039Rodrigues Q FollerUnited Kingdom2024-04-26Benton, John B Jr NEW29Elwin Sharvill
1040Maisha W IturbideArgentina2024-04-19Chapman, Ross E Esq NEGOTIATION45Onyama Limba
1041Johnson H CampainIndia2024-04-23Chanay, Jeffrey A Esq RENEWAL38Elwin Sharvill
1042Misaki K CaudyAustralia2024-04-27Chemel, James L Cpa NEW97Onyama Limba
1043Costa K TollnerFrance2024-05-05Rangoni Of Florence PROPOSAL14Amy Elsner
1044Kaitlin Y MarrierFrance2024-04-24Dorl, James J Esq UNQUALIFIED38Amy Elsner
1045Ricardo P ShinkoIndia2024-04-09Buckley Miller Wright NEGOTIATION81Elwin Sharvill
1046Silvio X FigeroaCanada2024-04-23Chanay, Jeffrey A Esq NEGOTIATION87Amy Elsner
1047Salvatore K FlosiArgentina2024-04-17Truhlar And Truhlar Attys NEGOTIATION56Bernardo Dominic
1048Salvatore V SchemmerIndia2024-05-06Rousseaux, Michael Esq PROPOSAL94Bernardo Dominic
1049Ricardo H GarufiUnited Kingdom2024-04-15Rousseaux, Michael Esq PROPOSAL9Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Morrow T PoquetteIndiaAnna Fali QUALIFIED
Claire S MarrierItalyOnyama Limba PROPOSAL
Octavia A OldroydRussiaBernardo Dominic NEGOTIATION
Cody B RulapaughFranceBernardo Dominic PROPOSAL
Wickens D StensethAustraliaStephen Shaw QUALIFIED
Rodrigues X FollerIndiaIvan Magalhaes QUALIFIED
Leon R FigeroaArgentinaBernardo Dominic NEW
Darci V OldroydSpainAnna Fali NEGOTIATION
Maria E RutaItalyOnyama Limba NEGOTIATION
Costa M CaldareraIndiaAmy Elsner NEW
Isabel A VenereUnited KingdomStephen Shaw PROPOSAL
Ashley H FerenczCanadaAnna Fali RENEWAL
Misaki D WhobreyFranceElwin Sharvill RENEWAL
Julie S FlosiSpainIvan Magalhaes UNQUALIFIED
Jeanfrancois N MaletBrazilOnyama Limba RENEWAL
Munro Y AmigonCanadaXuxue Feng QUALIFIED
Ricardo O MaletJapanXuxue Feng NEGOTIATION
Chavez S VocelkaGermanyElwin Sharvill RENEWAL
Jefferson N ButtGermanyAsiya Javayant RENEWAL
Deepesh U NestleJapanAmy Elsner QUALIFIED
Tony B GillianAustraliaAmy Elsner UNQUALIFIED
Greenwood Q RutaFranceBernardo Dominic NEW
Mujtaba Q RulapaughCanadaAmy Elsner RENEWAL
Ivar S KolmetzUnited KingdomBernardo Dominic QUALIFIED
Rodrigues E PoquetteCanadaElwin Sharvill RENEWAL
Izzy G VocelkaItalyIoni Bowcher NEGOTIATION
Munro E AmigonRussiaElwin Sharvill UNQUALIFIED
Smith G MaletIndiaStephen Shaw UNQUALIFIED
Rodrigues E TollnerUnited KingdomBernardo Dominic NEGOTIATION
Jefferson T ChuiCanadaIvan Magalhaes UNQUALIFIED
Izzy H RulapaughArgentinaAmy Elsner NEW
Ivar Z DarakjyUnited KingdomBernardo Dominic NEGOTIATION
Mayumi X PaprockiArgentinaAsiya Javayant PROPOSAL
Darci H RulapaughBrazilBernardo Dominic PROPOSAL
Juan Y SergiCanadaAsiya Javayant RENEWAL
Antonio R CampainGermanyAnna Fali NEW
Maria G MarrierAustraliaElwin Sharvill NEGOTIATION
James R SergiUnited KingdomBernardo Dominic RENEWAL
Aika V SlusarskiGermanyBernardo Dominic RENEWAL
Kaitlin E DilliardBrazilStephen Shaw QUALIFIED
James M MaletArgentinaElwin Sharvill NEGOTIATION
Darci O ChuiFranceIvan Magalhaes NEGOTIATION
Silvio Q VenereGermanyAmy Elsner NEGOTIATION
Jeanfrancois U CampainUnited KingdomBernardo Dominic RENEWAL
Ashley U CaudyArgentinaAmy Elsner NEGOTIATION
Antonio X NestleGermanyElwin Sharvill NEW
Misaki T KuskoRussiaOnyama Limba NEGOTIATION
Smith S FollerBrazilBernardo Dominic PROPOSAL
Deepesh A FlosiJapanAnna Fali NEGOTIATION
Ashley X WhobreyRussiaOnyama Limba NEW
Frozen Columns
Name
Sinclair X Iturbide
Leja X Chui
Adams S Marrier
Clifford U Rulapaugh
Tony T Amigon
Silvio H Waycott
Misaki B Inouye
Munro U Ferencz
Ashley Y Darakjy
Munro K Ferencz
Munro S Perin
Ricardo I Bolognia
Arvin S Waycott
Jefferson G Schemmer
Aruna W Bowley
Aditya X Nestle
Arvin E Venere
Nicolas E Sergi
Izzy D Amigon
James U Sergi
Misaki L Ostrosky
David F Briddick
Jeanfrancois Q Venere
Jeanfrancois Q Vocelka
Jeanfrancois H Rulapaugh
Ivar D Chui
Cody C Iturbide
Cody E Inouye
Octavia F Poquette
Emily Y Waycott
Chavez A Morasca
Jefferson S Garufi
Stacey E Vocelka
Chavez K Morasca
Tony Z Nestle
Isabel V Kusko
Tony N Poquette
Juan P Ferencz
Salvatore W Rim
Kadeem X Doe
Maria M Morasca
Salvatore V Gillian
Rodrigues R Venere
Isabel K Malet
Salvatore K Venere
Salvatore N Ferencz
James H Iturbide
Rodrigues K Maclead
Isabel A Shinko
Ashley S Stockham
IdCountryDate
1000Spain2024-04-09
1001Australia2024-04-17
1002Spain2024-05-06
1003Canada2024-04-12
1004France2024-04-10
1005Italy2024-05-07
1006Spain2024-05-06
1007Argentina2024-05-01
1008Russia2024-04-21
1009Canada2024-04-16
1010Canada2024-04-17
1011Argentina2024-04-13
1012Australia2024-05-01
1013Argentina2024-05-06
1014United Kingdom2024-04-22
1015Japan2024-05-01
1016France2024-05-06
1017Italy2024-04-23
1018Italy2024-05-02
1019India2024-04-11
1020France2024-05-07
1021India2024-04-28
1022Italy2024-04-29
1023United Kingdom2024-04-22
1024Spain2024-04-09
1025Germany2024-05-07
1026Germany2024-04-09
1027Canada2024-04-15
1028India2024-04-17
1029Australia2024-04-14
1030Spain2024-04-11
1031Argentina2024-04-25
1032Germany2024-05-05
1033Spain2024-05-02
1034Italy2024-04-27
1035United Kingdom2024-04-09
1036Germany2024-04-09
1037Italy2024-04-14
1038Argentina2024-04-11
1039Italy2024-04-25
1040Canada2024-04-14
1041India2024-04-27
1042Brazil2024-04-19
1043Australia2024-04-15
1044Australia2024-04-20
1045France2024-04-15
1046Japan2024-04-13
1047Australia2024-05-07
1048Germany2024-04-19
1049France2024-04-11

On-Demand Data

NameIdCountryDate
Ricardo S Schemmer1000Japan2024-05-05
Misaki U Stockham1001Canada2024-05-05
Sinclair T Royster1002United Kingdom2024-04-15
Arvin A Rim1003Japan2024-04-09
Nicolas X Nicka1004Russia2024-04-12
Ashley E Tollner1005Canada2024-04-18
Kaitlin O Royster1006Canada2024-04-26
Jones H Stenseth1007Spain2024-04-28
Francesco S Poquette1008Italy2024-04-12
Aika H Foller1009Italy2024-04-21
Rodrigues P Saylors1010Japan2024-04-13
Claire U Oldroyd1011India2024-04-30
Leon B Saylors1012Argentina2024-05-05
Greenwood F Poquette1013France2024-04-30
Chavez C Tollner1014India2024-05-07
Kadeem N Glick1015Russia2024-04-12
Francesco I Venere1016Germany2024-04-12
Juan F Ostrosky1017Russia2024-05-06
Rodrigues U Bolognia1018Germany2024-04-08
Faith P Doe1019Argentina2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey M CaldareraGermanyBernardo Dominic PROPOSAL
David O ButtBrazilIoni Bowcher RENEWAL
Julie E MarrierFranceIvan Magalhaes RENEWAL
Nicolas O AmigonSpainElwin Sharvill PROPOSAL
Maria E ChuiArgentinaAsiya Javayant NEGOTIATION
Jones Y MarrierItalyOnyama Limba UNQUALIFIED
Johnson M BriddickBrazilElwin Sharvill RENEWAL
Julie A RutaAustraliaStephen Shaw PROPOSAL
Emily T BowleyItalyAsiya Javayant UNQUALIFIED
Clifford W KuskoBrazilOnyama Limba UNQUALIFIED
Greenwood H GarufiItalyElwin Sharvill NEGOTIATION
Murillo V NickaSpainXuxue Feng NEGOTIATION
Francesco S ButtJapanIvan Magalhaes PROPOSAL
Aruna B StensethCanadaAsiya Javayant NEW
Aditya K DarakjyUnited KingdomStephen Shaw NEGOTIATION
Julie H VenereJapanXuxue Feng UNQUALIFIED
Murillo H DarakjyFranceStephen Shaw RENEWAL
Julie X WaycottIndiaAsiya Javayant UNQUALIFIED
Clifford T NickaRussiaElwin Sharvill NEGOTIATION
Deepesh I NickaItalyXuxue Feng NEW
Aditya B WhobreyFranceStephen Shaw RENEWAL
Juan V ChuiAustraliaAsiya Javayant QUALIFIED
Aika D CaudyIndiaIvan Magalhaes NEW
Jeanfrancois Q BologniaCanadaIoni Bowcher RENEWAL
Adams G BowleyUnited KingdomElwin Sharvill PROPOSAL
Costa P WhobreyAustraliaElwin Sharvill NEW
Sinclair T TollnerAustraliaAsiya Javayant NEGOTIATION
Julie K MorascaBrazilOnyama Limba UNQUALIFIED
Munro R RimBrazilXuxue Feng UNQUALIFIED
Mujtaba I GarufiItalyBernardo Dominic UNQUALIFIED
Ricardo N RulapaughGermanyElwin Sharvill UNQUALIFIED
Smith V VocelkaGermanyBernardo Dominic NEGOTIATION
Rodrigues C RoysterRussiaAnna Fali NEW
Antonio V VenereSpainAsiya Javayant RENEWAL
Stacey F CaudyCanadaStephen Shaw QUALIFIED
Faith F SchemmerCanadaOnyama Limba RENEWAL
Murillo B CaudyJapanAnna Fali NEW
Misaki J MarrierCanadaXuxue Feng UNQUALIFIED
Jefferson N SergiSpainOnyama Limba NEGOTIATION
Munro X RimUnited KingdomXuxue Feng RENEWAL

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