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
Izzy N GauchoFranceIvan Magalhaes QUALIFIED
Jefferson B MaletAustraliaIvan Magalhaes UNQUALIFIED
Isabel I CampainItalyOnyama Limba QUALIFIED
Izzy A GarufiBrazilStephen Shaw UNQUALIFIED
Greenwood L GarufiFranceElwin Sharvill RENEWAL
Ricardo B GillianItalyElwin Sharvill NEW
Jones G KolmetzUnited KingdomAsiya Javayant NEW
Faith T SergiFranceAnna Fali NEW
David O WaycottArgentinaBernardo Dominic RENEWAL
Leja P RoysterJapanXuxue Feng NEW
Aruna Y KuskoSpainAsiya Javayant RENEWAL
Jones Q SaylorsJapanBernardo Dominic QUALIFIED
Ricardo V BologniaCanadaOnyama Limba PROPOSAL
Leon X FollerSpainStephen Shaw NEGOTIATION
Ricardo K VenereIndiaAsiya Javayant NEGOTIATION
David T BriddickJapanAnna Fali QUALIFIED
Tony T BriddickArgentinaXuxue Feng NEGOTIATION
Sinclair B WaycottFranceIoni Bowcher NEGOTIATION
Alejandro Y PerinFranceAmy Elsner NEW
Aika P MorascaAustraliaIoni Bowcher RENEWAL
Murillo V FollerSpainAmy Elsner NEW
Emily I GlickJapanIoni Bowcher NEW
Salvatore F MaletArgentinaBernardo Dominic QUALIFIED
Alejandro P OstroskyFranceStephen Shaw PROPOSAL
Nicolas G FollerBrazilAmy Elsner RENEWAL
Jefferson J PerinGermanyXuxue Feng NEW
Alejandro P GarufiGermanyElwin Sharvill NEGOTIATION
Claire E RoysterArgentinaElwin Sharvill RENEWAL
Deepesh F IturbideJapanIvan Magalhaes QUALIFIED
Octavia S PoquetteArgentinaIvan Magalhaes RENEWAL
Francesco W VocelkaBrazilIoni Bowcher NEW
Jennifer H KolmetzAustraliaAmy Elsner NEW
Murillo I IturbideRussiaElwin Sharvill PROPOSAL
James B MaletJapanAmy Elsner UNQUALIFIED
Deepesh C ButtArgentinaAmy Elsner RENEWAL
Ivar O GillianSpainStephen Shaw NEW
Aika E BologniaFranceIvan Magalhaes UNQUALIFIED
Clifford V PoquetteCanadaElwin Sharvill NEW
Maisha A VenereSpainIvan Magalhaes NEW
James T RimJapanIvan Magalhaes QUALIFIED
Aditya O GarufiUnited KingdomXuxue Feng NEW
Isabel A NickaUnited KingdomAnna Fali QUALIFIED
Rodrigues Y MaletCanadaIoni Bowcher NEW
Clifford H VocelkaFranceAsiya Javayant QUALIFIED
Kadeem G NestleFranceXuxue Feng QUALIFIED
Misaki F KolmetzRussiaElwin Sharvill PROPOSAL
Darci U NickaItalyBernardo Dominic NEGOTIATION
Aditya A CampainIndiaIvan Magalhaes NEGOTIATION
Mujtaba M FollerGermanyIvan Magalhaes UNQUALIFIED
Salvatore F CampainCanadaAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Leja B VocelkaSpainAmy Elsner PROPOSAL
Nicolas R StockhamCanadaAsiya Javayant QUALIFIED
Aruna E MaletArgentinaIvan Magalhaes QUALIFIED
Antonio Z WieserBrazilAnna Fali NEW
Maria M WaycottArgentinaAmy Elsner UNQUALIFIED
Munro L MaletItalyIoni Bowcher RENEWAL
Costa Q SaylorsIndiaAmy Elsner NEGOTIATION
Rodrigues L RutaAustraliaAnna Fali QUALIFIED
Sinclair M RulapaughItalyOnyama Limba NEW
Adams T FollerArgentinaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika E SchemmerSpain2024-05-14Commercial Press QUALIFIED38Amy Elsner
1001Jennifer I IturbideUnited Kingdom2024-04-22King, Christopher A Esq NEGOTIATION66Ioni Bowcher
1002Salvatore T RoysterArgentina2024-05-03Feltz Printing Service RENEWAL55Onyama Limba
1003Greenwood B PerinCanada2024-04-28Feltz Printing Service RENEWAL74Amy Elsner
1004Jones M SlusarskiRussia2024-04-25Feiner Bros NEGOTIATION93Asiya Javayant
1005Kaitlin G StockhamUnited Kingdom2024-05-06Commercial Press NEGOTIATION81Onyama Limba
1006Faith B PerinArgentina2024-05-04Dorl, James J Esq UNQUALIFIED96Xuxue Feng
1007Cody A BowleyAustralia2024-05-11King, Christopher A Esq RENEWAL78Ioni Bowcher
1008Wickens X VocelkaBrazil2024-04-24Chapman, Ross E Esq PROPOSAL20Ioni Bowcher
1009Chavez W SaylorsIndia2024-05-19Chapman, Ross E Esq RENEWAL76Asiya Javayant
1010Leon E GillianGermany2024-05-14Rousseaux, Michael Esq PROPOSAL72Bernardo Dominic
1011Silvio I NestleGermany2024-04-27Truhlar And Truhlar Attys RENEWAL48Bernardo Dominic
1012Antonio A DilliardRussia2024-05-17King, Christopher A Esq UNQUALIFIED75Xuxue Feng
1013Johnson P GarufiGermany2024-05-18Buckley Miller Wright UNQUALIFIED18Onyama Limba
1014Alejandro A ButtItaly2024-05-12Truhlar And Truhlar Attys PROPOSAL28Ivan Magalhaes
1015Octavia T StensethRussia2024-05-21Chanay, Jeffrey A Esq RENEWAL29Ioni Bowcher
1016Maisha T MaletUnited Kingdom2024-05-05Chanay, Jeffrey A Esq PROPOSAL39Onyama Limba
1017Silvio N WaycottArgentina2024-04-27Chanay, Jeffrey A Esq UNQUALIFIED90Bernardo Dominic
1018Wickens D DilliardUnited Kingdom2024-05-17Feiner Bros NEW85Ivan Magalhaes
1019Claire D CampainSpain2024-05-07Commercial Press NEW50Asiya Javayant
1020Leon O VenereBrazil2024-04-30Chapman, Ross E Esq RENEWAL30Anna Fali
1021Munro E DilliardItaly2024-05-18Rangoni Of Florence PROPOSAL55Asiya Javayant
1022David F BowleyUnited Kingdom2024-05-03Chapman, Ross E Esq UNQUALIFIED75Elwin Sharvill
1023Johnson B VenereFrance2024-05-03Feltz Printing Service UNQUALIFIED58Onyama Limba
1024Smith O BowleyIndia2024-05-02Dorl, James J Esq UNQUALIFIED51Anna Fali
1025Wickens S PerinItaly2024-04-23Rousseaux, Michael Esq UNQUALIFIED16Amy Elsner
1026Chavez P ButtItaly2024-04-27Printing Dimensions RENEWAL76Onyama Limba
1027Deepesh S SlusarskiSpain2024-05-16Rangoni Of Florence UNQUALIFIED1Amy Elsner
1028Darci O ShinkoAustralia2024-04-22Printing Dimensions PROPOSAL27Onyama Limba
1029Sinclair F GarufiRussia2024-04-28Dorl, James J Esq QUALIFIED78Amy Elsner
1030Isabel R StockhamSpain2024-05-20Rousseaux, Michael Esq QUALIFIED85Ivan Magalhaes
1031Misaki R BologniaArgentina2024-05-21Printing Dimensions RENEWAL75Asiya Javayant
1032Cody J BologniaJapan2024-05-15King, Christopher A Esq UNQUALIFIED4Onyama Limba
1033Leja W WhobreyAustralia2024-04-29Printing Dimensions NEW80Ivan Magalhaes
1034Munro I RoysterFrance2024-05-08Dorl, James J Esq NEW46Amy Elsner
1035Julie X BologniaGermany2024-05-05Rousseaux, Michael Esq UNQUALIFIED12Bernardo Dominic
1036Munro G CampainRussia2024-05-12Chanay, Jeffrey A Esq PROPOSAL80Ivan Magalhaes
1037Faith G GlickArgentina2024-04-22Rangoni Of Florence NEW19Elwin Sharvill
1038Darci V MaletIndia2024-04-29Buckley Miller Wright PROPOSAL15Anna Fali
1039Kadeem A BologniaItaly2024-05-20Printing Dimensions NEGOTIATION2Asiya Javayant
1040Silvio B OstroskyFrance2024-05-03Truhlar And Truhlar Attys RENEWAL69Anna Fali
1041Jennifer H SaylorsBrazil2024-05-07Rousseaux, Michael Esq NEGOTIATION91Elwin Sharvill
1042Silvio B BriddickFrance2024-05-08Commercial Press QUALIFIED80Asiya Javayant
1043Silvio E FigeroaRussia2024-05-17King, Christopher A Esq RENEWAL80Anna Fali
1044Faith G VenereGermany2024-05-21Benton, John B Jr NEW28Onyama Limba
1045Octavia X GillianArgentina2024-05-10Feltz Printing Service NEW84Xuxue Feng
1046Clifford H StensethArgentina2024-05-04Dorl, James J Esq UNQUALIFIED81Amy Elsner
1047Ricardo W RulapaughFrance2024-04-24Benton, John B Jr QUALIFIED51Xuxue Feng
1048Rodrigues Z IturbideArgentina2024-05-06Morlong Associates UNQUALIFIED92Ioni Bowcher
1049Octavia T BriddickAustralia2024-05-21Commercial Press RENEWAL6Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Aruna D RulapaughJapanAsiya Javayant NEGOTIATION
Claire W MaletAustraliaAmy Elsner PROPOSAL
Claire V CaldareraSpainAnna Fali PROPOSAL
Greenwood X ButtGermanyAmy Elsner UNQUALIFIED
Greenwood S MacleadCanadaAsiya Javayant UNQUALIFIED
Munro E CaudyCanadaIvan Magalhaes NEGOTIATION
Faith M FlosiUnited KingdomBernardo Dominic RENEWAL
Munro A StensethItalyStephen Shaw NEGOTIATION
Emily Y GarufiItalyOnyama Limba NEW
Ivar Z CaldareraSpainOnyama Limba NEGOTIATION
Wickens D FerenczIndiaAmy Elsner NEW
Wickens M CaudySpainElwin Sharvill RENEWAL
Ricardo Z SlusarskiGermanyElwin Sharvill RENEWAL
Chavez X IturbideArgentinaAsiya Javayant UNQUALIFIED
Nicolas O CaudyBrazilAnna Fali RENEWAL
David M AlbaresItalyElwin Sharvill QUALIFIED
Kadeem T DilliardFranceXuxue Feng QUALIFIED
Antonio O PerinArgentinaStephen Shaw PROPOSAL
Rodrigues S OldroydItalyAnna Fali QUALIFIED
Nicolas N IturbideFranceAnna Fali UNQUALIFIED
Silvio T CaldareraAustraliaAsiya Javayant NEW
Deepesh H FlosiGermanyXuxue Feng PROPOSAL
Johnson N SergiAustraliaOnyama Limba NEW
Juan D CaldareraItalyElwin Sharvill NEW
Aditya P CaldareraCanadaAnna Fali PROPOSAL
Kaitlin D FigeroaFranceElwin Sharvill QUALIFIED
Mayumi B WieserJapanOnyama Limba QUALIFIED
Munro V GillianIndiaAnna Fali NEGOTIATION
Maria Y FlosiFranceAnna Fali RENEWAL
Clifford G PoquetteIndiaAnna Fali QUALIFIED
Mujtaba B BriddickFranceElwin Sharvill NEGOTIATION
Nicolas P AmigonFranceXuxue Feng UNQUALIFIED
Emily H WieserBrazilBernardo Dominic PROPOSAL
Salvatore T FerenczArgentinaIvan Magalhaes PROPOSAL
James G MorascaAustraliaBernardo Dominic RENEWAL
Octavia A DilliardAustraliaOnyama Limba RENEWAL
Francesco G StockhamJapanXuxue Feng RENEWAL
Maria T WhobreyItalyBernardo Dominic RENEWAL
Claire W BowleyUnited KingdomBernardo Dominic PROPOSAL
Costa N MaletItalyIvan Magalhaes QUALIFIED
Francesco J FollerGermanyAmy Elsner NEW
Jeanfrancois D BriddickFranceElwin Sharvill NEW
Aditya O KuskoFranceIvan Magalhaes RENEWAL
Rodrigues S DoeBrazilIoni Bowcher UNQUALIFIED
Cody J CampainCanadaIvan Magalhaes RENEWAL
Kaitlin G CaudyGermanyAnna Fali UNQUALIFIED
Aditya D VocelkaIndiaStephen Shaw RENEWAL
Ricardo M MarrierGermanyAmy Elsner NEGOTIATION
Murillo W NestleGermanyStephen Shaw RENEWAL
Ashley M MaletItalyIoni Bowcher RENEWAL
Frozen Columns
Name
Mujtaba G Nestle
Claire Q Waycott
Misaki Y Nicka
Izzy T Butt
David D Tollner
Kadeem J Gillian
Greenwood S Ruta
Greenwood Z Foller
Deepesh R Oldroyd
Isabel K Glick
Jennifer G Stockham
Mayumi K Garufi
Aditya O Rim
Mujtaba H Wieser
Aruna T Campain
Jones U Gaucho
Adams Y Campain
Ricardo W Campain
Maria K Doe
Nicolas I Gaucho
Greenwood D Caldarera
Cody F Perin
Arvin S Maclead
Misaki P Waycott
Costa R Gillian
Smith P Ostrosky
Johnson Z Flosi
Arvin E Waycott
Silvio A Nestle
Jeanfrancois U Bolognia
Munro K Saylors
Ashley C Chui
Silvio Z Perin
Nicolas R Perin
Alejandro B Gillian
Antonio B Foller
Deepesh Z Poquette
Ivar F Marrier
Silvio D Inouye
Aika B Bolognia
Mujtaba H Poquette
Murillo C Maclead
Deepesh W Bolognia
Morrow O Ruta
Juan L Poquette
Kadeem B Chui
Emily C Marrier
Leja D Bolognia
Sinclair B Maclead
Kaitlin H Bowley
IdCountryDate
1000Brazil2024-05-05
1001United Kingdom2024-05-07
1002India2024-04-25
1003Spain2024-05-15
1004Spain2024-04-29
1005United Kingdom2024-05-16
1006Canada2024-05-16
1007Brazil2024-05-01
1008Russia2024-05-20
1009India2024-05-19
1010Japan2024-04-25
1011Russia2024-04-23
1012Canada2024-04-24
1013France2024-05-02
1014Spain2024-05-02
1015Argentina2024-05-16
1016Italy2024-05-14
1017India2024-05-20
1018Australia2024-05-19
1019Russia2024-05-16
1020Germany2024-05-07
1021Canada2024-05-11
1022Italy2024-05-07
1023India2024-04-23
1024Australia2024-04-22
1025United Kingdom2024-04-25
1026Germany2024-05-13
1027Japan2024-05-16
1028United Kingdom2024-05-08
1029India2024-05-19
1030Italy2024-05-19
1031Russia2024-05-06
1032Japan2024-04-23
1033Brazil2024-04-30
1034Canada2024-05-21
1035Russia2024-05-17
1036Canada2024-04-29
1037Russia2024-05-01
1038Spain2024-04-22
1039United Kingdom2024-04-28
1040Japan2024-05-19
1041Italy2024-05-02
1042Japan2024-04-26
1043United Kingdom2024-05-19
1044Brazil2024-05-01
1045Japan2024-04-22
1046Italy2024-05-04
1047France2024-05-15
1048Canada2024-04-24
1049United Kingdom2024-05-06

