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
Jefferson W BologniaIndiaOnyama Limba NEW
Misaki R SergiSpainIvan Magalhaes NEW
Kaitlin Y VocelkaJapanAmy Elsner PROPOSAL
Salvatore Q OldroydJapanXuxue Feng NEW
Nicolas O PerinBrazilIvan Magalhaes PROPOSAL
Aika T StockhamSpainXuxue Feng NEGOTIATION
Ivar L OstroskySpainAnna Fali NEW
Cody H SlusarskiBrazilAnna Fali QUALIFIED
Greenwood Q CampainBrazilXuxue Feng NEGOTIATION
Costa J DoeFranceIoni Bowcher NEW
Munro M IturbideGermanyElwin Sharvill NEW
Alejandro H AlbaresCanadaAsiya Javayant NEGOTIATION
Chavez R FigeroaGermanyBernardo Dominic PROPOSAL
Jefferson B RoysterGermanyElwin Sharvill QUALIFIED
Rodrigues D AlbaresArgentinaOnyama Limba UNQUALIFIED
Mujtaba X MarrierGermanyIvan Magalhaes QUALIFIED
Chavez B PaprockiAustraliaIoni Bowcher UNQUALIFIED
Misaki P CaldareraRussiaIoni Bowcher PROPOSAL
Jefferson R CampainRussiaIoni Bowcher NEW
Deepesh V NickaFranceXuxue Feng RENEWAL
Sinclair A RulapaughItalyXuxue Feng NEW
Kadeem G MarrierCanadaIoni Bowcher NEW
Faith W SergiRussiaXuxue Feng UNQUALIFIED
Kadeem H RutaIndiaBernardo Dominic UNQUALIFIED
Alejandro X PerinCanadaAmy Elsner QUALIFIED
Tony H RutaBrazilOnyama Limba PROPOSAL
Mujtaba D MorascaAustraliaIvan Magalhaes RENEWAL
Tony J MarrierFranceStephen Shaw NEW
Ricardo M OstroskyAustraliaAsiya Javayant RENEWAL
Jefferson Q MarrierBrazilIvan Magalhaes NEGOTIATION
Antonio F SaylorsUnited KingdomStephen Shaw QUALIFIED
Alejandro O ShinkoGermanyIoni Bowcher QUALIFIED
Jefferson N CaldareraCanadaOnyama Limba QUALIFIED
Deepesh I MarrierItalyAsiya Javayant NEGOTIATION
Mayumi M MacleadCanadaElwin Sharvill QUALIFIED
Adams H ButtGermanyIvan Magalhaes UNQUALIFIED
Smith Z ShinkoFranceAnna Fali PROPOSAL
Izzy D SergiRussiaOnyama Limba NEGOTIATION
Misaki F BologniaIndiaBernardo Dominic PROPOSAL
James C StockhamJapanAnna Fali PROPOSAL
Sinclair B BologniaItalyAnna Fali RENEWAL
Ashley E BriddickGermanyElwin Sharvill NEW
Misaki O KuskoGermanyAnna Fali RENEWAL
Jefferson L WieserGermanyStephen Shaw RENEWAL
Misaki J PaprockiFranceElwin Sharvill QUALIFIED
Izzy N RoysterFranceBernardo Dominic QUALIFIED
David T AmigonFranceStephen Shaw NEGOTIATION
Leja Y WieserJapanBernardo Dominic PROPOSAL
Mayumi R ChuiFranceIoni Bowcher NEGOTIATION
Adams Q InouyeRussiaBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Maria M VocelkaRussiaAmy Elsner RENEWAL
Mujtaba W PaprockiUnited KingdomStephen Shaw RENEWAL
Jones C BriddickIndiaIoni Bowcher NEGOTIATION
Alejandro F BriddickBrazilStephen Shaw UNQUALIFIED
Smith I KolmetzAustraliaBernardo Dominic UNQUALIFIED
Antonio F GarufiItalyElwin Sharvill UNQUALIFIED
Alejandro U GauchoSpainIoni Bowcher UNQUALIFIED
Maisha A NestleBrazilAmy Elsner PROPOSAL
Aika P BriddickIndiaBernardo Dominic RENEWAL
Antonio C GauchoFranceAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja O MorascaAustralia2024-04-16Chapman, Ross E Esq UNQUALIFIED59Ioni Bowcher
1001Ashley H CaldareraSpain2024-04-14Chemel, James L Cpa RENEWAL35Elwin Sharvill
1002Smith J OldroydSpain2024-04-24Rousseaux, Michael Esq RENEWAL40Amy Elsner
1003Aika Z MaletIndia2024-04-17Benton, John B Jr NEGOTIATION95Ioni Bowcher
1004Mujtaba B IturbideItaly2024-04-25Morlong Associates NEGOTIATION2Ivan Magalhaes
1005Julie Q CampainRussia2024-04-12Benton, John B Jr UNQUALIFIED37Ioni Bowcher
1006Ricardo W AmigonSpain2024-04-08Dorl, James J Esq UNQUALIFIED94Stephen Shaw
1007Isabel L AlbaresAustralia2024-04-23King, Christopher A Esq NEW24Stephen Shaw
1008Salvatore Q FlosiFrance2024-04-14Feiner Bros NEGOTIATION71Xuxue Feng
1009Aditya L RulapaughCanada2024-04-12Morlong Associates RENEWAL61Ivan Magalhaes
1010Claire H CaldareraCanada2024-04-25Feiner Bros UNQUALIFIED54Ivan Magalhaes
1011Mujtaba T InouyeGermany2024-04-08Chapman, Ross E Esq PROPOSAL96Bernardo Dominic
1012James J WieserUnited Kingdom2024-04-03Benton, John B Jr QUALIFIED21Xuxue Feng
1013Mujtaba O DilliardBrazil2024-04-06Morlong Associates UNQUALIFIED34Xuxue Feng
1014Julie R CaldareraUnited Kingdom2024-04-19Feltz Printing Service QUALIFIED99Ivan Magalhaes
1015Murillo C VocelkaBrazil2024-04-08Rangoni Of Florence NEW26Xuxue Feng
1016Cody M ChuiItaly2024-04-18Truhlar And Truhlar Attys PROPOSAL32Asiya Javayant
1017Sinclair I RoysterUnited Kingdom2024-04-06Chapman, Ross E Esq QUALIFIED0Ivan Magalhaes
1018Munro X OstroskyAustralia2024-04-24Chapman, Ross E Esq NEGOTIATION88Anna Fali
1019Nicolas E ChuiUnited Kingdom2024-04-05Chanay, Jeffrey A Esq QUALIFIED84Xuxue Feng
1020Mujtaba B RulapaughArgentina2024-04-13Chapman, Ross E Esq RENEWAL61Asiya Javayant
1021Sinclair T FlosiCanada2024-04-16Morlong Associates NEGOTIATION4Amy Elsner
1022Alejandro S SaylorsJapan2024-04-07Buckley Miller Wright PROPOSAL90Ioni Bowcher
1023Deepesh J DilliardBrazil2024-04-12Rangoni Of Florence NEGOTIATION49Amy Elsner
1024Morrow V GlickUnited Kingdom2024-04-07Benton, John B Jr PROPOSAL49Ivan Magalhaes
1025Costa S CaldareraSpain2024-03-28Morlong Associates RENEWAL81Onyama Limba
1026Antonio U PaprockiRussia2024-04-13Commercial Press UNQUALIFIED41Ivan Magalhaes
1027Isabel I TollnerItaly2024-04-19Feiner Bros PROPOSAL54Stephen Shaw
1028Juan Y NestleFrance2024-03-30Buckley Miller Wright UNQUALIFIED24Onyama Limba
1029David H WaycottSpain2024-04-17Printing Dimensions UNQUALIFIED31Stephen Shaw
1030Silvio V RoysterAustralia2024-04-01Feiner Bros NEW31Amy Elsner
1031Aika J NickaFrance2024-04-20Morlong Associates QUALIFIED58Anna Fali
1032Claire S SchemmerUnited Kingdom2024-04-23King, Christopher A Esq QUALIFIED58Xuxue Feng
1033Johnson B InouyeUnited Kingdom2024-04-12Commercial Press RENEWAL16Xuxue Feng
1034Munro R BriddickBrazil2024-04-14Feltz Printing Service PROPOSAL5Ioni Bowcher
1035Murillo D VenereFrance2024-04-16Chanay, Jeffrey A Esq NEW88Xuxue Feng
1036Sinclair R RulapaughArgentina2024-04-04Chemel, James L Cpa RENEWAL52Ivan Magalhaes
1037Greenwood D InouyeBrazil2024-03-31Printing Dimensions QUALIFIED48Asiya Javayant
1038Rodrigues Q SergiGermany2024-04-08Rousseaux, Michael Esq NEGOTIATION84Bernardo Dominic
1039Smith G KuskoUnited Kingdom2024-03-29Chapman, Ross E Esq PROPOSAL58Anna Fali
1040Chavez J RulapaughGermany2024-04-06Printing Dimensions PROPOSAL41Bernardo Dominic
1041Emily X SlusarskiCanada2024-04-11Chanay, Jeffrey A Esq NEW46Amy Elsner
1042Jefferson U DoeItaly2024-04-07Chemel, James L Cpa RENEWAL55Bernardo Dominic
1043Maria Q ButtJapan2024-04-23Feiner Bros PROPOSAL10Stephen Shaw
1044Octavia L RimGermany2024-03-31Chapman, Ross E Esq UNQUALIFIED75Bernardo Dominic
1045Ricardo O GarufiBrazil2024-04-26Buckley Miller Wright QUALIFIED17Amy Elsner
1046Morrow X RoysterIndia2024-04-08Morlong Associates NEGOTIATION16Amy Elsner
1047Jeanfrancois G TollnerRussia2024-04-23Printing Dimensions UNQUALIFIED36Stephen Shaw
1048Aditya W BowleyGermany2024-04-08Feiner Bros PROPOSAL48Asiya Javayant
1049Emily F GlickUnited Kingdom2024-04-06Chanay, Jeffrey A Esq PROPOSAL12Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aika K SaylorsGermanyBernardo Dominic PROPOSAL
Darci U TollnerGermanyAnna Fali RENEWAL
Mayumi D SergiGermanyIoni Bowcher NEW
Murillo X FollerSpainXuxue Feng NEW
Sinclair U FigeroaSpainElwin Sharvill UNQUALIFIED
Clifford W ShinkoGermanyStephen Shaw NEW
Misaki S DarakjySpainAsiya Javayant RENEWAL
Maisha T PaprockiBrazilBernardo Dominic PROPOSAL
Ashley L AlbaresAustraliaAnna Fali UNQUALIFIED
Faith C FigeroaIndiaXuxue Feng NEGOTIATION
Ricardo Y OldroydBrazilAsiya Javayant NEGOTIATION
Johnson B GarufiCanadaAmy Elsner RENEWAL
Mayumi Z StockhamGermanyOnyama Limba QUALIFIED
Stacey Z ShinkoJapanOnyama Limba NEGOTIATION
Ashley E FigeroaAustraliaIoni Bowcher PROPOSAL
Jefferson Q AmigonArgentinaAmy Elsner NEGOTIATION
Claire K DarakjyAustraliaStephen Shaw QUALIFIED
Alejandro F CampainItalyIoni Bowcher NEGOTIATION
Aika Z NickaJapanXuxue Feng PROPOSAL
Mujtaba T GarufiFranceOnyama Limba PROPOSAL
David H WieserRussiaAsiya Javayant PROPOSAL
Juan B KuskoBrazilAmy Elsner NEW
Ricardo B VocelkaGermanyIvan Magalhaes PROPOSAL
Smith L NestleFranceBernardo Dominic QUALIFIED
Smith D PaprockiUnited KingdomIoni Bowcher NEGOTIATION
Jefferson Z DarakjyRussiaBernardo Dominic QUALIFIED
Morrow U GillianItalyOnyama Limba RENEWAL
Octavia L IturbideUnited KingdomIvan Magalhaes NEW
Silvio E SlusarskiFranceXuxue Feng PROPOSAL
Maisha E VocelkaSpainAnna Fali RENEWAL
Julie M MaletRussiaAnna Fali NEW
Jeanfrancois C MaletFranceStephen Shaw UNQUALIFIED
Ivar A MaletRussiaAnna Fali QUALIFIED
Ricardo E OstroskySpainStephen Shaw UNQUALIFIED
Jefferson N OldroydAustraliaOnyama Limba RENEWAL
Isabel S CaudyArgentinaAmy Elsner UNQUALIFIED
Clifford G GlickCanadaElwin Sharvill NEGOTIATION
Alejandro M AlbaresSpainAnna Fali PROPOSAL
Claire Q StockhamBrazilIoni Bowcher QUALIFIED
Antonio Z VenereJapanStephen Shaw NEGOTIATION
Jones P FollerCanadaOnyama Limba UNQUALIFIED
Aditya R VenereIndiaAsiya Javayant NEGOTIATION
Jeanfrancois Y OstroskyFranceAsiya Javayant QUALIFIED
Darci F SaylorsAustraliaIoni Bowcher UNQUALIFIED
Juan N MaletIndiaBernardo Dominic UNQUALIFIED
Murillo L CaudySpainXuxue Feng NEGOTIATION
Morrow C RulapaughIndiaIoni Bowcher PROPOSAL
Silvio Y MaletSpainAnna Fali NEGOTIATION
Kadeem T DarakjyArgentinaAmy Elsner QUALIFIED
Johnson C RimItalyOnyama Limba RENEWAL
Frozen Columns
Name
Stacey P Poquette
Julie N Morasca
Mujtaba X Campain
Ashley D Maclead
Stacey V Rulapaugh
Wickens C Figeroa
Antonio U Slusarski
Salvatore I Paprocki
Francesco W Rulapaugh
Isabel T Waycott
Darci I Gaucho
Murillo A Chui
Mayumi I Sergi
Sinclair O Foller
Ivar I Sergi
Murillo X Nicka
Kaitlin G Gillian
Stacey Y Vocelka
Octavia O Vocelka
Misaki Y Chui
Claire A Chui
Jefferson Z Saylors
Aditya C Butt
Salvatore N Rulapaugh
Octavia A Dilliard
Cody F Royster
Adams M Gaucho
Izzy R Campain
Aditya F Gaucho
Francesco Q Schemmer
Izzy G Poquette
Adams R Rulapaugh
Aruna W Nestle
Greenwood F Ferencz
Smith Y Gaucho
Jennifer U Foller
Tony U Amigon
Darci B Amigon
Cody I Royster
Francesco N Stenseth
Johnson R Foller
Ricardo P Gillian
Kadeem R Foller
Isabel C Rim
Jefferson C Perin
Adams W Sergi
Mujtaba D Rulapaugh
Aditya R Schemmer
Emily M Inouye
Silvio A Stenseth
IdCountryDate
1000Spain2024-04-23
1001Germany2024-04-16
1002Brazil2024-04-23
1003Germany2024-04-11
1004France2024-04-24
1005Italy2024-03-28
1006Canada2024-04-25
1007Brazil2024-04-06
1008Canada2024-04-24
1009Russia2024-04-06
1010Canada2024-04-22
1011Russia2024-04-21
1012France2024-03-28
1013Germany2024-04-17
1014Japan2024-03-30
1015Spain2024-04-22
1016Canada2024-04-26
1017India2024-04-24
1018United Kingdom2024-04-12
1019Spain2024-04-03
1020Australia2024-04-17
1021Argentina2024-04-14
1022United Kingdom2024-04-22
1023India2024-04-03
1024Russia2024-04-03
1025Japan2024-04-13
1026Argentina2024-03-29
1027Germany2024-04-04
1028India2024-04-18
1029India2024-04-23
1030Australia2024-04-12
1031Russia2024-04-12
1032Germany2024-04-21
1033United Kingdom2024-04-06
1034Japan2024-04-08
1035Brazil2024-04-20
1036United Kingdom2024-04-20
1037Argentina2024-04-03
1038France2024-03-28
1039Italy2024-04-04
1040Brazil2024-03-28
1041France2024-04-01
1042Canada2024-04-08
1043Canada2024-04-16
1044Spain2024-04-11
1045United Kingdom2024-04-16
1046Russia2024-04-09
1047Spain2024-04-12
1048India2024-03-31
1049Brazil2024-04-12

