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
Sinclair L FlosiItalyBernardo Dominic PROPOSAL
Jennifer C DilliardUnited KingdomIoni Bowcher UNQUALIFIED
Munro P OstroskyUnited KingdomAsiya Javayant UNQUALIFIED
Jefferson H CampainJapanAnna Fali UNQUALIFIED
Nicolas L AlbaresIndiaAnna Fali PROPOSAL
Kaitlin Y PaprockiArgentinaIvan Magalhaes NEGOTIATION
Munro Z MaletGermanyAnna Fali NEW
Mujtaba N AlbaresRussiaXuxue Feng UNQUALIFIED
Arvin G IturbideAustraliaAmy Elsner QUALIFIED
Leja R RulapaughFranceXuxue Feng QUALIFIED
Sinclair Z DarakjyIndiaIoni Bowcher RENEWAL
Isabel U CampainFranceAmy Elsner NEGOTIATION
Arvin W BowleyGermanyBernardo Dominic NEGOTIATION
Chavez J GarufiGermanyIvan Magalhaes QUALIFIED
Emily X BowleyBrazilStephen Shaw PROPOSAL
Isabel Y GlickGermanyAsiya Javayant RENEWAL
Cody M WhobreyItalyAnna Fali RENEWAL
Darci D MorascaRussiaStephen Shaw NEW
Maisha O BriddickGermanyIoni Bowcher PROPOSAL
Kaitlin R StensethRussiaElwin Sharvill UNQUALIFIED
Johnson L FerenczFranceIoni Bowcher QUALIFIED
Smith G KolmetzArgentinaOnyama Limba NEW
Claire V CaudyCanadaElwin Sharvill NEW
Aditya V FigeroaIndiaOnyama Limba QUALIFIED
Izzy L MaletIndiaIvan Magalhaes NEGOTIATION
Aditya U SergiRussiaIvan Magalhaes NEW
Misaki O OstroskyAustraliaOnyama Limba UNQUALIFIED
Chavez O VocelkaArgentinaBernardo Dominic NEGOTIATION
Chavez G InouyeIndiaElwin Sharvill NEW
Tony D FerenczGermanyIoni Bowcher UNQUALIFIED
Munro U RimGermanyStephen Shaw RENEWAL
Claire T NestleIndiaElwin Sharvill NEW
Faith N DilliardArgentinaOnyama Limba PROPOSAL
Morrow E BologniaArgentinaAsiya Javayant PROPOSAL
Jennifer I FigeroaGermanyAnna Fali PROPOSAL
Jefferson Y FerenczCanadaIoni Bowcher QUALIFIED
Silvio R CampainCanadaAnna Fali QUALIFIED
Isabel R FigeroaGermanyAsiya Javayant NEW
Kaitlin E PaprockiSpainXuxue Feng PROPOSAL
Juan F TollnerArgentinaAmy Elsner UNQUALIFIED
Isabel C CaldareraCanadaAsiya Javayant UNQUALIFIED
Maria F StensethCanadaIoni Bowcher NEGOTIATION
Greenwood G IturbideGermanyIvan Magalhaes NEW
Ricardo V StensethFranceElwin Sharvill NEW
Cody K SchemmerGermanyXuxue Feng NEW
Arvin Y VocelkaJapanIvan Magalhaes NEW
Claire Q CampainFranceOnyama Limba RENEWAL
Aruna N VenereUnited KingdomBernardo Dominic PROPOSAL
Octavia Q FigeroaItalyAmy Elsner NEGOTIATION
Jeanfrancois V SlusarskiFranceAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Maria T FerenczGermanyOnyama Limba NEW
Morrow J SlusarskiBrazilAnna Fali RENEWAL
Greenwood F MaletJapanStephen Shaw PROPOSAL
Chavez P VenereFranceIvan Magalhaes NEW
Ivar B KolmetzItalyBernardo Dominic RENEWAL
Smith M TollnerUnited KingdomIvan Magalhaes NEW
Johnson W AlbaresIndiaOnyama Limba RENEWAL
Greenwood Q NickaGermanyXuxue Feng NEW
Nicolas U GlickRussiaBernardo Dominic NEW
Izzy N FigeroaArgentinaXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore T GarufiAustralia2024-04-21Chapman, Ross E Esq NEGOTIATION80Stephen Shaw
1001Adams H KolmetzJapan2024-04-28Feiner Bros RENEWAL2Elwin Sharvill
1002Ricardo Z NickaRussia2024-05-03Truhlar And Truhlar Attys NEGOTIATION92Asiya Javayant
1003David E PaprockiRussia2024-05-01Feltz Printing Service QUALIFIED58Ivan Magalhaes
1004Aditya N WieserAustralia2024-04-26Feltz Printing Service PROPOSAL85Amy Elsner
1005Claire D OstroskyGermany2024-04-22Benton, John B Jr NEGOTIATION9Anna Fali
1006James R SergiSpain2024-04-17Feiner Bros QUALIFIED81Ivan Magalhaes
1007David D CampainJapan2024-04-26Chanay, Jeffrey A Esq NEW81Amy Elsner
1008Kadeem N MaletAustralia2024-04-20Truhlar And Truhlar Attys NEGOTIATION13Stephen Shaw
1009Wickens W StensethRussia2024-04-20Buckley Miller Wright PROPOSAL29Anna Fali
1010Greenwood A DarakjyJapan2024-04-10Printing Dimensions UNQUALIFIED7Xuxue Feng
1011Ashley W CampainSpain2024-04-10Chemel, James L Cpa QUALIFIED67Asiya Javayant
1012Ivar M AmigonItaly2024-04-26Commercial Press RENEWAL43Xuxue Feng
1013Ivar Q SergiUnited Kingdom2024-04-26Commercial Press QUALIFIED90Onyama Limba
1014Mayumi T WaycottAustralia2024-04-21Commercial Press PROPOSAL72Anna Fali
1015Chavez G SlusarskiFrance2024-04-18Benton, John B Jr RENEWAL33Stephen Shaw
1016Julie B RimCanada2024-04-24Buckley Miller Wright RENEWAL10Xuxue Feng
1017Misaki A FerenczSpain2024-04-16Dorl, James J Esq UNQUALIFIED56Amy Elsner
1018Antonio Q FerenczCanada2024-04-23Truhlar And Truhlar Attys UNQUALIFIED23Ioni Bowcher
1019Morrow T FollerAustralia2024-04-11King, Christopher A Esq RENEWAL63Elwin Sharvill
1020Maisha Y StensethSpain2024-04-28King, Christopher A Esq PROPOSAL88Ioni Bowcher
1021Tony Y KolmetzRussia2024-04-19Benton, John B Jr NEGOTIATION6Xuxue Feng
1022Smith E AlbaresArgentina2024-04-11Morlong Associates PROPOSAL49Anna Fali
1023Misaki W FigeroaItaly2024-04-19Feiner Bros NEGOTIATION87Xuxue Feng
1024Cody V GillianJapan2024-04-19Morlong Associates PROPOSAL36Elwin Sharvill
1025Chavez H AmigonUnited Kingdom2024-04-07Chanay, Jeffrey A Esq NEW71Elwin Sharvill
1026Juan O MaletSpain2024-05-05Chanay, Jeffrey A Esq PROPOSAL94Ioni Bowcher
1027Jennifer P ShinkoFrance2024-04-30Buckley Miller Wright RENEWAL36Asiya Javayant
1028Tony J GillianAustralia2024-04-09Benton, John B Jr UNQUALIFIED56Amy Elsner
1029Faith Y GarufiUnited Kingdom2024-05-06Rangoni Of Florence NEGOTIATION12Xuxue Feng
1030Mujtaba E RulapaughRussia2024-04-23Buckley Miller Wright PROPOSAL32Stephen Shaw
1031Nicolas O StockhamJapan2024-05-02Printing Dimensions RENEWAL21Ioni Bowcher
1032Cody P SchemmerBrazil2024-05-04Feiner Bros RENEWAL10Asiya Javayant
1033Silvio Q IturbideUnited Kingdom2024-05-01Chemel, James L Cpa NEW75Stephen Shaw
1034Rodrigues W FigeroaRussia2024-04-17Chapman, Ross E Esq NEW66Xuxue Feng
1035Deepesh S SlusarskiGermany2024-04-09Rangoni Of Florence NEW31Bernardo Dominic
1036Ivar U MaletItaly2024-04-23Chanay, Jeffrey A Esq NEW47Ioni Bowcher
1037Sinclair J WhobreyIndia2024-04-14Chapman, Ross E Esq NEGOTIATION9Stephen Shaw
1038Maria E MaletUnited Kingdom2024-04-30Dorl, James J Esq PROPOSAL96Onyama Limba
1039Johnson R ButtRussia2024-04-19Commercial Press RENEWAL75Ioni Bowcher
1040Ricardo U FerenczSpain2024-04-15Printing Dimensions NEGOTIATION13Stephen Shaw
1041Deepesh X TollnerFrance2024-04-17Chemel, James L Cpa QUALIFIED7Bernardo Dominic
1042Aditya A WieserSpain2024-04-10Printing Dimensions QUALIFIED50Bernardo Dominic
1043David X VocelkaCanada2024-04-17Printing Dimensions NEGOTIATION49Onyama Limba
1044Francesco R KuskoJapan2024-04-16Buckley Miller Wright NEGOTIATION57Stephen Shaw
1045Julie A FlosiAustralia2024-05-03Printing Dimensions QUALIFIED48Elwin Sharvill
1046Jennifer N FigeroaIndia2024-04-25Chemel, James L Cpa NEW73Ivan Magalhaes
1047Maria J GillianItaly2024-04-22Rousseaux, Michael Esq PROPOSAL26Stephen Shaw
1048Rodrigues X VocelkaRussia2024-05-02Chapman, Ross E Esq QUALIFIED24Anna Fali
1049Isabel Y GauchoSpain2024-04-16Morlong Associates RENEWAL91Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Maisha X WaycottGermanyStephen Shaw RENEWAL
Munro Y ShinkoFranceOnyama Limba QUALIFIED
Nicolas E ShinkoArgentinaOnyama Limba PROPOSAL
Morrow C IturbideFranceOnyama Limba QUALIFIED
Jones P DilliardItalyIvan Magalhaes NEGOTIATION
Antonio E GarufiRussiaXuxue Feng PROPOSAL
Kaitlin P FerenczBrazilBernardo Dominic PROPOSAL
David Z CampainRussiaAsiya Javayant NEGOTIATION
Johnson Y PaprockiFranceIoni Bowcher UNQUALIFIED
James N ButtArgentinaElwin Sharvill RENEWAL
Johnson T BriddickArgentinaAnna Fali RENEWAL
Johnson T RutaAustraliaIvan Magalhaes RENEWAL
Kaitlin G GarufiRussiaOnyama Limba NEW
Costa C VenereUnited KingdomAnna Fali NEGOTIATION
Silvio G ChuiIndiaIoni Bowcher RENEWAL
Greenwood B GarufiUnited KingdomAnna Fali RENEWAL
Smith Y RimUnited KingdomElwin Sharvill QUALIFIED
Mayumi W RimSpainIoni Bowcher PROPOSAL
Arvin F SchemmerGermanyIoni Bowcher UNQUALIFIED
Leon I OstroskySpainBernardo Dominic UNQUALIFIED
James R AmigonUnited KingdomElwin Sharvill NEGOTIATION
Adams O MorascaIndiaIoni Bowcher NEGOTIATION
Claire W SaylorsAustraliaOnyama Limba NEGOTIATION
Deepesh O GlickBrazilStephen Shaw NEGOTIATION
Smith R StockhamAustraliaIvan Magalhaes QUALIFIED
Cody X CampainUnited KingdomBernardo Dominic PROPOSAL
Maria I WhobreyJapanIoni Bowcher NEGOTIATION
Maisha O StensethGermanyElwin Sharvill NEW
Mujtaba Y RulapaughAustraliaElwin Sharvill UNQUALIFIED
Chavez Q MarrierSpainIvan Magalhaes UNQUALIFIED
Deepesh N SlusarskiFranceAmy Elsner PROPOSAL
Nicolas Y OstroskyFranceElwin Sharvill RENEWAL
Sinclair A DarakjyCanadaStephen Shaw QUALIFIED
Antonio Q PoquetteBrazilAsiya Javayant NEW
Antonio R GarufiFranceAsiya Javayant NEGOTIATION
Tony N MaletJapanIvan Magalhaes NEW
Mayumi D RimRussiaAnna Fali RENEWAL
Claire U CaudySpainIvan Magalhaes NEGOTIATION
Ricardo R ShinkoArgentinaIvan Magalhaes PROPOSAL
Murillo T MaletArgentinaStephen Shaw NEGOTIATION
Izzy C SchemmerFranceOnyama Limba QUALIFIED
Arvin E NestleIndiaIvan Magalhaes UNQUALIFIED
Rodrigues N RimFranceAmy Elsner UNQUALIFIED
Claire G GauchoFranceElwin Sharvill QUALIFIED
Francesco F BriddickUnited KingdomIvan Magalhaes PROPOSAL
Antonio Z SaylorsArgentinaIoni Bowcher NEGOTIATION
Jefferson H OstroskyAustraliaXuxue Feng NEGOTIATION
Leja Q BologniaAustraliaXuxue Feng NEGOTIATION
Francesco J SchemmerCanadaAnna Fali UNQUALIFIED
Munro E MaletBrazilAmy Elsner PROPOSAL
Frozen Columns
Name
Jones D Butt
Aditya X Stockham
Claire S Perin
Maisha X Gillian
Stacey L Flosi
Emily L Nicka
Antonio T Sergi
Silvio V Poquette
Maisha I Dilliard
Silvio B Royster
Munro R Ferencz
Jones Z Glick
Nicolas F Kolmetz
Cody O Gaucho
Jennifer S Rulapaugh
Johnson W Venere
Ivar T Waycott
Kaitlin V Malet
Isabel V Ruta
Chavez P Slusarski
Alejandro T Briddick
Leja P Vocelka
Arvin H Bolognia
Murillo G Campain
Nicolas F Flosi
Tony A Vocelka
Ashley A Ferencz
Francesco L Bowley
Izzy A Bowley
Jennifer T Nestle
Clifford N Ferencz
Kaitlin R Campain
Isabel J Slusarski
Isabel O Poquette
Silvio B Glick
Aika S Stockham
Mujtaba B Flosi
Misaki Z Sergi
Izzy F Nicka
Aruna M Whobrey
Ashley O Ostrosky
Murillo D Tollner
Ivar P Wieser
Misaki H Perin
Jeanfrancois Y Marrier
Ricardo L Vocelka
Silvio I Chui
Stacey Y Oldroyd
James Q Shinko
Maria D Saylors
IdCountryDate
1000Italy2024-04-15
1001Spain2024-04-11
1002United Kingdom2024-04-10
1003United Kingdom2024-04-28
1004Brazil2024-04-14
1005Argentina2024-04-29
1006France2024-04-28
1007Brazil2024-04-20
1008Canada2024-04-21
1009Japan2024-05-01
1010Italy2024-04-08
1011Canada2024-05-06
1012France2024-04-29
1013France2024-04-16
1014United Kingdom2024-04-10
1015Spain2024-04-22
1016Canada2024-04-13
1017Australia2024-05-06
1018Canada2024-05-04
1019Spain2024-04-25
1020Brazil2024-04-24
1021Brazil2024-04-19
1022Canada2024-04-17
1023Spain2024-05-03
1024Spain2024-04-11
1025Japan2024-04-15
1026Brazil2024-04-26
1027Argentina2024-04-25
1028Italy2024-04-13
1029Spain2024-04-17
1030Spain2024-04-19
1031Argentina2024-04-09
1032Spain2024-04-27
1033Argentina2024-04-27
1034Brazil2024-04-10
1035India2024-04-30
1036Russia2024-05-06
1037United Kingdom2024-04-27
1038Spain2024-05-03
1039India2024-04-15
1040Argentina2024-04-22
1041Japan2024-05-01
1042Spain2024-04-14
1043France2024-05-05
1044Japan2024-05-02
1045France2024-04-22
1046Australia2024-04-16
1047Argentina2024-04-14
1048Spain2024-05-04
1049United Kingdom2024-04-08

