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
Faith F GarufiGermanyElwin Sharvill NEGOTIATION
Rodrigues Y WieserGermanyIoni Bowcher UNQUALIFIED
Leja H MarrierAustraliaIvan Magalhaes RENEWAL
Mujtaba O FlosiGermanyAsiya Javayant NEW
Smith Y FerenczAustraliaIvan Magalhaes PROPOSAL
David D WhobreyArgentinaBernardo Dominic NEW
Murillo B BriddickJapanBernardo Dominic NEGOTIATION
Maisha P StockhamJapanOnyama Limba PROPOSAL
Nicolas E NickaJapanAnna Fali UNQUALIFIED
Izzy J ChuiAustraliaOnyama Limba RENEWAL
Aika A NestleSpainAsiya Javayant QUALIFIED
James C WaycottJapanAnna Fali UNQUALIFIED
Juan B RimRussiaOnyama Limba UNQUALIFIED
Ivar D StockhamIndiaBernardo Dominic QUALIFIED
Jones F WaycottArgentinaAnna Fali NEGOTIATION
Adams Y BriddickAustraliaAmy Elsner PROPOSAL
Leja F SaylorsArgentinaBernardo Dominic QUALIFIED
Claire S FollerCanadaIoni Bowcher UNQUALIFIED
Kaitlin J WaycottRussiaAsiya Javayant RENEWAL
Munro X WhobreyBrazilIoni Bowcher QUALIFIED
Kadeem H MorascaBrazilBernardo Dominic NEGOTIATION
Francesco V KolmetzBrazilAsiya Javayant PROPOSAL
Ricardo C WhobreyBrazilStephen Shaw QUALIFIED
Cody V NestleAustraliaAnna Fali UNQUALIFIED
Maria V MorascaCanadaAsiya Javayant NEW
Munro W InouyeCanadaBernardo Dominic PROPOSAL
Jones V CaudyCanadaBernardo Dominic PROPOSAL
Nicolas Q StensethArgentinaIoni Bowcher NEGOTIATION
Rodrigues T FerenczBrazilIvan Magalhaes NEW
Mayumi N WieserFranceElwin Sharvill RENEWAL
Chavez A WieserArgentinaIvan Magalhaes RENEWAL
Aditya Q MaletRussiaIvan Magalhaes NEW
Jeanfrancois V NickaGermanyBernardo Dominic NEGOTIATION
Rodrigues R VenereFranceIvan Magalhaes RENEWAL
Ashley X RimRussiaAsiya Javayant QUALIFIED
Salvatore X FlosiBrazilIoni Bowcher UNQUALIFIED
Deepesh A AlbaresSpainElwin Sharvill PROPOSAL
Faith J DilliardArgentinaIoni Bowcher PROPOSAL
Murillo K OstroskyCanadaOnyama Limba RENEWAL
Mujtaba G MaletAustraliaXuxue Feng RENEWAL
Mayumi J DarakjyBrazilBernardo Dominic RENEWAL
Johnson G IturbideAustraliaElwin Sharvill NEGOTIATION
Greenwood T GarufiJapanIvan Magalhaes NEW
Nicolas E CampainItalyIoni Bowcher UNQUALIFIED
Octavia S NickaSpainStephen Shaw QUALIFIED
Silvio D OldroydIndiaIoni Bowcher NEGOTIATION
Juan L RutaAustraliaStephen Shaw NEW
Leja V KolmetzSpainXuxue Feng QUALIFIED
Ashley K AlbaresJapanXuxue Feng QUALIFIED
Izzy G DilliardSpainIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Arvin C ButtAustraliaOnyama Limba NEW
Ivar L TollnerGermanyXuxue Feng UNQUALIFIED
Ashley V StensethItalyIoni Bowcher PROPOSAL
Costa J FerenczAustraliaIvan Magalhaes RENEWAL
Isabel P MorascaUnited KingdomIoni Bowcher NEW
Chavez F PoquetteJapanBernardo Dominic PROPOSAL
Cody E OldroydArgentinaBernardo Dominic UNQUALIFIED
Wickens S OstroskySpainXuxue Feng NEW
Jeanfrancois L SlusarskiIndiaElwin Sharvill RENEWAL
Claire I AlbaresArgentinaStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel Z GarufiItaly2024-04-13Commercial Press RENEWAL82Bernardo Dominic
1001Clifford F FollerGermany2024-04-23Chemel, James L Cpa QUALIFIED94Onyama Limba
1002Munro F FigeroaSpain2024-04-08Rangoni Of Florence RENEWAL88Amy Elsner
1003Wickens L PerinArgentina2024-04-29Rousseaux, Michael Esq RENEWAL40Amy Elsner
1004Maria O VocelkaRussia2024-04-07Commercial Press RENEWAL20Bernardo Dominic
1005Costa M CaudySpain2024-04-24Printing Dimensions PROPOSAL37Elwin Sharvill
1006Adams C WhobreyItaly2024-04-16Morlong Associates PROPOSAL56Ioni Bowcher
1007Claire R ButtArgentina2024-04-05Dorl, James J Esq UNQUALIFIED72Anna Fali
1008Salvatore X AlbaresGermany2024-04-19King, Christopher A Esq UNQUALIFIED42Ioni Bowcher
1009Rodrigues H NickaGermany2024-04-05Feiner Bros NEW68Xuxue Feng
1010Johnson J ButtIndia2024-04-28King, Christopher A Esq NEGOTIATION45Stephen Shaw
1011Juan S AlbaresRussia2024-04-20Chanay, Jeffrey A Esq QUALIFIED19Stephen Shaw
1012Octavia W CampainIndia2024-04-16Morlong Associates QUALIFIED30Ivan Magalhaes
1013Arvin Z MaletGermany2024-04-14Chapman, Ross E Esq UNQUALIFIED6Stephen Shaw
1014Francesco K InouyeAustralia2024-04-30Dorl, James J Esq QUALIFIED3Ioni Bowcher
1015Misaki Q GarufiIndia2024-04-30Rangoni Of Florence QUALIFIED8Bernardo Dominic
1016Jeanfrancois S DarakjyItaly2024-04-02Rousseaux, Michael Esq UNQUALIFIED4Onyama Limba
1017Johnson Z WieserFrance2024-04-04Feiner Bros QUALIFIED79Amy Elsner
1018Arvin F KuskoGermany2024-04-05Morlong Associates NEGOTIATION10Xuxue Feng
1019Aditya X BologniaAustralia2024-04-14Truhlar And Truhlar Attys NEGOTIATION99Xuxue Feng
1020Darci G AmigonBrazil2024-04-15Feiner Bros QUALIFIED70Stephen Shaw
1021Greenwood R ShinkoCanada2024-04-27Chapman, Ross E Esq UNQUALIFIED26Xuxue Feng
1022Juan R AlbaresJapan2024-04-26Rangoni Of Florence UNQUALIFIED16Ivan Magalhaes
1023Ivar U RoysterIndia2024-04-09Feiner Bros NEGOTIATION24Asiya Javayant
1024Tony G AlbaresBrazil2024-04-12Morlong Associates NEW45Amy Elsner
1025Izzy D AmigonFrance2024-04-05Rousseaux, Michael Esq UNQUALIFIED52Asiya Javayant
1026Wickens M KuskoCanada2024-04-14Benton, John B Jr NEGOTIATION50Asiya Javayant
1027Deepesh E FerenczCanada2024-04-12Printing Dimensions NEW2Bernardo Dominic
1028Ashley R AlbaresItaly2024-04-12Feiner Bros NEW95Stephen Shaw
1029Greenwood N VocelkaCanada2024-04-11Rousseaux, Michael Esq RENEWAL52Ioni Bowcher
1030Tony M AmigonIndia2024-04-17Chanay, Jeffrey A Esq PROPOSAL66Asiya Javayant
1031Ivar E FollerArgentina2024-04-02Feltz Printing Service UNQUALIFIED7Elwin Sharvill
1032Jones S BriddickArgentina2024-04-01King, Christopher A Esq PROPOSAL4Ioni Bowcher
1033Maisha X NestleIndia2024-04-09Feiner Bros QUALIFIED47Xuxue Feng
1034Faith Q MorascaArgentina2024-04-12Rangoni Of Florence NEGOTIATION36Elwin Sharvill
1035Wickens V WaycottSpain2024-04-06Feltz Printing Service NEW2Bernardo Dominic
1036Maisha X StockhamSpain2024-04-05Feltz Printing Service RENEWAL78Elwin Sharvill
1037James R IturbideJapan2024-04-11Feiner Bros PROPOSAL67Amy Elsner
1038Deepesh U CampainArgentina2024-04-07Chemel, James L Cpa QUALIFIED95Bernardo Dominic
1039Leja M WieserRussia2024-04-02Morlong Associates RENEWAL91Onyama Limba
1040Antonio G GlickRussia2024-04-19Dorl, James J Esq RENEWAL93Amy Elsner
1041Leon G SchemmerSpain2024-04-21Dorl, James J Esq PROPOSAL43Anna Fali
1042Cody G StockhamJapan2024-04-18Feiner Bros QUALIFIED1Ivan Magalhaes
1043Chavez M NestleItaly2024-04-10Buckley Miller Wright RENEWAL75Onyama Limba
1044Julie J SlusarskiSpain2024-04-25Rousseaux, Michael Esq QUALIFIED79Amy Elsner
1045Jennifer X WhobreyUnited Kingdom2024-04-08Rousseaux, Michael Esq PROPOSAL94Stephen Shaw
1046Leon H SaylorsGermany2024-04-02Dorl, James J Esq NEGOTIATION90Xuxue Feng
1047Cody R FerenczCanada2024-04-30Rangoni Of Florence RENEWAL25Bernardo Dominic
1048Costa D BowleyUnited Kingdom2024-04-16King, Christopher A Esq RENEWAL50Onyama Limba
1049Izzy B KolmetzCanada2024-04-16Dorl, James J Esq RENEWAL24Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Emily M MaletArgentinaOnyama Limba PROPOSAL
James L PaprockiIndiaElwin Sharvill RENEWAL
Silvio V GarufiGermanyXuxue Feng RENEWAL
Aruna Y ChuiGermanyXuxue Feng NEGOTIATION
Octavia M CaudyJapanIoni Bowcher NEW
Julie Q VenereJapanXuxue Feng RENEWAL
Ashley H NickaRussiaXuxue Feng PROPOSAL
Ricardo X OstroskyCanadaAmy Elsner NEW
Kaitlin S MacleadUnited KingdomAmy Elsner QUALIFIED
Cody G DilliardCanadaAnna Fali RENEWAL
Arvin V PoquetteJapanOnyama Limba RENEWAL
Juan B KolmetzArgentinaAmy Elsner QUALIFIED
Aditya S OldroydCanadaAnna Fali NEW
Sinclair Y SlusarskiJapanIoni Bowcher RENEWAL
Wickens R TollnerItalyIoni Bowcher RENEWAL
Adams F RulapaughFranceXuxue Feng NEW
Mayumi R VocelkaSpainXuxue Feng NEGOTIATION
Smith R PaprockiIndiaStephen Shaw QUALIFIED
Ricardo W DilliardRussiaAnna Fali UNQUALIFIED
Antonio R WhobreyJapanBernardo Dominic QUALIFIED
Faith L ButtBrazilElwin Sharvill RENEWAL
Ivar J VocelkaBrazilOnyama Limba QUALIFIED
Ashley H BologniaJapanAmy Elsner PROPOSAL
Faith Q CampainUnited KingdomAmy Elsner NEGOTIATION
Murillo A RulapaughGermanyBernardo Dominic NEW
Aika I WhobreyItalyXuxue Feng NEGOTIATION
Octavia Y FlosiGermanyStephen Shaw PROPOSAL
Stacey H PoquetteBrazilAnna Fali NEGOTIATION
Claire W InouyeFranceOnyama Limba NEGOTIATION
Wickens H AmigonBrazilIoni Bowcher PROPOSAL
Sinclair V CaldareraArgentinaXuxue Feng NEGOTIATION
Costa P GauchoItalyElwin Sharvill UNQUALIFIED
Wickens T ChuiArgentinaAsiya Javayant QUALIFIED
Stacey A SaylorsItalyOnyama Limba PROPOSAL
Tony W KolmetzFranceElwin Sharvill UNQUALIFIED
Costa N GlickCanadaAsiya Javayant QUALIFIED
Mujtaba J RoysterSpainAmy Elsner PROPOSAL
Wickens Z DoeItalyOnyama Limba NEW
Maria S WaycottIndiaElwin Sharvill QUALIFIED
Juan V ShinkoArgentinaOnyama Limba PROPOSAL
Adams G NickaIndiaBernardo Dominic QUALIFIED
Costa I PoquetteJapanStephen Shaw NEW
Aika Q RulapaughRussiaOnyama Limba UNQUALIFIED
Munro N BowleyGermanyBernardo Dominic QUALIFIED
Morrow H SaylorsSpainOnyama Limba NEW
Kaitlin U CaudyGermanyAnna Fali RENEWAL
Rodrigues X ChuiUnited KingdomAsiya Javayant PROPOSAL
Mujtaba D CampainJapanAmy Elsner RENEWAL
Chavez V TollnerIndiaAsiya Javayant NEGOTIATION
Nicolas P GlickRussiaIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Kaitlin X Sergi
Aika S Slusarski
Salvatore J Amigon
Leon Q Albares
Darci J Sergi
Leja I Bowley
Leja G Bowley
Jones K Garufi
Adams T Gillian
Adams Y Royster
Emily M Gaucho
James V Nestle
Silvio V Rim
Claire H Caldarera
Izzy B Kusko
Murillo E Malet
Morrow W Morasca
Mayumi H Kusko
Salvatore M Maclead
Smith M Kolmetz
Jones Y Butt
Nicolas L Poquette
Julie G Dilliard
Nicolas U Royster
Silvio Q Saylors
Kaitlin T Rim
Ashley W Vocelka
Jeanfrancois T Royster
Wickens G Schemmer
Adams D Wieser
Sinclair P Malet
Julie R Iturbide
Octavia M Malet
Murillo N Kolmetz
Misaki D Stockham
Mujtaba F Sergi
Antonio U Marrier
Adams E Stockham
Julie W Malet
Emily L Ostrosky
Kaitlin V Schemmer
Antonio F Nicka
Stacey J Marrier
Deepesh A Rim
Greenwood I Darakjy
Aika M Ostrosky
Emily Q Ferencz
Leja S Foller
Nicolas E Saylors
Ivar O Rulapaugh
IdCountryDate
1000United Kingdom2024-04-08
1001Brazil2024-04-28
1002Brazil2024-04-03
1003Brazil2024-04-14
1004Russia2024-04-25
1005Japan2024-04-27
1006United Kingdom2024-04-09
1007Australia2024-04-10
1008Italy2024-04-15
1009Spain2024-04-11
1010Russia2024-04-29
1011India2024-04-29
1012Russia2024-04-06
1013United Kingdom2024-04-17
1014Australia2024-04-27
1015Italy2024-04-08
1016Argentina2024-04-14
1017Argentina2024-04-07
1018Spain2024-04-20
1019France2024-04-20
1020Japan2024-04-03
1021Australia2024-04-17
1022Japan2024-04-21
1023France2024-04-21
1024Japan2024-04-15
1025United Kingdom2024-04-05
1026India2024-04-19
1027Italy2024-04-23
1028Argentina2024-04-12
1029India2024-04-20
1030Brazil2024-04-09
1031Russia2024-04-24
1032Italy2024-04-25
1033Spain2024-04-19
1034Australia2024-04-25
1035Brazil2024-04-10
1036United Kingdom2024-04-24
1037Argentina2024-04-16
1038United Kingdom2024-04-03
1039France2024-04-11
1040France2024-04-08
1041Spain2024-04-18
1042Canada2024-04-21
1043Japan2024-04-16
1044Brazil2024-04-01
1045Brazil2024-04-13
1046France2024-04-05
1047Russia2024-04-12
1048Argentina2024-04-04
1049Argentina2024-04-22

