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
Kadeem S SergiIndiaStephen Shaw NEW
Octavia H CaldareraUnited KingdomAmy Elsner NEGOTIATION
Deepesh O BowleySpainAnna Fali PROPOSAL
Octavia I OstroskyJapanAmy Elsner NEW
Aika G SergiCanadaElwin Sharvill PROPOSAL
Mayumi E MaletFranceXuxue Feng RENEWAL
Jeanfrancois D KolmetzRussiaIoni Bowcher UNQUALIFIED
Clifford Z ShinkoGermanyAmy Elsner RENEWAL
Morrow H CampainIndiaXuxue Feng PROPOSAL
Maria X GillianJapanAsiya Javayant QUALIFIED
Nicolas O VenereIndiaElwin Sharvill PROPOSAL
Greenwood T MaletSpainXuxue Feng PROPOSAL
Murillo B InouyeBrazilXuxue Feng UNQUALIFIED
Francesco D AlbaresFranceIoni Bowcher PROPOSAL
Leja P MorascaBrazilBernardo Dominic PROPOSAL
Costa K MaletSpainStephen Shaw RENEWAL
James H OldroydSpainElwin Sharvill NEW
Aika X CampainJapanAsiya Javayant NEGOTIATION
Adams P KuskoFranceAnna Fali RENEWAL
Maisha F MacleadJapanBernardo Dominic NEW
James T NestleRussiaBernardo Dominic UNQUALIFIED
Antonio I FerenczRussiaXuxue Feng RENEWAL
Kaitlin I OstroskyBrazilElwin Sharvill QUALIFIED
Francesco I CampainUnited KingdomIoni Bowcher QUALIFIED
Ricardo Z BowleyRussiaBernardo Dominic PROPOSAL
Sinclair Q KuskoFranceStephen Shaw RENEWAL
Ricardo S ShinkoFranceBernardo Dominic QUALIFIED
Izzy F VenereBrazilBernardo Dominic RENEWAL
Munro H InouyeRussiaOnyama Limba NEW
Johnson G FollerGermanyStephen Shaw NEW
Chavez V RoysterJapanElwin Sharvill UNQUALIFIED
Jefferson C RoysterFranceAsiya Javayant UNQUALIFIED
Izzy M SlusarskiGermanyAsiya Javayant QUALIFIED
Chavez K MaletRussiaIoni Bowcher NEGOTIATION
Aika W RimIndiaElwin Sharvill RENEWAL
Stacey G MacleadArgentinaAnna Fali UNQUALIFIED
Rodrigues N MacleadArgentinaAsiya Javayant PROPOSAL
Leja P NickaArgentinaXuxue Feng NEGOTIATION
Arvin O RoysterFranceAsiya Javayant PROPOSAL
Morrow P BriddickIndiaXuxue Feng NEW
Adams F FigeroaAustraliaBernardo Dominic RENEWAL
Kaitlin L MorascaItalyIoni Bowcher PROPOSAL
Sinclair E DoeFranceAmy Elsner NEW
Jennifer H CaldareraAustraliaAmy Elsner NEW
Maria Y NickaItalyXuxue Feng NEW
Arvin Z DarakjyFranceElwin Sharvill QUALIFIED
Claire C FollerItalyElwin Sharvill QUALIFIED
Ashley W WhobreyRussiaIoni Bowcher UNQUALIFIED
Cody Q BriddickCanadaAsiya Javayant UNQUALIFIED
Jennifer E SaylorsSpainXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Emily U BowleyRussiaElwin Sharvill QUALIFIED
Salvatore W SaylorsRussiaStephen Shaw RENEWAL
Jones U FollerFranceXuxue Feng PROPOSAL
Cody X GillianItalyIvan Magalhaes NEGOTIATION
Munro A DilliardCanadaIvan Magalhaes PROPOSAL
Morrow K GillianSpainAsiya Javayant RENEWAL
Antonio N WieserItalyIoni Bowcher RENEWAL
Isabel U BologniaCanadaStephen Shaw NEGOTIATION
Nicolas F GillianUnited KingdomElwin Sharvill NEW
Chavez Y KuskoFranceXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily Q StensethAustralia2024-04-21Chemel, James L Cpa UNQUALIFIED66Xuxue Feng
1001Aditya W OstroskySpain2024-04-28Dorl, James J Esq QUALIFIED55Ioni Bowcher
1002Julie J RulapaughBrazil2024-04-18Truhlar And Truhlar Attys PROPOSAL55Xuxue Feng
1003Jennifer Q BriddickIndia2024-04-23Feltz Printing Service PROPOSAL18Bernardo Dominic
1004Ricardo W MorascaIndia2024-04-29Chemel, James L Cpa NEGOTIATION17Xuxue Feng
1005James V StensethCanada2024-04-17Chemel, James L Cpa QUALIFIED33Onyama Limba
1006Jones I SergiIndia2024-04-25Rangoni Of Florence QUALIFIED38Xuxue Feng
1007Murillo Z GarufiSpain2024-04-14Truhlar And Truhlar Attys NEW54Asiya Javayant
1008Ashley R VenereBrazil2024-04-16Rangoni Of Florence RENEWAL92Bernardo Dominic
1009Munro D GlickItaly2024-04-17Chanay, Jeffrey A Esq NEW90Anna Fali
1010Clifford J FigeroaBrazil2024-04-27Chanay, Jeffrey A Esq UNQUALIFIED93Xuxue Feng
1011Nicolas G DilliardItaly2024-04-11Benton, John B Jr RENEWAL12Bernardo Dominic
1012Aruna E DoeItaly2024-04-19Morlong Associates QUALIFIED48Xuxue Feng
1013Izzy O MarrierUnited Kingdom2024-04-29King, Christopher A Esq NEW78Stephen Shaw
1014Arvin E FlosiFrance2024-04-19Chemel, James L Cpa PROPOSAL12Asiya Javayant
1015Kadeem A NickaItaly2024-04-20Feiner Bros PROPOSAL19Asiya Javayant
1016Kaitlin T SlusarskiFrance2024-04-20Rangoni Of Florence QUALIFIED1Onyama Limba
1017Rodrigues F WaycottRussia2024-04-12King, Christopher A Esq RENEWAL57Bernardo Dominic
1018Smith U GarufiRussia2024-04-15Rousseaux, Michael Esq UNQUALIFIED76Stephen Shaw
1019Mayumi H InouyeIndia2024-04-02Dorl, James J Esq NEGOTIATION29Onyama Limba
1020Leon K PaprockiAustralia2024-04-16Buckley Miller Wright NEGOTIATION48Onyama Limba
1021Emily T ButtSpain2024-04-28Chemel, James L Cpa UNQUALIFIED46Elwin Sharvill
1022Ricardo D DoeCanada2024-04-05Buckley Miller Wright UNQUALIFIED9Anna Fali
1023Aditya E AmigonIndia2024-04-25Buckley Miller Wright RENEWAL18Anna Fali
1024Kadeem R BologniaRussia2024-04-27Buckley Miller Wright QUALIFIED75Elwin Sharvill
1025Darci D AlbaresItaly2024-04-10Rangoni Of Florence RENEWAL69Onyama Limba
1026Leja I BowleyCanada2024-04-22Dorl, James J Esq NEGOTIATION54Onyama Limba
1027Isabel T CaldareraRussia2024-04-15Buckley Miller Wright PROPOSAL11Anna Fali
1028Chavez H FigeroaCanada2024-04-04Chemel, James L Cpa QUALIFIED86Xuxue Feng
1029Morrow C StensethGermany2024-04-11Feltz Printing Service QUALIFIED72Xuxue Feng
1030Morrow G OldroydArgentina2024-04-24Truhlar And Truhlar Attys PROPOSAL12Asiya Javayant
1031Jones T DilliardAustralia2024-04-25Printing Dimensions RENEWAL47Bernardo Dominic
1032Leja N AmigonFrance2024-04-14Rousseaux, Michael Esq UNQUALIFIED5Elwin Sharvill
1033Darci X NestleArgentina2024-04-19Morlong Associates NEW50Amy Elsner
1034Leja W SaylorsArgentina2024-04-29Chapman, Ross E Esq QUALIFIED95Ioni Bowcher
1035Maria V CampainJapan2024-04-20Feiner Bros RENEWAL50Xuxue Feng
1036Murillo A ChuiArgentina2024-04-21Printing Dimensions NEGOTIATION78Asiya Javayant
1037Jefferson V CampainCanada2024-04-05Morlong Associates NEGOTIATION94Ioni Bowcher
1038Ashley S PoquetteRussia2024-04-30Chapman, Ross E Esq RENEWAL53Stephen Shaw
1039James H StockhamFrance2024-04-29Commercial Press NEGOTIATION22Stephen Shaw
1040Octavia K OldroydFrance2024-04-09Chanay, Jeffrey A Esq PROPOSAL37Xuxue Feng
1041Kaitlin D KolmetzJapan2024-04-07Printing Dimensions NEGOTIATION62Onyama Limba
1042Leon R VocelkaJapan2024-04-21Printing Dimensions RENEWAL50Ivan Magalhaes
1043Faith S SaylorsArgentina2024-04-24Rangoni Of Florence NEW32Elwin Sharvill
1044Silvio S SlusarskiUnited Kingdom2024-04-22Buckley Miller Wright UNQUALIFIED15Bernardo Dominic
1045David O InouyeArgentina2024-04-12Morlong Associates NEGOTIATION96Amy Elsner
1046Jones A CaldareraUnited Kingdom2024-04-23Buckley Miller Wright NEW41Amy Elsner
1047Leja T DoeFrance2024-04-05Chemel, James L Cpa UNQUALIFIED14Xuxue Feng
1048Izzy K StensethBrazil2024-04-18Printing Dimensions NEW88Elwin Sharvill
1049David J AmigonUnited Kingdom2024-04-30Truhlar And Truhlar Attys PROPOSAL22Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ivar W FerenczUnited KingdomIoni Bowcher QUALIFIED
Ricardo I SlusarskiCanadaOnyama Limba PROPOSAL
Maria R GillianUnited KingdomAmy Elsner QUALIFIED
Adams I AmigonItalyIoni Bowcher NEGOTIATION
Juan R DoeUnited KingdomAmy Elsner QUALIFIED
Maria P StockhamAustraliaAmy Elsner NEW
Nicolas K CampainItalyElwin Sharvill NEW
Jennifer L MarrierBrazilOnyama Limba RENEWAL
Kaitlin X InouyeArgentinaAmy Elsner PROPOSAL
Emily Y GlickUnited KingdomIvan Magalhaes UNQUALIFIED
Antonio J SergiIndiaIoni Bowcher QUALIFIED
Adams D SchemmerJapanIoni Bowcher UNQUALIFIED
Mujtaba Z CampainItalyIoni Bowcher QUALIFIED
Octavia K FlosiArgentinaStephen Shaw NEGOTIATION
Jones I GauchoBrazilOnyama Limba RENEWAL
Silvio A SlusarskiAustraliaElwin Sharvill UNQUALIFIED
Isabel U RutaRussiaIvan Magalhaes NEW
Jefferson F KuskoItalyStephen Shaw RENEWAL
Munro D KolmetzGermanyBernardo Dominic UNQUALIFIED
Kadeem R FerenczBrazilAnna Fali PROPOSAL
Mayumi B SaylorsGermanyElwin Sharvill RENEWAL
Arvin J MacleadBrazilElwin Sharvill RENEWAL
Isabel Q OldroydItalyAsiya Javayant RENEWAL
Salvatore K FerenczJapanStephen Shaw RENEWAL
Silvio W NickaAustraliaXuxue Feng UNQUALIFIED
Emily K DarakjyRussiaOnyama Limba RENEWAL
Jeanfrancois W SergiArgentinaElwin Sharvill QUALIFIED
Tony M KuskoSpainOnyama Limba QUALIFIED
Jones G WieserUnited KingdomIvan Magalhaes RENEWAL
Mayumi P ChuiRussiaStephen Shaw NEGOTIATION
Alejandro J GlickCanadaAmy Elsner NEGOTIATION
Johnson X AlbaresItalyAnna Fali NEGOTIATION
Jeanfrancois T OstroskyCanadaOnyama Limba NEGOTIATION
Izzy U GillianAustraliaStephen Shaw NEGOTIATION
Kaitlin N CaudyGermanyAsiya Javayant UNQUALIFIED
Ashley X AmigonArgentinaIvan Magalhaes PROPOSAL
David K MorascaIndiaAnna Fali QUALIFIED
Ivar B ChuiItalyIoni Bowcher NEW
Izzy L IturbideSpainIvan Magalhaes UNQUALIFIED
Tony Y NestleJapanAsiya Javayant PROPOSAL
Murillo G KolmetzGermanyIvan Magalhaes NEW
Aditya O VocelkaItalyAsiya Javayant NEW
David W RutaBrazilIoni Bowcher RENEWAL
Jeanfrancois T KuskoFranceIoni Bowcher NEW
Stacey X StockhamSpainAsiya Javayant UNQUALIFIED
Adams E MarrierItalyXuxue Feng QUALIFIED
Stacey A InouyeGermanyAmy Elsner RENEWAL
Aika A GauchoIndiaAsiya Javayant RENEWAL
Morrow E NickaBrazilElwin Sharvill NEW
Jeanfrancois R VenereIndiaElwin Sharvill RENEWAL
Frozen Columns
Name
Antonio O Morasca
Darci S Ferencz
Adams I Rulapaugh
Rodrigues R Ferencz
Arvin M Poquette
Maria O Chui
Ivar S Dilliard
Salvatore C Venere
Munro N Bolognia
Misaki I Rulapaugh
Clifford W Saylors
Aruna Y Amigon
Claire Z Poquette
Tony J Dilliard
Tony T Flosi
Izzy R Iturbide
Mayumi S Tollner
Morrow H Morasca
Stacey Q Malet
Mayumi A Nestle
Smith Z Rulapaugh
Costa U Albares
Nicolas H Malet
Leja T Morasca
James H Tollner
Antonio H Sergi
Ivar T Malet
Cody M Butt
Aika T Stenseth
Mayumi H Doe
Ashley I Iturbide
Kadeem K Maclead
Maria W Stenseth
Ashley N Bolognia
Francesco P Wieser
Izzy J Kolmetz
Antonio D Oldroyd
Murillo R Stockham
Maria T Nestle
Murillo J Slusarski
Silvio X Waycott
Misaki T Gillian
Sinclair G Kusko
Greenwood V Flosi
Morrow J Venere
Alejandro Y Poquette
Wickens V Oldroyd
Maisha T Ostrosky
Darci W Maclead
Ashley V Darakjy
IdCountryDate
1000Australia2024-04-06
1001Russia2024-04-06
1002France2024-04-16
1003India2024-04-22
1004United Kingdom2024-04-07
1005Japan2024-04-07
1006Germany2024-04-26
1007Canada2024-04-28
1008Spain2024-04-15
1009United Kingdom2024-04-12
1010United Kingdom2024-04-21
1011Spain2024-04-05
1012Brazil2024-04-10
1013United Kingdom2024-04-21
1014France2024-04-30
1015Germany2024-04-01
1016Japan2024-04-08
1017Brazil2024-04-19
1018Argentina2024-04-19
1019Argentina2024-04-01
1020Australia2024-04-28
1021France2024-04-05
1022Spain2024-04-16
1023Spain2024-04-08
1024France2024-04-27
1025India2024-04-17
1026Canada2024-04-11
1027Japan2024-04-03
1028Japan2024-04-23
1029Germany2024-04-15
1030Japan2024-04-03
1031France2024-04-29
1032France2024-04-21
1033Japan2024-04-24
1034France2024-04-16
1035Spain2024-04-17
1036Germany2024-04-13
1037Japan2024-04-06
1038United Kingdom2024-04-08
1039India2024-04-05
1040Spain2024-04-19
1041Australia2024-04-02
1042Italy2024-04-04
1043India2024-04-27
1044United Kingdom2024-04-30
1045Canada2024-04-17
1046India2024-04-28
1047India2024-04-11
1048Australia2024-04-05
1049Argentina2024-04-25