On-Demand Data

NameIdCountryDate
Salvatore G Paprocki1000France2024-05-13
Aruna W Nicka1001Argentina2024-04-23
Salvatore E Kolmetz1002Germany2024-05-10
Morrow S Caudy1003Japan2024-04-27
Smith E Tollner1004France2024-04-27
Morrow Y Bolognia1005Brazil2024-05-20
Claire O Morasca1006France2024-05-09
Salvatore D Maclead1007Canada2024-05-19
Antonio V Glick1008Germany2024-05-07
Faith S Morasca1009Russia2024-05-11
Ricardo C Saylors1010United Kingdom2024-05-09
Munro O Ostrosky1011Spain2024-04-25
Cody X Tollner1012Australia2024-05-02
Johnson O Bowley1013Brazil2024-04-28
Stacey E Rulapaugh1014Spain2024-05-01
Tony V Garufi1015France2024-04-23
Misaki J Perin1016United Kingdom2024-05-10
Ivar Y Doe1017Canada2024-04-30
Ricardo H Gaucho1018Brazil2024-05-13
Kaitlin F Shinko1019Argentina2024-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony Y GlickSpainIvan Magalhaes NEGOTIATION
James E FigeroaFranceAnna Fali UNQUALIFIED
Ivar M DarakjyRussiaIvan Magalhaes NEW
Jeanfrancois R SchemmerJapanElwin Sharvill PROPOSAL
Leja Q StensethCanadaIoni Bowcher UNQUALIFIED
Jeanfrancois N BriddickGermanyAmy Elsner NEW
Ricardo S FigeroaFranceOnyama Limba NEGOTIATION
Antonio N MaletAustraliaStephen Shaw QUALIFIED
Smith G KolmetzItalyElwin Sharvill RENEWAL
Stacey M RimRussiaXuxue Feng QUALIFIED
Johnson D RoysterArgentinaOnyama Limba RENEWAL
Costa G WhobreyUnited KingdomElwin Sharvill PROPOSAL
Juan S FollerArgentinaIvan Magalhaes NEW
Misaki U DilliardAustraliaStephen Shaw RENEWAL
Maria P MarrierArgentinaAmy Elsner RENEWAL
Juan A PaprockiRussiaIvan Magalhaes NEGOTIATION
Aika Q CampainJapanAmy Elsner PROPOSAL
Cody X GillianAustraliaElwin Sharvill QUALIFIED
Rodrigues C RutaJapanIvan Magalhaes RENEWAL
Darci G NestleItalyAsiya Javayant UNQUALIFIED
Ivar P PerinFranceXuxue Feng RENEWAL
David O FollerJapanStephen Shaw UNQUALIFIED
Deepesh J NickaIndiaXuxue Feng NEW
Darci B RoysterBrazilStephen Shaw PROPOSAL
Faith H NickaRussiaAnna Fali NEW
Jeanfrancois J DoeSpainElwin Sharvill RENEWAL
Maisha L InouyeItalyIvan Magalhaes UNQUALIFIED
Mujtaba G PaprockiAustraliaIvan Magalhaes NEGOTIATION
Jeanfrancois S GlickFranceAmy Elsner UNQUALIFIED
Octavia Z FigeroaJapanAmy Elsner NEGOTIATION
Clifford X VenereIndiaBernardo Dominic PROPOSAL
Antonio P AmigonFranceIvan Magalhaes RENEWAL
Silvio J CaldareraIndiaOnyama Limba NEW
Johnson L WaycottGermanyOnyama Limba NEGOTIATION
David M GlickRussiaOnyama Limba PROPOSAL
Deepesh T TollnerItalyIoni Bowcher UNQUALIFIED
Maria C RulapaughBrazilStephen Shaw NEGOTIATION
Julie B MorascaSpainAnna Fali RENEWAL
Alejandro F FollerUnited KingdomStephen Shaw NEGOTIATION
Munro K StockhamSpainElwin Sharvill UNQUALIFIED

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