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
Ivar Z WhobreyJapanElwin Sharvill UNQUALIFIED
Mujtaba F GarufiAustraliaIoni Bowcher QUALIFIED
Tony C VocelkaItalyBernardo Dominic QUALIFIED
Francesco I SaylorsSpainBernardo Dominic PROPOSAL
Jeanfrancois P WhobreyJapanStephen Shaw PROPOSAL
Jeanfrancois W BowleyBrazilStephen Shaw RENEWAL
Juan S RulapaughArgentinaIvan Magalhaes PROPOSAL
Claire I DilliardItalyElwin Sharvill QUALIFIED
Izzy J OstroskyFranceAsiya Javayant NEGOTIATION
Arvin I StensethBrazilBernardo Dominic NEGOTIATION
Costa R WaycottGermanyXuxue Feng NEGOTIATION
Arvin Q CampainSpainAmy Elsner RENEWAL
Ashley N RulapaughArgentinaElwin Sharvill UNQUALIFIED
Wickens Y DilliardBrazilBernardo Dominic RENEWAL
Murillo V CampainAustraliaAmy Elsner NEW
Sinclair M WieserBrazilAmy Elsner QUALIFIED
Aruna C VenereUnited KingdomAmy Elsner QUALIFIED
Octavia L KolmetzFranceXuxue Feng NEW
Stacey G AmigonFranceElwin Sharvill NEW
Leja J ShinkoFranceBernardo Dominic QUALIFIED
Kadeem U NestleItalyAsiya Javayant RENEWAL
Cody C SergiArgentinaIvan Magalhaes NEGOTIATION
Julie Y CaudyBrazilOnyama Limba NEW
Maisha Y AmigonRussiaStephen Shaw NEGOTIATION
Chavez Z ShinkoAustraliaXuxue Feng PROPOSAL
Adams K GauchoGermanyAnna Fali NEGOTIATION
Antonio E PoquetteSpainIoni Bowcher NEW
Jefferson Z PaprockiFranceBernardo Dominic QUALIFIED
Mayumi K StockhamUnited KingdomStephen Shaw PROPOSAL
Jennifer M RulapaughSpainAnna Fali NEGOTIATION
Francesco A GarufiItalyAnna Fali PROPOSAL
Antonio F BowleyItalyAmy Elsner NEW
Nicolas Z OldroydIndiaStephen Shaw NEGOTIATION
Darci Z MarrierFranceAnna Fali UNQUALIFIED
Ricardo V MorascaBrazilAmy Elsner PROPOSAL
Salvatore A KuskoArgentinaElwin Sharvill NEGOTIATION
Aika U MacleadCanadaOnyama Limba RENEWAL
Salvatore F FerenczIndiaBernardo Dominic NEW
Claire W BowleyGermanyIvan Magalhaes NEW
Cody X MaletFranceAmy Elsner UNQUALIFIED
Jennifer Z BriddickAustraliaBernardo Dominic RENEWAL
Jennifer V ButtSpainXuxue Feng UNQUALIFIED
Francesco R WhobreyAustraliaXuxue Feng QUALIFIED
James Z CaldareraRussiaIvan Magalhaes RENEWAL
Chavez H ChuiJapanIoni Bowcher QUALIFIED
Maisha S WieserBrazilIvan Magalhaes NEGOTIATION
Antonio G FlosiAustraliaAmy Elsner UNQUALIFIED
Misaki A KolmetzBrazilIvan Magalhaes UNQUALIFIED
David K FerenczAustraliaAnna Fali NEW
Kaitlin L AlbaresCanadaAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Murillo L WaycottGermanyAsiya Javayant NEW
Aruna O PerinBrazilElwin Sharvill NEW
Maria T DarakjyUnited KingdomElwin Sharvill RENEWAL
James B GarufiGermanyAnna Fali RENEWAL
Jefferson C FlosiJapanOnyama Limba NEW
Maisha X SchemmerBrazilAmy Elsner NEGOTIATION
Silvio Q MarrierUnited KingdomXuxue Feng PROPOSAL
Alejandro D IturbideArgentinaStephen Shaw UNQUALIFIED
Alejandro Y DarakjyItalyAmy Elsner QUALIFIED
Leja S OldroydSpainXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson G PoquetteArgentina2024-05-03Morlong Associates PROPOSAL1Bernardo Dominic
1001Emily R GauchoCanada2024-04-11Dorl, James J Esq PROPOSAL33Elwin Sharvill
1002Jefferson M CampainUnited Kingdom2024-04-24Rangoni Of Florence UNQUALIFIED73Ioni Bowcher
1003Chavez S KuskoBrazil2024-04-08Truhlar And Truhlar Attys QUALIFIED50Anna Fali
1004Maria U ShinkoFrance2024-05-03Chapman, Ross E Esq PROPOSAL72Onyama Limba
1005Munro H CaldareraCanada2024-05-05Printing Dimensions RENEWAL41Ioni Bowcher
1006Isabel X NestleGermany2024-04-12Truhlar And Truhlar Attys RENEWAL94Anna Fali
1007Silvio D MaletCanada2024-04-29Chapman, Ross E Esq RENEWAL36Asiya Javayant
1008Octavia U PerinUnited Kingdom2024-04-13Rangoni Of Florence NEGOTIATION24Amy Elsner
1009Leon B BriddickSpain2024-04-10Printing Dimensions QUALIFIED88Ivan Magalhaes
1010David E StockhamGermany2024-05-03Commercial Press QUALIFIED66Anna Fali
1011Adams G GillianIndia2024-05-02Benton, John B Jr NEW58Asiya Javayant
1012Murillo Q NickaRussia2024-04-09Rousseaux, Michael Esq NEGOTIATION58Anna Fali
1013Smith S ChuiRussia2024-04-24Chemel, James L Cpa UNQUALIFIED62Xuxue Feng
1014Aruna B MaletJapan2024-04-08King, Christopher A Esq PROPOSAL35Bernardo Dominic
1015Mujtaba T DarakjyUnited Kingdom2024-04-30Benton, John B Jr QUALIFIED25Asiya Javayant
1016Munro W PerinBrazil2024-04-16Commercial Press UNQUALIFIED15Ioni Bowcher
1017Maisha K SaylorsJapan2024-05-04Rousseaux, Michael Esq PROPOSAL6Stephen Shaw
1018Clifford X MaletFrance2024-04-23Chapman, Ross E Esq QUALIFIED67Ivan Magalhaes
1019Octavia H CaudyUnited Kingdom2024-04-29Benton, John B Jr QUALIFIED9Asiya Javayant
1020Jones S VenereBrazil2024-04-10King, Christopher A Esq RENEWAL3Asiya Javayant
1021Julie S ChuiBrazil2024-04-14Buckley Miller Wright UNQUALIFIED55Onyama Limba
1022Mayumi F ChuiRussia2024-04-28Chanay, Jeffrey A Esq NEGOTIATION72Onyama Limba
1023Leja X InouyeBrazil2024-05-05Feltz Printing Service RENEWAL92Elwin Sharvill
1024James T GlickRussia2024-04-07Printing Dimensions NEW88Onyama Limba
1025David E NestleItaly2024-04-08Rangoni Of Florence PROPOSAL79Xuxue Feng
1026Octavia Z GauchoCanada2024-04-17Printing Dimensions NEW21Onyama Limba
1027Cody P StockhamRussia2024-04-29Dorl, James J Esq PROPOSAL95Onyama Limba
1028Jennifer Y IturbideFrance2024-04-10Feltz Printing Service NEW57Amy Elsner
1029Kaitlin M FollerAustralia2024-04-11Chanay, Jeffrey A Esq NEGOTIATION17Onyama Limba
1030Maria H NestleGermany2024-05-03King, Christopher A Esq UNQUALIFIED75Stephen Shaw
1031Octavia I PerinAustralia2024-05-06Chemel, James L Cpa PROPOSAL99Stephen Shaw
1032Mujtaba O RulapaughRussia2024-04-25Morlong Associates QUALIFIED83Asiya Javayant
1033Aruna Q PoquetteIndia2024-04-30Truhlar And Truhlar Attys PROPOSAL89Stephen Shaw
1034Francesco E FigeroaSpain2024-04-24King, Christopher A Esq UNQUALIFIED46Anna Fali
1035Wickens Z RoysterFrance2024-04-27Benton, John B Jr QUALIFIED52Anna Fali
1036Adams K ButtGermany2024-04-20Truhlar And Truhlar Attys UNQUALIFIED70Bernardo Dominic
1037Sinclair P CampainIndia2024-05-04King, Christopher A Esq UNQUALIFIED66Onyama Limba
1038Izzy A SaylorsGermany2024-04-29Chapman, Ross E Esq QUALIFIED47Ioni Bowcher
1039Jefferson J AmigonItaly2024-04-30Rangoni Of Florence NEW80Amy Elsner
1040Rodrigues K ShinkoUnited Kingdom2024-04-19Printing Dimensions PROPOSAL65Ioni Bowcher
1041Leja J MaletJapan2024-04-30Chemel, James L Cpa UNQUALIFIED23Bernardo Dominic
1042Deepesh B DilliardItaly2024-04-20Truhlar And Truhlar Attys NEW73Amy Elsner
1043Isabel K MarrierJapan2024-04-17Printing Dimensions RENEWAL56Onyama Limba
1044Claire N NickaFrance2024-05-02Printing Dimensions PROPOSAL62Xuxue Feng
1045Ivar G KolmetzJapan2024-04-19Rousseaux, Michael Esq NEW13Asiya Javayant
1046Aruna E DarakjyAustralia2024-05-02Truhlar And Truhlar Attys RENEWAL81Elwin Sharvill
1047Arvin K FlosiArgentina2024-04-14Rangoni Of Florence NEGOTIATION27Ivan Magalhaes
1048Jefferson R MaletCanada2024-04-30Chemel, James L Cpa UNQUALIFIED73Amy Elsner
1049Adams G TollnerAustralia2024-04-27Chemel, James L Cpa RENEWAL70Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire M NickaJapanXuxue Feng QUALIFIED
Chavez M GauchoArgentinaAmy Elsner UNQUALIFIED
Misaki U NickaSpainAsiya Javayant QUALIFIED
Stacey A KuskoFranceAnna Fali RENEWAL
Costa S SlusarskiItalyAmy Elsner NEW
Jefferson F StensethBrazilAsiya Javayant NEGOTIATION
Nicolas P OstroskyJapanOnyama Limba PROPOSAL
Juan I PerinFranceIvan Magalhaes PROPOSAL
Morrow K VocelkaIndiaAsiya Javayant NEW
Octavia F GlickBrazilStephen Shaw PROPOSAL
Clifford E BowleyFranceAnna Fali UNQUALIFIED
Darci O ChuiFranceBernardo Dominic QUALIFIED
Murillo B FlosiBrazilIvan Magalhaes RENEWAL
Leon O WhobreyGermanyElwin Sharvill RENEWAL
Kadeem N FerenczGermanyStephen Shaw PROPOSAL
James W DoeArgentinaAsiya Javayant RENEWAL
Wickens Y OstroskyJapanAsiya Javayant UNQUALIFIED
Emily K MarrierCanadaAnna Fali UNQUALIFIED
Ashley J SergiGermanyIoni Bowcher QUALIFIED
Jennifer K VenereSpainAmy Elsner NEGOTIATION
Maria O WaycottRussiaXuxue Feng PROPOSAL
Nicolas M PaprockiAustraliaOnyama Limba NEGOTIATION
James D WhobreyItalyStephen Shaw UNQUALIFIED
Alejandro L KuskoUnited KingdomElwin Sharvill NEW
Arvin M PoquetteUnited KingdomElwin Sharvill UNQUALIFIED
Chavez P CampainJapanBernardo Dominic UNQUALIFIED
Faith K RimRussiaIoni Bowcher UNQUALIFIED
Jeanfrancois I PerinArgentinaBernardo Dominic NEGOTIATION
Antonio D CaudyIndiaBernardo Dominic RENEWAL
Ivar O FollerCanadaIoni Bowcher QUALIFIED
Emily U GarufiUnited KingdomIoni Bowcher QUALIFIED
Clifford P IturbideGermanyIvan Magalhaes NEGOTIATION
Antonio B NickaCanadaBernardo Dominic NEW
Maisha R PaprockiCanadaAnna Fali UNQUALIFIED
Alejandro M WieserCanadaAsiya Javayant RENEWAL
Morrow R FerenczRussiaAsiya Javayant QUALIFIED
Ricardo A MarrierSpainAnna Fali NEW
Maria P IturbideFranceBernardo Dominic NEW
Juan P GauchoFranceBernardo Dominic PROPOSAL
Maria Z MaletArgentinaIvan Magalhaes PROPOSAL
Emily X FerenczArgentinaBernardo Dominic NEGOTIATION
Ivar W SaylorsFranceStephen Shaw RENEWAL
Wickens W CampainFranceXuxue Feng QUALIFIED
Faith M VocelkaRussiaAmy Elsner NEW
Ivar A DoeItalyAnna Fali RENEWAL
Misaki Q RimAustraliaStephen Shaw QUALIFIED
Izzy D ButtIndiaXuxue Feng RENEWAL
Morrow Y PoquetteAustraliaStephen Shaw NEW
Francesco H TollnerArgentinaAnna Fali QUALIFIED
Maisha S CaldareraJapanIoni Bowcher NEGOTIATION
Frozen Columns
Name
Isabel O Nicka
Kaitlin L Royster
Jefferson F Sergi
Wickens G Doe
Kadeem D Briddick
Claire Y Doe
Salvatore I Waycott
Francesco X Figeroa
Nicolas J Iturbide
Emily N Bowley
Darci A Tollner
Leja L Iturbide
Leon W Schemmer
Aruna R Glick
Aika C Paprocki
Silvio X Shinko
Adams K Wieser
Izzy P Sergi
Chavez R Bowley
Emily T Campain
Aruna Z Rim
David K Briddick
Adams X Gillian
Ricardo V Waycott
Smith C Amigon
Claire L Bolognia
Leja E Paprocki
Munro Z Morasca
Arvin S Morasca
Stacey C Maclead
Kadeem Q Garufi
Leja K Slusarski
Murillo T Poquette
Leon K Nicka
Clifford X Dilliard
Tony U Ostrosky
Mujtaba X Venere
Aditya Q Malet
Ashley J Whobrey
Nicolas R Ostrosky
Jones T Whobrey
Mujtaba V Campain
Wickens A Bowley
Octavia L Briddick
Jefferson I Royster
Aika J Slusarski
Antonio R Slusarski
Jeanfrancois G Waycott
Rodrigues G Caudy
Adams E Ferencz
IdCountryDate
1000Canada2024-04-24
1001Canada2024-04-22
1002Argentina2024-04-12
1003Japan2024-04-09
1004Brazil2024-04-24
1005India2024-04-23
1006Argentina2024-04-09
1007Argentina2024-04-19
1008Argentina2024-04-25
1009Italy2024-04-29
1010Japan2024-04-14
1011Australia2024-04-07
1012Spain2024-04-09
1013India2024-05-05
1014Germany2024-04-23
1015Italy2024-04-07
1016India2024-04-28
1017Canada2024-04-29
1018Russia2024-04-18
1019Canada2024-04-24
1020India2024-04-18
1021Australia2024-04-19
1022Germany2024-04-21
1023United Kingdom2024-04-22
1024Australia2024-05-03
1025Canada2024-04-25
1026Australia2024-05-01
1027Germany2024-04-19
1028Argentina2024-04-17
1029Russia2024-04-20
1030India2024-04-18
1031Brazil2024-04-30
1032Brazil2024-04-27
1033India2024-04-23
1034Argentina2024-04-24
1035Australia2024-04-14
1036Italy2024-04-20
1037Canada2024-04-21
1038United Kingdom2024-04-13
1039Brazil2024-05-01
1040Australia2024-04-10
1041Spain2024-04-28
1042Australia2024-04-16
1043Australia2024-04-30
1044France2024-04-10
1045Australia2024-05-05
1046Italy2024-04-24
1047France2024-04-18
1048Canada2024-04-23
1049Argentina2024-04-13

