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
Leja R NickaGermanyOnyama Limba UNQUALIFIED
Claire C WaycottArgentinaElwin Sharvill PROPOSAL
Johnson T StensethJapanElwin Sharvill PROPOSAL
Jefferson G AlbaresAustraliaAsiya Javayant UNQUALIFIED
Juan K DarakjyRussiaXuxue Feng NEGOTIATION
Aditya D ButtItalyElwin Sharvill QUALIFIED
Johnson R InouyeUnited KingdomIoni Bowcher NEGOTIATION
Kadeem C OstroskyJapanXuxue Feng QUALIFIED
Alejandro K OstroskyArgentinaOnyama Limba NEGOTIATION
Cody F NickaFranceXuxue Feng QUALIFIED
Cody W BologniaGermanyIoni Bowcher NEGOTIATION
Mayumi Z SlusarskiGermanyElwin Sharvill QUALIFIED
Rodrigues S DilliardArgentinaElwin Sharvill RENEWAL
Greenwood W KolmetzUnited KingdomStephen Shaw PROPOSAL
Leja U AlbaresGermanyStephen Shaw QUALIFIED
Morrow E GillianBrazilXuxue Feng QUALIFIED
Mayumi Y BologniaSpainIvan Magalhaes PROPOSAL
Isabel Z AlbaresJapanIoni Bowcher UNQUALIFIED
Aika X CampainFranceElwin Sharvill PROPOSAL
Francesco Z SchemmerJapanAmy Elsner NEGOTIATION
Juan R SaylorsBrazilIvan Magalhaes RENEWAL
Adams X WaycottGermanyAmy Elsner RENEWAL
Kaitlin S NickaJapanElwin Sharvill NEW
Greenwood C StockhamRussiaIoni Bowcher PROPOSAL
Arvin K PoquetteBrazilAsiya Javayant NEGOTIATION
Deepesh X GlickItalyIvan Magalhaes UNQUALIFIED
Costa A NestleJapanAmy Elsner PROPOSAL
Smith J WhobreyFranceIoni Bowcher NEW
Clifford M MaletBrazilOnyama Limba UNQUALIFIED
Tony C CampainCanadaIvan Magalhaes NEGOTIATION
Greenwood T SergiUnited KingdomElwin Sharvill PROPOSAL
Maisha T GlickSpainElwin Sharvill NEW
Morrow X AlbaresCanadaXuxue Feng NEGOTIATION
Alejandro J AlbaresIndiaAmy Elsner NEGOTIATION
Jones X FlosiGermanyBernardo Dominic UNQUALIFIED
Maisha L FigeroaGermanyAmy Elsner PROPOSAL
Julie F GauchoRussiaIoni Bowcher NEW
Morrow C ChuiArgentinaElwin Sharvill UNQUALIFIED
Emily N MarrierCanadaAnna Fali NEGOTIATION
Jones S GillianArgentinaAnna Fali UNQUALIFIED
Rodrigues R DarakjyJapanStephen Shaw RENEWAL
Ashley N BowleyFranceOnyama Limba NEGOTIATION
Clifford H InouyeRussiaOnyama Limba NEW
Kaitlin O FerenczBrazilXuxue Feng PROPOSAL
Maria A VocelkaItalyAnna Fali RENEWAL
Darci X ChuiRussiaStephen Shaw QUALIFIED
Chavez A ChuiAustraliaElwin Sharvill NEW
Maria K RulapaughIndiaAnna Fali QUALIFIED
Juan R FlosiFranceAnna Fali QUALIFIED
Tony R ShinkoUnited KingdomBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Izzy M PoquetteUnited KingdomOnyama Limba PROPOSAL
Julie J VenereRussiaElwin Sharvill NEGOTIATION
Jeanfrancois I PoquetteRussiaIoni Bowcher QUALIFIED
Ivar W IturbideGermanyStephen Shaw QUALIFIED
Morrow L PoquetteRussiaXuxue Feng PROPOSAL
Antonio J CaldareraItalyBernardo Dominic RENEWAL
Juan P CampainItalyIoni Bowcher QUALIFIED
Maria H GlickFranceAmy Elsner NEGOTIATION
Mujtaba G VocelkaArgentinaBernardo Dominic NEW
Munro X MaletItalyStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues Q IturbideBrazil2024-04-24Chanay, Jeffrey A Esq PROPOSAL92Ivan Magalhaes
1001Chavez K CaudyGermany2024-04-03Dorl, James J Esq QUALIFIED16Ivan Magalhaes
1002Emily G VenereGermany2024-04-16Feiner Bros UNQUALIFIED17Asiya Javayant
1003Salvatore C StensethBrazil2024-04-23King, Christopher A Esq UNQUALIFIED41Asiya Javayant
1004Wickens D GlickRussia2024-04-12Truhlar And Truhlar Attys NEW19Anna Fali
1005Silvio Q RulapaughArgentina2024-04-13Rangoni Of Florence UNQUALIFIED33Xuxue Feng
1006Misaki E SlusarskiRussia2024-04-19Feltz Printing Service NEGOTIATION88Xuxue Feng
1007Jefferson P RimSpain2024-04-05Chapman, Ross E Esq NEGOTIATION96Bernardo Dominic
1008Jefferson O InouyeIndia2024-04-22Printing Dimensions PROPOSAL93Ioni Bowcher
1009Costa Q NestleUnited Kingdom2024-04-12Chemel, James L Cpa PROPOSAL60Elwin Sharvill
1010Morrow Q MaletJapan2024-04-06Rousseaux, Michael Esq NEGOTIATION96Asiya Javayant
1011Chavez L TollnerUnited Kingdom2024-04-22Dorl, James J Esq QUALIFIED67Bernardo Dominic
1012Isabel T GlickRussia2024-03-31Dorl, James J Esq NEGOTIATION36Anna Fali
1013James N BowleyCanada2024-04-09Truhlar And Truhlar Attys NEW40Asiya Javayant
1014Ricardo G StockhamUnited Kingdom2024-04-12Printing Dimensions UNQUALIFIED94Ioni Bowcher
1015Clifford M CampainUnited Kingdom2024-04-11Rousseaux, Michael Esq NEW61Xuxue Feng
1016Cody G FollerSpain2024-04-17Commercial Press RENEWAL70Ioni Bowcher
1017Greenwood X CaudyGermany2024-04-28Morlong Associates NEGOTIATION63Amy Elsner
1018Smith C NickaBrazil2024-04-01Printing Dimensions UNQUALIFIED30Bernardo Dominic
1019Jefferson N PoquetteUnited Kingdom2024-04-20Chemel, James L Cpa NEGOTIATION62Amy Elsner
1020James T CaldareraArgentina2024-04-08Chapman, Ross E Esq UNQUALIFIED18Anna Fali
1021Juan V CaldareraArgentina2024-04-17Morlong Associates PROPOSAL55Onyama Limba
1022Francesco Z VocelkaGermany2024-04-02Feiner Bros NEGOTIATION92Ivan Magalhaes
1023Juan X PaprockiRussia2024-04-18Feltz Printing Service RENEWAL37Amy Elsner
1024Jefferson L FigeroaArgentina2024-04-08Commercial Press QUALIFIED90Onyama Limba
1025Deepesh E CaldareraArgentina2024-04-08Rangoni Of Florence NEW46Amy Elsner
1026Maria E SergiFrance2024-04-01Chanay, Jeffrey A Esq QUALIFIED97Ioni Bowcher
1027Jefferson K GlickArgentina2024-04-13Buckley Miller Wright NEW27Elwin Sharvill
1028Juan J SchemmerFrance2024-04-03Truhlar And Truhlar Attys QUALIFIED87Onyama Limba
1029Nicolas V CaldareraBrazil2024-04-08King, Christopher A Esq UNQUALIFIED46Xuxue Feng
1030Cody H KuskoBrazil2024-04-27King, Christopher A Esq QUALIFIED9Bernardo Dominic
1031Emily O WhobreyUnited Kingdom2024-04-27Morlong Associates NEGOTIATION45Stephen Shaw
1032Aika X RoysterGermany2024-04-15Feltz Printing Service NEW10Bernardo Dominic
1033Mujtaba J MaletSpain2024-04-24Benton, John B Jr PROPOSAL20Ivan Magalhaes
1034Chavez Y BowleyJapan2024-04-24Chapman, Ross E Esq UNQUALIFIED48Xuxue Feng
1035Juan H DoeRussia2024-04-21Truhlar And Truhlar Attys NEGOTIATION81Anna Fali
1036Greenwood P ShinkoSpain2024-04-12Dorl, James J Esq NEGOTIATION79Elwin Sharvill
1037Stacey T BologniaBrazil2024-04-13Truhlar And Truhlar Attys RENEWAL34Stephen Shaw
1038Rodrigues V PerinFrance2024-04-29King, Christopher A Esq PROPOSAL0Amy Elsner
1039Johnson X DoeGermany2024-04-12Commercial Press PROPOSAL50Amy Elsner
1040Kaitlin I BriddickArgentina2024-04-20King, Christopher A Esq NEW20Onyama Limba
1041Misaki R MarrierSpain2024-03-31Chemel, James L Cpa PROPOSAL74Ioni Bowcher
1042Alejandro E GlickItaly2024-04-07Chapman, Ross E Esq NEW30Onyama Limba
1043Juan T GarufiIndia2024-04-23Chanay, Jeffrey A Esq NEW47Amy Elsner
1044Ivar Q AmigonArgentina2024-04-22Rousseaux, Michael Esq NEGOTIATION76Stephen Shaw
1045James M OldroydBrazil2024-04-26Dorl, James J Esq RENEWAL49Stephen Shaw
1046Ricardo Q MacleadIndia2024-04-06Buckley Miller Wright NEGOTIATION19Elwin Sharvill
1047Arvin G DilliardBrazil2024-04-27Rangoni Of Florence RENEWAL29Amy Elsner
1048Juan Q SchemmerFrance2024-04-02Chemel, James L Cpa NEGOTIATION0Xuxue Feng
1049Juan R KolmetzRussia2024-04-26Benton, John B Jr RENEWAL18Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Stacey O GlickCanadaIoni Bowcher UNQUALIFIED
Clifford K TollnerFranceAnna Fali QUALIFIED
Julie F KolmetzSpainAsiya Javayant QUALIFIED
Emily B IturbideAustraliaElwin Sharvill RENEWAL
Ashley Q ButtIndiaAmy Elsner NEW
Adams R AlbaresItalyBernardo Dominic NEGOTIATION
Kaitlin B FigeroaJapanAsiya Javayant PROPOSAL
Jeanfrancois A OstroskySpainOnyama Limba NEW
Kadeem C MaletIndiaAnna Fali UNQUALIFIED
Julie M StensethCanadaElwin Sharvill UNQUALIFIED
Claire H IturbideBrazilIoni Bowcher NEW
Smith L MacleadSpainStephen Shaw NEGOTIATION
Ricardo I SlusarskiBrazilBernardo Dominic NEGOTIATION
Cody R FigeroaRussiaIvan Magalhaes NEGOTIATION
Silvio D RutaArgentinaIoni Bowcher UNQUALIFIED
Tony C FollerBrazilAmy Elsner QUALIFIED
Jones V WhobreySpainAnna Fali NEGOTIATION
Juan B DilliardSpainIoni Bowcher UNQUALIFIED
Johnson Q TollnerItalyElwin Sharvill QUALIFIED
Ivar P OstroskyItalyAsiya Javayant QUALIFIED
Leja J PoquetteItalyXuxue Feng NEW
Greenwood S PoquetteAustraliaAsiya Javayant QUALIFIED
Sinclair E VenereFranceAmy Elsner UNQUALIFIED
Izzy F DoeSpainAnna Fali NEGOTIATION
Costa Y GauchoUnited KingdomXuxue Feng UNQUALIFIED
Tony Q CaldareraFranceIvan Magalhaes NEGOTIATION
Rodrigues J NestleBrazilStephen Shaw NEGOTIATION
Maria B CaudyAustraliaAnna Fali QUALIFIED
Maria I VocelkaSpainBernardo Dominic NEW
Mayumi V MacleadRussiaIoni Bowcher NEGOTIATION
Silvio U GauchoAustraliaIvan Magalhaes QUALIFIED
Sinclair E MacleadSpainAmy Elsner NEW
Kaitlin U RutaArgentinaIvan Magalhaes PROPOSAL
Izzy R CaudyFranceIvan Magalhaes UNQUALIFIED
David Z AlbaresFranceOnyama Limba QUALIFIED
Deepesh L PoquetteSpainXuxue Feng NEGOTIATION
Murillo V WaycottIndiaAmy Elsner UNQUALIFIED
Mayumi L PoquetteIndiaBernardo Dominic PROPOSAL
Murillo N OldroydItalyAsiya Javayant RENEWAL
Faith H AlbaresGermanyIoni Bowcher RENEWAL
James M KuskoBrazilIoni Bowcher NEGOTIATION
Octavia C CampainBrazilXuxue Feng NEGOTIATION
Murillo N RimItalyIvan Magalhaes RENEWAL
Salvatore D MaletArgentinaAnna Fali QUALIFIED
Juan E SchemmerGermanyAmy Elsner RENEWAL
Ivar H CaldareraUnited KingdomAmy Elsner QUALIFIED
Kaitlin E AlbaresRussiaAnna Fali NEW
Silvio K WhobreyGermanyAmy Elsner QUALIFIED
Adams C FerenczCanadaStephen Shaw UNQUALIFIED
Mujtaba Y IturbideBrazilIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Adams P Maclead
Jones X Nicka
Isabel Q Whobrey
Claire L Caudy
Stacey L Rulapaugh
Aruna R Bolognia
Claire Q Marrier
Aditya I Gillian
Ricardo E Vocelka
Leon O Glick
Leja A Inouye
Antonio P Schemmer
Aruna V Whobrey
Jefferson F Marrier
Aika Y Chui
Emily E Amigon
Ricardo V Bolognia
Chavez X Waycott
Leon K Caldarera
Emily C Albares
Francesco U Wieser
Silvio V Dilliard
Julie C Perin
Johnson Z Gaucho
Alejandro V Iturbide
Ricardo G Kolmetz
Leon M Albares
Francesco Z Caudy
Claire A Chui
Kadeem O Butt
Munro A Flosi
Arvin X Doe
Smith H Malet
Antonio A Kolmetz
Mayumi I Gaucho
Wickens Y Malet
Salvatore Q Marrier
Salvatore T Nicka
Emily C Kusko
Jefferson M Flosi
James T Flosi
Maria E Gillian
Johnson B Gillian
Julie R Morasca
Izzy P Gillian
Cody J Caldarera
Nicolas D Paprocki
Aditya V Poquette
David A Perin
Jennifer W Iturbide
IdCountryDate
1000Italy2024-04-09
1001Japan2024-04-25
1002United Kingdom2024-04-08
1003Canada2024-03-31
1004Germany2024-04-25
1005Brazil2024-04-29
1006Brazil2024-04-02
1007France2024-04-03
1008United Kingdom2024-04-09
1009Italy2024-04-08
1010India2024-04-21
1011India2024-04-06
1012Australia2024-03-31
1013Germany2024-04-15
1014Australia2024-04-27
1015Italy2024-04-11
1016Australia2024-04-08
1017Japan2024-04-06
1018Brazil2024-04-25
1019Australia2024-04-17
1020Spain2024-04-26
1021India2024-04-28
1022Japan2024-04-17
1023Australia2024-04-19
1024United Kingdom2024-04-15
1025India2024-04-29
1026United Kingdom2024-04-10
1027Japan2024-04-05
1028Argentina2024-04-09
1029Italy2024-04-27
1030France2024-04-12
1031Spain2024-04-17
1032Italy2024-04-12
1033Brazil2024-04-26
1034India2024-04-09
1035United Kingdom2024-04-13
1036Spain2024-04-25
1037Italy2024-04-18
1038Argentina2024-04-02
1039Canada2024-04-16
1040France2024-03-31
1041United Kingdom2024-04-08
1042Germany2024-04-15
1043United Kingdom2024-04-18
1044Russia2024-04-28
1045France2024-04-27
1046Argentina2024-04-08
1047Australia2024-04-03
1048Japan2024-04-23
1049United Kingdom2024-04-02

