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
Silvio D DarakjyGermanyIoni Bowcher RENEWAL
Jones Q FigeroaJapanElwin Sharvill RENEWAL
Antonio P BologniaSpainIvan Magalhaes PROPOSAL
Rodrigues F PaprockiGermanyStephen Shaw QUALIFIED
Murillo Z WaycottRussiaIvan Magalhaes QUALIFIED
Sinclair T BriddickFranceOnyama Limba QUALIFIED
Maisha C DarakjyFranceIoni Bowcher QUALIFIED
Julie T AlbaresArgentinaStephen Shaw NEGOTIATION
Munro N BowleyBrazilAsiya Javayant RENEWAL
David M DarakjyIndiaXuxue Feng NEGOTIATION
Munro E WhobreyUnited KingdomStephen Shaw NEGOTIATION
Aruna A BologniaFranceBernardo Dominic NEGOTIATION
Francesco J SaylorsGermanyAnna Fali NEGOTIATION
Deepesh W ChuiAustraliaBernardo Dominic QUALIFIED
Emily U PaprockiIndiaIoni Bowcher RENEWAL
Alejandro Z GlickItalyAmy Elsner QUALIFIED
Antonio X KolmetzGermanyStephen Shaw RENEWAL
Octavia T FollerRussiaAsiya Javayant NEGOTIATION
Leon T WhobreyItalyOnyama Limba NEGOTIATION
Darci K GauchoArgentinaXuxue Feng NEW
Silvio W ChuiAustraliaAmy Elsner QUALIFIED
Darci W FollerArgentinaXuxue Feng PROPOSAL
Ivar W FigeroaJapanAsiya Javayant UNQUALIFIED
Morrow B RulapaughAustraliaAsiya Javayant QUALIFIED
Costa P InouyeArgentinaAnna Fali UNQUALIFIED
Mayumi X MarrierIndiaBernardo Dominic RENEWAL
Maisha L ChuiArgentinaIoni Bowcher UNQUALIFIED
Salvatore F VenereArgentinaElwin Sharvill QUALIFIED
Leja Y AmigonCanadaAmy Elsner NEW
Claire J CaldareraCanadaIoni Bowcher RENEWAL
Jones C IturbideSpainBernardo Dominic QUALIFIED
Maria R MacleadUnited KingdomIoni Bowcher RENEWAL
Silvio A FlosiCanadaXuxue Feng PROPOSAL
Tony A WieserRussiaElwin Sharvill PROPOSAL
Claire O OstroskyFranceOnyama Limba UNQUALIFIED
Munro H StockhamRussiaBernardo Dominic NEGOTIATION
Sinclair I CaudyBrazilAsiya Javayant UNQUALIFIED
David A AlbaresRussiaXuxue Feng NEW
Maria K AlbaresUnited KingdomOnyama Limba PROPOSAL
Ricardo V CampainFranceBernardo Dominic PROPOSAL
Maisha S KuskoCanadaElwin Sharvill QUALIFIED
Jones R PerinItalyStephen Shaw NEGOTIATION
Jeanfrancois W CaudyBrazilIvan Magalhaes RENEWAL
Tony M AlbaresSpainOnyama Limba UNQUALIFIED
Juan F SchemmerAustraliaAsiya Javayant PROPOSAL
Johnson I AlbaresCanadaStephen Shaw NEGOTIATION
Murillo F BowleyRussiaIvan Magalhaes PROPOSAL
Chavez N OldroydArgentinaXuxue Feng PROPOSAL
Aditya O OstroskyBrazilElwin Sharvill NEGOTIATION
Johnson K MaletIndiaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Rodrigues A MaletUnited KingdomBernardo Dominic NEGOTIATION
Kadeem O WhobreyUnited KingdomAsiya Javayant NEGOTIATION
Cody S VocelkaItalyAsiya Javayant QUALIFIED
Darci S StensethFranceAsiya Javayant NEW
Francesco G StensethRussiaXuxue Feng PROPOSAL
Adams N VocelkaFranceStephen Shaw PROPOSAL
Izzy C FollerJapanAmy Elsner NEGOTIATION
Adams S WieserBrazilIvan Magalhaes UNQUALIFIED
Costa B SlusarskiIndiaStephen Shaw RENEWAL
Maisha F SlusarskiIndiaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia E RulapaughRussia2024-04-14Rousseaux, Michael Esq NEGOTIATION15Ioni Bowcher
1001Leon T DilliardAustralia2024-03-31Commercial Press NEW0Elwin Sharvill
1002Adams A VenereAustralia2024-04-13Dorl, James J Esq RENEWAL19Ivan Magalhaes
1003Costa P StockhamFrance2024-04-06Dorl, James J Esq RENEWAL13Onyama Limba
1004Johnson B GillianItaly2024-04-05Truhlar And Truhlar Attys NEW20Asiya Javayant
1005Jones V InouyeBrazil2024-04-16Chapman, Ross E Esq NEGOTIATION5Bernardo Dominic
1006Aruna G RutaIndia2024-04-14Benton, John B Jr NEW56Amy Elsner
1007Jeanfrancois Z NickaJapan2024-03-29Benton, John B Jr UNQUALIFIED29Bernardo Dominic
1008Faith S DilliardAustralia2024-04-21Rousseaux, Michael Esq UNQUALIFIED33Elwin Sharvill
1009Isabel H FlosiAustralia2024-04-07Feiner Bros NEGOTIATION65Onyama Limba
1010Murillo U SlusarskiFrance2024-03-31Dorl, James J Esq UNQUALIFIED59Asiya Javayant
1011Kaitlin S BologniaCanada2024-04-14Chanay, Jeffrey A Esq NEGOTIATION55Bernardo Dominic
1012Rodrigues X BriddickCanada2024-04-26Morlong Associates RENEWAL22Anna Fali
1013Rodrigues Z BologniaJapan2024-03-31Feiner Bros UNQUALIFIED91Anna Fali
1014Clifford I GlickSpain2024-03-30Chemel, James L Cpa PROPOSAL77Asiya Javayant
1015Rodrigues X NickaIndia2024-04-03Feiner Bros QUALIFIED57Ivan Magalhaes
1016Wickens O GlickSpain2024-04-25Feltz Printing Service UNQUALIFIED12Onyama Limba
1017Ashley R TollnerItaly2024-03-29Commercial Press UNQUALIFIED10Asiya Javayant
1018James Z MarrierUnited Kingdom2024-04-10Dorl, James J Esq QUALIFIED28Bernardo Dominic
1019Leja L BriddickCanada2024-04-05Benton, John B Jr QUALIFIED76Ivan Magalhaes
1020Nicolas J InouyeArgentina2024-04-08Feiner Bros UNQUALIFIED74Bernardo Dominic
1021Deepesh P NickaJapan2024-04-07Printing Dimensions RENEWAL50Amy Elsner
1022Leja U DoeJapan2024-03-29King, Christopher A Esq NEW36Anna Fali
1023Octavia Y WieserItaly2024-04-17Benton, John B Jr PROPOSAL60Onyama Limba
1024Alejandro E MarrierFrance2024-04-03Rangoni Of Florence QUALIFIED99Amy Elsner
1025Morrow E OstroskyArgentina2024-03-28Printing Dimensions RENEWAL89Stephen Shaw
1026Alejandro J OldroydRussia2024-04-06Truhlar And Truhlar Attys UNQUALIFIED31Stephen Shaw
1027Darci R RoysterBrazil2024-03-31Truhlar And Truhlar Attys NEW57Onyama Limba
1028Aruna Z RutaJapan2024-04-12Chanay, Jeffrey A Esq PROPOSAL48Bernardo Dominic
1029Stacey A GarufiGermany2024-04-17Dorl, James J Esq NEW16Onyama Limba
1030Munro J DoeGermany2024-04-22Rousseaux, Michael Esq NEGOTIATION55Anna Fali
1031Kadeem J FerenczGermany2024-04-17Truhlar And Truhlar Attys NEW5Elwin Sharvill
1032Aika S SlusarskiIndia2024-04-04Rousseaux, Michael Esq UNQUALIFIED19Onyama Limba
1033Juan Z MacleadArgentina2024-04-04Commercial Press NEW2Onyama Limba
1034Greenwood V KuskoAustralia2024-04-09Rangoni Of Florence NEGOTIATION52Ioni Bowcher
1035Claire X MaletArgentina2024-03-29Truhlar And Truhlar Attys RENEWAL63Elwin Sharvill
1036Ricardo S AlbaresArgentina2024-04-03Commercial Press NEW12Elwin Sharvill
1037Kaitlin Z BriddickFrance2024-04-10Benton, John B Jr QUALIFIED38Ioni Bowcher
1038Leon L WhobreyArgentina2024-04-11Dorl, James J Esq PROPOSAL64Stephen Shaw
1039Misaki C KuskoUnited Kingdom2024-04-05Feiner Bros NEGOTIATION51Ivan Magalhaes
1040Francesco Y WaycottUnited Kingdom2024-03-31Truhlar And Truhlar Attys PROPOSAL18Elwin Sharvill
1041Ricardo S InouyeItaly2024-04-12King, Christopher A Esq RENEWAL95Ivan Magalhaes
1042Francesco E ShinkoCanada2024-04-08Morlong Associates NEGOTIATION62Anna Fali
1043Wickens O GauchoItaly2024-04-11Benton, John B Jr NEW91Xuxue Feng
1044Darci Z CaudyGermany2024-04-02King, Christopher A Esq NEGOTIATION33Anna Fali
1045Darci U BriddickAustralia2024-04-21Benton, John B Jr NEW17Onyama Limba
1046Morrow U MaletGermany2024-04-13Rangoni Of Florence NEGOTIATION97Asiya Javayant
1047Adams Z GauchoArgentina2024-04-13Benton, John B Jr NEGOTIATION42Elwin Sharvill
1048Jefferson I OstroskyCanada2024-03-28Rousseaux, Michael Esq QUALIFIED23Asiya Javayant
1049Arvin N FlosiJapan2024-04-22Truhlar And Truhlar Attys RENEWAL15Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Johnson O MacleadItalyStephen Shaw NEGOTIATION
Kadeem Y BriddickItalyXuxue Feng RENEWAL
Chavez N FigeroaUnited KingdomIvan Magalhaes NEW
Ashley G RimGermanyAsiya Javayant NEGOTIATION
Nicolas S KuskoUnited KingdomElwin Sharvill RENEWAL
Faith Y NestleGermanyElwin Sharvill UNQUALIFIED
Juan Y PerinItalyAsiya Javayant UNQUALIFIED
Kaitlin D AmigonUnited KingdomAmy Elsner PROPOSAL
Emily O RutaSpainAnna Fali NEW
Mujtaba C GarufiBrazilBernardo Dominic PROPOSAL
Greenwood R KolmetzBrazilIvan Magalhaes QUALIFIED
Jeanfrancois N SaylorsFranceStephen Shaw NEGOTIATION
Alejandro P RimItalyIoni Bowcher PROPOSAL
Nicolas V BriddickBrazilAnna Fali PROPOSAL
Claire P FollerItalyAmy Elsner UNQUALIFIED
Arvin Y RimFranceXuxue Feng PROPOSAL
Leon G AlbaresRussiaXuxue Feng QUALIFIED
Izzy E PerinJapanAmy Elsner PROPOSAL
Jeanfrancois F FollerAustraliaAnna Fali PROPOSAL
Emily H AmigonBrazilAsiya Javayant PROPOSAL
Claire V MarrierGermanyOnyama Limba PROPOSAL
Izzy E RoysterGermanyAsiya Javayant UNQUALIFIED
Emily C BriddickAustraliaElwin Sharvill QUALIFIED
Morrow D BriddickSpainAnna Fali RENEWAL
Smith J MaletJapanAsiya Javayant UNQUALIFIED
Aika M GillianIndiaAnna Fali QUALIFIED
Jones X FerenczAustraliaAsiya Javayant NEGOTIATION
Tony Q GlickJapanAnna Fali RENEWAL
Octavia Q FerenczIndiaAmy Elsner PROPOSAL
Clifford B DarakjyArgentinaOnyama Limba PROPOSAL
Sinclair N PoquetteUnited KingdomAmy Elsner RENEWAL
Kaitlin Q DoeGermanyAnna Fali RENEWAL
Ricardo I VenereArgentinaBernardo Dominic QUALIFIED
Jeanfrancois L ShinkoItalyXuxue Feng UNQUALIFIED
Mayumi O PerinIndiaStephen Shaw PROPOSAL
Faith X RulapaughBrazilXuxue Feng PROPOSAL
Ivar B DarakjyFranceXuxue Feng PROPOSAL
Silvio O FollerBrazilAmy Elsner NEW
Aika B ChuiRussiaIvan Magalhaes RENEWAL
Julie C TollnerGermanyIvan Magalhaes RENEWAL
Darci N GauchoArgentinaBernardo Dominic RENEWAL
Aditya D KolmetzGermanyElwin Sharvill QUALIFIED
Antonio F AlbaresJapanAmy Elsner PROPOSAL
Tony Y CampainArgentinaAnna Fali NEW
Leon M NestleAustraliaAsiya Javayant NEGOTIATION
Julie V MaletCanadaElwin Sharvill UNQUALIFIED
Nicolas A VenereFranceAmy Elsner UNQUALIFIED
Greenwood M GlickItalyElwin Sharvill NEW
Maria D RutaGermanyIoni Bowcher NEW
Darci O PaprockiJapanIvan Magalhaes QUALIFIED
Frozen Columns
Name
Deepesh I Slusarski
Claire F Bolognia
Aditya S Amigon
Aditya K Malet
Misaki T Slusarski
Leon U Nestle
Mayumi P Ferencz
Ashley Q Poquette
David W Iturbide
Nicolas O Rim
Deepesh W Flosi
Costa C Slusarski
Chavez V Chui
Wickens R Stenseth
Greenwood J Chui
Jones S Vocelka
Emily C Albares
Maria T Morasca
Clifford C Doe
Smith Z Ruta
Arvin G Glick
Aruna G Sergi
Jones W Malet
Aditya H Paprocki
Murillo B Wieser
Mujtaba R Flosi
Maisha L Sergi
Alejandro U Ostrosky
Rodrigues F Schemmer
Aruna T Whobrey
Octavia V Malet
David Q Ruta
Leja E Gillian
Wickens X Perin
Chavez R Ostrosky
Greenwood D Paprocki
Faith G Inouye
Aditya F Tollner
Antonio N Caldarera
Faith Z Marrier
Juan M Bolognia
Rodrigues F Rulapaugh
Adams X Caldarera
Sinclair Y Caldarera
Aruna N Saylors
David I Bolognia
Aditya J Caldarera
Emily A Kolmetz
Kaitlin O Kusko
Stacey D Figeroa
IdCountryDate
1000Brazil2024-04-20
1001Russia2024-03-29
1002Australia2024-04-08
1003India2024-04-14
1004Australia2024-04-04
1005Australia2024-04-03
1006Canada2024-04-15
1007France2024-04-26
1008Canada2024-04-05
1009Canada2024-04-13
1010Japan2024-04-12
1011Japan2024-04-07
1012United Kingdom2024-04-10
1013India2024-04-17
1014Spain2024-04-06
1015Australia2024-03-29
1016Russia2024-04-07
1017Russia2024-04-08
1018Germany2024-04-05
1019Russia2024-04-20
1020Japan2024-04-02
1021Japan2024-04-18
1022Russia2024-03-31
1023Italy2024-04-10
1024Argentina2024-04-17
1025Canada2024-03-29
1026United Kingdom2024-04-04
1027Brazil2024-03-30
1028Japan2024-04-09
1029Brazil2024-03-28
1030Brazil2024-04-21
1031Brazil2024-04-22
1032France2024-04-16
1033Brazil2024-04-06
1034Australia2024-04-26
1035Russia2024-04-06
1036Canada2024-04-20
1037Japan2024-04-01
1038Japan2024-03-28
1039Italy2024-03-31
1040Spain2024-03-28
1041Canada2024-04-24
1042France2024-04-03
1043Italy2024-04-10
1044Japan2024-03-28
1045Japan2024-04-24
1046Australia2024-04-06
1047Argentina2024-04-10
1048Russia2024-04-19
1049Japan2024-04-08