On-Demand Data

NameIdCountryDate
Wickens E Dilliard1000Japan2024-04-11
Julie P Figeroa1001Brazil2024-04-15
Chavez W Venere1002Russia2024-04-24
Maria L Albares1003Japan2024-04-11
Morrow M Poquette1004Germany2024-04-01
Francesco Y Malet1005India2024-04-03
Chavez I Nicka1006Italy2024-04-12
Aruna K Flosi1007Australia2024-04-24
Emily L Morasca1008Japan2024-04-08
Costa W Albares1009Canada2024-04-30
Misaki A Whobrey1010Germany2024-04-27
Morrow Y Campain1011Australia2024-04-23
Aika L Stockham1012Brazil2024-04-19
Greenwood E Sergi1013Russia2024-04-20
Octavia M Perin1014France2024-04-07
Mayumi T Gaucho1015Australia2024-04-17
Deepesh K Tollner1016India2024-04-16
James Y Stockham1017Canada2024-04-08
Jeanfrancois H Flosi1018Germany2024-04-29
Morrow H Malet1019Russia2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin Q FlosiItalyStephen Shaw NEW
David T MarrierFranceStephen Shaw RENEWAL
Morrow F DilliardRussiaIvan Magalhaes NEGOTIATION
Ivar D BriddickIndiaAsiya Javayant PROPOSAL
Darci I GauchoAustraliaIvan Magalhaes NEW
Costa Z OstroskyJapanAmy Elsner NEW
Juan N GauchoCanadaIoni Bowcher UNQUALIFIED
Aika F CampainAustraliaIoni Bowcher NEW
Rodrigues N RoysterGermanyAnna Fali PROPOSAL
Antonio F MaletFranceIvan Magalhaes RENEWAL
Costa A MaletCanadaXuxue Feng PROPOSAL
Isabel S WaycottIndiaIvan Magalhaes NEW
Tony L FigeroaArgentinaAmy Elsner UNQUALIFIED
James J FerenczSpainAmy Elsner PROPOSAL
Ivar T WaycottRussiaElwin Sharvill RENEWAL
Johnson J ChuiJapanAmy Elsner PROPOSAL
Kaitlin H WieserArgentinaIvan Magalhaes NEW
Kadeem F SlusarskiUnited KingdomIvan Magalhaes NEGOTIATION
Jeanfrancois F StockhamGermanyStephen Shaw NEGOTIATION
Salvatore V WieserJapanXuxue Feng QUALIFIED
Julie S KuskoAustraliaIvan Magalhaes NEGOTIATION
Jefferson S StensethRussiaStephen Shaw RENEWAL
Aditya G BowleyIndiaStephen Shaw RENEWAL
Julie J StockhamJapanStephen Shaw NEGOTIATION
Morrow J BologniaItalyAsiya Javayant QUALIFIED
Clifford M StockhamUnited KingdomBernardo Dominic PROPOSAL
Misaki U OldroydSpainBernardo Dominic RENEWAL
Ivar U BowleyCanadaElwin Sharvill UNQUALIFIED
Chavez C StensethFranceAmy Elsner PROPOSAL
Ricardo T FerenczGermanyAnna Fali QUALIFIED
Chavez U DoeItalyAsiya Javayant PROPOSAL
Jennifer Z MacleadAustraliaElwin Sharvill PROPOSAL
Costa A FlosiArgentinaAmy Elsner NEW
Leja N CaldareraFranceIoni Bowcher NEW
Ivar Z RoysterSpainIvan Magalhaes NEW
Kaitlin N CaudyJapanAmy Elsner UNQUALIFIED
Aruna S VocelkaFranceIvan Magalhaes RENEWAL
Jennifer D SlusarskiIndiaAmy Elsner RENEWAL
Costa R FigeroaRussiaAsiya Javayant NEGOTIATION
Salvatore I NickaCanadaXuxue Feng QUALIFIED

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