On-Demand Data

NameIdCountryDate
Jeanfrancois O Bolognia1000Brazil2024-04-02
Chavez G Foller1001Brazil2024-04-15
Wickens R Flosi1002Canada2024-04-29
James B Nestle1003Germany2024-04-29
Ricardo T Whobrey1004France2024-04-24
Murillo W Nicka1005Brazil2024-04-16
Silvio K Nestle1006United Kingdom2024-04-02
Claire U Poquette1007Canada2024-04-11
Johnson U Kusko1008United Kingdom2024-04-22
Claire G Vocelka1009United Kingdom2024-04-03
Faith Y Perin1010Russia2024-04-12
Maisha B Paprocki1011Russia2024-04-16
Aruna M Sergi1012Russia2024-04-29
Kadeem Z Sergi1013Germany2024-04-05
Munro P Morasca1014Italy2024-04-04
Izzy M Perin1015Italy2024-04-10
Aditya M Albares1016Italy2024-04-12
Rodrigues M Ruta1017Argentina2024-04-21
Nicolas T Royster1018Brazil2024-04-04
Murillo X Venere1019Spain2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams E GarufiIndiaIoni Bowcher PROPOSAL
Stacey O BologniaItalyAnna Fali QUALIFIED
Stacey N PaprockiFranceOnyama Limba RENEWAL
Rodrigues P PoquetteBrazilElwin Sharvill NEGOTIATION
Ashley R SchemmerArgentinaStephen Shaw NEW
Jefferson Y MaletBrazilOnyama Limba NEW
David B FlosiGermanyAsiya Javayant PROPOSAL
James I WieserUnited KingdomAsiya Javayant UNQUALIFIED
Maisha N SergiCanadaElwin Sharvill UNQUALIFIED
Clifford U ShinkoBrazilAmy Elsner RENEWAL
Francesco G RulapaughItalyAnna Fali QUALIFIED
Murillo X StensethJapanOnyama Limba PROPOSAL
Octavia B MaletCanadaAsiya Javayant NEGOTIATION
Munro F MorascaRussiaStephen Shaw NEW
Ashley O SergiRussiaXuxue Feng RENEWAL
Chavez T OldroydBrazilOnyama Limba NEW
Chavez R WhobreyIndiaIvan Magalhaes QUALIFIED
Murillo B MacleadBrazilAmy Elsner PROPOSAL
Emily F KolmetzRussiaStephen Shaw RENEWAL
Isabel N MaletArgentinaIvan Magalhaes PROPOSAL
Greenwood Z DilliardBrazilAsiya Javayant NEW
Silvio V KuskoRussiaIvan Magalhaes PROPOSAL
Greenwood M AlbaresBrazilAmy Elsner UNQUALIFIED
Murillo B ChuiJapanBernardo Dominic RENEWAL
Maisha A ButtArgentinaAnna Fali NEW
Aruna Q OldroydItalyBernardo Dominic UNQUALIFIED
Darci M KuskoFranceBernardo Dominic RENEWAL
Misaki P GauchoCanadaOnyama Limba NEW
Nicolas K SaylorsFranceElwin Sharvill QUALIFIED
Aika H GarufiArgentinaOnyama Limba PROPOSAL
Kaitlin Y GauchoCanadaAsiya Javayant RENEWAL
Chavez Z NestleSpainAmy Elsner RENEWAL
Costa K VenereFranceAmy Elsner QUALIFIED
Salvatore O AlbaresAustraliaAmy Elsner NEGOTIATION
Johnson L IturbideGermanyIoni Bowcher PROPOSAL
Leja Y BriddickIndiaOnyama Limba RENEWAL
Murillo A DarakjyFranceElwin Sharvill PROPOSAL
Jones N MaletRussiaStephen Shaw NEGOTIATION
Juan R ButtAustraliaElwin Sharvill RENEWAL
Clifford H NickaIndiaOnyama Limba NEW

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