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
Darci U BowleyUnited KingdomStephen Shaw QUALIFIED
Antonio A GillianAustraliaBernardo Dominic NEGOTIATION
Deepesh N GlickIndiaBernardo Dominic QUALIFIED
Aruna H FollerArgentinaIvan Magalhaes UNQUALIFIED
Kaitlin P GlickRussiaXuxue Feng QUALIFIED
Juan R CaudyUnited KingdomBernardo Dominic QUALIFIED
Morrow M VenereAustraliaOnyama Limba QUALIFIED
Antonio Y PaprockiArgentinaXuxue Feng UNQUALIFIED
Aditya R VocelkaCanadaAnna Fali NEGOTIATION
Sinclair R FollerArgentinaElwin Sharvill RENEWAL
Misaki W AmigonFranceIvan Magalhaes UNQUALIFIED
Wickens P IturbideIndiaOnyama Limba UNQUALIFIED
Emily L PoquetteArgentinaIvan Magalhaes NEW
Mujtaba I RutaArgentinaIoni Bowcher UNQUALIFIED
Ashley Z KolmetzArgentinaAmy Elsner UNQUALIFIED
Isabel Z BriddickAustraliaAsiya Javayant RENEWAL
Kadeem H ShinkoSpainXuxue Feng UNQUALIFIED
Greenwood W CampainAustraliaStephen Shaw RENEWAL
Johnson R MacleadCanadaAnna Fali UNQUALIFIED
Ricardo D CaldareraGermanyStephen Shaw NEGOTIATION
Jeanfrancois O PerinCanadaIoni Bowcher PROPOSAL
Alejandro B SchemmerItalyIoni Bowcher NEW
Isabel H IturbideUnited KingdomOnyama Limba NEGOTIATION
Stacey F PoquetteCanadaElwin Sharvill NEW
Kaitlin W CampainArgentinaIvan Magalhaes UNQUALIFIED
Ashley T GillianSpainStephen Shaw PROPOSAL
Ivar C StensethArgentinaAnna Fali NEGOTIATION
Silvio D InouyeUnited KingdomIoni Bowcher RENEWAL
Murillo Z FollerSpainBernardo Dominic PROPOSAL
Kaitlin F WieserItalyXuxue Feng QUALIFIED
Misaki Z FollerIndiaXuxue Feng NEW
Aruna O KolmetzGermanyOnyama Limba PROPOSAL
James P StockhamGermanyAsiya Javayant PROPOSAL
Isabel T PoquetteBrazilIoni Bowcher NEGOTIATION
Faith T SlusarskiGermanyOnyama Limba NEGOTIATION
Smith V IturbideJapanElwin Sharvill NEGOTIATION
Juan M FigeroaSpainIvan Magalhaes PROPOSAL
Kadeem L SchemmerCanadaOnyama Limba UNQUALIFIED
Jeanfrancois C GauchoArgentinaIvan Magalhaes UNQUALIFIED
Mayumi F RulapaughGermanyIoni Bowcher QUALIFIED
Adams H BowleyGermanyIvan Magalhaes QUALIFIED
Morrow T CaudyGermanyIoni Bowcher PROPOSAL
Leon L ButtCanadaStephen Shaw QUALIFIED
Jones O DoeFranceXuxue Feng NEGOTIATION
Cody E CaudyCanadaIoni Bowcher NEGOTIATION
Greenwood R RutaRussiaIoni Bowcher QUALIFIED
Maria T CaldareraSpainElwin Sharvill RENEWAL
Cody R GarufiArgentinaXuxue Feng PROPOSAL
Claire S OldroydBrazilStephen Shaw PROPOSAL
Francesco H CampainRussiaStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Octavia E BologniaCanadaElwin Sharvill NEGOTIATION
Jeanfrancois A FerenczBrazilOnyama Limba PROPOSAL
Kadeem M WaycottArgentinaStephen Shaw NEW
Jennifer Z BowleyFranceXuxue Feng NEW
Francesco M BowleyBrazilIoni Bowcher NEGOTIATION
Jones F CampainGermanyXuxue Feng PROPOSAL
Alejandro N RutaAustraliaAnna Fali NEW
Morrow H StensethRussiaAmy Elsner PROPOSAL
Jones V RutaBrazilAmy Elsner NEW
Antonio O AlbaresCanadaXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley Z MarrierFrance2024-03-21Rangoni Of Florence NEGOTIATION76Xuxue Feng
1001Jefferson A MarrierFrance2024-04-07Dorl, James J Esq NEGOTIATION92Anna Fali
1002James M BowleyJapan2024-03-24Buckley Miller Wright NEGOTIATION92Elwin Sharvill
1003Clifford Q InouyeBrazil2024-04-10Printing Dimensions NEW54Anna Fali
1004Aika Y BowleyRussia2024-04-05Feiner Bros UNQUALIFIED51Stephen Shaw
1005Greenwood S CaldareraSpain2024-03-21Buckley Miller Wright PROPOSAL28Xuxue Feng
1006Aruna M RimCanada2024-04-16King, Christopher A Esq UNQUALIFIED64Stephen Shaw
1007Alejandro I MorascaItaly2024-03-21Morlong Associates RENEWAL10Anna Fali
1008Salvatore F CaldareraUnited Kingdom2024-04-09Chanay, Jeffrey A Esq NEGOTIATION20Bernardo Dominic
1009Jennifer F MorascaCanada2024-04-05Chapman, Ross E Esq RENEWAL53Elwin Sharvill
1010Munro Z MarrierCanada2024-03-22King, Christopher A Esq NEGOTIATION16Bernardo Dominic
1011Jeanfrancois D NestleSpain2024-03-20King, Christopher A Esq UNQUALIFIED45Bernardo Dominic
1012Greenwood C StensethArgentina2024-03-23Chemel, James L Cpa UNQUALIFIED7Ivan Magalhaes
1013Claire Z CampainAustralia2024-03-27Rousseaux, Michael Esq QUALIFIED3Elwin Sharvill
1014Smith W DarakjyGermany2024-03-30Rousseaux, Michael Esq NEW70Asiya Javayant
1015Juan G MacleadJapan2024-03-25Truhlar And Truhlar Attys PROPOSAL73Xuxue Feng
1016Munro V KuskoSpain2024-04-05Truhlar And Truhlar Attys QUALIFIED25Ioni Bowcher
1017Kaitlin N BowleySpain2024-04-13Printing Dimensions UNQUALIFIED42Ivan Magalhaes
1018Costa Z BowleyBrazil2024-04-17King, Christopher A Esq UNQUALIFIED20Onyama Limba
1019Antonio L BowleyItaly2024-04-04Chanay, Jeffrey A Esq RENEWAL73Xuxue Feng
1020Jeanfrancois A SergiItaly2024-03-24Commercial Press PROPOSAL2Asiya Javayant
1021Silvio O NickaJapan2024-03-21Chanay, Jeffrey A Esq UNQUALIFIED50Asiya Javayant
1022Costa L NestleUnited Kingdom2024-04-18King, Christopher A Esq PROPOSAL57Onyama Limba
1023Mujtaba Z VenereCanada2024-03-31Truhlar And Truhlar Attys PROPOSAL5Ioni Bowcher
1024Silvio T AmigonItaly2024-03-20Rousseaux, Michael Esq NEW41Onyama Limba
1025Jennifer B GlickArgentina2024-04-02Chapman, Ross E Esq NEW7Ioni Bowcher
1026Mujtaba V GlickAustralia2024-04-05King, Christopher A Esq RENEWAL46Xuxue Feng
1027Nicolas Y MaletItaly2024-04-07Printing Dimensions QUALIFIED2Anna Fali
1028Sinclair U CaldareraBrazil2024-04-01Chemel, James L Cpa RENEWAL36Asiya Javayant
1029Jeanfrancois H CampainItaly2024-03-21Chanay, Jeffrey A Esq NEGOTIATION1Ioni Bowcher
1030Aruna X SchemmerAustralia2024-03-25Buckley Miller Wright NEGOTIATION44Ivan Magalhaes
1031Murillo Y WaycottUnited Kingdom2024-03-20Dorl, James J Esq NEGOTIATION85Bernardo Dominic
1032Morrow Y NickaUnited Kingdom2024-04-05Commercial Press NEGOTIATION73Onyama Limba
1033Silvio K BowleyFrance2024-03-27Morlong Associates QUALIFIED27Ioni Bowcher
1034Julie B VenereArgentina2024-04-11Chanay, Jeffrey A Esq NEGOTIATION95Stephen Shaw
1035Misaki B MaletCanada2024-04-16Feiner Bros RENEWAL10Onyama Limba
1036Greenwood I ChuiBrazil2024-04-12Chanay, Jeffrey A Esq PROPOSAL84Ivan Magalhaes
1037Leon F PoquetteBrazil2024-04-03Buckley Miller Wright PROPOSAL93Ioni Bowcher
1038Leja L AlbaresFrance2024-04-02Truhlar And Truhlar Attys NEGOTIATION91Xuxue Feng
1039Julie Q StensethSpain2024-04-08Buckley Miller Wright RENEWAL58Stephen Shaw
1040Ricardo F MaletCanada2024-04-14Commercial Press QUALIFIED10Xuxue Feng
1041Octavia O FigeroaSpain2024-03-28Rangoni Of Florence UNQUALIFIED23Ioni Bowcher
1042Adams W MorascaAustralia2024-03-31Feltz Printing Service UNQUALIFIED93Bernardo Dominic
1043David A WaycottJapan2024-04-02Buckley Miller Wright PROPOSAL17Elwin Sharvill
1044Aruna H MaletBrazil2024-04-12Feiner Bros PROPOSAL37Ivan Magalhaes
1045Murillo C ButtBrazil2024-04-08Feiner Bros UNQUALIFIED95Xuxue Feng
1046Izzy T CampainAustralia2024-04-04Chemel, James L Cpa NEGOTIATION71Onyama Limba
1047Aruna P VenereIndia2024-04-07Buckley Miller Wright PROPOSAL26Asiya Javayant
1048David X DarakjyGermany2024-03-22Rousseaux, Michael Esq UNQUALIFIED4Asiya Javayant
1049Kaitlin L OstroskyItaly2024-03-30Feiner Bros PROPOSAL50Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba O WhobreyItalyBernardo Dominic NEW
Johnson M MaletCanadaAnna Fali UNQUALIFIED
Aika X SaylorsJapanAsiya Javayant NEGOTIATION
Juan C OldroydGermanyAsiya Javayant RENEWAL
Salvatore Z BriddickBrazilAmy Elsner RENEWAL
Stacey E CaldareraAustraliaIoni Bowcher RENEWAL
Adams U SaylorsAustraliaIoni Bowcher NEGOTIATION
Kadeem L FigeroaArgentinaAsiya Javayant PROPOSAL
Jennifer Z StockhamCanadaIvan Magalhaes PROPOSAL
Jennifer R SergiRussiaIvan Magalhaes QUALIFIED
Sinclair A OstroskyBrazilIvan Magalhaes NEW
Cody B GlickRussiaStephen Shaw PROPOSAL
Stacey D InouyeJapanXuxue Feng QUALIFIED
Chavez E WhobreyJapanIvan Magalhaes PROPOSAL
Darci K VocelkaIndiaOnyama Limba UNQUALIFIED
Maria L DarakjyFranceIvan Magalhaes QUALIFIED
Faith P IturbideAustraliaAsiya Javayant NEGOTIATION
Rodrigues M PoquetteRussiaElwin Sharvill QUALIFIED
Izzy Z BowleyJapanXuxue Feng PROPOSAL
Alejandro C PaprockiItalyIoni Bowcher QUALIFIED
Jones U FlosiSpainAsiya Javayant NEW
Aditya A PerinAustraliaAmy Elsner RENEWAL
Antonio J SlusarskiIndiaAsiya Javayant UNQUALIFIED
Ivar Y StensethItalyBernardo Dominic NEW
Alejandro O WieserBrazilElwin Sharvill PROPOSAL
Maisha A AmigonBrazilStephen Shaw PROPOSAL
Wickens P DilliardFranceStephen Shaw PROPOSAL
Ricardo U FlosiRussiaBernardo Dominic PROPOSAL
Morrow T GauchoJapanElwin Sharvill PROPOSAL
Jones G MarrierArgentinaStephen Shaw NEW
Isabel J ShinkoCanadaXuxue Feng NEW
Johnson T StockhamBrazilAnna Fali NEW
James A TollnerGermanyElwin Sharvill NEGOTIATION
Faith F BologniaCanadaBernardo Dominic UNQUALIFIED
Aruna F VocelkaIndiaIoni Bowcher RENEWAL
Claire M BologniaFranceIvan Magalhaes UNQUALIFIED
Jones Y InouyeJapanStephen Shaw UNQUALIFIED
Claire M OstroskyItalyIoni Bowcher QUALIFIED
Leon Z GillianFranceElwin Sharvill RENEWAL
Murillo I GlickSpainXuxue Feng NEW
Isabel Q MorascaFranceElwin Sharvill NEGOTIATION
Morrow X WaycottFranceElwin Sharvill QUALIFIED
Munro X OstroskyBrazilElwin Sharvill NEW
Arvin J MarrierRussiaIvan Magalhaes NEW
Mayumi P PoquetteRussiaIvan Magalhaes QUALIFIED
Kadeem D RoysterGermanyAsiya Javayant QUALIFIED
Nicolas Y FerenczCanadaIvan Magalhaes UNQUALIFIED
Jones G SaylorsRussiaXuxue Feng UNQUALIFIED
David B PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Kadeem P FlosiJapanAmy Elsner UNQUALIFIED
Frozen Columns
Name
Leon B Caudy
Stacey P Rim
Maisha A Flosi
Arvin M Doe
Salvatore A Tollner
Ricardo I Schemmer
Emily G Kusko
Deepesh G Venere
Misaki F Saylors
Juan G Kolmetz
Emily H Iturbide
Rodrigues Y Rulapaugh
Munro U Caudy
Maisha W Venere
Cody O Caldarera
Adams A Slusarski
Aika X Caldarera
Cody B Shinko
Faith M Shinko
Wickens A Venere
Izzy K Maclead
Silvio D Ferencz
Kadeem X Doe
Murillo P Royster
Maria H Albares
Sinclair A Butt
Morrow C Amigon
Isabel C Glick
Costa A Rulapaugh
James L Ostrosky
Misaki Y Gaucho
Faith I Waycott
Costa X Kolmetz
Darci C Amigon
Octavia A Morasca
Izzy J Figeroa
Kadeem J Inouye
Costa Q Caldarera
Costa R Saylors
Aditya M Stenseth
David O Dilliard
Munro B Ruta
Ashley A Ostrosky
Ricardo B Venere
Greenwood C Kolmetz
Johnson R Nicka
Aditya U Gillian
Costa D Oldroyd
David U Sergi
Johnson X Ruta
IdCountryDate
1000India2024-04-03
1001Russia2024-04-15
1002United Kingdom2024-04-15
1003Spain2024-03-25
1004Canada2024-04-06
1005Canada2024-04-05
1006Japan2024-04-12
1007France2024-04-07
1008Russia2024-03-27
1009Russia2024-04-10
1010Italy2024-03-26
1011Canada2024-04-16
1012Spain2024-03-20
1013Russia2024-04-08
1014United Kingdom2024-04-11
1015Italy2024-03-26
1016Germany2024-04-18
1017Argentina2024-04-06
1018Russia2024-03-30
1019India2024-04-16
1020Japan2024-04-06
1021Italy2024-03-21
1022Spain2024-04-08
1023Russia2024-03-31
1024Brazil2024-03-22
1025Italy2024-04-05
1026Canada2024-03-31
1027Argentina2024-04-13
1028France2024-04-07
1029Italy2024-04-18
1030Brazil2024-04-06
1031Germany2024-03-27
1032Argentina2024-03-23
1033Spain2024-04-02
1034Japan2024-04-12
1035Spain2024-04-02
1036Russia2024-04-01
1037Russia2024-04-13
1038France2024-04-11
1039Russia2024-04-13
1040Canada2024-04-04
1041Italy2024-04-06
1042Canada2024-03-28
1043Japan2024-04-01
1044Germany2024-04-12
1045United Kingdom2024-04-10
1046Brazil2024-04-11
1047Japan2024-04-15
1048Italy2024-04-16
1049France2024-03-24

