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
Greenwood O DarakjyItalyAsiya Javayant NEGOTIATION
Chavez Z SlusarskiFranceOnyama Limba NEGOTIATION
Ashley X WieserAustraliaXuxue Feng QUALIFIED
Cody M PaprockiCanadaIoni Bowcher RENEWAL
Jeanfrancois X IturbideFranceIvan Magalhaes NEW
Costa S BriddickIndiaOnyama Limba QUALIFIED
Kadeem N AmigonJapanElwin Sharvill NEGOTIATION
Ricardo M OstroskyBrazilOnyama Limba UNQUALIFIED
Jones Q InouyeCanadaAsiya Javayant NEGOTIATION
Nicolas E RoysterGermanyAsiya Javayant RENEWAL
Claire Q SaylorsGermanyAmy Elsner NEW
Greenwood Q RimGermanyAmy Elsner NEGOTIATION
Adams A ChuiJapanXuxue Feng NEGOTIATION
Morrow N BowleyBrazilBernardo Dominic QUALIFIED
Murillo X RimItalyIvan Magalhaes NEW
David D FigeroaSpainOnyama Limba PROPOSAL
Emily X MarrierItalyBernardo Dominic QUALIFIED
Silvio P InouyeItalyIvan Magalhaes RENEWAL
Maisha A NickaItalyBernardo Dominic NEGOTIATION
Maisha N FollerFranceAmy Elsner NEGOTIATION
Alejandro U KuskoUnited KingdomAnna Fali PROPOSAL
Rodrigues A RutaItalyIoni Bowcher PROPOSAL
Deepesh R InouyeJapanXuxue Feng NEGOTIATION
Francesco S GillianItalyStephen Shaw UNQUALIFIED
Ashley S RulapaughGermanyAnna Fali UNQUALIFIED
Stacey K CampainArgentinaOnyama Limba QUALIFIED
Salvatore U IturbideCanadaOnyama Limba NEGOTIATION
Morrow O MarrierAustraliaBernardo Dominic NEGOTIATION
Juan F NickaArgentinaStephen Shaw RENEWAL
Misaki V GauchoJapanStephen Shaw NEGOTIATION
Munro P RutaJapanStephen Shaw UNQUALIFIED
Munro V ChuiArgentinaStephen Shaw UNQUALIFIED
Antonio Y PaprockiIndiaBernardo Dominic QUALIFIED
Izzy R OstroskyBrazilAsiya Javayant NEGOTIATION
Misaki A FlosiRussiaElwin Sharvill NEW
Jones F IturbideAustraliaIvan Magalhaes NEW
Munro O PoquetteUnited KingdomOnyama Limba QUALIFIED
Kaitlin X StockhamGermanyAsiya Javayant NEW
Kaitlin G RulapaughItalyAsiya Javayant PROPOSAL
Darci E WieserGermanyAsiya Javayant QUALIFIED
Adams U FollerBrazilAmy Elsner RENEWAL
Jefferson X StockhamBrazilIvan Magalhaes NEW
Kadeem V GarufiCanadaOnyama Limba PROPOSAL
Aditya D SaylorsGermanyIvan Magalhaes UNQUALIFIED
Jeanfrancois T RutaCanadaStephen Shaw NEGOTIATION
Julie V FerenczJapanXuxue Feng PROPOSAL
Tony L AmigonFranceAsiya Javayant UNQUALIFIED
Kadeem Z GillianJapanOnyama Limba NEW
Aruna Z NickaCanadaAsiya Javayant QUALIFIED
Murillo H CampainRussiaXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Costa K KolmetzCanadaAsiya Javayant RENEWAL
Isabel R StensethAustraliaAnna Fali PROPOSAL
Aika K ShinkoUnited KingdomOnyama Limba NEGOTIATION
David R OldroydUnited KingdomXuxue Feng QUALIFIED
Ashley K CaldareraGermanyStephen Shaw UNQUALIFIED
Cody K SergiGermanyOnyama Limba UNQUALIFIED
Claire V FerenczBrazilIvan Magalhaes NEW
Maisha W GauchoAustraliaBernardo Dominic QUALIFIED
Aditya Z SlusarskiSpainAnna Fali RENEWAL
Jeanfrancois E MorascaItalyStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire X GillianSpain2024-04-24Feltz Printing Service UNQUALIFIED73Ioni Bowcher
1001Adams E CampainBrazil2024-04-20Truhlar And Truhlar Attys UNQUALIFIED99Xuxue Feng
1002Smith E InouyeSpain2024-04-28Chemel, James L Cpa QUALIFIED1Stephen Shaw
1003Juan Q SaylorsSpain2024-04-28Benton, John B Jr PROPOSAL93Elwin Sharvill
1004Kadeem O OstroskyGermany2024-04-09Chemel, James L Cpa UNQUALIFIED31Onyama Limba
1005Cody R VocelkaRussia2024-03-30Truhlar And Truhlar Attys NEW87Xuxue Feng
1006Leja Q CaudySpain2024-04-03Chapman, Ross E Esq PROPOSAL51Amy Elsner
1007Sinclair S MaletUnited Kingdom2024-04-03Benton, John B Jr RENEWAL84Ioni Bowcher
1008Jennifer V KuskoUnited Kingdom2024-04-22Rousseaux, Michael Esq UNQUALIFIED8Anna Fali
1009Octavia Q MacleadCanada2024-04-22Feltz Printing Service NEW67Xuxue Feng
1010Salvatore L PaprockiAustralia2024-04-07Commercial Press QUALIFIED93Elwin Sharvill
1011Murillo E KuskoAustralia2024-04-03Rousseaux, Michael Esq RENEWAL50Ioni Bowcher
1012Mayumi U FigeroaFrance2024-04-15Printing Dimensions RENEWAL30Xuxue Feng
1013Adams S MaletJapan2024-04-03Truhlar And Truhlar Attys QUALIFIED86Ivan Magalhaes
1014Ashley U RutaJapan2024-04-27Benton, John B Jr QUALIFIED85Xuxue Feng
1015Costa V BriddickUnited Kingdom2024-04-28Feltz Printing Service NEGOTIATION58Bernardo Dominic
1016Mujtaba C BologniaUnited Kingdom2024-04-15Chanay, Jeffrey A Esq NEGOTIATION43Amy Elsner
1017Ashley V StockhamArgentina2024-04-11Chanay, Jeffrey A Esq NEW73Anna Fali
1018Claire J InouyeRussia2024-04-17King, Christopher A Esq UNQUALIFIED8Onyama Limba
1019Mayumi V GlickAustralia2024-04-15Feltz Printing Service NEGOTIATION8Xuxue Feng
1020Emily W WhobreyFrance2024-04-08Chemel, James L Cpa NEGOTIATION70Amy Elsner
1021Jeanfrancois C MaletArgentina2024-04-13Chanay, Jeffrey A Esq RENEWAL34Onyama Limba
1022Emily J MarrierItaly2024-04-12Chemel, James L Cpa QUALIFIED24Elwin Sharvill
1023Faith U InouyeUnited Kingdom2024-04-28Feiner Bros RENEWAL23Onyama Limba
1024Julie O AlbaresItaly2024-04-28Dorl, James J Esq RENEWAL93Ivan Magalhaes
1025Alejandro P NickaArgentina2024-04-18Feiner Bros NEGOTIATION5Bernardo Dominic
1026Jones S SlusarskiCanada2024-04-26Feltz Printing Service PROPOSAL57Amy Elsner
1027Murillo U BologniaAustralia2024-04-22Chapman, Ross E Esq RENEWAL41Bernardo Dominic
1028Smith U WieserCanada2024-04-18Chemel, James L Cpa UNQUALIFIED26Bernardo Dominic
1029Munro P SaylorsArgentina2024-04-26Chanay, Jeffrey A Esq NEGOTIATION66Amy Elsner
1030Salvatore W ShinkoJapan2024-04-01Chanay, Jeffrey A Esq UNQUALIFIED81Ivan Magalhaes
1031Clifford K StensethFrance2024-04-20Chemel, James L Cpa RENEWAL87Xuxue Feng
1032Silvio Q PaprockiArgentina2024-04-12Chanay, Jeffrey A Esq RENEWAL91Asiya Javayant
1033Nicolas J MaletAustralia2024-04-26Feltz Printing Service RENEWAL64Stephen Shaw
1034Wickens O VenereSpain2024-03-31Dorl, James J Esq NEGOTIATION76Bernardo Dominic
1035Octavia L BowleyRussia2024-04-23Truhlar And Truhlar Attys PROPOSAL59Ioni Bowcher
1036Mujtaba S DarakjyItaly2024-04-06Benton, John B Jr RENEWAL6Asiya Javayant
1037Clifford K SergiFrance2024-04-04Chapman, Ross E Esq PROPOSAL25Ivan Magalhaes
1038Aditya H VenereRussia2024-04-17Buckley Miller Wright RENEWAL68Onyama Limba
1039Jennifer D CaldareraGermany2024-04-12Buckley Miller Wright RENEWAL89Xuxue Feng
1040Leon A BowleyBrazil2024-04-14Printing Dimensions QUALIFIED31Elwin Sharvill
1041Kaitlin S BriddickArgentina2024-04-06Truhlar And Truhlar Attys UNQUALIFIED52Onyama Limba
1042Isabel R WaycottBrazil2024-04-25Chapman, Ross E Esq PROPOSAL70Ioni Bowcher
1043Darci I FlosiCanada2024-04-20Dorl, James J Esq NEGOTIATION17Xuxue Feng
1044Leja K ShinkoIndia2024-04-20Chemel, James L Cpa NEGOTIATION66Ioni Bowcher
1045Kaitlin Y OstroskyItaly2024-04-21Morlong Associates PROPOSAL44Stephen Shaw
1046Kadeem Z GauchoFrance2024-04-26Rangoni Of Florence NEW87Asiya Javayant
1047Sinclair M StensethUnited Kingdom2024-04-21Chemel, James L Cpa QUALIFIED60Ivan Magalhaes
1048Darci N NestleItaly2024-04-05King, Christopher A Esq NEW95Amy Elsner
1049Ricardo A VocelkaGermany2024-04-25Benton, John B Jr NEW82Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Claire O CaudyItalyElwin Sharvill NEW
Jennifer S ButtFranceOnyama Limba RENEWAL
Clifford C IturbideGermanyAnna Fali QUALIFIED
Clifford U SaylorsFranceXuxue Feng PROPOSAL
Alejandro U SergiUnited KingdomStephen Shaw QUALIFIED
Smith P CampainUnited KingdomStephen Shaw QUALIFIED
Ricardo H RulapaughUnited KingdomAmy Elsner UNQUALIFIED
Juan B AmigonItalyIvan Magalhaes PROPOSAL
Stacey A StensethBrazilAsiya Javayant PROPOSAL
Octavia H SchemmerUnited KingdomIvan Magalhaes PROPOSAL
Aika Y SlusarskiFranceBernardo Dominic NEGOTIATION
Antonio Q ChuiIndiaAnna Fali NEGOTIATION
Jones K GlickGermanyAmy Elsner PROPOSAL
Jennifer P OldroydBrazilIoni Bowcher RENEWAL
David V StockhamIndiaBernardo Dominic QUALIFIED
Leon O SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Alejandro I ChuiUnited KingdomAsiya Javayant PROPOSAL
Leja I RulapaughIndiaIvan Magalhaes RENEWAL
David R GarufiAustraliaXuxue Feng PROPOSAL
Adams V RulapaughGermanyAmy Elsner UNQUALIFIED
Nicolas H MaletBrazilIvan Magalhaes NEGOTIATION
Nicolas M MaletRussiaOnyama Limba RENEWAL
Jefferson U CaldareraJapanIvan Magalhaes PROPOSAL
Rodrigues V SlusarskiUnited KingdomXuxue Feng NEW
Arvin Q SlusarskiFranceStephen Shaw PROPOSAL
Mujtaba U GarufiFranceAnna Fali RENEWAL
Ricardo J VocelkaIndiaElwin Sharvill NEW
Francesco M OldroydItalyOnyama Limba NEGOTIATION
David S AlbaresIndiaAmy Elsner PROPOSAL
Aika T DoeBrazilXuxue Feng RENEWAL
Tony G FlosiRussiaElwin Sharvill NEW
James U MorascaItalyAmy Elsner PROPOSAL
Alejandro W AmigonSpainOnyama Limba QUALIFIED
Stacey X SlusarskiIndiaXuxue Feng NEGOTIATION
Octavia U AlbaresSpainBernardo Dominic UNQUALIFIED
Faith Q MorascaFranceOnyama Limba NEW
Rodrigues W ButtCanadaAnna Fali NEGOTIATION
Jeanfrancois O VenereSpainAnna Fali NEW
Misaki K WaycottCanadaAsiya Javayant RENEWAL
Cody J KuskoJapanAnna Fali RENEWAL
Jefferson V StockhamGermanyStephen Shaw QUALIFIED
Kaitlin L SchemmerRussiaXuxue Feng UNQUALIFIED
Cody Q SergiUnited KingdomAnna Fali NEW
Claire I BriddickRussiaBernardo Dominic PROPOSAL
Alejandro V NestleCanadaIvan Magalhaes NEGOTIATION
Aruna G ButtAustraliaXuxue Feng UNQUALIFIED
Maisha W StockhamArgentinaOnyama Limba RENEWAL
Aditya A CaudyGermanyIvan Magalhaes UNQUALIFIED
Aika U BologniaAustraliaIoni Bowcher QUALIFIED
David J NickaBrazilIoni Bowcher RENEWAL
Frozen Columns
Name
Morrow I Ruta
Rodrigues G Rim
Aditya N Morasca
David L Poquette
Ashley S Nicka
Nicolas I Iturbide
Smith G Rulapaugh
Aditya L Saylors
Ivar Q Maclead
Jones J Wieser
Antonio P Rulapaugh
Silvio Z Perin
Johnson H Royster
Arvin Z Doe
Clifford S Royster
James F Caudy
Izzy B Perin
Julie F Malet
Aruna N Darakjy
Morrow F Malet
Ricardo Z Bowley
Aditya W Malet
Octavia Z Ostrosky
Juan H Inouye
Alejandro X Ostrosky
Octavia P Nestle
Munro L Marrier
Smith X Butt
Munro P Rim
Isabel G Rim
Jennifer Y Albares
Kaitlin B Morasca
Ricardo O Marrier
Jeanfrancois H Chui
Smith G Bolognia
Octavia I Foller
Aika L Kusko
Jones L Malet
Julie K Paprocki
Mujtaba O Butt
Alejandro S Stockham
Leon D Ruta
Faith Y Amigon
Aruna X Morasca
Emily Y Schemmer
Octavia M Chui
James G Stenseth
Francesco U Briddick
Maria X Paprocki
Munro F Sergi
IdCountryDate
1000United Kingdom2024-04-21
1001Italy2024-03-30
1002Spain2024-04-23
1003Spain2024-04-03
1004Brazil2024-04-28
1005Canada2024-04-03
1006Russia2024-04-01
1007Spain2024-04-16
1008Canada2024-04-24
1009Germany2024-04-20
1010Japan2024-04-11
1011Italy2024-04-22
1012Australia2024-04-01
1013Russia2024-04-27
1014France2024-04-27
1015Japan2024-04-14
1016Italy2024-04-10
1017France2024-04-07
1018United Kingdom2024-04-20
1019Russia2024-03-30
1020Brazil2024-04-18
1021France2024-04-15
1022Brazil2024-04-26
1023Japan2024-04-10
1024France2024-04-14
1025United Kingdom2024-04-22
1026Australia2024-04-07
1027Canada2024-04-02
1028Germany2024-04-03
1029Germany2024-04-19
1030France2024-04-08
1031United Kingdom2024-04-06
1032Canada2024-04-01
1033Russia2024-04-12
1034Argentina2024-04-23
1035Canada2024-04-22
1036Brazil2024-04-22
1037Australia2024-04-17
1038Spain2024-04-11
1039Argentina2024-04-18
1040Spain2024-04-12
1041Argentina2024-04-12
1042Germany2024-04-27
1043Australia2024-04-25
1044Brazil2024-04-24
1045Argentina2024-04-06
1046India2024-04-27
1047India2024-04-23
1048India2024-04-04
1049Japan2024-04-05

