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
Stacey T NickaJapanIvan Magalhaes PROPOSAL
David Z NestleAustraliaAsiya Javayant NEGOTIATION
David A VocelkaUnited KingdomStephen Shaw QUALIFIED
Clifford C StockhamCanadaAnna Fali UNQUALIFIED
Julie W OstroskyArgentinaAmy Elsner PROPOSAL
Silvio X StensethJapanAmy Elsner RENEWAL
Darci F KuskoGermanyElwin Sharvill PROPOSAL
Wickens O SergiSpainAnna Fali NEW
Stacey E CaudyUnited KingdomOnyama Limba UNQUALIFIED
Kaitlin D WieserIndiaElwin Sharvill NEW
Kaitlin D StockhamArgentinaAnna Fali UNQUALIFIED
Nicolas F KolmetzArgentinaStephen Shaw QUALIFIED
Mayumi O ChuiBrazilIvan Magalhaes QUALIFIED
Murillo T ShinkoJapanAsiya Javayant UNQUALIFIED
Mayumi C CaldareraRussiaAnna Fali UNQUALIFIED
Cody L ShinkoCanadaAmy Elsner NEW
Misaki C PaprockiAustraliaIoni Bowcher QUALIFIED
Stacey Z PaprockiBrazilElwin Sharvill NEW
Julie L PerinAustraliaAmy Elsner NEW
Alejandro O SlusarskiFranceAnna Fali NEGOTIATION
Jefferson L CaudyCanadaAmy Elsner UNQUALIFIED
Chavez Z StockhamFranceAmy Elsner NEGOTIATION
Wickens D SlusarskiAustraliaBernardo Dominic NEGOTIATION
Jones V StockhamIndiaBernardo Dominic NEW
Ricardo J ButtArgentinaStephen Shaw NEGOTIATION
Greenwood O RulapaughFranceAsiya Javayant NEGOTIATION
Silvio X GlickAustraliaStephen Shaw UNQUALIFIED
Octavia D MaletArgentinaOnyama Limba NEGOTIATION
Arvin T WieserGermanyBernardo Dominic UNQUALIFIED
Stacey K KuskoSpainOnyama Limba RENEWAL
Mujtaba O ButtArgentinaStephen Shaw NEW
Jefferson Y StensethItalyXuxue Feng PROPOSAL
Chavez J VocelkaFranceIvan Magalhaes NEGOTIATION
Wickens C CaudyFranceAmy Elsner NEW
Cody J BriddickAustraliaAsiya Javayant NEW
Jennifer H PoquetteFranceOnyama Limba RENEWAL
Ricardo L MorascaBrazilOnyama Limba RENEWAL
Ivar Y PerinGermanyIvan Magalhaes NEGOTIATION
Silvio A CaudyAustraliaOnyama Limba PROPOSAL
Faith P RutaCanadaAsiya Javayant NEW
Silvio V PaprockiBrazilIvan Magalhaes UNQUALIFIED
Darci D SergiRussiaAsiya Javayant NEGOTIATION
Murillo G CaudyUnited KingdomElwin Sharvill PROPOSAL
Julie S StockhamRussiaStephen Shaw PROPOSAL
Misaki A FlosiSpainStephen Shaw NEGOTIATION
Clifford Q WaycottItalyOnyama Limba NEGOTIATION
Octavia W WaycottBrazilXuxue Feng NEGOTIATION
Jones R SaylorsArgentinaOnyama Limba UNQUALIFIED
Alejandro H StockhamJapanIoni Bowcher UNQUALIFIED
Juan R TollnerArgentinaBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jones Z DoeIndiaOnyama Limba NEW
Octavia N TollnerJapanAnna Fali PROPOSAL
Tony P StockhamItalyAnna Fali RENEWAL
Maria D PerinBrazilIvan Magalhaes PROPOSAL
Izzy O ShinkoItalyElwin Sharvill UNQUALIFIED
Johnson X StockhamItalyBernardo Dominic RENEWAL
Aruna F ButtArgentinaAsiya Javayant QUALIFIED
Adams L NestleAustraliaAmy Elsner NEW
Deepesh S SaylorsCanadaIvan Magalhaes NEW
Misaki H NickaRussiaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony T StensethCanada2024-04-12Rangoni Of Florence NEGOTIATION50Stephen Shaw
1001Leon J NickaCanada2024-04-16Chapman, Ross E Esq PROPOSAL44Anna Fali
1002Rodrigues J BowleyFrance2024-03-27Chemel, James L Cpa NEW58Anna Fali
1003Octavia Z PoquetteFrance2024-04-23Dorl, James J Esq RENEWAL40Ioni Bowcher
1004David S GarufiIndia2024-04-01Rousseaux, Michael Esq PROPOSAL21Amy Elsner
1005Aruna V MaletFrance2024-04-07Rangoni Of Florence NEGOTIATION11Elwin Sharvill
1006Johnson J BriddickSpain2024-04-03Morlong Associates UNQUALIFIED99Ioni Bowcher
1007Costa X KuskoFrance2024-04-01Feltz Printing Service RENEWAL24Bernardo Dominic
1008Salvatore G MarrierSpain2024-04-25Rangoni Of Florence RENEWAL58Amy Elsner
1009Wickens X InouyeGermany2024-03-29King, Christopher A Esq NEW89Amy Elsner
1010Misaki T OstroskyBrazil2024-04-16Commercial Press UNQUALIFIED2Asiya Javayant
1011Francesco M MacleadSpain2024-04-10Feiner Bros NEW24Onyama Limba
1012Ashley U MorascaAustralia2024-04-10Rangoni Of Florence RENEWAL94Bernardo Dominic
1013Jeanfrancois K FigeroaAustralia2024-04-19King, Christopher A Esq PROPOSAL93Onyama Limba
1014Claire P FlosiRussia2024-04-04Dorl, James J Esq PROPOSAL15Elwin Sharvill
1015Tony Z MaletUnited Kingdom2024-03-27Feiner Bros NEW2Stephen Shaw
1016Emily N StensethArgentina2024-04-17Commercial Press NEW27Amy Elsner
1017Nicolas Z WaycottAustralia2024-04-04Morlong Associates PROPOSAL5Onyama Limba
1018Kaitlin M DilliardArgentina2024-04-06Morlong Associates PROPOSAL72Bernardo Dominic
1019Claire W PerinBrazil2024-04-19Rousseaux, Michael Esq NEGOTIATION5Onyama Limba
1020Leon G MorascaGermany2024-04-15Rangoni Of Florence QUALIFIED55Xuxue Feng
1021Arvin T RoysterSpain2024-04-16Commercial Press RENEWAL12Amy Elsner
1022Silvio U AlbaresAustralia2024-04-12Rousseaux, Michael Esq UNQUALIFIED4Onyama Limba
1023Kaitlin X MaletItaly2024-04-04Rangoni Of Florence NEGOTIATION31Amy Elsner
1024Ricardo W MaletAustralia2024-03-27Rousseaux, Michael Esq RENEWAL22Ivan Magalhaes
1025Sinclair Q RoysterFrance2024-03-28King, Christopher A Esq UNQUALIFIED0Elwin Sharvill
1026Morrow H AmigonIndia2024-04-19Morlong Associates NEW11Asiya Javayant
1027Chavez C AlbaresSpain2024-04-02Feltz Printing Service UNQUALIFIED24Ioni Bowcher
1028Jones L StensethBrazil2024-04-18Dorl, James J Esq QUALIFIED78Ivan Magalhaes
1029Misaki O MaletIndia2024-04-21King, Christopher A Esq UNQUALIFIED99Xuxue Feng
1030Faith K SaylorsFrance2024-04-17Morlong Associates NEW24Ioni Bowcher
1031Jennifer M MaletSpain2024-04-14Printing Dimensions NEGOTIATION88Xuxue Feng
1032Smith U RoysterJapan2024-03-30Rangoni Of Florence RENEWAL75Stephen Shaw
1033Ivar T DoeAustralia2024-03-29King, Christopher A Esq PROPOSAL19Stephen Shaw
1034Sinclair U MaletJapan2024-04-19Dorl, James J Esq NEGOTIATION17Asiya Javayant
1035Wickens V VenereRussia2024-04-19Chemel, James L Cpa QUALIFIED78Ivan Magalhaes
1036David Z CampainIndia2024-04-22Chanay, Jeffrey A Esq UNQUALIFIED47Ivan Magalhaes
1037Emily M MorascaUnited Kingdom2024-03-29Morlong Associates QUALIFIED97Elwin Sharvill
1038Deepesh B AlbaresUnited Kingdom2024-04-21Dorl, James J Esq NEGOTIATION76Onyama Limba
1039Chavez E NestleRussia2024-04-09Feltz Printing Service RENEWAL3Amy Elsner
1040Morrow E VenereGermany2024-04-02Commercial Press RENEWAL53Asiya Javayant
1041Mujtaba I BowleyItaly2024-04-20Printing Dimensions PROPOSAL7Onyama Limba
1042Kaitlin B CaudyGermany2024-04-03Dorl, James J Esq RENEWAL63Ioni Bowcher
1043Antonio U MarrierItaly2024-03-30Benton, John B Jr PROPOSAL37Xuxue Feng
1044Darci C DilliardAustralia2024-04-10Chapman, Ross E Esq RENEWAL18Stephen Shaw
1045Sinclair Q VocelkaGermany2024-04-08Rangoni Of Florence UNQUALIFIED42Asiya Javayant
1046James X BowleyBrazil2024-04-20Printing Dimensions QUALIFIED7Xuxue Feng
1047Morrow Z DilliardIndia2024-04-07Feiner Bros PROPOSAL11Ioni Bowcher
1048Murillo I KolmetzIndia2024-04-14Benton, John B Jr UNQUALIFIED87Anna Fali
1049Francesco Y BowleyAustralia2024-04-25Feltz Printing Service UNQUALIFIED8Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Juan I GarufiJapanStephen Shaw NEW
Jeanfrancois T GlickItalyAsiya Javayant PROPOSAL
Aruna S GillianGermanyIoni Bowcher RENEWAL
Arvin E BriddickUnited KingdomIoni Bowcher UNQUALIFIED
Misaki K RimAustraliaAsiya Javayant PROPOSAL
Munro T WhobreyFranceIoni Bowcher QUALIFIED
Octavia Z BowleyAustraliaAmy Elsner QUALIFIED
Aditya V BriddickCanadaBernardo Dominic RENEWAL
Darci J AmigonRussiaAmy Elsner NEGOTIATION
Izzy C ChuiCanadaAnna Fali RENEWAL
Maria X PaprockiIndiaBernardo Dominic RENEWAL
Munro B AmigonItalyXuxue Feng NEGOTIATION
Adams O PerinCanadaAmy Elsner NEW
Murillo C RulapaughArgentinaXuxue Feng RENEWAL
Misaki R MorascaSpainAnna Fali NEW
Octavia A WieserJapanIvan Magalhaes NEGOTIATION
Alejandro U GillianCanadaOnyama Limba RENEWAL
Rodrigues N CaldareraUnited KingdomAnna Fali UNQUALIFIED
Silvio D PerinItalyIvan Magalhaes PROPOSAL
Deepesh A ButtRussiaStephen Shaw QUALIFIED
Mujtaba S DarakjySpainIvan Magalhaes UNQUALIFIED
Misaki J PaprockiAustraliaAnna Fali UNQUALIFIED
Octavia Y VocelkaItalyAnna Fali RENEWAL
Maria E MorascaIndiaIvan Magalhaes NEW
Ricardo E MorascaFranceIvan Magalhaes RENEWAL
Leja W AmigonAustraliaAnna Fali NEW
Sinclair I PerinIndiaElwin Sharvill PROPOSAL
Faith C SergiRussiaOnyama Limba UNQUALIFIED
Jennifer F SergiAustraliaAsiya Javayant PROPOSAL
Jones L NestleUnited KingdomBernardo Dominic UNQUALIFIED
Francesco I FigeroaIndiaAsiya Javayant RENEWAL
Isabel N RimSpainXuxue Feng QUALIFIED
Munro B NickaBrazilStephen Shaw NEW
Murillo G TollnerJapanXuxue Feng QUALIFIED
Kaitlin E StockhamBrazilIoni Bowcher QUALIFIED
Juan M MacleadArgentinaIoni Bowcher NEW
Rodrigues N OldroydArgentinaStephen Shaw NEW
Johnson D VocelkaRussiaStephen Shaw PROPOSAL
Jefferson L SchemmerArgentinaOnyama Limba UNQUALIFIED
Julie J BriddickSpainIvan Magalhaes QUALIFIED
Greenwood O FigeroaJapanBernardo Dominic NEW
Aditya W ButtFranceXuxue Feng NEW
Julie A SlusarskiArgentinaOnyama Limba UNQUALIFIED
Murillo C OldroydCanadaIvan Magalhaes UNQUALIFIED
Arvin O CaldareraJapanBernardo Dominic PROPOSAL
Nicolas F StockhamItalyBernardo Dominic RENEWAL
Arvin B CaldareraBrazilIoni Bowcher QUALIFIED
Deepesh L KuskoJapanIvan Magalhaes NEW
Jeanfrancois Q RoysterUnited KingdomStephen Shaw NEGOTIATION
Darci L SlusarskiItalyXuxue Feng UNQUALIFIED
Frozen Columns
Name
Faith U Poquette
Aruna E Iturbide
Leja Y Oldroyd
Jefferson O Kusko
Misaki W Morasca
Maisha S Inouye
Cody R Caudy
Alejandro P Bowley
Munro G Perin
Johnson V Kusko
Leon Q Sergi
Aditya T Amigon
Isabel V Figeroa
Octavia B Maclead
Ashley G Briddick
Jefferson O Ostrosky
Greenwood I Figeroa
Smith T Darakjy
Jennifer U Venere
Rodrigues O Gaucho
Aruna L Saylors
Jeanfrancois L Royster
Murillo B Wieser
Leon I Sergi
Smith Y Kolmetz
Maisha Y Kusko
Aika J Campain
Deepesh A Saylors
Silvio V Albares
Greenwood V Royster
James Z Poquette
Morrow Q Tollner
Smith G Tollner
Francesco Z Ruta
Stacey R Doe
Jennifer A Perin
Leja R Nicka
Kadeem L Amigon
James E Kusko
Aika K Ruta
Francesco S Gillian
Jones S Perin
Leja X Dilliard
Chavez X Caudy
Maria H Stockham
Ivar C Briddick
Emily Z Nicka
Jennifer Q Poquette
Wickens Z Oldroyd
Jefferson A Bolognia
IdCountryDate
1000Russia2024-04-19
1001United Kingdom2024-04-24
1002Canada2024-04-10
1003Italy2024-04-15
1004Japan2024-04-05
1005Spain2024-04-06
1006France2024-03-30
1007Italy2024-04-03
1008Germany2024-04-02
1009Australia2024-04-09
1010Italy2024-04-21
1011India2024-04-01
1012France2024-04-18
1013Japan2024-04-02
1014Spain2024-04-01
1015France2024-04-19
1016India2024-04-22
1017India2024-04-03
1018Italy2024-03-27
1019Italy2024-03-28
1020Germany2024-04-05
1021Germany2024-03-28
1022Canada2024-04-13
1023Germany2024-04-03
1024Spain2024-03-27
1025Italy2024-04-19
1026Germany2024-04-13
1027Canada2024-03-30
1028France2024-04-08
1029Japan2024-04-19
1030Japan2024-04-18
1031Brazil2024-04-10
1032United Kingdom2024-04-06
1033United Kingdom2024-04-01
1034Spain2024-04-08
1035Japan2024-04-20
1036Australia2024-04-24
1037Spain2024-04-02
1038Argentina2024-03-31
1039Brazil2024-04-16
1040Argentina2024-04-05
1041France2024-04-14
1042Germany2024-04-25
1043Spain2024-03-31
1044Australia2024-04-07
1045Brazil2024-04-20
1046Argentina2024-04-25
1047Canada2024-04-22
1048Argentina2024-04-11
1049Spain2024-04-24

