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
Faith G MorascaFranceIoni Bowcher UNQUALIFIED
Juan H OstroskyFranceAmy Elsner NEGOTIATION
Leja L GillianIndiaStephen Shaw QUALIFIED
Maria Y NestleCanadaIvan Magalhaes NEW
Wickens B SergiGermanyAsiya Javayant NEW
Leja P AlbaresSpainBernardo Dominic PROPOSAL
Cody T FollerUnited KingdomXuxue Feng UNQUALIFIED
Deepesh L WhobreySpainIvan Magalhaes PROPOSAL
Salvatore Q CaldareraFranceXuxue Feng RENEWAL
James N RulapaughBrazilBernardo Dominic QUALIFIED
Antonio Z SaylorsFranceIvan Magalhaes QUALIFIED
Clifford P RulapaughFranceIoni Bowcher PROPOSAL
Salvatore G PaprockiItalyElwin Sharvill QUALIFIED
Alejandro U RoysterRussiaIoni Bowcher UNQUALIFIED
Deepesh Q BowleyFranceAmy Elsner NEW
Jefferson I RutaSpainIoni Bowcher RENEWAL
Wickens V WaycottAustraliaElwin Sharvill NEW
Maria S DilliardSpainIvan Magalhaes NEGOTIATION
Leon U RutaFranceElwin Sharvill NEGOTIATION
Jones M ShinkoCanadaXuxue Feng NEW
Mujtaba M PaprockiCanadaIvan Magalhaes PROPOSAL
James S ButtIndiaAsiya Javayant PROPOSAL
Deepesh E FigeroaCanadaOnyama Limba PROPOSAL
Tony S MaletIndiaStephen Shaw NEW
Aruna C DoeCanadaElwin Sharvill UNQUALIFIED
Octavia T BriddickSpainElwin Sharvill NEW
Murillo I FollerUnited KingdomElwin Sharvill UNQUALIFIED
Murillo M NestleIndiaXuxue Feng NEW
Murillo Q InouyeIndiaIvan Magalhaes UNQUALIFIED
Octavia H VenereGermanyAmy Elsner NEGOTIATION
Octavia S FlosiRussiaXuxue Feng RENEWAL
Claire Z IturbideAustraliaAnna Fali UNQUALIFIED
David I MaletIndiaIvan Magalhaes PROPOSAL
Stacey F StockhamJapanAsiya Javayant NEW
Murillo D KuskoBrazilAnna Fali PROPOSAL
Jennifer C OldroydGermanyIoni Bowcher RENEWAL
Mayumi R CaldareraRussiaAmy Elsner NEGOTIATION
Isabel F OldroydSpainAmy Elsner UNQUALIFIED
Salvatore Q ChuiRussiaAsiya Javayant UNQUALIFIED
Octavia A BowleyJapanBernardo Dominic UNQUALIFIED
Jones O GillianCanadaAnna Fali RENEWAL
Darci K NickaJapanBernardo Dominic PROPOSAL
Jefferson M FigeroaFranceOnyama Limba RENEWAL
Jennifer L GillianCanadaOnyama Limba NEW
Jefferson K GauchoJapanOnyama Limba QUALIFIED
Salvatore Z WaycottUnited KingdomAmy Elsner RENEWAL
Chavez K CaudyFranceIvan Magalhaes NEGOTIATION
Aika F RoysterFranceStephen Shaw RENEWAL
Jennifer M CampainRussiaIoni Bowcher QUALIFIED
Octavia T GarufiArgentinaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Johnson A MorascaArgentinaElwin Sharvill NEW
Adams L VocelkaIndiaIoni Bowcher NEGOTIATION
Nicolas Z RulapaughJapanXuxue Feng NEGOTIATION
Clifford B DilliardRussiaElwin Sharvill PROPOSAL
Kadeem Q DoeSpainAnna Fali UNQUALIFIED
Jeanfrancois V CaudyGermanyAnna Fali RENEWAL
Kaitlin E KolmetzIndiaIoni Bowcher UNQUALIFIED
Francesco T SchemmerGermanyAsiya Javayant QUALIFIED
Misaki O RoysterArgentinaAmy Elsner RENEWAL
Leja W MaletCanadaIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire Z WaycottUnited Kingdom2024-04-24Buckley Miller Wright NEGOTIATION84Elwin Sharvill
1001Leja Z ButtArgentina2024-04-11Buckley Miller Wright RENEWAL11Elwin Sharvill
1002Leja W InouyeArgentina2024-04-01Chemel, James L Cpa UNQUALIFIED86Asiya Javayant
1003Mayumi A OstroskyFrance2024-04-07Chapman, Ross E Esq UNQUALIFIED80Elwin Sharvill
1004Francesco E GlickGermany2024-04-15Commercial Press PROPOSAL73Bernardo Dominic
1005Darci G VocelkaCanada2024-04-08Feltz Printing Service QUALIFIED35Ioni Bowcher
1006David H ShinkoIndia2024-03-28Buckley Miller Wright UNQUALIFIED75Amy Elsner
1007Rodrigues R BriddickFrance2024-04-03Dorl, James J Esq NEGOTIATION70Ioni Bowcher
1008Stacey Y VenereFrance2024-04-10King, Christopher A Esq NEGOTIATION40Bernardo Dominic
1009Jones T IturbideFrance2024-04-04Printing Dimensions NEGOTIATION62Anna Fali
1010Wickens Y KolmetzCanada2024-04-23Chapman, Ross E Esq NEW37Amy Elsner
1011Costa A MorascaGermany2024-04-02Benton, John B Jr NEGOTIATION13Asiya Javayant
1012Maisha E PerinSpain2024-04-02Chapman, Ross E Esq PROPOSAL23Elwin Sharvill
1013Octavia J CampainFrance2024-04-12Buckley Miller Wright PROPOSAL63Ioni Bowcher
1014Maisha V FlosiSpain2024-04-15Buckley Miller Wright UNQUALIFIED91Ivan Magalhaes
1015Costa T GillianItaly2024-04-22Rangoni Of Florence NEW73Ioni Bowcher
1016Maria H BowleyIndia2024-03-28Chapman, Ross E Esq QUALIFIED68Stephen Shaw
1017Stacey U CaldareraGermany2024-04-13Buckley Miller Wright RENEWAL0Onyama Limba
1018Silvio I RimRussia2024-04-14Printing Dimensions QUALIFIED45Xuxue Feng
1019Murillo X VocelkaRussia2024-04-04Chapman, Ross E Esq QUALIFIED75Elwin Sharvill
1020Misaki A GarufiBrazil2024-04-26Feiner Bros PROPOSAL24Bernardo Dominic
1021Nicolas S GlickBrazil2024-04-16Buckley Miller Wright NEW91Ioni Bowcher
1022Mujtaba P AlbaresUnited Kingdom2024-04-19Dorl, James J Esq NEW35Elwin Sharvill
1023Aika R ChuiArgentina2024-04-07Commercial Press UNQUALIFIED22Ioni Bowcher
1024Silvio L RimArgentina2024-04-24Feiner Bros PROPOSAL79Asiya Javayant
1025Smith U InouyeRussia2024-04-03Feltz Printing Service QUALIFIED61Stephen Shaw
1026Mujtaba O IturbideGermany2024-04-25Feltz Printing Service UNQUALIFIED88Stephen Shaw
1027Cody A StockhamItaly2024-03-31Chanay, Jeffrey A Esq UNQUALIFIED67Bernardo Dominic
1028Murillo X BologniaBrazil2024-04-18Benton, John B Jr PROPOSAL7Ioni Bowcher
1029Stacey P StensethJapan2024-04-19Commercial Press NEGOTIATION7Onyama Limba
1030Tony Z FlosiUnited Kingdom2024-04-04Printing Dimensions NEW34Bernardo Dominic
1031Sinclair Q MorascaIndia2024-04-22Buckley Miller Wright QUALIFIED26Onyama Limba
1032Munro C CaudyBrazil2024-04-05Chanay, Jeffrey A Esq NEGOTIATION3Anna Fali
1033James M DoeArgentina2024-03-31King, Christopher A Esq QUALIFIED33Amy Elsner
1034Ashley A RutaCanada2024-04-13Commercial Press RENEWAL87Anna Fali
1035Wickens H MarrierCanada2024-04-24Dorl, James J Esq RENEWAL49Stephen Shaw
1036Deepesh L ShinkoItaly2024-04-20Dorl, James J Esq QUALIFIED78Anna Fali
1037Aditya W BriddickJapan2024-04-21Chemel, James L Cpa NEW34Stephen Shaw
1038Kaitlin U DarakjyCanada2024-04-23Truhlar And Truhlar Attys NEGOTIATION1Xuxue Feng
1039Deepesh D BologniaBrazil2024-04-06Rousseaux, Michael Esq PROPOSAL69Ivan Magalhaes
1040Arvin T FlosiCanada2024-04-18Commercial Press PROPOSAL76Stephen Shaw
1041Salvatore R CaldareraUnited Kingdom2024-04-13Chemel, James L Cpa NEGOTIATION76Anna Fali
1042Claire N RimGermany2024-04-15Chapman, Ross E Esq RENEWAL77Onyama Limba
1043Claire X PaprockiBrazil2024-04-03Rangoni Of Florence RENEWAL70Amy Elsner
1044James U DoeItaly2024-03-29Feltz Printing Service QUALIFIED68Amy Elsner
1045Ashley G StockhamRussia2024-04-16Truhlar And Truhlar Attys PROPOSAL21Asiya Javayant
1046Claire A ShinkoGermany2024-04-14Commercial Press UNQUALIFIED95Anna Fali
1047Leja O VocelkaSpain2024-04-13Feltz Printing Service PROPOSAL48Xuxue Feng
1048Maisha Y KuskoCanada2024-04-01Rousseaux, Michael Esq RENEWAL78Xuxue Feng
1049Adams L TollnerArgentina2024-03-29Dorl, James J Esq NEW65Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Costa V RoysterItalyIvan Magalhaes NEGOTIATION
Jeanfrancois Q NickaSpainOnyama Limba NEW
Octavia S OstroskyIndiaOnyama Limba NEGOTIATION
Silvio O MorascaFranceStephen Shaw QUALIFIED
Kadeem W AlbaresAustraliaAsiya Javayant QUALIFIED
Julie A WaycottSpainAsiya Javayant PROPOSAL
Alejandro P GlickAustraliaIvan Magalhaes RENEWAL
Isabel E SaylorsAustraliaStephen Shaw QUALIFIED
Greenwood K CaldareraJapanAnna Fali UNQUALIFIED
Murillo F GlickItalyXuxue Feng QUALIFIED
Deepesh D IturbideIndiaIvan Magalhaes PROPOSAL
Mujtaba O CaudyCanadaElwin Sharvill NEGOTIATION
Juan F SaylorsSpainXuxue Feng NEW
Cody A RoysterArgentinaStephen Shaw QUALIFIED
Tony I PerinUnited KingdomIoni Bowcher UNQUALIFIED
Alejandro K InouyeGermanyOnyama Limba RENEWAL
Munro Y InouyeFranceBernardo Dominic NEW
Maria J VocelkaBrazilIoni Bowcher QUALIFIED
Leon J InouyeUnited KingdomElwin Sharvill UNQUALIFIED
Costa G MacleadUnited KingdomAsiya Javayant RENEWAL
Aditya Z KuskoUnited KingdomElwin Sharvill RENEWAL
Tony X RoysterItalyAsiya Javayant NEGOTIATION
Emily W DarakjyFranceIoni Bowcher RENEWAL
Salvatore C FerenczJapanOnyama Limba NEGOTIATION
Morrow I OstroskyRussiaStephen Shaw RENEWAL
Maisha B FollerIndiaBernardo Dominic NEW
Antonio U MarrierItalyIoni Bowcher QUALIFIED
Faith J WieserUnited KingdomAmy Elsner NEGOTIATION
Juan F FigeroaSpainXuxue Feng QUALIFIED
Francesco Q RulapaughCanadaStephen Shaw QUALIFIED
Adams Z StensethBrazilXuxue Feng RENEWAL
Nicolas S DoeSpainAsiya Javayant NEW
Aruna A GauchoAustraliaAmy Elsner RENEWAL
Ivar W BowleyIndiaAmy Elsner NEGOTIATION
Murillo K SaylorsSpainAnna Fali NEW
Sinclair D MaletBrazilAnna Fali QUALIFIED
Arvin O PaprockiCanadaStephen Shaw NEW
Ricardo E AlbaresFranceElwin Sharvill QUALIFIED
James K CampainArgentinaAnna Fali RENEWAL
Leon G GillianCanadaAsiya Javayant NEW
Emily L GarufiBrazilElwin Sharvill RENEWAL
Izzy C NestleSpainOnyama Limba PROPOSAL
Smith S AlbaresBrazilStephen Shaw NEGOTIATION
Mujtaba O ButtArgentinaAsiya Javayant RENEWAL
Aika S FerenczBrazilOnyama Limba NEW
Morrow B PoquetteIndiaAsiya Javayant QUALIFIED
Kadeem P RulapaughArgentinaIoni Bowcher UNQUALIFIED
Chavez K FigeroaAustraliaXuxue Feng NEGOTIATION
Leon A RimUnited KingdomBernardo Dominic NEW
Maria L SchemmerRussiaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Leon I Royster
Aditya I Kolmetz
Wickens J Saylors
Clifford C Glick
Murillo E Gaucho
Leja S Inouye
Munro D Bowley
Maria H Perin
Morrow R Chui
Morrow R Iturbide
Nicolas S Garufi
Rodrigues Y Perin
Francesco H Shinko
Ricardo E Flosi
Murillo R Sergi
Chavez C Kusko
Jones A Campain
Nicolas L Albares
Jones P Venere
Aruna K Ostrosky
Adams Q Inouye
Leja T Foller
Faith L Kusko
Isabel L Venere
Clifford W Malet
Jennifer Y Paprocki
Sinclair I Glick
Arvin S Schemmer
Aika Y Venere
Wickens J Briddick
Leja K Doe
Aika P Malet
Aika B Waycott
Kadeem A Sergi
Arvin H Wieser
Aruna K Glick
Ashley H Venere
Kaitlin J Wieser
Ricardo H Kusko
Ashley S Maclead
Octavia J Iturbide
Morrow Q Sergi
Jones H Bolognia
Darci E Venere
Emily T Malet
Izzy A Dilliard
Rodrigues H Rulapaugh
Claire U Waycott
Ivar L Chui
Greenwood G Marrier
IdCountryDate
1000Canada2024-04-23
1001Canada2024-04-09
1002France2024-04-05
1003Italy2024-04-01
1004Japan2024-04-10
1005Argentina2024-04-23
1006Japan2024-04-21
1007Spain2024-04-18
1008Australia2024-04-25
1009United Kingdom2024-04-19
1010Australia2024-04-25
1011Japan2024-04-01
1012Spain2024-03-29
1013Italy2024-04-05
1014Italy2024-03-31
1015Brazil2024-03-30
1016India2024-04-03
1017Brazil2024-04-20
1018Spain2024-04-02
1019France2024-04-12
1020Australia2024-04-22
1021Argentina2024-04-16
1022Russia2024-04-26
1023Germany2024-03-31
1024Spain2024-04-26
1025Australia2024-04-19
1026Japan2024-04-20
1027Germany2024-03-29
1028Germany2024-04-03
1029Japan2024-03-30
1030Argentina2024-04-24
1031Italy2024-04-25
1032Australia2024-04-03
1033India2024-04-06
1034Canada2024-04-19
1035Brazil2024-04-12
1036France2024-03-30
1037Russia2024-04-04
1038France2024-04-04
1039Germany2024-04-15
1040France2024-04-19
1041Canada2024-04-19
1042United Kingdom2024-04-20
1043Argentina2024-04-12
1044India2024-04-20
1045Russia2024-03-30
1046United Kingdom2024-04-19
1047United Kingdom2024-04-11
1048France2024-04-19
1049Japan2024-04-17