On-Demand Data

NameIdCountryDate
Antonio P Ostrosky1000Russia2024-05-01
Stacey X Malet1001Brazil2024-04-09
Mujtaba U Stockham1002Germany2024-04-11
Julie Q Slusarski1003France2024-04-08
Ricardo P Venere1004Italy2024-04-13
Wickens Y Paprocki1005Germany2024-04-27
Emily K Dilliard1006Italy2024-04-20
Izzy L Foller1007Brazil2024-04-11
Aika J Wieser1008Italy2024-04-10
Aruna N Butt1009Italy2024-04-19
Kaitlin P Bowley1010Brazil2024-05-02
Claire X Vocelka1011Spain2024-04-09
Adams L Bowley1012Brazil2024-04-19
Emily A Glick1013Japan2024-04-14
Ricardo O Waycott1014Germany2024-04-10
Stacey P Briddick1015Italy2024-05-02
Silvio Y Venere1016Spain2024-05-01
Stacey N Nicka1017India2024-04-16
Munro T Morasca1018Australia2024-04-26
Chavez G Gaucho1019Italy2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya I RimItalyAnna Fali NEW
Emily E CaudyGermanyIoni Bowcher PROPOSAL
Munro G ShinkoFranceBernardo Dominic UNQUALIFIED
Jeanfrancois Y GlickItalyElwin Sharvill NEGOTIATION
Ricardo P SlusarskiCanadaIoni Bowcher NEW
Ashley T CampainRussiaIoni Bowcher NEW
Faith V SchemmerRussiaAnna Fali UNQUALIFIED
Octavia Y PoquetteIndiaXuxue Feng NEW
Arvin Y ChuiJapanAsiya Javayant RENEWAL
Juan X SlusarskiRussiaAsiya Javayant RENEWAL
Darci R SlusarskiFranceAsiya Javayant QUALIFIED
Salvatore M SaylorsFranceAmy Elsner PROPOSAL
Jeanfrancois Q MaletUnited KingdomOnyama Limba NEGOTIATION
Misaki A MaletAustraliaAmy Elsner PROPOSAL
James O PoquetteBrazilBernardo Dominic PROPOSAL
Misaki P ChuiArgentinaElwin Sharvill PROPOSAL
James R AlbaresGermanyBernardo Dominic NEGOTIATION
Juan Q SaylorsFranceIvan Magalhaes UNQUALIFIED
Darci Q DoeJapanIoni Bowcher RENEWAL
Ricardo F RoysterUnited KingdomAmy Elsner NEGOTIATION
Ivar Z WieserBrazilAsiya Javayant QUALIFIED
Misaki C BologniaFranceBernardo Dominic QUALIFIED
Wickens V SergiAustraliaOnyama Limba RENEWAL
Murillo Y SlusarskiFranceAmy Elsner NEW
Rodrigues P DarakjyGermanyStephen Shaw PROPOSAL
James V NickaUnited KingdomIoni Bowcher NEGOTIATION
Misaki A MarrierCanadaAnna Fali UNQUALIFIED
Leja R BriddickUnited KingdomElwin Sharvill RENEWAL
Izzy L WieserRussiaBernardo Dominic RENEWAL
Jones M KuskoFranceStephen Shaw RENEWAL
Juan D SlusarskiUnited KingdomIoni Bowcher PROPOSAL
Ricardo I FollerItalyAnna Fali PROPOSAL
Misaki W CampainIndiaBernardo Dominic NEW
Clifford V BologniaJapanAsiya Javayant UNQUALIFIED
Aditya Q GarufiUnited KingdomAsiya Javayant PROPOSAL
Leja M RulapaughGermanyAnna Fali UNQUALIFIED
Alejandro A PerinBrazilAsiya Javayant UNQUALIFIED
Aruna U RulapaughCanadaBernardo Dominic UNQUALIFIED
Antonio X SlusarskiFranceAnna Fali PROPOSAL
Kadeem G WhobreyUnited KingdomXuxue Feng PROPOSAL

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