On-Demand Data

NameIdCountryDate
Maisha K Nestle1000France2024-04-09
Chavez Q Sergi1001Australia2024-04-26
Kaitlin F Foller1002Russia2024-04-07
Ricardo O Amigon1003Russia2024-04-01
Ashley B Garufi1004Germany2024-04-01
Sinclair M Dilliard1005India2024-04-24
Jeanfrancois C Paprocki1006Australia2024-04-09
Cody Y Dilliard1007Argentina2024-04-03
Mujtaba G Ruta1008United Kingdom2024-04-08
Jennifer S Royster1009Japan2024-04-22
Ricardo A Schemmer1010United Kingdom2024-04-04
Wickens F Kolmetz1011France2024-04-26
Izzy T Darakjy1012Italy2024-04-09
Julie R Sergi1013Argentina2024-04-26
Octavia O Bolognia1014Russia2024-04-26
Claire J Doe1015Germany2024-04-21
Darci D Venere1016Germany2024-04-02
Jones A Caldarera1017Argentina2024-03-29
Sinclair O Rim1018Spain2024-04-03
Morrow X Slusarski1019Argentina2024-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria G IturbideGermanyXuxue Feng NEW
Francesco E KuskoIndiaAsiya Javayant QUALIFIED
Mayumi T GlickUnited KingdomAmy Elsner RENEWAL
Octavia I GlickFranceElwin Sharvill PROPOSAL
Aika H StockhamGermanyElwin Sharvill QUALIFIED
Juan Q FollerBrazilElwin Sharvill RENEWAL
Faith M MarrierFranceOnyama Limba NEW
Aruna A FollerFranceAmy Elsner NEW
Maisha I MorascaIndiaOnyama Limba RENEWAL
Rodrigues H FigeroaIndiaOnyama Limba QUALIFIED
Chavez C BowleyCanadaIvan Magalhaes QUALIFIED
Adams Y StockhamJapanIoni Bowcher UNQUALIFIED
Alejandro V FollerFranceXuxue Feng UNQUALIFIED
David O AmigonUnited KingdomOnyama Limba RENEWAL
Jones C IturbideUnited KingdomBernardo Dominic NEGOTIATION
Claire D FlosiUnited KingdomAsiya Javayant NEW
Tony D WhobreyIndiaAnna Fali UNQUALIFIED
Munro Q KuskoGermanyElwin Sharvill NEW
Wickens P GarufiBrazilAsiya Javayant UNQUALIFIED
Jeanfrancois O RoysterGermanyBernardo Dominic QUALIFIED
Silvio I ShinkoSpainAnna Fali PROPOSAL
Faith Z CaldareraBrazilOnyama Limba NEGOTIATION
Salvatore Z IturbideRussiaXuxue Feng NEGOTIATION
Octavia Y SchemmerFranceOnyama Limba RENEWAL
Octavia E DilliardSpainBernardo Dominic UNQUALIFIED
Emily P ChuiRussiaAmy Elsner RENEWAL
Smith B MaletRussiaAmy Elsner UNQUALIFIED
Jefferson V RutaSpainBernardo Dominic UNQUALIFIED
Ivar O WaycottSpainOnyama Limba QUALIFIED
Faith K WhobreyJapanAmy Elsner PROPOSAL
Isabel B DoeItalyOnyama Limba PROPOSAL
Jones R AlbaresRussiaAnna Fali NEGOTIATION
James N PoquetteCanadaElwin Sharvill NEW
Juan H SchemmerItalyElwin Sharvill QUALIFIED
Chavez K RutaItalyAsiya Javayant QUALIFIED
Aditya F VenereArgentinaBernardo Dominic RENEWAL
Smith M DilliardAustraliaAmy Elsner PROPOSAL
Adams V KolmetzCanadaOnyama Limba RENEWAL
Darci D IturbideJapanElwin Sharvill QUALIFIED
Claire G StockhamUnited KingdomStephen Shaw NEW

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