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
Kadeem K GauchoSpainAnna Fali NEGOTIATION
Antonio C AmigonJapanXuxue Feng UNQUALIFIED
Isabel B FlosiRussiaIvan Magalhaes PROPOSAL
Johnson O InouyeUnited KingdomAsiya Javayant NEW
Wickens J RulapaughSpainStephen Shaw NEW
Smith A ChuiUnited KingdomStephen Shaw NEGOTIATION
Faith A FigeroaIndiaStephen Shaw PROPOSAL
Nicolas C IturbideIndiaAmy Elsner NEW
Arvin K CaudyArgentinaStephen Shaw QUALIFIED
Misaki X CaldareraJapanStephen Shaw NEGOTIATION
Wickens I ChuiGermanyIvan Magalhaes NEW
Silvio F AmigonRussiaOnyama Limba RENEWAL
Murillo N KuskoItalyOnyama Limba UNQUALIFIED
Aditya D WieserAustraliaIoni Bowcher NEW
Octavia W NestleCanadaXuxue Feng RENEWAL
Aditya W CampainJapanXuxue Feng QUALIFIED
Faith P MacleadCanadaBernardo Dominic PROPOSAL
Maisha J DoeJapanAmy Elsner UNQUALIFIED
Rodrigues W MaletJapanOnyama Limba NEGOTIATION
Antonio J GillianIndiaStephen Shaw NEGOTIATION
Octavia V MaletUnited KingdomOnyama Limba UNQUALIFIED
Juan Q MorascaFranceIoni Bowcher UNQUALIFIED
Nicolas I PerinItalyXuxue Feng UNQUALIFIED
Tony D FigeroaBrazilAnna Fali NEW
Mayumi R SlusarskiJapanAmy Elsner RENEWAL
Aika S SlusarskiBrazilAmy Elsner UNQUALIFIED
Aruna H DarakjySpainXuxue Feng QUALIFIED
Maria F GillianIndiaStephen Shaw QUALIFIED
Jefferson E KolmetzJapanStephen Shaw RENEWAL
Stacey G MaletSpainAmy Elsner RENEWAL
Tony R InouyeJapanXuxue Feng NEW
Adams V BriddickRussiaIvan Magalhaes NEGOTIATION
Jeanfrancois C ShinkoIndiaOnyama Limba PROPOSAL
Cody A MacleadItalyAsiya Javayant RENEWAL
Misaki R WieserFranceIoni Bowcher UNQUALIFIED
Munro J PoquetteJapanBernardo Dominic NEW
Jefferson M SaylorsJapanElwin Sharvill NEGOTIATION
Mujtaba M CaldareraBrazilAsiya Javayant UNQUALIFIED
Jefferson L GauchoAustraliaElwin Sharvill UNQUALIFIED
Misaki U VenereGermanyAsiya Javayant UNQUALIFIED
Chavez M MorascaRussiaBernardo Dominic NEGOTIATION
Maisha K SchemmerBrazilAsiya Javayant QUALIFIED
Aika B WaycottFranceAsiya Javayant RENEWAL
Tony J CaldareraGermanyAnna Fali NEW
Aditya V AlbaresUnited KingdomAsiya Javayant PROPOSAL
Ricardo J SergiJapanStephen Shaw RENEWAL
Kaitlin V SchemmerCanadaOnyama Limba QUALIFIED
Nicolas W InouyeArgentinaIvan Magalhaes NEGOTIATION
Salvatore G RoysterGermanyAsiya Javayant RENEWAL
Leja E MarrierFranceXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Morrow V KolmetzItalyOnyama Limba RENEWAL
Johnson Y GlickSpainIvan Magalhaes NEW
Misaki O ChuiUnited KingdomAnna Fali PROPOSAL
Morrow O StensethIndiaStephen Shaw QUALIFIED
Antonio M FollerAustraliaStephen Shaw RENEWAL
Izzy Z FigeroaIndiaXuxue Feng NEGOTIATION
Cody V RutaIndiaStephen Shaw PROPOSAL
Smith Y RutaCanadaAsiya Javayant PROPOSAL
Wickens E SchemmerJapanAmy Elsner UNQUALIFIED
Stacey J KolmetzJapanIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro X PaprockiGermany2024-04-08Printing Dimensions PROPOSAL66Asiya Javayant
1001Faith Y DarakjyUnited Kingdom2024-04-07Feltz Printing Service PROPOSAL91Onyama Limba
1002Silvio E SergiCanada2024-04-18Truhlar And Truhlar Attys NEW7Xuxue Feng
1003Costa D RulapaughGermany2024-04-23Chanay, Jeffrey A Esq NEGOTIATION94Ioni Bowcher
1004Emily Z FigeroaJapan2024-04-26Commercial Press NEW24Elwin Sharvill
1005Jennifer E MorascaAustralia2024-04-18Dorl, James J Esq NEGOTIATION30Stephen Shaw
1006Darci M RoysterItaly2024-04-04Chemel, James L Cpa PROPOSAL68Onyama Limba
1007Kadeem O StockhamFrance2024-04-20Chapman, Ross E Esq QUALIFIED63Bernardo Dominic
1008Mayumi Y OstroskyFrance2024-04-24Printing Dimensions PROPOSAL0Elwin Sharvill
1009Leon P GauchoBrazil2024-04-18Feiner Bros RENEWAL68Amy Elsner
1010Tony D WaycottIndia2024-04-10Dorl, James J Esq RENEWAL40Stephen Shaw
1011Cody G DoeItaly2024-04-12Truhlar And Truhlar Attys UNQUALIFIED98Anna Fali
1012Silvio M WhobreyBrazil2024-04-02Buckley Miller Wright UNQUALIFIED41Anna Fali
1013Aruna A NestleIndia2024-04-22Dorl, James J Esq RENEWAL54Bernardo Dominic
1014Munro D SaylorsSpain2024-04-02Chapman, Ross E Esq QUALIFIED37Xuxue Feng
1015Emily D ShinkoArgentina2024-04-07Feltz Printing Service NEGOTIATION84Ioni Bowcher
1016Izzy B FlosiItaly2024-03-30Dorl, James J Esq NEGOTIATION83Anna Fali
1017Stacey U RimUnited Kingdom2024-04-25Feltz Printing Service UNQUALIFIED81Anna Fali
1018Kaitlin N VenereUnited Kingdom2024-04-12Truhlar And Truhlar Attys QUALIFIED21Elwin Sharvill
1019David M GlickSpain2024-04-27Dorl, James J Esq UNQUALIFIED25Amy Elsner
1020Wickens J WieserGermany2024-04-27Buckley Miller Wright RENEWAL82Xuxue Feng
1021Maisha V MaletJapan2024-04-02Buckley Miller Wright RENEWAL53Ivan Magalhaes
1022Darci N WaycottCanada2024-04-28Feltz Printing Service UNQUALIFIED32Bernardo Dominic
1023Chavez I RulapaughGermany2024-04-15Rousseaux, Michael Esq NEW61Xuxue Feng
1024Adams L IturbideCanada2024-04-20Rangoni Of Florence PROPOSAL42Elwin Sharvill
1025Clifford Q BowleyAustralia2024-04-02Rousseaux, Michael Esq UNQUALIFIED5Ivan Magalhaes
1026Darci U BologniaFrance2024-04-14Feltz Printing Service QUALIFIED63Ivan Magalhaes
1027Tony J StockhamUnited Kingdom2024-04-27Morlong Associates UNQUALIFIED0Onyama Limba
1028Leon O WaycottIndia2024-04-18Truhlar And Truhlar Attys UNQUALIFIED40Ioni Bowcher
1029Munro D CampainFrance2024-04-12Buckley Miller Wright NEW98Ioni Bowcher
1030Wickens T ButtBrazil2024-04-12Commercial Press UNQUALIFIED64Asiya Javayant
1031Morrow F SlusarskiItaly2024-04-11Morlong Associates RENEWAL63Ivan Magalhaes
1032Maisha T PoquetteAustralia2024-04-21Feltz Printing Service QUALIFIED96Elwin Sharvill
1033Johnson G MorascaCanada2024-04-09Benton, John B Jr RENEWAL30Elwin Sharvill
1034Francesco U FerenczBrazil2024-04-02Chapman, Ross E Esq PROPOSAL28Xuxue Feng
1035Sinclair K FerenczFrance2024-04-22King, Christopher A Esq QUALIFIED57Ivan Magalhaes
1036Nicolas H OldroydCanada2024-03-30King, Christopher A Esq NEW72Anna Fali
1037Isabel A CaldareraJapan2024-04-23Feltz Printing Service UNQUALIFIED80Amy Elsner
1038Jefferson X PoquetteFrance2024-04-13King, Christopher A Esq NEW69Bernardo Dominic
1039Nicolas H TollnerArgentina2024-04-28Chapman, Ross E Esq NEGOTIATION26Amy Elsner
1040Mayumi C FerenczBrazil2024-04-02Rousseaux, Michael Esq QUALIFIED23Asiya Javayant
1041Jennifer I SlusarskiItaly2024-04-07Buckley Miller Wright RENEWAL29Stephen Shaw
1042Julie Y GarufiSpain2024-04-24Morlong Associates RENEWAL30Ivan Magalhaes
1043Stacey G OstroskyJapan2024-04-28Benton, John B Jr UNQUALIFIED84Ivan Magalhaes
1044Chavez J TollnerFrance2024-04-20Commercial Press PROPOSAL60Anna Fali
1045Deepesh R MorascaGermany2024-04-24Benton, John B Jr QUALIFIED48Amy Elsner
1046Jones X GarufiArgentina2024-04-27Rangoni Of Florence NEGOTIATION55Elwin Sharvill
1047Jefferson M MacleadSpain2024-04-05Chapman, Ross E Esq QUALIFIED58Bernardo Dominic
1048James I IturbideIndia2024-04-09Commercial Press NEGOTIATION73Xuxue Feng
1049Rodrigues E DilliardCanada2024-04-16Feltz Printing Service NEGOTIATION26Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire N PoquetteIndiaXuxue Feng NEGOTIATION
Francesco K FigeroaAustraliaAmy Elsner NEW
Ricardo Q GauchoUnited KingdomStephen Shaw PROPOSAL
Antonio Q GlickUnited KingdomStephen Shaw RENEWAL
Adams M InouyeGermanyXuxue Feng QUALIFIED
Murillo B OstroskyJapanBernardo Dominic NEW
Mujtaba Z KolmetzFranceStephen Shaw RENEWAL
Darci U RutaFranceIoni Bowcher PROPOSAL
Antonio A VocelkaUnited KingdomBernardo Dominic QUALIFIED
Maisha Q NestleArgentinaAnna Fali QUALIFIED
Munro U WieserGermanyAmy Elsner UNQUALIFIED
Munro X RoysterArgentinaAsiya Javayant QUALIFIED
Claire Y GauchoBrazilIvan Magalhaes NEGOTIATION
Arvin Q IturbideItalyXuxue Feng RENEWAL
Arvin X ButtCanadaIoni Bowcher NEGOTIATION
Leja N SlusarskiAustraliaOnyama Limba QUALIFIED
Mujtaba E MaletUnited KingdomXuxue Feng UNQUALIFIED
Jefferson W GillianCanadaStephen Shaw RENEWAL
Ashley B ShinkoRussiaOnyama Limba UNQUALIFIED
Julie F DilliardIndiaAsiya Javayant RENEWAL
Rodrigues A VenereGermanyXuxue Feng UNQUALIFIED
Francesco R FollerFranceAmy Elsner QUALIFIED
Jennifer I BowleyCanadaElwin Sharvill NEGOTIATION
James S RimRussiaOnyama Limba NEGOTIATION
Deepesh O WaycottUnited KingdomBernardo Dominic NEW
Rodrigues P KuskoUnited KingdomIvan Magalhaes NEGOTIATION
Morrow D MarrierSpainAmy Elsner NEGOTIATION
Wickens M FigeroaJapanOnyama Limba UNQUALIFIED
Tony V CampainBrazilAmy Elsner UNQUALIFIED
Faith I AmigonGermanyAsiya Javayant PROPOSAL
Ricardo N GillianCanadaOnyama Limba NEGOTIATION
Faith B MacleadGermanyAsiya Javayant RENEWAL
Stacey C OstroskyItalyAnna Fali NEW
Izzy U SchemmerSpainXuxue Feng PROPOSAL
Cody Z RimFranceOnyama Limba UNQUALIFIED
Maria G OldroydIndiaBernardo Dominic PROPOSAL
Alejandro P IturbideJapanAmy Elsner UNQUALIFIED
Darci V WaycottItalyOnyama Limba NEW
Misaki O RimRussiaAmy Elsner NEGOTIATION
Morrow W MarrierIndiaAnna Fali QUALIFIED
Deepesh R VenereCanadaAnna Fali UNQUALIFIED
Jones U PaprockiSpainIvan Magalhaes QUALIFIED
Mujtaba U AlbaresItalyAsiya Javayant PROPOSAL
Aika S FollerBrazilXuxue Feng RENEWAL
Faith Q NestleSpainIoni Bowcher RENEWAL
Isabel D MacleadRussiaElwin Sharvill UNQUALIFIED
Deepesh Q FerenczBrazilOnyama Limba NEGOTIATION
Faith M DarakjyBrazilStephen Shaw QUALIFIED
Adams Q WhobreyArgentinaAmy Elsner RENEWAL
Greenwood O SchemmerRussiaXuxue Feng QUALIFIED
Frozen Columns
Name
Izzy E Rulapaugh
Mayumi B Figeroa
Ashley X Doe
Mujtaba Z Briddick
Emily A Garufi
Nicolas B Chui
Ricardo P Darakjy
Johnson T Venere
Wickens C Bowley
Costa S Dilliard
Octavia R Malet
Misaki Q Rulapaugh
Leon E Darakjy
Ivar Z Waycott
Mayumi J Iturbide
Stacey W Albares
Octavia I Ruta
Kaitlin O Oldroyd
Jefferson P Ostrosky
Alejandro W Rim
Misaki S Campain
Munro S Malet
Jennifer G Whobrey
Misaki I Kolmetz
James V Ruta
Alejandro A Albares
Cody H Malet
Smith T Poquette
Tony G Sergi
Deepesh K Paprocki
Jones A Gaucho
Misaki Q Marrier
Kadeem Y Kusko
Julie G Briddick
Aika Y Morasca
Leon X Nicka
Arvin Y Waycott
Leon U Venere
Octavia V Shinko
Maria D Venere
Aditya Q Gaucho
James G Whobrey
Claire Z Ostrosky
Mayumi S Shinko
Clifford R Ferencz
Munro H Morasca
Mujtaba A Kusko
Deepesh J Schemmer
Clifford N Flosi
Aditya Z Vocelka
IdCountryDate
1000Russia2024-04-27
1001Italy2024-04-24
1002Argentina2024-04-12
1003Spain2024-04-04
1004France2024-04-01
1005Germany2024-04-11
1006Canada2024-04-16
1007India2024-04-11
1008Canada2024-04-09
1009Japan2024-04-01
1010India2024-04-10
1011Russia2024-04-01
1012United Kingdom2024-04-17
1013Russia2024-04-18
1014India2024-04-16
1015Spain2024-04-07
1016Japan2024-04-07
1017Italy2024-04-07
1018Argentina2024-04-20
1019France2024-04-22
1020Canada2024-04-25
1021France2024-04-08
1022United Kingdom2024-04-23
1023Spain2024-04-04
1024Spain2024-04-14
1025Italy2024-04-12
1026Argentina2024-04-06
1027Japan2024-04-03
1028Argentina2024-04-21
1029Japan2024-04-25
1030United Kingdom2024-04-07
1031Argentina2024-04-11
1032Germany2024-04-24
1033Russia2024-03-31
1034Canada2024-04-06
1035Argentina2024-04-09
1036India2024-04-06
1037Germany2024-04-13
1038Australia2024-04-07
1039United Kingdom2024-04-16
1040France2024-03-31
1041Canada2024-04-24
1042Argentina2024-04-23
1043United Kingdom2024-04-22
1044France2024-04-13
1045Brazil2024-03-30
1046Argentina2024-04-22
1047Australia2024-04-22
1048Canada2024-04-10
1049Australia2024-04-13

