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
Stacey D OldroydBrazilElwin Sharvill QUALIFIED
Jeanfrancois Z PoquetteSpainBernardo Dominic PROPOSAL
Jones O SlusarskiAustraliaAnna Fali RENEWAL
Adams W SergiFranceBernardo Dominic NEGOTIATION
Greenwood F NestleIndiaAsiya Javayant QUALIFIED
Alejandro L SaylorsAustraliaBernardo Dominic PROPOSAL
Cody M RutaUnited KingdomAnna Fali UNQUALIFIED
Chavez N WhobreyBrazilIoni Bowcher NEGOTIATION
Ivar Y BowleyBrazilIvan Magalhaes PROPOSAL
Rodrigues N FlosiFranceAmy Elsner UNQUALIFIED
Misaki L CaldareraJapanOnyama Limba UNQUALIFIED
James E CaldareraGermanyElwin Sharvill UNQUALIFIED
Maria B MaletUnited KingdomXuxue Feng PROPOSAL
Murillo Y BowleyJapanBernardo Dominic UNQUALIFIED
Octavia Q MaletArgentinaBernardo Dominic NEGOTIATION
Jennifer I AlbaresRussiaAnna Fali UNQUALIFIED
Morrow U NickaArgentinaIoni Bowcher QUALIFIED
Adams H PerinFranceXuxue Feng NEGOTIATION
Jennifer Y KolmetzUnited KingdomOnyama Limba NEGOTIATION
Sinclair J WieserAustraliaIoni Bowcher PROPOSAL
Adams V StockhamAustraliaAmy Elsner PROPOSAL
Misaki I CaudyAustraliaAsiya Javayant UNQUALIFIED
Maria E BowleyCanadaAsiya Javayant UNQUALIFIED
Jefferson W GauchoSpainIvan Magalhaes NEGOTIATION
Jennifer S ButtItalyAmy Elsner UNQUALIFIED
Adams B NickaFranceBernardo Dominic NEW
Jeanfrancois H RulapaughIndiaIvan Magalhaes NEGOTIATION
David Y GarufiFranceAmy Elsner NEW
Francesco W WieserArgentinaXuxue Feng UNQUALIFIED
James H SaylorsItalyStephen Shaw NEGOTIATION
Rodrigues K AlbaresArgentinaAmy Elsner UNQUALIFIED
Wickens D SlusarskiGermanyIvan Magalhaes UNQUALIFIED
Stacey E NestleFranceAmy Elsner UNQUALIFIED
Munro W RoysterBrazilAmy Elsner QUALIFIED
Adams A ShinkoUnited KingdomAnna Fali RENEWAL
Chavez L MacleadCanadaIoni Bowcher QUALIFIED
Kadeem E MorascaSpainAmy Elsner RENEWAL
Nicolas B IturbideAustraliaIoni Bowcher RENEWAL
Ivar V RulapaughBrazilAmy Elsner UNQUALIFIED
Misaki J StensethFranceXuxue Feng NEW
Faith K WhobreyItalyOnyama Limba QUALIFIED
Francesco F FigeroaCanadaBernardo Dominic NEW
Silvio G SchemmerGermanyIoni Bowcher NEW
Adams A MaletUnited KingdomStephen Shaw UNQUALIFIED
Cody D SaylorsUnited KingdomElwin Sharvill UNQUALIFIED
Johnson V PaprockiRussiaOnyama Limba NEGOTIATION
Greenwood M CaldareraFranceStephen Shaw RENEWAL
James L FerenczIndiaAnna Fali QUALIFIED
Morrow M PerinRussiaElwin Sharvill NEGOTIATION
Jefferson G KolmetzCanadaIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leon A DarakjyBrazilXuxue Feng NEW
Costa H VocelkaFranceIoni Bowcher UNQUALIFIED
Munro K ChuiCanadaAmy Elsner QUALIFIED
Clifford A InouyeItalyElwin Sharvill RENEWAL
Emily W RulapaughIndiaBernardo Dominic RENEWAL
Morrow O OstroskyRussiaXuxue Feng UNQUALIFIED
Chavez W WhobreyIndiaElwin Sharvill QUALIFIED
Jeanfrancois F CaudyCanadaStephen Shaw NEW
Izzy M ShinkoGermanyElwin Sharvill QUALIFIED
Francesco X CampainBrazilAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford I CaudyAustralia2024-04-08Printing Dimensions PROPOSAL55Bernardo Dominic
1001Juan I OldroydJapan2024-04-09Feiner Bros NEW49Ioni Bowcher
1002Aika Q SchemmerAustralia2024-04-05Rangoni Of Florence RENEWAL13Asiya Javayant
1003Salvatore W AmigonRussia2024-04-06Morlong Associates NEW20Xuxue Feng
1004Izzy V PoquetteSpain2024-04-05Chanay, Jeffrey A Esq PROPOSAL71Anna Fali
1005Mujtaba R ButtBrazil2024-04-21Morlong Associates QUALIFIED73Ioni Bowcher
1006James T InouyeRussia2024-04-13Truhlar And Truhlar Attys PROPOSAL27Xuxue Feng
1007Jeanfrancois M ChuiUnited Kingdom2024-04-18Commercial Press QUALIFIED52Ivan Magalhaes
1008Jefferson F VocelkaSpain2024-04-25Buckley Miller Wright NEGOTIATION93Amy Elsner
1009Kadeem R OstroskyIndia2024-04-18Buckley Miller Wright NEW98Bernardo Dominic
1010Mujtaba U FigeroaArgentina2024-04-26Benton, John B Jr UNQUALIFIED4Amy Elsner
1011Isabel J MacleadFrance2024-04-14Morlong Associates NEW82Amy Elsner
1012Aditya I RoysterFrance2024-04-11Buckley Miller Wright QUALIFIED54Elwin Sharvill
1013Ashley A BriddickCanada2024-04-16King, Christopher A Esq UNQUALIFIED16Bernardo Dominic
1014Mujtaba S BriddickFrance2024-04-06Benton, John B Jr NEW40Stephen Shaw
1015Antonio Y FerenczCanada2024-04-17Chapman, Ross E Esq QUALIFIED60Elwin Sharvill
1016Greenwood P GillianCanada2024-04-22Dorl, James J Esq NEGOTIATION8Onyama Limba
1017Jones H CaudyArgentina2024-04-06Feiner Bros PROPOSAL1Anna Fali
1018Sinclair S ButtArgentina2024-04-04Benton, John B Jr UNQUALIFIED35Bernardo Dominic
1019Maisha V MacleadUnited Kingdom2024-04-08Morlong Associates NEW48Xuxue Feng
1020Greenwood P NickaUnited Kingdom2024-04-13Buckley Miller Wright NEGOTIATION39Elwin Sharvill
1021Claire M StensethGermany2024-04-13Benton, John B Jr PROPOSAL64Elwin Sharvill
1022Sinclair U TollnerFrance2024-04-24Commercial Press UNQUALIFIED56Xuxue Feng
1023Emily E SergiBrazil2024-04-10Chapman, Ross E Esq QUALIFIED83Amy Elsner
1024Maria V BologniaUnited Kingdom2024-04-29Chanay, Jeffrey A Esq QUALIFIED67Amy Elsner
1025Ashley W CaudyAustralia2024-05-01Printing Dimensions NEW82Elwin Sharvill
1026Jeanfrancois C FollerGermany2024-04-12Chanay, Jeffrey A Esq UNQUALIFIED38Stephen Shaw
1027Smith O PoquetteIndia2024-04-21Rousseaux, Michael Esq NEW29Ivan Magalhaes
1028Jones Y DoeSpain2024-04-29Feltz Printing Service QUALIFIED14Xuxue Feng
1029James M StockhamArgentina2024-04-06Dorl, James J Esq PROPOSAL73Stephen Shaw
1030Misaki S SchemmerArgentina2024-04-27Chemel, James L Cpa RENEWAL72Stephen Shaw
1031Leja N OldroydItaly2024-05-03Commercial Press NEGOTIATION46Ioni Bowcher
1032Adams U GarufiItaly2024-04-26Rousseaux, Michael Esq UNQUALIFIED47Onyama Limba
1033James X KuskoAustralia2024-04-08Rangoni Of Florence RENEWAL76Amy Elsner
1034Rodrigues S RutaArgentina2024-04-16Buckley Miller Wright NEW60Onyama Limba
1035Costa Y AlbaresUnited Kingdom2024-04-23Chemel, James L Cpa UNQUALIFIED18Ivan Magalhaes
1036Murillo I FigeroaUnited Kingdom2024-04-04Buckley Miller Wright PROPOSAL49Ioni Bowcher
1037Morrow W RulapaughBrazil2024-04-08Rangoni Of Florence NEW7Amy Elsner
1038Greenwood T InouyeAustralia2024-04-17Feiner Bros PROPOSAL48Stephen Shaw
1039David P BologniaGermany2024-04-30Chemel, James L Cpa PROPOSAL32Elwin Sharvill
1040Ivar Z GillianRussia2024-04-08Rangoni Of Florence RENEWAL17Onyama Limba
1041Maria Y DilliardRussia2024-04-20Chapman, Ross E Esq QUALIFIED74Amy Elsner
1042Ricardo G OstroskyCanada2024-04-21King, Christopher A Esq NEGOTIATION58Asiya Javayant
1043Francesco G WhobreyGermany2024-04-21Commercial Press UNQUALIFIED12Bernardo Dominic
1044Smith E StockhamAustralia2024-04-07Truhlar And Truhlar Attys PROPOSAL34Xuxue Feng
1045Jennifer P StockhamArgentina2024-04-22Morlong Associates RENEWAL94Xuxue Feng
1046Julie R OstroskyArgentina2024-04-21Rangoni Of Florence QUALIFIED88Onyama Limba
1047Mujtaba C DarakjyBrazil2024-04-29Dorl, James J Esq NEW71Xuxue Feng
1048Maisha T GauchoIndia2024-04-21Chapman, Ross E Esq RENEWAL71Anna Fali
1049Chavez V MacleadUnited Kingdom2024-04-10King, Christopher A Esq RENEWAL55Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Adams I FollerRussiaIoni Bowcher UNQUALIFIED
Leja V SaylorsJapanStephen Shaw QUALIFIED
Deepesh Q MaletGermanyStephen Shaw NEGOTIATION
Kaitlin Q CaudySpainElwin Sharvill UNQUALIFIED
Aditya A RulapaughGermanyIvan Magalhaes NEW
Mujtaba E NickaJapanOnyama Limba RENEWAL
Mujtaba Y CampainFranceIoni Bowcher UNQUALIFIED
Ashley D SaylorsArgentinaAmy Elsner PROPOSAL
Misaki O RutaItalyIvan Magalhaes QUALIFIED
Maria H AlbaresItalyElwin Sharvill QUALIFIED
Kadeem C BologniaBrazilStephen Shaw PROPOSAL
Izzy P FollerRussiaXuxue Feng QUALIFIED
Aruna X ChuiItalyIvan Magalhaes QUALIFIED
Aruna J InouyeAustraliaIoni Bowcher NEGOTIATION
Claire R StockhamSpainAnna Fali UNQUALIFIED
Claire B WieserRussiaOnyama Limba NEGOTIATION
Ricardo A AlbaresUnited KingdomAsiya Javayant UNQUALIFIED
Kadeem R SergiAustraliaXuxue Feng QUALIFIED
Aruna B NestleIndiaIoni Bowcher PROPOSAL
Misaki S PaprockiJapanElwin Sharvill QUALIFIED
Juan W GlickAustraliaOnyama Limba UNQUALIFIED
Greenwood R KolmetzGermanyXuxue Feng PROPOSAL
David I BowleyArgentinaIvan Magalhaes RENEWAL
Munro B StensethJapanStephen Shaw QUALIFIED
Kaitlin Y SlusarskiCanadaIoni Bowcher NEGOTIATION
Misaki A ShinkoArgentinaAsiya Javayant PROPOSAL
Ivar L MarrierFranceIvan Magalhaes QUALIFIED
Wickens H IturbideArgentinaAmy Elsner NEW
Ricardo O GlickSpainIvan Magalhaes PROPOSAL
Greenwood R PaprockiArgentinaAsiya Javayant QUALIFIED
Smith H KuskoFranceIoni Bowcher RENEWAL
Ricardo E KolmetzRussiaXuxue Feng NEW
Kaitlin O DilliardUnited KingdomElwin Sharvill UNQUALIFIED
Claire D ButtUnited KingdomIoni Bowcher RENEWAL
Leja T BologniaGermanyIoni Bowcher NEW
Aruna F WaycottJapanAmy Elsner NEW
Jennifer B FollerJapanOnyama Limba NEGOTIATION
Aditya M DoeJapanElwin Sharvill UNQUALIFIED
Faith Y RulapaughGermanyStephen Shaw QUALIFIED
Nicolas K GlickCanadaXuxue Feng PROPOSAL
Mujtaba F BriddickJapanXuxue Feng QUALIFIED
Adams P WhobreyJapanIvan Magalhaes PROPOSAL
Faith B FerenczBrazilStephen Shaw UNQUALIFIED
Chavez B MaletCanadaIvan Magalhaes NEW
Jeanfrancois T OldroydAustraliaElwin Sharvill QUALIFIED
Johnson B WaycottArgentinaAmy Elsner RENEWAL
Claire A VocelkaFranceStephen Shaw RENEWAL
Murillo F OstroskyBrazilXuxue Feng QUALIFIED
Jeanfrancois U ShinkoIndiaXuxue Feng QUALIFIED
Ivar P GarufiBrazilAmy Elsner PROPOSAL
Frozen Columns
Name
Chavez G Nicka
Julie L Ferencz
Maisha I Whobrey
Jeanfrancois M Ruta
Kaitlin M Malet
Izzy W Dilliard
Ashley Y Ruta
Arvin Y Flosi
Izzy I Figeroa
Leon M Venere
Claire O Perin
Kadeem S Whobrey
Ivar E Waycott
Jeanfrancois Z Waycott
Ashley G Butt
Leon A Oldroyd
Jennifer E Butt
Maria E Malet
Chavez C Glick
Maisha Q Rim
Ricardo W Bolognia
Aditya Q Morasca
Claire Y Caldarera
Julie N Sergi
Clifford V Campain
Adams X Vocelka
Kadeem T Tollner
Jeanfrancois B Albares
Jennifer J Kusko
Sinclair P Caldarera
Jefferson D Venere
Aruna Y Morasca
Aditya T Chui
Nicolas W Wieser
Tony V Venere
Ricardo C Royster
Aruna X Iturbide
Misaki D Kusko
Chavez L Caldarera
Tony M Campain
Aruna T Saylors
Francesco B Malet
Salvatore O Darakjy
Adams C Rulapaugh
Mayumi F Ostrosky
Aditya Z Malet
Silvio D Venere
Nicolas X Malet
Johnson O Albares
Maisha H Nicka
IdCountryDate
1000Russia2024-05-02
1001United Kingdom2024-04-07
1002India2024-04-07
1003Australia2024-04-25
1004Australia2024-04-13
1005Japan2024-05-01
1006Japan2024-04-13
1007Russia2024-04-15
1008Japan2024-04-20
1009India2024-05-02
1010Germany2024-04-27
1011Spain2024-04-05
1012Japan2024-04-22
1013Australia2024-05-01
1014Argentina2024-04-19
1015United Kingdom2024-05-03
1016Australia2024-04-27
1017Japan2024-05-02
1018Germany2024-04-05
1019India2024-04-20
1020Australia2024-04-14
1021Spain2024-04-05
1022France2024-04-27
1023France2024-05-03
1024Italy2024-04-29
1025Argentina2024-04-27
1026France2024-04-07
1027Canada2024-04-12
1028India2024-04-26
1029United Kingdom2024-04-27
1030Spain2024-04-30
1031Russia2024-04-15
1032United Kingdom2024-04-12
1033India2024-04-26
1034Brazil2024-04-05
1035Spain2024-05-03
1036Brazil2024-04-24
1037Italy2024-04-04
1038Germany2024-04-08
1039France2024-04-17
1040Germany2024-04-05
1041Australia2024-04-23
1042Australia2024-04-28
1043Argentina2024-04-27
1044India2024-04-06
1045Canada2024-05-01
1046Spain2024-04-14
1047Spain2024-04-12
1048Argentina2024-04-18
1049Argentina2024-04-14

