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
Wickens R OstroskyAustraliaIvan Magalhaes NEGOTIATION
Sinclair O DarakjyArgentinaStephen Shaw RENEWAL
Aika L WaycottJapanAmy Elsner NEW
Izzy Y SlusarskiCanadaElwin Sharvill NEW
Cody N ShinkoAustraliaIoni Bowcher UNQUALIFIED
Jones O IturbideUnited KingdomAnna Fali UNQUALIFIED
Nicolas W DarakjySpainAnna Fali PROPOSAL
Maria Y GlickIndiaAnna Fali UNQUALIFIED
Munro Y DoeJapanStephen Shaw PROPOSAL
Rodrigues X MorascaRussiaStephen Shaw QUALIFIED
Silvio A StockhamIndiaIoni Bowcher NEW
Aika J CaldareraSpainStephen Shaw PROPOSAL
Antonio Y FollerArgentinaStephen Shaw PROPOSAL
Ashley N KolmetzBrazilIoni Bowcher PROPOSAL
David Z ChuiAustraliaIvan Magalhaes PROPOSAL
Misaki W PerinAustraliaBernardo Dominic PROPOSAL
Jones W AmigonIndiaIoni Bowcher NEW
Chavez L GarufiGermanyAsiya Javayant NEW
Arvin W NestleUnited KingdomAnna Fali NEGOTIATION
Claire D RulapaughJapanAnna Fali PROPOSAL
Salvatore Y FollerFranceStephen Shaw PROPOSAL
Johnson Q ShinkoRussiaAnna Fali NEGOTIATION
Julie D NickaJapanAmy Elsner UNQUALIFIED
Darci E PaprockiSpainStephen Shaw PROPOSAL
Kaitlin H MarrierAustraliaAnna Fali QUALIFIED
Mayumi M GarufiIndiaBernardo Dominic NEW
Wickens T OstroskyGermanyXuxue Feng UNQUALIFIED
Arvin D VenereAustraliaIvan Magalhaes PROPOSAL
Mujtaba S ButtFranceIoni Bowcher NEW
Maria L MacleadFranceAsiya Javayant PROPOSAL
Costa W SlusarskiIndiaElwin Sharvill PROPOSAL
Jeanfrancois W PoquetteFranceXuxue Feng PROPOSAL
Alejandro J SchemmerCanadaAnna Fali UNQUALIFIED
Sinclair J FollerSpainAsiya Javayant RENEWAL
Aditya I CaldareraJapanStephen Shaw RENEWAL
David V BriddickItalyAnna Fali QUALIFIED
Silvio W StockhamSpainAnna Fali UNQUALIFIED
Jennifer C TollnerGermanyAsiya Javayant PROPOSAL
Sinclair O WaycottFranceAnna Fali QUALIFIED
Cody L DilliardRussiaElwin Sharvill NEGOTIATION
Morrow U MorascaSpainXuxue Feng QUALIFIED
Julie J GauchoUnited KingdomAmy Elsner QUALIFIED
Juan B DoeBrazilAmy Elsner RENEWAL
Alejandro A GauchoArgentinaOnyama Limba RENEWAL
Francesco T BriddickUnited KingdomAmy Elsner PROPOSAL
Cody R GillianAustraliaIoni Bowcher QUALIFIED
Clifford I AlbaresRussiaStephen Shaw UNQUALIFIED
Aika T WieserAustraliaIvan Magalhaes QUALIFIED
Jennifer G RoysterFranceElwin Sharvill PROPOSAL
Claire C GauchoRussiaElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Izzy P RoysterArgentinaAmy Elsner UNQUALIFIED
Stacey F RutaAustraliaAnna Fali QUALIFIED
Nicolas U FollerSpainIvan Magalhaes NEGOTIATION
Juan C SchemmerCanadaBernardo Dominic UNQUALIFIED
Aditya P FlosiGermanyAsiya Javayant RENEWAL
Munro E GillianUnited KingdomIvan Magalhaes UNQUALIFIED
Emily K MaletSpainIoni Bowcher RENEWAL
Wickens Z VocelkaUnited KingdomAsiya Javayant RENEWAL
Octavia U OstroskyJapanOnyama Limba PROPOSAL
Salvatore F OldroydUnited KingdomXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams C WhobreyRussia2024-04-03Commercial Press NEGOTIATION20Amy Elsner
1001Wickens Z MaletUnited Kingdom2024-04-30Dorl, James J Esq PROPOSAL63Asiya Javayant
1002Aika F CaudyArgentina2024-04-22Buckley Miller Wright NEGOTIATION61Asiya Javayant
1003Julie G RulapaughCanada2024-04-02Rangoni Of Florence RENEWAL53Xuxue Feng
1004Antonio V BriddickFrance2024-04-24Rousseaux, Michael Esq RENEWAL33Asiya Javayant
1005Kadeem S ChuiRussia2024-04-27Dorl, James J Esq QUALIFIED3Amy Elsner
1006Antonio G OstroskyArgentina2024-04-15Morlong Associates RENEWAL31Ivan Magalhaes
1007Morrow A BologniaFrance2024-04-06Printing Dimensions PROPOSAL35Anna Fali
1008Misaki I RimJapan2024-04-04Commercial Press PROPOSAL50Anna Fali
1009James J SaylorsFrance2024-04-22King, Christopher A Esq NEW18Xuxue Feng
1010Costa V KolmetzRussia2024-04-28Printing Dimensions NEW10Ioni Bowcher
1011Jefferson N CaudyRussia2024-04-25Feltz Printing Service RENEWAL78Onyama Limba
1012David E FollerCanada2024-04-16Morlong Associates PROPOSAL26Xuxue Feng
1013Maisha A KuskoBrazil2024-04-11Commercial Press RENEWAL69Ivan Magalhaes
1014David K GlickBrazil2024-04-13Chapman, Ross E Esq QUALIFIED54Ivan Magalhaes
1015Mayumi F AlbaresItaly2024-04-27Feiner Bros UNQUALIFIED46Ioni Bowcher
1016Francesco X FollerIndia2024-04-02Chemel, James L Cpa QUALIFIED84Asiya Javayant
1017Ivar Q FerenczFrance2024-04-20Rousseaux, Michael Esq UNQUALIFIED30Xuxue Feng
1018Maisha W BowleySpain2024-04-17Chanay, Jeffrey A Esq PROPOSAL75Amy Elsner
1019Darci L ButtItaly2024-04-23Printing Dimensions NEGOTIATION60Onyama Limba
1020Leja V StensethGermany2024-04-03Truhlar And Truhlar Attys RENEWAL62Ioni Bowcher
1021Costa W OstroskyArgentina2024-04-28Chanay, Jeffrey A Esq RENEWAL7Xuxue Feng
1022Silvio E OldroydJapan2024-04-02Chemel, James L Cpa NEW63Bernardo Dominic
1023Silvio J GauchoGermany2024-04-09Commercial Press QUALIFIED58Asiya Javayant
1024Faith J FollerAustralia2024-04-21Commercial Press NEGOTIATION40Bernardo Dominic
1025Munro I CaudyJapan2024-05-01Dorl, James J Esq UNQUALIFIED85Onyama Limba
1026Chavez O DilliardUnited Kingdom2024-04-12Morlong Associates RENEWAL57Asiya Javayant
1027Maria N MarrierSpain2024-04-10Printing Dimensions PROPOSAL53Ivan Magalhaes
1028Claire I RoysterUnited Kingdom2024-04-30Feltz Printing Service PROPOSAL17Ivan Magalhaes
1029Greenwood Y CaudySpain2024-04-14Feltz Printing Service NEW20Asiya Javayant
1030Silvio Z FlosiIndia2024-04-23Printing Dimensions PROPOSAL10Stephen Shaw
1031Salvatore R StockhamSpain2024-04-26Benton, John B Jr PROPOSAL86Onyama Limba
1032Isabel Z DoeJapan2024-04-02Feltz Printing Service NEW45Ivan Magalhaes
1033Izzy X VenereItaly2024-04-17Feiner Bros NEGOTIATION98Ivan Magalhaes
1034Aika L GarufiUnited Kingdom2024-04-21Rangoni Of Florence RENEWAL27Onyama Limba
1035Octavia O ChuiIndia2024-04-21Commercial Press QUALIFIED29Elwin Sharvill
1036Greenwood U StensethItaly2024-04-15Feltz Printing Service NEGOTIATION20Onyama Limba
1037Adams I SlusarskiJapan2024-04-26Morlong Associates PROPOSAL71Amy Elsner
1038Silvio L RulapaughSpain2024-04-29Rangoni Of Florence RENEWAL55Anna Fali
1039Francesco S FlosiBrazil2024-04-06Rangoni Of Florence PROPOSAL17Ioni Bowcher
1040Smith Y VocelkaAustralia2024-04-23Chemel, James L Cpa PROPOSAL33Xuxue Feng
1041Chavez X WieserCanada2024-04-24Rangoni Of Florence PROPOSAL58Xuxue Feng
1042Leja P VocelkaGermany2024-04-12Morlong Associates RENEWAL5Anna Fali
1043Wickens P MorascaJapan2024-04-08Chapman, Ross E Esq QUALIFIED7Onyama Limba
1044Julie H DarakjyAustralia2024-04-26Buckley Miller Wright RENEWAL25Anna Fali
1045Deepesh S PoquetteSpain2024-05-01Rangoni Of Florence QUALIFIED38Onyama Limba
1046Chavez W BologniaRussia2024-04-14Rangoni Of Florence PROPOSAL73Ivan Magalhaes
1047Octavia G RutaRussia2024-04-02Feiner Bros UNQUALIFIED46Anna Fali
1048Aruna E WieserGermany2024-04-13Truhlar And Truhlar Attys PROPOSAL73Stephen Shaw
1049Murillo Y DoeRussia2024-04-11Chapman, Ross E Esq NEGOTIATION48Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Arvin E ButtGermanyAnna Fali RENEWAL
Mujtaba M VocelkaUnited KingdomIvan Magalhaes PROPOSAL
Mayumi W FigeroaUnited KingdomOnyama Limba NEW
Alejandro T VenereRussiaElwin Sharvill NEGOTIATION
Ivar A PoquetteIndiaAmy Elsner NEGOTIATION
Maisha A CampainCanadaBernardo Dominic RENEWAL
Kadeem P RutaSpainElwin Sharvill UNQUALIFIED
Maria V FlosiItalyElwin Sharvill QUALIFIED
Jefferson X GlickFranceAnna Fali QUALIFIED
Kaitlin B SergiAustraliaOnyama Limba NEW
Maisha W SaylorsFranceAmy Elsner RENEWAL
Nicolas U AlbaresRussiaElwin Sharvill NEGOTIATION
Stacey Y ShinkoAustraliaElwin Sharvill RENEWAL
Julie F OldroydArgentinaIvan Magalhaes PROPOSAL
Stacey Q NickaRussiaIvan Magalhaes RENEWAL
Deepesh U VocelkaUnited KingdomElwin Sharvill PROPOSAL
Munro S FerenczArgentinaAmy Elsner NEW
Greenwood F GlickRussiaAmy Elsner RENEWAL
James P SergiSpainXuxue Feng PROPOSAL
Maria X SchemmerCanadaElwin Sharvill QUALIFIED
Claire P PaprockiFranceIoni Bowcher UNQUALIFIED
Arvin K ChuiFranceAnna Fali PROPOSAL
Jennifer X GlickGermanyXuxue Feng UNQUALIFIED
Kadeem J KuskoRussiaOnyama Limba NEW
Emily D KuskoGermanyIoni Bowcher NEGOTIATION
Aditya B BologniaFranceXuxue Feng NEGOTIATION
Rodrigues L DoeBrazilElwin Sharvill UNQUALIFIED
Aruna L RoysterArgentinaAnna Fali RENEWAL
Jeanfrancois A SlusarskiSpainStephen Shaw RENEWAL
Alejandro M AlbaresCanadaXuxue Feng NEW
Cody T GillianRussiaStephen Shaw NEGOTIATION
Darci F PerinRussiaElwin Sharvill RENEWAL
Misaki G BologniaFranceAmy Elsner UNQUALIFIED
Mayumi Y BriddickArgentinaXuxue Feng QUALIFIED
Ashley G SaylorsUnited KingdomBernardo Dominic UNQUALIFIED
James X OstroskyRussiaAsiya Javayant NEW
Kaitlin O DoeBrazilAnna Fali UNQUALIFIED
Aruna G BriddickArgentinaAsiya Javayant QUALIFIED
Maria Q ButtAustraliaAsiya Javayant NEGOTIATION
Aruna M VenereArgentinaAnna Fali NEW
Izzy W GillianSpainAmy Elsner NEW
Tony E KolmetzJapanIoni Bowcher NEGOTIATION
Jones B SergiJapanElwin Sharvill UNQUALIFIED
Munro U DilliardJapanStephen Shaw QUALIFIED
Nicolas V FerenczUnited KingdomOnyama Limba UNQUALIFIED
Leon Z OstroskyBrazilOnyama Limba NEW
Jones D DoeArgentinaElwin Sharvill PROPOSAL
Jefferson J PoquetteIndiaStephen Shaw PROPOSAL
Aruna B BriddickJapanIvan Magalhaes RENEWAL
Nicolas J WaycottAustraliaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Stacey L Nicka
Faith T Perin
Leon U Inouye
Johnson S Campain
Arvin I Briddick
Sinclair D Slusarski
Mayumi Z Figeroa
Mujtaba Q Gillian
Emily T Caudy
Leon G Ferencz
Leja E Stenseth
Silvio E Vocelka
Misaki M Schemmer
David C Briddick
Kaitlin P Paprocki
Aika D Oldroyd
Jones L Chui
Emily V Poquette
Silvio D Schemmer
Greenwood Z Royster
Izzy Q Ruta
Kaitlin U Caldarera
James U Tollner
Greenwood M Doe
Sinclair H Malet
Kadeem I Campain
Silvio J Royster
Adams T Oldroyd
Maisha N Caudy
Maisha R Caldarera
Rodrigues K Sergi
Ricardo G Whobrey
Murillo O Figeroa
Darci L Flosi
Jeanfrancois G Morasca
Leon N Morasca
Morrow Q Stenseth
Ashley B Bowley
Tony W Dilliard
Jennifer K Caudy
Aditya Q Paprocki
Mujtaba V Venere
Emily S Campain
Tony Z Glick
Kadeem N Caudy
Sinclair P Flosi
Adams Y Kusko
Jeanfrancois I Shinko
Deepesh E Nicka
Francesco D Darakjy
IdCountryDate
1000Canada2024-04-04
1001Canada2024-04-06
1002Japan2024-04-20
1003India2024-04-21
1004Spain2024-04-06
1005Italy2024-04-22
1006Russia2024-04-03
1007Spain2024-04-14
1008Russia2024-04-12
1009Brazil2024-04-25
1010United Kingdom2024-04-11
1011Spain2024-04-09
1012India2024-04-07
1013Japan2024-04-07
1014Russia2024-04-28
1015Italy2024-04-11
1016Spain2024-04-06
1017Canada2024-04-29
1018Spain2024-04-12
1019Argentina2024-04-28
1020Brazil2024-04-24
1021Canada2024-04-22
1022Italy2024-04-29
1023Germany2024-04-06
1024Brazil2024-04-13
1025United Kingdom2024-04-21
1026Germany2024-04-22
1027Spain2024-04-20
1028United Kingdom2024-04-27
1029Brazil2024-04-08
1030Canada2024-04-29
1031India2024-04-19
1032Germany2024-04-10
1033Brazil2024-04-17
1034Germany2024-04-13
1035Spain2024-04-06
1036Spain2024-04-05
1037Australia2024-04-20
1038France2024-04-25
1039Japan2024-04-12
1040Australia2024-04-29
1041Spain2024-04-28
1042Argentina2024-04-09
1043Australia2024-04-26
1044Canada2024-04-16
1045Russia2024-04-29
1046Germany2024-04-24
1047Brazil2024-04-17
1048Brazil2024-04-16
1049Canada2024-04-10

