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
Wickens A MaletItalyElwin Sharvill RENEWAL
Jennifer W FlosiIndiaAnna Fali QUALIFIED
Ashley T MaletBrazilAsiya Javayant NEGOTIATION
Faith C AlbaresItalyIoni Bowcher RENEWAL
Cody P DoeAustraliaAnna Fali PROPOSAL
Kaitlin W GarufiJapanAnna Fali QUALIFIED
Ashley X NestleRussiaBernardo Dominic RENEWAL
Silvio W BowleyFranceXuxue Feng NEW
Antonio I DoeRussiaElwin Sharvill NEW
Jefferson U MaletIndiaAmy Elsner RENEWAL
Aika J GillianBrazilIvan Magalhaes RENEWAL
Maisha L WaycottCanadaIvan Magalhaes QUALIFIED
Clifford N WaycottBrazilAsiya Javayant PROPOSAL
Leon X CampainRussiaAsiya Javayant NEW
Francesco Z VenereCanadaAmy Elsner RENEWAL
Adams Y RoysterSpainAmy Elsner NEW
Clifford Q OstroskyIndiaElwin Sharvill NEGOTIATION
Rodrigues X VocelkaUnited KingdomIvan Magalhaes UNQUALIFIED
Francesco J GauchoBrazilAsiya Javayant PROPOSAL
James M CaudyFranceAmy Elsner UNQUALIFIED
Kadeem V SergiJapanIoni Bowcher RENEWAL
Smith S FollerUnited KingdomIvan Magalhaes NEW
Rodrigues D RimCanadaAsiya Javayant PROPOSAL
Ashley G GauchoGermanyIoni Bowcher RENEWAL
Emily Y GauchoSpainIoni Bowcher RENEWAL
Maria Z StensethUnited KingdomElwin Sharvill QUALIFIED
Faith G TollnerFranceAmy Elsner NEW
Leon O SaylorsSpainAmy Elsner NEW
Greenwood Q KolmetzCanadaBernardo Dominic NEW
Morrow Y PerinAustraliaXuxue Feng PROPOSAL
Mayumi L OldroydGermanyOnyama Limba QUALIFIED
Octavia X GarufiAustraliaAmy Elsner PROPOSAL
Emily B MarrierRussiaBernardo Dominic NEW
Octavia Q WhobreyRussiaAnna Fali UNQUALIFIED
Murillo S VenereAustraliaAsiya Javayant UNQUALIFIED
Aika G InouyeArgentinaXuxue Feng QUALIFIED
Rodrigues S MorascaIndiaAnna Fali QUALIFIED
Morrow Y NickaUnited KingdomOnyama Limba UNQUALIFIED
Morrow H OldroydItalyAsiya Javayant NEGOTIATION
Sinclair Y MacleadIndiaBernardo Dominic NEGOTIATION
Juan E TollnerJapanIvan Magalhaes RENEWAL
Aruna A WaycottJapanAsiya Javayant NEW
Leja W MarrierFranceIvan Magalhaes PROPOSAL
Jefferson W MaletFranceOnyama Limba RENEWAL
Morrow O MaletUnited KingdomStephen Shaw NEW
Misaki J TollnerCanadaIoni Bowcher NEGOTIATION
Jennifer L BowleyUnited KingdomBernardo Dominic RENEWAL
Cody U GlickBrazilXuxue Feng RENEWAL
Faith C BologniaIndiaAnna Fali NEW
Nicolas F InouyeBrazilStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Claire U MaletItalyOnyama Limba RENEWAL
Faith Z DarakjyCanadaAmy Elsner QUALIFIED
Ivar W TollnerUnited KingdomXuxue Feng UNQUALIFIED
Kadeem U KuskoArgentinaStephen Shaw UNQUALIFIED
Darci I MarrierRussiaIoni Bowcher NEW
Ricardo B SergiUnited KingdomXuxue Feng RENEWAL
Claire X KuskoIndiaAnna Fali NEW
Johnson Z PerinFranceIvan Magalhaes PROPOSAL
Kadeem N OstroskyItalyAsiya Javayant UNQUALIFIED
Deepesh K WaycottRussiaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi X WhobreyIndia2024-04-29Benton, John B Jr RENEWAL61Ivan Magalhaes
1001Francesco O FerenczUnited Kingdom2024-05-07Chanay, Jeffrey A Esq NEW54Anna Fali
1002Misaki X ChuiArgentina2024-05-06Printing Dimensions NEW93Onyama Limba
1003Wickens G StockhamJapan2024-04-28Rangoni Of Florence PROPOSAL56Ioni Bowcher
1004Deepesh R GillianFrance2024-04-26Feiner Bros UNQUALIFIED87Elwin Sharvill
1005Wickens I PerinCanada2024-04-28Buckley Miller Wright RENEWAL94Elwin Sharvill
1006Ivar Q RoysterAustralia2024-04-27Rousseaux, Michael Esq UNQUALIFIED40Stephen Shaw
1007Ricardo G TollnerItaly2024-04-24Printing Dimensions UNQUALIFIED81Ivan Magalhaes
1008Leja A SergiAustralia2024-05-11Chanay, Jeffrey A Esq QUALIFIED76Onyama Limba
1009Clifford E AlbaresIndia2024-04-26Chanay, Jeffrey A Esq RENEWAL82Ivan Magalhaes
1010Ivar H FollerRussia2024-04-24King, Christopher A Esq RENEWAL58Elwin Sharvill
1011Nicolas O BriddickArgentina2024-05-18Printing Dimensions QUALIFIED4Elwin Sharvill
1012Julie S DoeArgentina2024-04-30Truhlar And Truhlar Attys UNQUALIFIED12Ioni Bowcher
1013Leon E RutaJapan2024-05-07Buckley Miller Wright NEW39Stephen Shaw
1014Ashley Y ButtItaly2024-05-04Feltz Printing Service PROPOSAL40Asiya Javayant
1015Johnson E SaylorsIndia2024-05-13Feiner Bros NEGOTIATION77Ivan Magalhaes
1016Jones D MacleadIndia2024-05-13Feiner Bros QUALIFIED35Anna Fali
1017Silvio D KolmetzAustralia2024-05-17Chanay, Jeffrey A Esq UNQUALIFIED54Amy Elsner
1018Nicolas J SergiItaly2024-04-23Buckley Miller Wright PROPOSAL44Asiya Javayant
1019Morrow G NestleArgentina2024-05-05Rangoni Of Florence NEW40Xuxue Feng
1020Munro H RulapaughArgentina2024-04-25Morlong Associates UNQUALIFIED67Asiya Javayant
1021Nicolas X GlickCanada2024-05-18Chemel, James L Cpa NEW98Xuxue Feng
1022Izzy R SlusarskiGermany2024-05-07Morlong Associates NEGOTIATION16Stephen Shaw
1023Mayumi B ShinkoGermany2024-04-22Rangoni Of Florence UNQUALIFIED44Anna Fali
1024Clifford F InouyeRussia2024-04-26Chemel, James L Cpa NEW47Bernardo Dominic
1025Maisha S MarrierSpain2024-05-10Chemel, James L Cpa QUALIFIED25Stephen Shaw
1026Octavia W StockhamArgentina2024-04-29King, Christopher A Esq UNQUALIFIED40Anna Fali
1027Jeanfrancois P MorascaRussia2024-04-23Printing Dimensions UNQUALIFIED66Ivan Magalhaes
1028Stacey K WieserFrance2024-05-11Benton, John B Jr NEGOTIATION7Anna Fali
1029Jones R RulapaughCanada2024-05-17Dorl, James J Esq UNQUALIFIED66Elwin Sharvill
1030Julie R KolmetzItaly2024-05-08Morlong Associates PROPOSAL18Xuxue Feng
1031Tony W DoeUnited Kingdom2024-05-04Chanay, Jeffrey A Esq NEW73Xuxue Feng
1032Izzy I KuskoItaly2024-04-24Chemel, James L Cpa RENEWAL85Asiya Javayant
1033Ricardo T MaletCanada2024-05-07Chemel, James L Cpa NEW24Ivan Magalhaes
1034Rodrigues N WhobreyArgentina2024-05-20Rousseaux, Michael Esq UNQUALIFIED94Xuxue Feng
1035Leon C MaletItaly2024-05-07Dorl, James J Esq NEGOTIATION13Onyama Limba
1036Misaki P MacleadJapan2024-05-10King, Christopher A Esq NEGOTIATION66Onyama Limba
1037Darci A BriddickUnited Kingdom2024-05-07Truhlar And Truhlar Attys PROPOSAL63Ivan Magalhaes
1038Johnson K WieserArgentina2024-05-03Rousseaux, Michael Esq QUALIFIED63Anna Fali
1039Misaki K RoysterUnited Kingdom2024-05-01Feiner Bros UNQUALIFIED24Xuxue Feng
1040Maria N SaylorsCanada2024-04-22Chemel, James L Cpa PROPOSAL26Ioni Bowcher
1041Smith W CaudySpain2024-05-01Feiner Bros RENEWAL33Anna Fali
1042Isabel T RimBrazil2024-04-23Morlong Associates QUALIFIED66Xuxue Feng
1043Johnson Q BriddickFrance2024-05-11Chemel, James L Cpa UNQUALIFIED76Amy Elsner
1044Misaki M BologniaUnited Kingdom2024-05-19King, Christopher A Esq QUALIFIED8Ivan Magalhaes
1045Chavez Z VenereFrance2024-05-11Dorl, James J Esq PROPOSAL80Elwin Sharvill
1046Silvio D TollnerArgentina2024-05-05Rousseaux, Michael Esq UNQUALIFIED7Onyama Limba
1047Leja V OldroydIndia2024-04-21Chanay, Jeffrey A Esq UNQUALIFIED48Xuxue Feng
1048Greenwood J DarakjyJapan2024-05-02Chemel, James L Cpa NEGOTIATION20Elwin Sharvill
1049Adams G RoysterFrance2024-05-17Rousseaux, Michael Esq UNQUALIFIED75Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Julie W GauchoFranceAnna Fali NEGOTIATION
Ashley X RimUnited KingdomAmy Elsner NEW
Jeanfrancois M AmigonJapanIoni Bowcher NEGOTIATION
Cody U StockhamAustraliaIoni Bowcher PROPOSAL
Octavia S CampainRussiaAnna Fali UNQUALIFIED
Maria P OldroydCanadaIvan Magalhaes QUALIFIED
Aditya V TollnerBrazilStephen Shaw PROPOSAL
Greenwood U RoysterSpainOnyama Limba QUALIFIED
Jennifer O PaprockiUnited KingdomAsiya Javayant UNQUALIFIED
Jeanfrancois W CaudyCanadaElwin Sharvill RENEWAL
Stacey E CampainFranceIvan Magalhaes RENEWAL
Nicolas L StensethCanadaIoni Bowcher RENEWAL
Isabel D AmigonSpainIoni Bowcher UNQUALIFIED
Faith U PaprockiGermanyIoni Bowcher NEW
Darci I BologniaJapanOnyama Limba RENEWAL
Maisha H MaletRussiaOnyama Limba RENEWAL
Maria W GlickArgentinaOnyama Limba NEW
Kadeem B MorascaCanadaAnna Fali NEW
Aika E StensethGermanyAnna Fali NEW
Leja M WieserArgentinaIoni Bowcher NEW
Mayumi Y OldroydGermanyAmy Elsner QUALIFIED
Kadeem H GauchoUnited KingdomBernardo Dominic RENEWAL
Kaitlin A KolmetzUnited KingdomIvan Magalhaes NEGOTIATION
Ashley J CaldareraRussiaBernardo Dominic PROPOSAL
Nicolas V SchemmerAustraliaXuxue Feng PROPOSAL
Jennifer A FlosiArgentinaStephen Shaw RENEWAL
Adams O SaylorsRussiaOnyama Limba UNQUALIFIED
Jennifer K PaprockiBrazilBernardo Dominic NEGOTIATION
Adams K FigeroaRussiaStephen Shaw UNQUALIFIED
Aditya F StockhamCanadaIvan Magalhaes UNQUALIFIED
Maisha G AlbaresFranceIoni Bowcher UNQUALIFIED
Salvatore F RutaItalyStephen Shaw NEW
Kadeem O ButtSpainAsiya Javayant UNQUALIFIED
Francesco B MaletBrazilAmy Elsner QUALIFIED
Nicolas Y FlosiGermanyAsiya Javayant UNQUALIFIED
Isabel A MarrierSpainXuxue Feng PROPOSAL
Wickens M ChuiArgentinaElwin Sharvill RENEWAL
Misaki V VenereCanadaElwin Sharvill PROPOSAL
Isabel N ShinkoFranceAnna Fali NEGOTIATION
Emily P PerinIndiaElwin Sharvill PROPOSAL
Antonio S OstroskyFranceAsiya Javayant PROPOSAL
Octavia X TollnerGermanyAsiya Javayant QUALIFIED
David W PoquetteCanadaIvan Magalhaes UNQUALIFIED
Jeanfrancois H CampainUnited KingdomIvan Magalhaes NEGOTIATION
Kaitlin U SchemmerGermanyIvan Magalhaes PROPOSAL
Cody E InouyeArgentinaOnyama Limba UNQUALIFIED
Aika B DarakjyFranceIvan Magalhaes PROPOSAL
Murillo I MacleadAustraliaBernardo Dominic UNQUALIFIED
Jones T KuskoItalyAmy Elsner RENEWAL
Mujtaba O BologniaItalyAsiya Javayant RENEWAL
Frozen Columns
Name
Ricardo D Paprocki
Nicolas U Nestle
Aika Q Gaucho
Johnson I Malet
Juan J Perin
Mujtaba Q Royster
Antonio R Flosi
Costa A Malet
Octavia C Morasca
Silvio K Campain
Isabel F Kolmetz
Adams H Slusarski
Mujtaba W Caldarera
James L Briddick
Antonio V Figeroa
Aditya R Caldarera
Claire M Tollner
Jeanfrancois D Foller
Claire U Nestle
Darci Z Wieser
Costa J Doe
Deepesh Z Morasca
Aditya D Royster
Chavez E Nestle
Leja W Kolmetz
Emily M Foller
Misaki L Vocelka
Faith F Dilliard
Johnson D Nicka
Leon S Nestle
Munro H Inouye
Jones S Paprocki
Jefferson U Darakjy
Maria D Vocelka
Johnson O Campain
Greenwood L Caldarera
Ricardo F Schemmer
Kadeem X Gillian
Mayumi W Ferencz
Faith R Ruta
Salvatore R Marrier
Wickens Q Caudy
Mayumi I Figeroa
Stacey F Venere
Juan P Wieser
Costa P Stenseth
Darci V Slusarski
Jeanfrancois C Paprocki
Clifford E Flosi
Chavez S Gillian
IdCountryDate
1000Japan2024-05-02
1001United Kingdom2024-05-01
1002Italy2024-05-10
1003Australia2024-04-26
1004Brazil2024-05-02
1005Japan2024-05-17
1006Australia2024-05-03
1007Spain2024-05-13
1008Italy2024-05-07
1009Russia2024-05-11
1010Germany2024-05-08
1011Germany2024-05-02
1012United Kingdom2024-05-19
1013Germany2024-05-03
1014United Kingdom2024-04-26
1015India2024-04-21
1016Japan2024-04-30
1017Spain2024-04-24
1018Russia2024-04-30
1019United Kingdom2024-05-07
1020France2024-05-20
1021France2024-05-04
1022India2024-04-24
1023United Kingdom2024-05-10
1024United Kingdom2024-04-25
1025Argentina2024-05-14
1026Germany2024-04-27
1027Germany2024-05-08
1028Germany2024-04-22
1029Argentina2024-05-17
1030Argentina2024-05-20
1031Canada2024-04-24
1032Russia2024-05-01
1033Canada2024-05-08
1034Spain2024-04-22
1035United Kingdom2024-05-15
1036United Kingdom2024-04-30
1037Russia2024-05-20
1038Canada2024-05-04
1039India2024-04-22
1040Russia2024-05-07
1041Spain2024-05-10
1042Brazil2024-05-03
1043Japan2024-04-29
1044India2024-05-01
1045Germany2024-05-03
1046Canada2024-05-12
1047Brazil2024-04-30
1048Russia2024-04-21
1049India2024-05-06

