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
Jeanfrancois T NickaRussiaElwin Sharvill UNQUALIFIED
James E StensethJapanOnyama Limba NEW
Darci G SlusarskiBrazilIvan Magalhaes NEGOTIATION
Aika A BriddickSpainOnyama Limba NEW
Faith K AmigonArgentinaBernardo Dominic NEGOTIATION
Leon B CaldareraItalyIvan Magalhaes QUALIFIED
Julie U WieserBrazilOnyama Limba RENEWAL
Octavia C ButtItalyStephen Shaw RENEWAL
Morrow X WaycottFranceStephen Shaw RENEWAL
Francesco G DilliardBrazilIoni Bowcher NEW
Jones G DilliardUnited KingdomIvan Magalhaes NEGOTIATION
Murillo Q SchemmerItalyElwin Sharvill UNQUALIFIED
Mayumi X SlusarskiSpainIvan Magalhaes RENEWAL
Mayumi R CaldareraCanadaElwin Sharvill NEGOTIATION
Antonio B CampainUnited KingdomAnna Fali UNQUALIFIED
Aruna O MorascaFranceElwin Sharvill UNQUALIFIED
Stacey P IturbideIndiaOnyama Limba NEW
Jones X VenereCanadaIvan Magalhaes NEGOTIATION
Arvin T MaletGermanyXuxue Feng PROPOSAL
Salvatore P IturbideFranceAsiya Javayant RENEWAL
Aruna A StensethIndiaXuxue Feng NEW
Salvatore J ShinkoCanadaIoni Bowcher NEW
Smith S PerinItalyAsiya Javayant RENEWAL
Arvin V RulapaughAustraliaElwin Sharvill NEGOTIATION
Leja I GauchoArgentinaIoni Bowcher UNQUALIFIED
Leon L GillianAustraliaStephen Shaw NEW
Leja K CampainUnited KingdomIvan Magalhaes RENEWAL
Cody I SchemmerAustraliaAsiya Javayant PROPOSAL
Kaitlin W StensethArgentinaElwin Sharvill NEW
Juan P GlickJapanAmy Elsner PROPOSAL
Izzy T WhobreyCanadaStephen Shaw QUALIFIED
Kaitlin Z ChuiBrazilIoni Bowcher NEW
Antonio U MaletArgentinaXuxue Feng UNQUALIFIED
Smith V RoysterUnited KingdomOnyama Limba PROPOSAL
Antonio D DarakjyAustraliaStephen Shaw QUALIFIED
Ivar K InouyeItalyAsiya Javayant QUALIFIED
Rodrigues H NestleGermanyElwin Sharvill UNQUALIFIED
Juan U MacleadFranceElwin Sharvill PROPOSAL
David J NickaCanadaOnyama Limba QUALIFIED
Izzy N SaylorsRussiaXuxue Feng PROPOSAL
Maisha D FerenczAustraliaStephen Shaw NEGOTIATION
Sinclair A MacleadFranceAsiya Javayant NEW
Maria I OldroydCanadaIoni Bowcher QUALIFIED
Octavia V BowleyAustraliaIoni Bowcher QUALIFIED
Chavez A ShinkoRussiaElwin Sharvill UNQUALIFIED
Stacey H SlusarskiFranceOnyama Limba RENEWAL
Clifford V FerenczAustraliaElwin Sharvill RENEWAL
Alejandro Z BowleyCanadaOnyama Limba QUALIFIED
Murillo I KolmetzCanadaStephen Shaw PROPOSAL
Silvio M CaudyFranceStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Antonio A KolmetzUnited KingdomElwin Sharvill NEW
James D GauchoRussiaBernardo Dominic PROPOSAL
Rodrigues G MaletBrazilOnyama Limba QUALIFIED
Jennifer E MacleadItalyOnyama Limba NEW
Aruna Q SaylorsBrazilAsiya Javayant QUALIFIED
Octavia K FlosiIndiaAmy Elsner UNQUALIFIED
Chavez U MorascaGermanyAnna Fali RENEWAL
Chavez G CaldareraFranceElwin Sharvill NEW
Mujtaba O MacleadAustraliaIvan Magalhaes PROPOSAL
Munro R OldroydBrazilIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan T MaletFrance2024-04-19Feiner Bros RENEWAL22Asiya Javayant
1001Salvatore A SaylorsRussia2024-04-20King, Christopher A Esq NEGOTIATION88Amy Elsner
1002Costa S CaudyIndia2024-05-06King, Christopher A Esq NEGOTIATION6Xuxue Feng
1003Kadeem R SergiSpain2024-04-11King, Christopher A Esq PROPOSAL25Stephen Shaw
1004Octavia C GarufiSpain2024-04-21Feiner Bros PROPOSAL88Xuxue Feng
1005Emily P PerinIndia2024-05-05King, Christopher A Esq RENEWAL99Ioni Bowcher
1006Smith X WhobreyFrance2024-05-04Feiner Bros PROPOSAL48Stephen Shaw
1007Octavia C AmigonCanada2024-04-13Rousseaux, Michael Esq PROPOSAL49Anna Fali
1008Munro D NestleSpain2024-04-23Commercial Press QUALIFIED49Asiya Javayant
1009Morrow C DoeAustralia2024-04-19Benton, John B Jr UNQUALIFIED15Bernardo Dominic
1010Kadeem J NestleAustralia2024-04-26Printing Dimensions NEGOTIATION61Asiya Javayant
1011Aditya P NestleCanada2024-04-18Printing Dimensions QUALIFIED2Asiya Javayant
1012Ivar I GillianCanada2024-04-08Buckley Miller Wright PROPOSAL52Elwin Sharvill
1013Tony G BowleyIndia2024-04-13Buckley Miller Wright PROPOSAL94Ivan Magalhaes
1014Emily N DarakjyGermany2024-04-16Dorl, James J Esq RENEWAL37Elwin Sharvill
1015Wickens H NestleArgentina2024-04-15Rangoni Of Florence NEW13Onyama Limba
1016Smith I DarakjyAustralia2024-04-11Chemel, James L Cpa PROPOSAL56Amy Elsner
1017Aditya G DoeAustralia2024-04-08Morlong Associates PROPOSAL23Anna Fali
1018Munro J DilliardFrance2024-04-19Chemel, James L Cpa NEW22Elwin Sharvill
1019Francesco I GauchoSpain2024-04-27Feiner Bros QUALIFIED9Asiya Javayant
1020Claire K StockhamGermany2024-05-01Benton, John B Jr PROPOSAL55Anna Fali
1021Greenwood D OstroskyIndia2024-04-16Morlong Associates UNQUALIFIED38Ivan Magalhaes
1022Aruna U VocelkaFrance2024-04-11Chemel, James L Cpa UNQUALIFIED93Bernardo Dominic
1023Salvatore O WieserItaly2024-04-17Chanay, Jeffrey A Esq NEGOTIATION85Elwin Sharvill
1024Alejandro C DarakjyArgentina2024-05-04Chemel, James L Cpa QUALIFIED61Ivan Magalhaes
1025Arvin G WhobreyUnited Kingdom2024-04-17Morlong Associates NEGOTIATION0Anna Fali
1026Sinclair J AmigonFrance2024-04-19Commercial Press RENEWAL86Xuxue Feng
1027Jones D ButtJapan2024-04-19Rangoni Of Florence QUALIFIED82Anna Fali
1028Maisha M IturbideUnited Kingdom2024-04-11Feiner Bros NEW87Amy Elsner
1029Darci B BologniaAustralia2024-05-01Truhlar And Truhlar Attys UNQUALIFIED33Amy Elsner
1030Jefferson M WaycottUnited Kingdom2024-04-11Truhlar And Truhlar Attys NEGOTIATION60Ioni Bowcher
1031Jones P RutaFrance2024-04-09Feltz Printing Service PROPOSAL6Bernardo Dominic
1032Sinclair R StensethAustralia2024-05-01Feiner Bros NEW9Ivan Magalhaes
1033Aruna U WieserUnited Kingdom2024-04-25Chapman, Ross E Esq PROPOSAL81Onyama Limba
1034Johnson A SlusarskiIndia2024-04-07Chemel, James L Cpa PROPOSAL47Ivan Magalhaes
1035Claire W WaycottArgentina2024-05-06Chapman, Ross E Esq UNQUALIFIED76Onyama Limba
1036Claire Y StockhamIndia2024-04-19Benton, John B Jr NEGOTIATION89Amy Elsner
1037David M GauchoJapan2024-04-23Commercial Press UNQUALIFIED9Onyama Limba
1038Wickens T NestleRussia2024-04-15Rangoni Of Florence PROPOSAL96Onyama Limba
1039Stacey I AlbaresIndia2024-04-25Chemel, James L Cpa RENEWAL71Ivan Magalhaes
1040Kadeem C BriddickItaly2024-04-22Rousseaux, Michael Esq NEGOTIATION75Anna Fali
1041David G ButtItaly2024-04-21Dorl, James J Esq NEW48Bernardo Dominic
1042Ivar T RimRussia2024-04-18Feltz Printing Service NEGOTIATION14Onyama Limba
1043Nicolas S KolmetzArgentina2024-04-22Feiner Bros PROPOSAL64Anna Fali
1044Ashley C CaldareraBrazil2024-04-07Chanay, Jeffrey A Esq UNQUALIFIED99Xuxue Feng
1045Misaki O BowleyCanada2024-04-28Dorl, James J Esq NEW52Ivan Magalhaes
1046Salvatore G DilliardIndia2024-04-30Morlong Associates NEGOTIATION51Elwin Sharvill
1047Isabel V PerinBrazil2024-04-23Chapman, Ross E Esq RENEWAL89Bernardo Dominic
1048Jefferson K BologniaAustralia2024-04-20Chanay, Jeffrey A Esq QUALIFIED73Xuxue Feng
1049Silvio U IturbideSpain2024-04-17Truhlar And Truhlar Attys UNQUALIFIED32Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Sinclair T BowleyIndiaXuxue Feng UNQUALIFIED
Izzy X MarrierFranceAnna Fali NEW
Chavez R PerinRussiaXuxue Feng QUALIFIED
Cody S FerenczFranceBernardo Dominic PROPOSAL
Faith S CampainFranceStephen Shaw NEW
Jefferson Q OstroskyRussiaElwin Sharvill RENEWAL
Murillo Q MacleadUnited KingdomXuxue Feng PROPOSAL
Antonio G NickaArgentinaAsiya Javayant NEGOTIATION
Darci V NestleRussiaStephen Shaw NEGOTIATION
Leon X DilliardRussiaBernardo Dominic QUALIFIED
Emily B PoquetteItalyIvan Magalhaes NEGOTIATION
Emily V SchemmerUnited KingdomBernardo Dominic QUALIFIED
Kaitlin J FlosiIndiaAsiya Javayant NEGOTIATION
James Z NickaRussiaAsiya Javayant UNQUALIFIED
Costa J CampainBrazilElwin Sharvill UNQUALIFIED
Alejandro E PerinFranceIoni Bowcher RENEWAL
Juan L SergiItalyOnyama Limba NEGOTIATION
Salvatore V NestleCanadaOnyama Limba UNQUALIFIED
Alejandro N MarrierIndiaIvan Magalhaes NEW
Johnson S AmigonItalyStephen Shaw PROPOSAL
Leon J VocelkaBrazilStephen Shaw NEGOTIATION
Antonio S DarakjyUnited KingdomAsiya Javayant RENEWAL
Munro C SlusarskiAustraliaIvan Magalhaes NEGOTIATION
Kadeem L SergiArgentinaStephen Shaw NEGOTIATION
Kadeem M MaletItalyXuxue Feng RENEWAL
Munro M RimArgentinaElwin Sharvill QUALIFIED
Aika M GlickBrazilAsiya Javayant RENEWAL
Darci F PerinSpainIvan Magalhaes NEW
David P MaletCanadaAsiya Javayant NEW
Francesco K IturbideAustraliaIvan Magalhaes RENEWAL
David T BologniaGermanyXuxue Feng NEW
Octavia B DoeCanadaElwin Sharvill UNQUALIFIED
James W TollnerFranceBernardo Dominic UNQUALIFIED
Maria W CaudySpainAmy Elsner RENEWAL
Misaki M SchemmerAustraliaElwin Sharvill QUALIFIED
Rodrigues R RulapaughAustraliaStephen Shaw RENEWAL
James I ChuiCanadaAsiya Javayant RENEWAL
Deepesh K SergiGermanyAmy Elsner UNQUALIFIED
Isabel K NickaGermanyAmy Elsner NEGOTIATION
Julie W GauchoSpainXuxue Feng RENEWAL
James V NickaIndiaStephen Shaw NEW
Emily X MarrierSpainOnyama Limba QUALIFIED
Tony U RoysterIndiaStephen Shaw NEGOTIATION
Mujtaba F OstroskyIndiaXuxue Feng NEW
Izzy M StensethJapanBernardo Dominic QUALIFIED
Rodrigues N BowleyArgentinaAmy Elsner NEGOTIATION
Julie T DarakjyJapanIvan Magalhaes NEGOTIATION
Alejandro S VenereItalyAnna Fali NEGOTIATION
Leja M KuskoFranceAmy Elsner UNQUALIFIED
Mayumi H RimCanadaAmy Elsner PROPOSAL
Frozen Columns
Name
Costa R Schemmer
Greenwood U Glick
Arvin H Darakjy
Smith R Malet
Wickens O Amigon
Ivar Z Nicka
Johnson V Albares
Deepesh C Waycott
Octavia V Chui
Alejandro V Shinko
David T Ruta
Costa P Campain
Kaitlin Z Ruta
Leon P Schemmer
Clifford C Ruta
Aruna J Schemmer
Emily I Stockham
Nicolas T Malet
Aika Q Chui
Francesco J Nicka
Wickens J Rim
Sinclair C Malet
Leja L Nestle
Costa K Gaucho
Tony J Briddick
Sinclair M Butt
Misaki G Venere
Aika I Chui
Johnson X Ruta
Arvin G Figeroa
Maisha T Maclead
Aditya U Royster
Munro L Ostrosky
Rodrigues U Bolognia
Kadeem M Inouye
Darci Y Dilliard
Julie I Iturbide
Aika Q Albares
Isabel U Poquette
Jennifer U Butt
Claire V Darakjy
Costa M Shinko
Wickens Q Figeroa
Chavez T Briddick
Ivar S Ostrosky
Octavia L Shinko
Julie S Malet
Juan B Chui
Jefferson L Paprocki
Murillo Q Caudy
IdCountryDate
1000United Kingdom2024-04-16
1001India2024-04-29
1002United Kingdom2024-04-24
1003France2024-04-10
1004Italy2024-04-18
1005Japan2024-04-25
1006Canada2024-04-10
1007Argentina2024-04-11
1008Russia2024-04-29
1009Italy2024-05-03
1010Germany2024-04-26
1011Canada2024-04-19
1012Germany2024-04-09
1013Italy2024-04-16
1014United Kingdom2024-05-02
1015Russia2024-04-09
1016Brazil2024-04-07
1017Russia2024-04-10
1018Argentina2024-05-02
1019Brazil2024-04-23
1020Spain2024-04-14
1021Italy2024-05-05
1022India2024-04-25
1023Argentina2024-04-15
1024Japan2024-05-01
1025France2024-05-02
1026Spain2024-05-05
1027Canada2024-04-22
1028Australia2024-04-08
1029Russia2024-04-28
1030Italy2024-04-27
1031Germany2024-05-01
1032Australia2024-04-22
1033France2024-04-30
1034Russia2024-04-17
1035Argentina2024-05-04
1036France2024-05-03
1037France2024-04-19
1038Brazil2024-04-16
1039Japan2024-04-10
1040Argentina2024-05-05
1041Brazil2024-04-28
1042Brazil2024-04-29
1043Italy2024-05-04
1044United Kingdom2024-05-03
1045Canada2024-04-12
1046France2024-04-23
1047France2024-04-26
1048Canada2024-04-23
1049India2024-05-04