On-Demand Data

NameIdCountryDate
Wickens G Caudy1000France2024-04-19
Maisha S Vocelka1001Italy2024-03-31
Isabel A Nicka1002Italy2024-04-23
Salvatore M Gillian1003Japan2024-04-26
Leja Q Gaucho1004Spain2024-04-04
Faith F Stenseth1005Canada2024-04-26
Cody S Albares1006Italy2024-04-11
Maisha F Tollner1007France2024-04-01
Rodrigues X Morasca1008Russia2024-03-30
Ashley F Morasca1009Germany2024-04-13
Johnson C Bowley1010France2024-04-11
Ashley I Malet1011France2024-04-01
Morrow A Whobrey1012France2024-04-12
Rodrigues S Chui1013Australia2024-04-07
Sinclair Z Garufi1014India2024-04-22
Ashley I Ostrosky1015France2024-04-01
Ashley M Albares1016Russia2024-04-25
Clifford L Caudy1017Germany2024-04-19
Munro H Rulapaugh1018Brazil2024-04-04
Tony W Waycott1019India2024-03-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco Z FerenczBrazilOnyama Limba NEGOTIATION
Tony I MorascaCanadaElwin Sharvill RENEWAL
Munro M StensethFranceAmy Elsner UNQUALIFIED
Jennifer W NestleBrazilXuxue Feng QUALIFIED
Alejandro W IturbideJapanXuxue Feng UNQUALIFIED
Sinclair D WaycottArgentinaXuxue Feng NEGOTIATION
Morrow X StensethArgentinaXuxue Feng NEGOTIATION
Wickens G CaldareraArgentinaElwin Sharvill UNQUALIFIED
Misaki M SergiUnited KingdomIoni Bowcher QUALIFIED
Jeanfrancois D ShinkoUnited KingdomAsiya Javayant UNQUALIFIED
Morrow X FigeroaJapanElwin Sharvill RENEWAL
Leon P MacleadJapanIvan Magalhaes UNQUALIFIED
Darci M MacleadJapanAsiya Javayant PROPOSAL
Tony I PoquetteItalyAsiya Javayant PROPOSAL
Jeanfrancois I NestleRussiaIoni Bowcher RENEWAL
Aditya B MaletBrazilStephen Shaw NEW
Cody C RoysterIndiaElwin Sharvill NEW
Francesco F MaletJapanIoni Bowcher UNQUALIFIED
Leon Y CampainArgentinaAsiya Javayant QUALIFIED
Silvio F KolmetzRussiaElwin Sharvill UNQUALIFIED
Aika D RimBrazilIvan Magalhaes PROPOSAL
Clifford F SergiItalyXuxue Feng PROPOSAL
Claire T PerinArgentinaAnna Fali PROPOSAL
Mujtaba N TollnerFranceOnyama Limba QUALIFIED
Salvatore V KuskoSpainIvan Magalhaes UNQUALIFIED
Deepesh V CampainUnited KingdomAnna Fali UNQUALIFIED
Alejandro Q VenereFranceAsiya Javayant RENEWAL
David E OstroskyGermanyIvan Magalhaes NEW
Ashley S VocelkaGermanyStephen Shaw PROPOSAL
Chavez R RoysterUnited KingdomBernardo Dominic RENEWAL
Arvin P BriddickAustraliaStephen Shaw NEW
Jennifer C ChuiIndiaStephen Shaw PROPOSAL
Ivar V TollnerCanadaStephen Shaw UNQUALIFIED
Jennifer O NestleGermanyAmy Elsner NEW
Maria A AlbaresGermanyIvan Magalhaes NEGOTIATION
Salvatore D BowleyCanadaAnna Fali UNQUALIFIED
Greenwood Z RutaRussiaXuxue Feng QUALIFIED
Julie E RimAustraliaAsiya Javayant NEGOTIATION
Aruna V MaletUnited KingdomAsiya Javayant PROPOSAL
Silvio S OstroskyArgentinaIoni Bowcher 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>