On-Demand Data

NameIdCountryDate
James D Stenseth1000Germany2024-04-22
Darci I Wieser1001Germany2024-04-18
Misaki Y Oldroyd1002France2024-04-09
Jefferson H Tollner1003India2024-04-26
Deepesh B Morasca1004France2024-04-18
Morrow P Ostrosky1005Brazil2024-04-28
Clifford B Saylors1006Brazil2024-04-02
Jeanfrancois G Ferencz1007India2024-04-17
Wickens U Saylors1008Canada2024-03-30
Leja B Ferencz1009Canada2024-04-01
Emily M Morasca1010Canada2024-04-28
Kadeem L Caudy1011Japan2024-04-18
Darci O Schemmer1012Japan2024-04-27
Julie G Venere1013France2024-03-31
Aditya C Morasca1014India2024-03-30
Jefferson M Perin1015Brazil2024-04-28
Faith A Rulapaugh1016India2024-04-24
Jeanfrancois W Gillian1017Italy2024-03-30
Silvio W Vocelka1018Brazil2024-04-10
Aditya O Foller1019Brazil2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey X MorascaFranceIvan Magalhaes QUALIFIED
Mayumi E MaletRussiaAnna Fali NEGOTIATION
James C AmigonFranceElwin Sharvill UNQUALIFIED
Cody J FollerUnited KingdomOnyama Limba QUALIFIED
Faith B StensethSpainIvan Magalhaes UNQUALIFIED
Costa N FerenczAustraliaOnyama Limba PROPOSAL
Jeanfrancois Z MaletItalyIvan Magalhaes NEW
Ricardo A GarufiIndiaIoni Bowcher UNQUALIFIED
Antonio T CaldareraUnited KingdomAmy Elsner NEGOTIATION
Darci G GauchoJapanAnna Fali PROPOSAL
Julie X BowleyJapanAsiya Javayant RENEWAL
Octavia U ShinkoRussiaAsiya Javayant QUALIFIED
Leja J KolmetzAustraliaIoni Bowcher NEGOTIATION
Jeanfrancois L AlbaresAustraliaBernardo Dominic QUALIFIED
Smith E StockhamRussiaAmy Elsner NEGOTIATION
Alejandro G FlosiIndiaOnyama Limba QUALIFIED
Ricardo U MacleadAustraliaIvan Magalhaes UNQUALIFIED
Aditya U ShinkoSpainOnyama Limba PROPOSAL
Clifford M VocelkaJapanAnna Fali UNQUALIFIED
James K RoysterBrazilIoni Bowcher NEGOTIATION
Aruna U GarufiAustraliaXuxue Feng UNQUALIFIED
Sinclair D FlosiIndiaStephen Shaw RENEWAL
Ricardo F NestleArgentinaAmy Elsner NEW
Ivar X VocelkaIndiaIoni Bowcher NEW
Francesco W IturbideJapanAmy Elsner RENEWAL
Ashley J RulapaughGermanyXuxue Feng PROPOSAL
Rodrigues S WieserSpainElwin Sharvill NEW
David Y OstroskyGermanyIoni Bowcher QUALIFIED
Jefferson U VocelkaArgentinaBernardo Dominic PROPOSAL
Claire V RimBrazilIoni Bowcher NEW
Aditya B ChuiJapanOnyama Limba NEW
Julie L FollerItalyAsiya Javayant PROPOSAL
Greenwood G ShinkoCanadaAsiya Javayant NEGOTIATION
Chavez J MarrierIndiaAmy Elsner UNQUALIFIED
Salvatore S DilliardRussiaXuxue Feng UNQUALIFIED
Izzy F NickaCanadaIoni Bowcher UNQUALIFIED
Mayumi Y VocelkaAustraliaOnyama Limba PROPOSAL
Aditya M RutaSpainIvan Magalhaes PROPOSAL
Misaki P SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Octavia U CampainArgentinaIvan Magalhaes 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>