On-Demand Data

NameIdCountryDate
Cody A Vocelka1000France2024-04-12
Izzy A Butt1001France2024-04-23
Francesco Y Royster1002Japan2024-04-22
Jones C Nicka1003United Kingdom2024-04-30
Salvatore W Darakjy1004Italy2024-04-10
Costa I Foller1005Italy2024-05-01
Darci S Royster1006Russia2024-04-27
David H Nicka1007France2024-04-10
Aditya X Bowley1008Canada2024-04-18
Aika M Vocelka1009United Kingdom2024-05-01
Darci N Maclead1010Italy2024-04-20
Mujtaba T Garufi1011Canada2024-04-23
Ivar C Rim1012Australia2024-04-13
Francesco J Albares1013Spain2024-04-15
Ivar X Malet1014India2024-04-09
Greenwood N Sergi1015India2024-04-21
Sinclair J Waycott1016Australia2024-04-10
Mujtaba Q Ostrosky1017France2024-05-01
Aruna R Morasca1018Argentina2024-05-05
Arvin E Vocelka1019Argentina2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey Z VenereJapanBernardo Dominic PROPOSAL
Maisha E SlusarskiArgentinaXuxue Feng QUALIFIED
Alejandro R FlosiRussiaOnyama Limba NEGOTIATION
Aditya J RoysterAustraliaBernardo Dominic UNQUALIFIED
Arvin Q NestleBrazilIoni Bowcher NEGOTIATION
Leon N RimSpainElwin Sharvill NEGOTIATION
James W CampainAustraliaAsiya Javayant UNQUALIFIED
Smith R MorascaAustraliaIvan Magalhaes NEGOTIATION
Munro U ChuiBrazilOnyama Limba QUALIFIED
Jeanfrancois P SlusarskiJapanBernardo Dominic PROPOSAL
Julie C KolmetzFranceIvan Magalhaes UNQUALIFIED
Leon N AlbaresIndiaXuxue Feng QUALIFIED
Ashley B NickaGermanyAsiya Javayant PROPOSAL
Jefferson W GillianUnited KingdomAsiya Javayant QUALIFIED
Maisha D PerinFranceAsiya Javayant UNQUALIFIED
Jennifer T BriddickArgentinaIoni Bowcher RENEWAL
Aruna B BologniaFranceIvan Magalhaes NEW
Maria H FlosiJapanIoni Bowcher UNQUALIFIED
Greenwood V MacleadSpainOnyama Limba QUALIFIED
Aruna Y CaldareraCanadaElwin Sharvill QUALIFIED
David G MaletSpainAsiya Javayant RENEWAL
Clifford V OstroskyItalyAsiya Javayant PROPOSAL
Ricardo A MaletItalyStephen Shaw NEGOTIATION
Tony A DilliardAustraliaElwin Sharvill PROPOSAL
Jennifer A NickaBrazilIvan Magalhaes PROPOSAL
Morrow G OstroskyArgentinaIvan Magalhaes QUALIFIED
Izzy L KolmetzIndiaBernardo Dominic NEW
Jeanfrancois O FigeroaArgentinaOnyama Limba RENEWAL
Salvatore O OldroydArgentinaElwin Sharvill UNQUALIFIED
Wickens A KolmetzGermanyOnyama Limba NEW
Nicolas X AmigonGermanyIoni Bowcher QUALIFIED
Tony X PoquetteFranceOnyama Limba UNQUALIFIED
Mujtaba K GillianItalyXuxue Feng UNQUALIFIED
Kaitlin M DoeAustraliaAmy Elsner PROPOSAL
Leja L DoeFranceXuxue Feng UNQUALIFIED
Claire L SergiGermanyAmy Elsner UNQUALIFIED
Ricardo V AlbaresUnited KingdomIoni Bowcher QUALIFIED
Maria D NestleArgentinaIvan Magalhaes PROPOSAL
Stacey N NestleUnited KingdomElwin Sharvill QUALIFIED
Ivar Q AmigonIndiaAnna Fali 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>