On-Demand Data

NameIdCountryDate
Emily D Caudy1000France2024-04-11
Adams E Whobrey1001Canada2024-04-12
Leja X Rim1002Australia2024-03-31
Leon R Albares1003Japan2024-03-21
Jeanfrancois W Bolognia1004Russia2024-04-12
Jones Y Marrier1005Spain2024-04-18
Munro L Inouye1006United Kingdom2024-04-15
Leja Y Garufi1007France2024-04-18
Stacey T Schemmer1008United Kingdom2024-03-30
Jones H Gillian1009Brazil2024-03-27
Tony N Perin1010Brazil2024-03-27
Aika Q Saylors1011United Kingdom2024-03-20
Silvio J Schemmer1012Japan2024-04-07
Adams C Malet1013Japan2024-04-04
Darci N Amigon1014France2024-04-15
Octavia G Kolmetz1015France2024-04-12
Ricardo S Ostrosky1016India2024-03-22
Emily S Gaucho1017Italy2024-04-04
Aruna T Glick1018Argentina2024-03-26
Greenwood H Rim1019Canada2024-03-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore B SlusarskiCanadaIoni Bowcher RENEWAL
Silvio Q ChuiJapanElwin Sharvill RENEWAL
Julie J CaldareraRussiaAnna Fali NEW
Rodrigues P InouyeGermanyElwin Sharvill NEGOTIATION
Aditya R IturbideIndiaOnyama Limba NEW
Francesco G PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Mayumi Z MarrierArgentinaBernardo Dominic QUALIFIED
Cody Z NestleJapanElwin Sharvill NEW
Izzy D CampainJapanIoni Bowcher NEGOTIATION
Octavia I GillianArgentinaStephen Shaw PROPOSAL
James U InouyeItalyBernardo Dominic RENEWAL
Nicolas N TollnerAustraliaOnyama Limba NEGOTIATION
Jones A BowleyJapanStephen Shaw QUALIFIED
Rodrigues I AlbaresIndiaStephen Shaw UNQUALIFIED
James A BriddickFranceStephen Shaw RENEWAL
Mayumi F OldroydArgentinaAnna Fali RENEWAL
Silvio Y KuskoRussiaOnyama Limba NEW
Juan H PoquetteArgentinaBernardo Dominic QUALIFIED
Jennifer F MaletItalyBernardo Dominic RENEWAL
Nicolas B CaldareraSpainAsiya Javayant NEW
Kaitlin V PoquetteArgentinaXuxue Feng PROPOSAL
Aika B ChuiFranceBernardo Dominic NEGOTIATION
Aruna R KolmetzBrazilBernardo Dominic QUALIFIED
Silvio F VenereArgentinaXuxue Feng RENEWAL
Misaki F WaycottSpainXuxue Feng QUALIFIED
Johnson N DilliardCanadaIvan Magalhaes PROPOSAL
Smith G BriddickAustraliaAnna Fali PROPOSAL
Stacey H CampainRussiaOnyama Limba PROPOSAL
Arvin M InouyeIndiaXuxue Feng UNQUALIFIED
Clifford G BologniaBrazilIoni Bowcher PROPOSAL
Rodrigues H GlickBrazilStephen Shaw PROPOSAL
Jeanfrancois O GlickUnited KingdomAmy Elsner PROPOSAL
Maria T FigeroaCanadaAsiya Javayant PROPOSAL
David U IturbideCanadaAnna Fali QUALIFIED
Antonio I RoysterArgentinaAnna Fali NEW
Murillo N OldroydFranceXuxue Feng NEGOTIATION
Maisha J TollnerBrazilStephen Shaw PROPOSAL
Murillo K GillianIndiaOnyama Limba NEW
David C OldroydIndiaStephen Shaw NEGOTIATION
Sinclair O AmigonItalyBernardo Dominic NEGOTIATION

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