On-Demand Data

NameIdCountryDate
Octavia I Marrier1000Brazil2024-04-01
Murillo I Saylors1001Australia2024-04-20
Mayumi R Flosi1002Japan2024-04-21
Morrow C Kusko1003Russia2024-04-24
Jennifer C Royster1004Italy2024-04-06
Leon T Wieser1005Japan2024-04-15
Kaitlin S Royster1006Spain2024-04-13
Johnson V Albares1007Spain2024-04-28
Antonio I Shinko1008Russia2024-04-24
Jones U Flosi1009Argentina2024-04-09
Nicolas M Bowley1010United Kingdom2024-04-03
Mayumi G Paprocki1011United Kingdom2024-04-17
Silvio R Paprocki1012Spain2024-04-10
Jones U Caudy1013Italy2024-04-07
Misaki M Perin1014Spain2024-04-09
David T Paprocki1015Australia2024-04-27
Leon H Tollner1016Germany2024-04-15
Jefferson A Whobrey1017Argentina2024-04-14
Octavia T Whobrey1018Spain2024-04-24
Costa B Kusko1019Canada2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois K AlbaresFranceXuxue Feng UNQUALIFIED
Adams T MarrierJapanAsiya Javayant QUALIFIED
Claire X StockhamIndiaElwin Sharvill NEW
Nicolas Y RimItalyOnyama Limba UNQUALIFIED
Sinclair K GauchoBrazilAnna Fali RENEWAL
Emily F RutaArgentinaAnna Fali RENEWAL
Claire Y KolmetzCanadaBernardo Dominic RENEWAL
Cody Y OstroskyCanadaAmy Elsner QUALIFIED
Claire P RimArgentinaOnyama Limba NEGOTIATION
Jennifer R StensethItalyIoni Bowcher QUALIFIED
Nicolas W VenereUnited KingdomAsiya Javayant NEGOTIATION
Darci U OstroskyItalyIoni Bowcher NEGOTIATION
Maisha R GauchoArgentinaAmy Elsner UNQUALIFIED
Morrow T AmigonGermanyXuxue Feng UNQUALIFIED
Isabel U RimRussiaBernardo Dominic NEW
Faith D BowleyFranceIoni Bowcher UNQUALIFIED
Aditya M DoeJapanOnyama Limba QUALIFIED
Stacey X SlusarskiRussiaStephen Shaw QUALIFIED
Stacey R RimRussiaAmy Elsner QUALIFIED
Aika O MarrierJapanStephen Shaw QUALIFIED
Leja K MacleadItalyBernardo Dominic RENEWAL
Jennifer L GarufiCanadaXuxue Feng UNQUALIFIED
Mujtaba D RutaFranceElwin Sharvill UNQUALIFIED
Tony H CaudyIndiaElwin Sharvill UNQUALIFIED
Rodrigues P AlbaresCanadaStephen Shaw RENEWAL
Juan R WhobreyJapanAnna Fali NEGOTIATION
Kaitlin F GauchoRussiaAnna Fali QUALIFIED
Smith F PaprockiGermanyBernardo Dominic QUALIFIED
Nicolas X RutaUnited KingdomAsiya Javayant NEGOTIATION
Nicolas D IturbideItalyIvan Magalhaes UNQUALIFIED
Ashley E DoeFranceBernardo Dominic PROPOSAL
Maria G DoeJapanElwin Sharvill RENEWAL
Aika X IturbideFranceIoni Bowcher NEGOTIATION
Cody W CaldareraGermanyAsiya Javayant NEGOTIATION
Claire A MacleadSpainAsiya Javayant PROPOSAL
Silvio M RimFranceStephen Shaw RENEWAL
Leon D RutaBrazilBernardo Dominic UNQUALIFIED
Leon H PoquetteFranceAsiya Javayant NEGOTIATION
Rodrigues H RimJapanElwin Sharvill PROPOSAL
Misaki A AlbaresUnited KingdomAmy Elsner 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>