On-Demand Data

NameIdCountryDate
Mujtaba J Figeroa1000Canada2024-04-18
Ashley Y Tollner1001Spain2024-04-19
Clifford A Briddick1002Australia2024-05-02
Mayumi F Oldroyd1003Brazil2024-04-21
Rodrigues P Marrier1004Argentina2024-04-24
Misaki E Caudy1005Russia2024-04-06
Alejandro H Glick1006Germany2024-05-03
Nicolas Z Iturbide1007France2024-04-23
Kaitlin B Nicka1008India2024-05-02
Claire U Stockham1009Japan2024-04-10
Jefferson Z Oldroyd1010Russia2024-04-23
Morrow N Tollner1011Japan2024-04-30
Darci X Morasca1012Italy2024-04-08
Jefferson I Tollner1013Japan2024-04-08
Octavia E Paprocki1014Canada2024-04-15
Kadeem W Tollner1015Japan2024-04-20
Kaitlin K Nicka1016Italy2024-04-30
Jefferson P Sergi1017United Kingdom2024-04-19
Antonio X Nestle1018Australia2024-04-27
Greenwood K Kusko1019Germany2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya N PerinSpainXuxue Feng RENEWAL
Francesco B DoeUnited KingdomIoni Bowcher NEW
Salvatore K WhobreyArgentinaAnna Fali RENEWAL
Silvio N FollerGermanyStephen Shaw NEGOTIATION
Stacey H PaprockiCanadaAnna Fali UNQUALIFIED
Nicolas L RimUnited KingdomBernardo Dominic QUALIFIED
Octavia P MarrierRussiaBernardo Dominic QUALIFIED
Aruna A ChuiArgentinaOnyama Limba UNQUALIFIED
Ricardo V RulapaughCanadaStephen Shaw RENEWAL
Alejandro B ButtArgentinaOnyama Limba NEW
Leon F MaletBrazilAnna Fali UNQUALIFIED
Emily J TollnerUnited KingdomXuxue Feng NEGOTIATION
Arvin Z DoeSpainIvan Magalhaes NEW
Jennifer S StockhamIndiaAsiya Javayant UNQUALIFIED
Darci X StensethUnited KingdomIvan Magalhaes UNQUALIFIED
Jones V GarufiCanadaStephen Shaw UNQUALIFIED
Aruna K MorascaUnited KingdomElwin Sharvill PROPOSAL
James M NestleSpainIvan Magalhaes NEGOTIATION
Mujtaba K FigeroaBrazilOnyama Limba UNQUALIFIED
Kaitlin N MaletFranceIvan Magalhaes UNQUALIFIED
Rodrigues S FerenczIndiaIvan Magalhaes NEGOTIATION
Leon V DoeJapanIvan Magalhaes PROPOSAL
Leja Z MarrierAustraliaAmy Elsner NEW
Juan C MaletSpainIoni Bowcher RENEWAL
Jefferson K PoquetteRussiaAsiya Javayant RENEWAL
Darci Z DoeJapanXuxue Feng NEGOTIATION
Wickens L GlickRussiaIoni Bowcher PROPOSAL
Antonio L GillianJapanIoni Bowcher RENEWAL
Darci Q KuskoSpainElwin Sharvill QUALIFIED
Claire M StensethRussiaOnyama Limba NEW
Smith K RoysterCanadaIvan Magalhaes QUALIFIED
Stacey B MaletGermanyAnna Fali UNQUALIFIED
Octavia Q FlosiCanadaOnyama Limba UNQUALIFIED
Jefferson F GillianItalyXuxue Feng UNQUALIFIED
Smith F SergiUnited KingdomAmy Elsner UNQUALIFIED
Julie R GillianUnited KingdomAnna Fali QUALIFIED
Juan L KolmetzCanadaAnna Fali PROPOSAL
Jefferson U GauchoUnited KingdomOnyama Limba UNQUALIFIED
Julie L CaudyJapanElwin Sharvill UNQUALIFIED
Morrow O KolmetzJapanBernardo 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>