On-Demand Data

NameIdCountryDate
Darci R Bolognia1000Germany2024-03-31
Kaitlin H Bolognia1001Australia2024-04-22
Johnson N Bowley1002Australia2024-04-25
Wickens Q Saylors1003France2024-04-19
Julie A Gillian1004Italy2024-04-25
Jennifer S Iturbide1005Argentina2024-03-30
Stacey Y Doe1006Brazil2024-04-11
James P Tollner1007Italy2024-04-08
Ricardo Z Campain1008Argentina2024-04-05
Claire H Doe1009Canada2024-04-25
Isabel S Iturbide1010India2024-04-15
Chavez I Malet1011Australia2024-04-13
Aika N Doe1012Australia2024-03-31
Chavez X Whobrey1013France2024-04-05
Wickens G Briddick1014Russia2024-04-17
David W Doe1015India2024-04-23
Deepesh D Caudy1016Spain2024-04-05
Silvio H Nestle1017Russia2024-04-28
Stacey W Vocelka1018United Kingdom2024-04-15
Maria Y Gillian1019Italy2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith L StockhamFranceAsiya Javayant UNQUALIFIED
Mayumi U RulapaughArgentinaStephen Shaw QUALIFIED
Tony G PoquetteSpainBernardo Dominic PROPOSAL
Murillo Z CampainAustraliaIvan Magalhaes QUALIFIED
Salvatore O OldroydSpainIoni Bowcher RENEWAL
Murillo G WhobreySpainIoni Bowcher NEW
Jefferson U ChuiJapanAmy Elsner QUALIFIED
Aika V RutaGermanyOnyama Limba NEGOTIATION
Morrow E DoeAustraliaIoni Bowcher UNQUALIFIED
Rodrigues W ShinkoUnited KingdomAnna Fali RENEWAL
Ashley X GlickItalyIoni Bowcher QUALIFIED
Silvio R PerinCanadaBernardo Dominic UNQUALIFIED
Johnson Y DarakjyFranceAnna Fali RENEWAL
Faith D VocelkaCanadaXuxue Feng NEGOTIATION
Ricardo K OldroydRussiaAsiya Javayant NEW
James R RutaIndiaAnna Fali UNQUALIFIED
Morrow L WieserCanadaBernardo Dominic RENEWAL
Jefferson I KuskoItalyIoni Bowcher UNQUALIFIED
Kaitlin H ChuiSpainStephen Shaw RENEWAL
Isabel J MaletSpainAsiya Javayant UNQUALIFIED
Leon X RoysterBrazilIvan Magalhaes UNQUALIFIED
Alejandro L MarrierSpainBernardo Dominic NEW
Stacey D TollnerBrazilIoni Bowcher NEW
Nicolas N MaletIndiaOnyama Limba NEGOTIATION
Smith P SlusarskiRussiaOnyama Limba PROPOSAL
Aditya J NickaRussiaElwin Sharvill RENEWAL
Morrow B BowleyRussiaAnna Fali RENEWAL
Nicolas K PoquetteArgentinaXuxue Feng UNQUALIFIED
Aruna W BriddickJapanElwin Sharvill PROPOSAL
Kadeem E FlosiBrazilAsiya Javayant NEGOTIATION
Leja S WhobreyArgentinaAsiya Javayant UNQUALIFIED
Jefferson V WhobreyRussiaIvan Magalhaes PROPOSAL
Mayumi M WieserUnited KingdomBernardo Dominic RENEWAL
Arvin E VenereArgentinaAnna Fali PROPOSAL
Octavia W MaletAustraliaIvan Magalhaes NEGOTIATION
Greenwood H PoquetteArgentinaXuxue Feng UNQUALIFIED
Chavez X WieserSpainXuxue Feng PROPOSAL
Faith C CaldareraArgentinaBernardo Dominic NEGOTIATION
Maisha W MorascaFranceXuxue Feng NEW
Aditya S RutaFranceAsiya Javayant NEW

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