On-Demand Data

NameIdCountryDate
Wickens Q Gillian1000Argentina2024-04-03
Munro V Albares1001Canada2024-04-17
Jennifer U Maclead1002Italy2024-04-26
Wickens O Morasca1003Russia2024-04-11
Adams Q Campain1004Russia2024-04-10
Ivar D Wieser1005Spain2024-04-04
Deepesh P Marrier1006Argentina2024-04-25
Claire H Schemmer1007Argentina2024-03-30
Adams M Caudy1008France2024-03-29
Isabel S Morasca1009United Kingdom2024-03-30
Faith X Waycott1010Germany2024-04-04
Leon V Gillian1011Australia2024-04-19
Jeanfrancois D Stenseth1012Australia2024-04-06
Faith J Nicka1013Australia2024-04-08
Morrow O Briddick1014India2024-04-14
Julie H Tollner1015Canada2024-03-28
Tony D Amigon1016Australia2024-04-19
Deepesh C Perin1017Italy2024-04-02
Rodrigues E Rim1018Italy2024-04-21
Aika J Glick1019Japan2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair A AmigonArgentinaAmy Elsner RENEWAL
Sinclair P SaylorsFranceIvan Magalhaes QUALIFIED
Smith N DilliardIndiaIvan Magalhaes UNQUALIFIED
Aditya B DilliardSpainIoni Bowcher UNQUALIFIED
Costa S CaudyGermanyStephen Shaw NEGOTIATION
Smith N GarufiFranceBernardo Dominic UNQUALIFIED
Isabel R RoysterBrazilAmy Elsner RENEWAL
Cody O MacleadAustraliaAsiya Javayant QUALIFIED
Francesco R FerenczBrazilIoni Bowcher PROPOSAL
Costa F FollerRussiaAsiya Javayant QUALIFIED
James X RutaGermanyXuxue Feng NEW
Sinclair T AlbaresItalyStephen Shaw PROPOSAL
Rodrigues P GarufiFranceAsiya Javayant PROPOSAL
Misaki E FlosiIndiaStephen Shaw NEGOTIATION
Stacey V TollnerIndiaIoni Bowcher RENEWAL
Sinclair X FigeroaGermanyAnna Fali PROPOSAL
Jeanfrancois E AlbaresFranceBernardo Dominic NEGOTIATION
Ivar U ButtCanadaAsiya Javayant NEGOTIATION
Arvin V SergiAustraliaOnyama Limba NEW
Wickens V MorascaRussiaIvan Magalhaes UNQUALIFIED
Emily F RulapaughIndiaAmy Elsner NEGOTIATION
Costa H FlosiBrazilAnna Fali NEGOTIATION
Ashley R MorascaGermanyXuxue Feng RENEWAL
Alejandro Z OldroydAustraliaAmy Elsner NEGOTIATION
David Z DarakjyBrazilIoni Bowcher PROPOSAL
Claire X MorascaFranceIoni Bowcher QUALIFIED
Nicolas R AlbaresItalyOnyama Limba UNQUALIFIED
Ashley O FerenczSpainXuxue Feng PROPOSAL
Leon Y SlusarskiRussiaAsiya Javayant UNQUALIFIED
Smith M PaprockiItalyIoni Bowcher RENEWAL
Munro K FigeroaJapanIvan Magalhaes UNQUALIFIED
Emily W GarufiItalyStephen Shaw NEW
Tony L RulapaughItalyStephen Shaw PROPOSAL
Silvio Z StockhamItalyAmy Elsner NEW
Aditya W RoysterFranceIvan Magalhaes PROPOSAL
Jefferson F WaycottArgentinaIvan Magalhaes UNQUALIFIED
Ricardo I RutaJapanElwin Sharvill NEW
Ashley N RoysterArgentinaOnyama Limba RENEWAL
Claire B DilliardIndiaStephen Shaw NEW
Isabel V FerenczSpainIoni Bowcher 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>