On-Demand Data

NameIdCountryDate
Antonio E Tollner1000Japan2024-05-04
Octavia Q Briddick1001Canada2024-04-15
Nicolas E Inouye1002India2024-04-26
Jones E Shinko1003Germany2024-04-07
Francesco C Ferencz1004Italy2024-05-06
Smith F Morasca1005India2024-04-28
Darci K Chui1006Argentina2024-04-15
Francesco E Marrier1007Spain2024-04-18
Deepesh H Gillian1008Argentina2024-04-30
Francesco N Garufi1009Argentina2024-04-22
Silvio U Malet1010Spain2024-04-22
Leja B Doe1011Italy2024-04-16
Adams F Vocelka1012Russia2024-05-04
Johnson H Nestle1013Canada2024-04-09
Sinclair Q Briddick1014Japan2024-04-22
David X Ruta1015France2024-04-30
Juan Z Albares1016Spain2024-04-24
Ricardo A Waycott1017Spain2024-04-19
Emily C Waycott1018Japan2024-04-16
Adams N Gillian1019Germany2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio B SlusarskiCanadaIoni Bowcher PROPOSAL
Julie C SlusarskiJapanBernardo Dominic UNQUALIFIED
Wickens Q DoeFranceAsiya Javayant RENEWAL
Leja S FerenczSpainOnyama Limba PROPOSAL
Adams T PerinArgentinaElwin Sharvill PROPOSAL
Ricardo Z AlbaresIndiaOnyama Limba PROPOSAL
Jennifer T GarufiArgentinaIvan Magalhaes NEW
Kadeem C DarakjyGermanyIvan Magalhaes UNQUALIFIED
Alejandro M WhobreyJapanElwin Sharvill NEGOTIATION
Clifford U VocelkaJapanXuxue Feng PROPOSAL
Ashley D PoquetteUnited KingdomBernardo Dominic RENEWAL
Claire J DilliardGermanyIvan Magalhaes PROPOSAL
Ricardo I VocelkaUnited KingdomAsiya Javayant QUALIFIED
Ivar E MaletIndiaAsiya Javayant RENEWAL
Costa E WhobreyIndiaOnyama Limba UNQUALIFIED
Tony V GillianGermanyOnyama Limba NEGOTIATION
Antonio D DoeBrazilBernardo Dominic NEGOTIATION
Cody B DarakjyIndiaAsiya Javayant QUALIFIED
Greenwood N CampainItalyXuxue Feng QUALIFIED
Silvio U DarakjyJapanAsiya Javayant UNQUALIFIED
Salvatore M GlickJapanIoni Bowcher NEW
Jones M SergiBrazilIvan Magalhaes NEW
Ashley W SlusarskiBrazilAnna Fali NEW
Kadeem V SergiGermanyElwin Sharvill RENEWAL
Kadeem P MacleadItalyElwin Sharvill PROPOSAL
Mayumi Y CaldareraFranceIvan Magalhaes RENEWAL
Sinclair Z StockhamBrazilBernardo Dominic PROPOSAL
Kadeem P AmigonCanadaOnyama Limba NEGOTIATION
Aruna M InouyeItalyIoni Bowcher RENEWAL
Ashley N RutaCanadaIvan Magalhaes NEW
Morrow E RimAustraliaElwin Sharvill UNQUALIFIED
Maisha I NickaCanadaOnyama Limba UNQUALIFIED
Antonio O DarakjySpainOnyama Limba RENEWAL
Costa M MaletArgentinaStephen Shaw QUALIFIED
Julie P CaudyJapanIvan Magalhaes PROPOSAL
Murillo O DarakjyJapanIoni Bowcher QUALIFIED
Clifford P MarrierUnited KingdomAsiya Javayant NEGOTIATION
Sinclair M WaycottJapanStephen Shaw NEGOTIATION
Isabel M BowleyCanadaElwin Sharvill RENEWAL
Kaitlin Y FollerRussiaXuxue Feng 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>