On-Demand Data

NameIdCountryDate
Juan R Chui1000United Kingdom2024-04-04
Julie R Chui1001France2024-04-24
Tony Q Venere1002Brazil2024-04-26
Wickens I Figeroa1003Japan2024-04-06
Mujtaba N Briddick1004Russia2024-04-14
Johnson C Dilliard1005Russia2024-04-03
Smith Q Bowley1006India2024-04-04
Salvatore C Caudy1007Germany2024-04-15
Darci Q Briddick1008France2024-04-22
Octavia K Tollner1009Japan2024-04-21
Izzy C Albares1010Argentina2024-04-18
Arvin S Darakjy1011Italy2024-04-05
Stacey P Whobrey1012France2024-04-06
Leon Y Rim1013Brazil2024-04-17
Morrow R Flosi1014Japan2024-04-13
Morrow P Kolmetz1015Spain2024-04-30
Clifford E Chui1016Japan2024-04-26
Kaitlin J Paprocki1017Canada2024-04-03
Sinclair X Royster1018India2024-04-07
Wickens K Chui1019Germany2024-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez G GarufiSpainIoni Bowcher PROPOSAL
Jennifer O PoquetteRussiaElwin Sharvill NEW
Murillo J GauchoBrazilIvan Magalhaes PROPOSAL
Ricardo C RutaCanadaIvan Magalhaes UNQUALIFIED
Sinclair R SaylorsArgentinaIvan Magalhaes NEW
Salvatore N PoquetteGermanyIvan Magalhaes PROPOSAL
Faith M PaprockiCanadaAmy Elsner RENEWAL
Adams J InouyeGermanyBernardo Dominic QUALIFIED
Antonio W OldroydCanadaBernardo Dominic PROPOSAL
Johnson K SlusarskiGermanyXuxue Feng RENEWAL
Cody L BowleyAustraliaElwin Sharvill UNQUALIFIED
Johnson A FollerSpainElwin Sharvill QUALIFIED
Aika O RoysterIndiaBernardo Dominic RENEWAL
Rodrigues Q PerinRussiaAmy Elsner RENEWAL
Francesco R IturbideAustraliaOnyama Limba PROPOSAL
Jefferson Z BowleyUnited KingdomAmy Elsner UNQUALIFIED
Francesco Z GlickJapanOnyama Limba QUALIFIED
Kaitlin Z AmigonItalyBernardo Dominic NEW
Leon D RulapaughCanadaAmy Elsner NEW
Emily D GarufiAustraliaStephen Shaw RENEWAL
Greenwood S BowleyRussiaAmy Elsner PROPOSAL
Faith B MorascaUnited KingdomStephen Shaw UNQUALIFIED
Izzy Z BowleyCanadaBernardo Dominic QUALIFIED
Chavez D DilliardCanadaAmy Elsner NEW
Antonio T WieserCanadaXuxue Feng RENEWAL
Leon T CampainArgentinaIvan Magalhaes NEW
Jefferson A NickaCanadaBernardo Dominic NEGOTIATION
Misaki A BriddickItalyIvan Magalhaes NEGOTIATION
Jeanfrancois D MacleadSpainElwin Sharvill RENEWAL
Clifford K WhobreyGermanyIoni Bowcher NEGOTIATION
Silvio B BriddickUnited KingdomAsiya Javayant RENEWAL
Jeanfrancois A RoysterIndiaIoni Bowcher RENEWAL
Cody Q ButtCanadaAnna Fali PROPOSAL
Octavia V OldroydAustraliaXuxue Feng UNQUALIFIED
Izzy B CaudyRussiaAmy Elsner RENEWAL
David I RimAustraliaOnyama Limba NEW
Rodrigues B ButtItalyElwin Sharvill PROPOSAL
Ivar S ButtSpainOnyama Limba PROPOSAL
Adams K SergiBrazilIoni Bowcher PROPOSAL
Johnson O GlickAustraliaElwin Sharvill RENEWAL

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