On-Demand Data

NameIdCountryDate
Munro F Ruta1000Australia2024-04-05
Darci A Kusko1001Italy2024-04-04
Antonio U Ostrosky1002Russia2024-04-18
Kaitlin Y Morasca1003Japan2024-03-31
Nicolas W Inouye1004France2024-04-12
Ashley E Kusko1005France2024-04-02
Octavia B Malet1006Germany2024-03-27
Jones I Rim1007Russia2024-04-02
Adams H Vocelka1008Russia2024-04-10
Mayumi T Paprocki1009Russia2024-04-06
Kadeem G Stockham1010Japan2024-04-11
Julie N Figeroa1011Brazil2024-04-14
Alejandro T Vocelka1012Brazil2024-04-09
Sinclair H Flosi1013India2024-04-18
Juan P Darakjy1014Germany2024-04-19
Arvin W Maclead1015Canada2024-03-27
Faith M Perin1016Spain2024-04-02
Wickens L Campain1017Italy2024-04-14
Deepesh X Ostrosky1018Spain2024-04-23
Maria A Royster1019India2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh N GauchoGermanyAnna Fali QUALIFIED
Murillo X CaldareraIndiaIoni Bowcher UNQUALIFIED
Maria U CampainBrazilAmy Elsner QUALIFIED
Johnson M CampainGermanyBernardo Dominic QUALIFIED
Smith E BowleyUnited KingdomStephen Shaw UNQUALIFIED
Alejandro X ChuiGermanyElwin Sharvill QUALIFIED
Murillo X BologniaJapanBernardo Dominic NEGOTIATION
Rodrigues D KolmetzItalyAmy Elsner RENEWAL
Kadeem A ButtGermanyIvan Magalhaes PROPOSAL
Aika T PerinSpainBernardo Dominic NEW
Arvin T RimRussiaElwin Sharvill NEW
Jones B MaletAustraliaIvan Magalhaes QUALIFIED
Mujtaba K ButtItalyStephen Shaw PROPOSAL
Misaki Y PerinItalyElwin Sharvill QUALIFIED
Mujtaba I GauchoIndiaOnyama Limba RENEWAL
Smith K FlosiJapanOnyama Limba NEGOTIATION
Darci R ChuiItalyIoni Bowcher PROPOSAL
Ricardo U SaylorsUnited KingdomAsiya Javayant RENEWAL
Aditya W WaycottBrazilAmy Elsner NEW
Maria Q PaprockiBrazilBernardo Dominic PROPOSAL
Jennifer H InouyeJapanIvan Magalhaes NEGOTIATION
Tony R GarufiGermanyIvan Magalhaes UNQUALIFIED
Misaki B IturbideSpainAmy Elsner RENEWAL
Leon K BologniaAustraliaIoni Bowcher RENEWAL
Smith I WieserRussiaXuxue Feng QUALIFIED
Nicolas Z OldroydCanadaElwin Sharvill UNQUALIFIED
Leon U SchemmerAustraliaElwin Sharvill PROPOSAL
Misaki V SchemmerCanadaOnyama Limba NEW
Misaki W BowleySpainOnyama Limba RENEWAL
Jefferson V FigeroaFranceAmy Elsner UNQUALIFIED
Clifford H MarrierSpainOnyama Limba UNQUALIFIED
Kadeem I ShinkoItalyAnna Fali NEW
Nicolas S FerenczFranceAmy Elsner NEGOTIATION
Maria T SchemmerGermanyXuxue Feng RENEWAL
Jeanfrancois Q DarakjyJapanOnyama Limba RENEWAL
Leon L DoeJapanIoni Bowcher NEW
James S PaprockiBrazilElwin Sharvill UNQUALIFIED
Ricardo S VocelkaUnited KingdomXuxue Feng QUALIFIED
Arvin O WaycottSpainStephen Shaw RENEWAL
Alejandro C MacleadJapanStephen Shaw 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>