On-Demand Data

NameIdCountryDate
Chavez M Nestle1000Australia2024-04-26
James T Glick1001France2024-04-22
Clifford X Kolmetz1002Japan2024-05-09
Isabel R Vocelka1003Spain2024-04-24
Mayumi S Kolmetz1004Canada2024-05-12
Rodrigues S Waycott1005Argentina2024-04-25
Ivar W Malet1006Argentina2024-05-11
Greenwood B Nicka1007Italy2024-04-29
Ricardo I Tollner1008Italy2024-05-15
Izzy L Amigon1009Canada2024-05-06
Clifford M Caldarera1010United Kingdom2024-04-29
Smith R Garufi1011Japan2024-05-12
Stacey M Schemmer1012Japan2024-05-07
Kadeem Q Oldroyd1013United Kingdom2024-05-06
Costa R Saylors1014Argentina2024-05-01
Antonio V Campain1015Argentina2024-04-21
Francesco Z Albares1016India2024-05-07
Ivar S Wieser1017Australia2024-04-25
Greenwood T Poquette1018Italy2024-04-27
Adams E Rulapaugh1019Spain2024-05-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio Y KolmetzUnited KingdomElwin Sharvill QUALIFIED
Rodrigues G ButtUnited KingdomElwin Sharvill RENEWAL
Jennifer Y WhobreyJapanAsiya Javayant NEGOTIATION
Mayumi G BologniaAustraliaStephen Shaw PROPOSAL
Salvatore Z CaldareraUnited KingdomOnyama Limba UNQUALIFIED
Francesco D TollnerGermanyElwin Sharvill NEGOTIATION
Kaitlin W OldroydGermanyAsiya Javayant UNQUALIFIED
Maisha X BologniaFranceAsiya Javayant UNQUALIFIED
Maisha I SaylorsRussiaAsiya Javayant PROPOSAL
Maria C OstroskyAustraliaOnyama Limba UNQUALIFIED
Murillo W IturbideJapanAsiya Javayant NEGOTIATION
Costa W FigeroaSpainAmy Elsner NEGOTIATION
Alejandro B RoysterSpainIoni Bowcher UNQUALIFIED
Kaitlin W RoysterIndiaElwin Sharvill PROPOSAL
Alejandro V StensethArgentinaStephen Shaw NEW
Johnson F PaprockiBrazilAmy Elsner NEGOTIATION
Antonio E StockhamGermanyIvan Magalhaes NEW
Johnson W NestleSpainAnna Fali NEGOTIATION
Ricardo C CampainRussiaBernardo Dominic QUALIFIED
Kadeem W OstroskyUnited KingdomXuxue Feng UNQUALIFIED
Jennifer L WaycottCanadaIvan Magalhaes QUALIFIED
Deepesh X ButtBrazilBernardo Dominic RENEWAL
Emily J WhobreyArgentinaBernardo Dominic NEW
Darci V FigeroaAustraliaXuxue Feng PROPOSAL
Stacey V PoquetteItalyIvan Magalhaes NEW
Antonio F FigeroaUnited KingdomStephen Shaw UNQUALIFIED
Johnson B ShinkoBrazilIoni Bowcher NEGOTIATION
Arvin X VenereSpainAnna Fali QUALIFIED
Aruna B PerinJapanStephen Shaw RENEWAL
Maria A OldroydJapanAmy Elsner UNQUALIFIED
Deepesh W DilliardUnited KingdomAmy Elsner NEGOTIATION
Kaitlin X InouyeCanadaOnyama Limba UNQUALIFIED
Clifford T RimAustraliaAnna Fali UNQUALIFIED
Wickens V InouyeJapanIoni Bowcher UNQUALIFIED
Antonio E RulapaughCanadaAsiya Javayant QUALIFIED
Ricardo O PoquetteAustraliaAnna Fali PROPOSAL
Murillo I FlosiAustraliaOnyama Limba NEW
James M MaletBrazilIoni Bowcher PROPOSAL
Izzy O PoquetteItalyStephen Shaw NEW
Jennifer L GauchoCanadaIoni Bowcher 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>