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
Salvatore E KuskoSpainAnna Fali RENEWAL
Smith N CaldareraGermanyXuxue Feng QUALIFIED
Isabel M GillianRussiaBernardo Dominic QUALIFIED
Jones W OldroydCanadaIvan Magalhaes UNQUALIFIED
Maisha H WhobreyGermanyStephen Shaw NEW
Aditya X ShinkoItalyAmy Elsner UNQUALIFIED
Maisha J MaletUnited KingdomAnna Fali QUALIFIED
Aruna C MarrierIndiaAmy Elsner QUALIFIED
Nicolas L MarrierGermanyXuxue Feng PROPOSAL
Kaitlin A DoeSpainAsiya Javayant NEW
Rodrigues P GillianIndiaIvan Magalhaes RENEWAL
Chavez C RulapaughUnited KingdomXuxue Feng QUALIFIED
Silvio F VenereAustraliaOnyama Limba RENEWAL
Claire W GarufiSpainAmy Elsner UNQUALIFIED
Maisha D GauchoGermanyOnyama Limba NEW
Murillo U OldroydCanadaAmy Elsner PROPOSAL
Leja Q StockhamJapanStephen Shaw RENEWAL
Ricardo P OstroskyJapanAsiya Javayant RENEWAL
Jeanfrancois C SchemmerSpainOnyama Limba RENEWAL
Silvio D KolmetzItalyOnyama Limba NEGOTIATION
Aika V DarakjyRussiaAnna Fali QUALIFIED
Murillo D GlickAustraliaIoni Bowcher NEW
Francesco Q SlusarskiGermanyIoni Bowcher UNQUALIFIED
Smith A MorascaCanadaStephen Shaw QUALIFIED
Aruna I KolmetzBrazilBernardo Dominic NEW
Nicolas Q WaycottIndiaStephen Shaw QUALIFIED
Faith Q OstroskyArgentinaIoni Bowcher QUALIFIED
Murillo H SchemmerItalyIvan Magalhaes UNQUALIFIED
Octavia S FlosiIndiaElwin Sharvill UNQUALIFIED
Octavia M MorascaItalyIoni Bowcher QUALIFIED
Morrow A FerenczArgentinaBernardo Dominic NEW
Kaitlin S RoysterItalyBernardo Dominic QUALIFIED
Greenwood O ShinkoRussiaAsiya Javayant NEGOTIATION
David A GauchoGermanyAsiya Javayant UNQUALIFIED
Greenwood U VenereAustraliaAnna Fali NEGOTIATION
Murillo B BologniaBrazilXuxue Feng RENEWAL
Mayumi H GillianSpainStephen Shaw UNQUALIFIED
Murillo U ChuiArgentinaAnna Fali RENEWAL
Kadeem Z RulapaughSpainIvan Magalhaes RENEWAL
Adams C BologniaIndiaIvan Magalhaes QUALIFIED
Jeanfrancois B FerenczArgentinaAnna Fali NEW
Aditya M SaylorsItalyAnna Fali PROPOSAL
Smith V PerinIndiaOnyama Limba NEW
Sinclair L MarrierGermanyXuxue Feng PROPOSAL
Aika P GlickItalyIoni Bowcher PROPOSAL
Leon D VocelkaArgentinaStephen Shaw PROPOSAL
Clifford T DilliardUnited KingdomBernardo Dominic RENEWAL
Juan X GauchoRussiaBernardo Dominic PROPOSAL
Ashley X FollerItalyStephen Shaw RENEWAL
Jennifer H ShinkoArgentinaAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Misaki Y PaprockiGermanyAsiya Javayant NEW
Jennifer E StockhamJapanAsiya Javayant PROPOSAL
Leon Z MaletIndiaIoni Bowcher PROPOSAL
Morrow K SchemmerUnited KingdomAnna Fali QUALIFIED
Johnson V NickaItalyXuxue Feng PROPOSAL
Leja H ShinkoBrazilStephen Shaw PROPOSAL
Ivar K FerenczCanadaAsiya Javayant UNQUALIFIED
Alejandro H CaldareraJapanAmy Elsner RENEWAL
Jefferson P VocelkaBrazilElwin Sharvill QUALIFIED
Octavia R ChuiItalyAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie A NestleArgentina2024-05-10Chemel, James L Cpa PROPOSAL27Ivan Magalhaes
1001Aditya H MacleadSpain2024-04-26Chapman, Ross E Esq RENEWAL66Xuxue Feng
1002Jennifer G GarufiArgentina2024-04-29Feltz Printing Service QUALIFIED97Anna Fali
1003Stacey B InouyeArgentina2024-04-23Dorl, James J Esq RENEWAL58Elwin Sharvill
1004Kaitlin B MacleadCanada2024-05-09Chemel, James L Cpa QUALIFIED64Asiya Javayant
1005Mujtaba Z MaletRussia2024-04-28Feltz Printing Service PROPOSAL96Ivan Magalhaes
1006Adams H WhobreyGermany2024-05-04Chanay, Jeffrey A Esq NEGOTIATION65Asiya Javayant
1007Cody K FollerArgentina2024-04-23Rousseaux, Michael Esq NEW85Ioni Bowcher
1008Aika U OldroydIndia2024-05-09Commercial Press RENEWAL37Stephen Shaw
1009Jones Y GarufiIndia2024-05-18Chemel, James L Cpa RENEWAL92Xuxue Feng
1010Juan F FlosiAustralia2024-05-01Benton, John B Jr RENEWAL31Xuxue Feng
1011Deepesh U StensethBrazil2024-05-03King, Christopher A Esq RENEWAL46Asiya Javayant
1012Leja U InouyeRussia2024-05-19Truhlar And Truhlar Attys NEGOTIATION75Anna Fali
1013Clifford F RimRussia2024-04-22Printing Dimensions RENEWAL66Ioni Bowcher
1014Jones H InouyeJapan2024-05-06Rousseaux, Michael Esq NEGOTIATION49Onyama Limba
1015Kaitlin I RimArgentina2024-05-18Truhlar And Truhlar Attys UNQUALIFIED34Xuxue Feng
1016Murillo I CaldareraFrance2024-05-17Dorl, James J Esq NEW5Amy Elsner
1017Isabel X PerinUnited Kingdom2024-05-12Chemel, James L Cpa RENEWAL81Onyama Limba
1018Arvin U GlickIndia2024-04-26Commercial Press NEGOTIATION65Ivan Magalhaes
1019Kadeem T MorascaIndia2024-05-19Chanay, Jeffrey A Esq QUALIFIED42Amy Elsner
1020Morrow J WieserAustralia2024-05-20Morlong Associates QUALIFIED52Anna Fali
1021Aika V InouyeBrazil2024-05-04Feiner Bros PROPOSAL32Bernardo Dominic
1022Jefferson J TollnerIndia2024-05-13Benton, John B Jr PROPOSAL50Xuxue Feng
1023Nicolas A RimRussia2024-05-09Rousseaux, Michael Esq QUALIFIED13Stephen Shaw
1024Aruna W FigeroaRussia2024-05-11Morlong Associates NEW1Onyama Limba
1025Silvio A InouyeBrazil2024-05-04Chemel, James L Cpa QUALIFIED30Stephen Shaw
1026Maria P FerenczJapan2024-04-30Rousseaux, Michael Esq NEW40Asiya Javayant
1027Adams T CampainArgentina2024-05-20Rangoni Of Florence QUALIFIED99Elwin Sharvill
1028Jefferson H NestleFrance2024-05-08Commercial Press UNQUALIFIED27Ioni Bowcher
1029David R KuskoAustralia2024-05-06Morlong Associates NEW26Anna Fali
1030Jennifer L CaldareraUnited Kingdom2024-04-23Benton, John B Jr QUALIFIED79Ivan Magalhaes
1031Maisha Y WieserGermany2024-04-24Dorl, James J Esq UNQUALIFIED62Asiya Javayant
1032Nicolas M FigeroaIndia2024-05-20Buckley Miller Wright PROPOSAL6Ivan Magalhaes
1033Jennifer I FerenczFrance2024-05-08Chemel, James L Cpa NEGOTIATION62Stephen Shaw
1034Kaitlin C CampainFrance2024-05-16Printing Dimensions NEW40Stephen Shaw
1035Antonio F StockhamIndia2024-04-24Dorl, James J Esq NEW65Elwin Sharvill
1036Cody G KuskoUnited Kingdom2024-04-28Commercial Press RENEWAL1Anna Fali
1037Julie K AmigonArgentina2024-04-28Dorl, James J Esq QUALIFIED21Elwin Sharvill
1038Costa Z BriddickBrazil2024-04-30Rangoni Of Florence QUALIFIED90Xuxue Feng
1039Johnson M MacleadBrazil2024-04-29Dorl, James J Esq RENEWAL14Amy Elsner
1040Maria G ButtIndia2024-05-20Chapman, Ross E Esq PROPOSAL93Xuxue Feng
1041Smith D WieserFrance2024-04-23King, Christopher A Esq QUALIFIED85Stephen Shaw
1042Leon N MaletUnited Kingdom2024-04-29Chanay, Jeffrey A Esq NEGOTIATION24Ivan Magalhaes
1043Smith Y ShinkoGermany2024-04-26Chanay, Jeffrey A Esq QUALIFIED67Amy Elsner
1044Julie E ChuiCanada2024-05-12Truhlar And Truhlar Attys QUALIFIED12Anna Fali
1045Jefferson I NestleFrance2024-05-12King, Christopher A Esq NEGOTIATION16Onyama Limba
1046Johnson I FollerIndia2024-04-28Chanay, Jeffrey A Esq UNQUALIFIED50Ivan Magalhaes
1047Stacey T BowleyFrance2024-05-19Buckley Miller Wright NEW81Amy Elsner
1048Maisha I KuskoSpain2024-05-13Truhlar And Truhlar Attys QUALIFIED43Elwin Sharvill
1049Salvatore L CaudyItaly2024-04-30Chemel, James L Cpa UNQUALIFIED62Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Costa K WaycottJapanStephen Shaw NEGOTIATION
Stacey I PoquetteIndiaIoni Bowcher NEW
Mujtaba V DilliardItalyXuxue Feng QUALIFIED
Aruna Y InouyeFranceElwin Sharvill RENEWAL
Jeanfrancois S RulapaughItalyAmy Elsner NEW
Smith C RimGermanyAsiya Javayant PROPOSAL
Francesco D DilliardCanadaXuxue Feng NEW
Rodrigues L WaycottIndiaElwin Sharvill RENEWAL
Faith T MacleadBrazilAsiya Javayant PROPOSAL
Leon G BologniaAustraliaStephen Shaw NEW
Francesco R PaprockiCanadaElwin Sharvill QUALIFIED
Aruna S SlusarskiAustraliaAsiya Javayant NEW
Leon U MorascaRussiaBernardo Dominic RENEWAL
Aruna T WaycottUnited KingdomAsiya Javayant NEW
Claire W PaprockiArgentinaIoni Bowcher NEW
Aika O RulapaughIndiaIvan Magalhaes QUALIFIED
Deepesh R SlusarskiSpainStephen Shaw RENEWAL
Francesco H OstroskyItalyAnna Fali NEGOTIATION
Izzy R MacleadGermanyAsiya Javayant RENEWAL
Johnson E KuskoAustraliaIoni Bowcher QUALIFIED
Octavia G VenereCanadaIoni Bowcher QUALIFIED
Mujtaba K StockhamFranceOnyama Limba NEGOTIATION
Leja C GarufiAustraliaXuxue Feng NEW
Salvatore T OstroskyAustraliaAsiya Javayant PROPOSAL
Chavez K CaldareraUnited KingdomOnyama Limba NEW
Francesco B DarakjyAustraliaStephen Shaw NEW
Leja O MacleadRussiaAsiya Javayant NEW
Jennifer C SaylorsUnited KingdomIoni Bowcher NEGOTIATION
Maisha P DilliardArgentinaOnyama Limba QUALIFIED
Maisha J NickaUnited KingdomElwin Sharvill NEW
Munro X FollerIndiaAsiya Javayant NEW
Greenwood V RimJapanAnna Fali UNQUALIFIED
Isabel M IturbideSpainStephen Shaw UNQUALIFIED
Greenwood N VocelkaCanadaXuxue Feng QUALIFIED
Silvio L PerinUnited KingdomIvan Magalhaes RENEWAL
Wickens I SlusarskiArgentinaXuxue Feng UNQUALIFIED
Faith S FlosiBrazilAsiya Javayant RENEWAL
Claire F KolmetzSpainElwin Sharvill UNQUALIFIED
Aruna V BriddickGermanyBernardo Dominic RENEWAL
Aditya S InouyeCanadaAmy Elsner UNQUALIFIED
Octavia P StockhamFranceAmy Elsner PROPOSAL
Silvio P VenereUnited KingdomElwin Sharvill UNQUALIFIED
Mayumi V MaletFranceOnyama Limba RENEWAL
Ricardo J KolmetzBrazilIvan Magalhaes RENEWAL
Julie G GlickIndiaElwin Sharvill UNQUALIFIED
Ricardo B WieserIndiaAmy Elsner NEW
Octavia I DilliardArgentinaXuxue Feng PROPOSAL
Murillo S GauchoGermanyAsiya Javayant UNQUALIFIED
Salvatore E AlbaresFranceStephen Shaw UNQUALIFIED
Mujtaba J OstroskyBrazilIvan Magalhaes PROPOSAL
Frozen Columns
Name
Claire D Campain
Stacey O Figeroa
Nicolas F Ostrosky
Mayumi A Schemmer
Maria D Poquette
Salvatore R Wieser
Jeanfrancois Q Briddick
Kaitlin Q Darakjy
Tony V Caldarera
Greenwood H Kusko
Isabel S Foller
Emily S Briddick
Antonio X Slusarski
Clifford O Bolognia
Smith B Foller
Arvin Y Venere
Smith C Shinko
Tony T Slusarski
James R Saylors
James D Darakjy
Deepesh S Glick
Salvatore P Ruta
Arvin K Iturbide
Stacey P Flosi
Silvio M Butt
Munro F Doe
Ashley F Maclead
James Q Caldarera
Aruna W Marrier
Nicolas S Foller
Clifford J Malet
Mujtaba O Perin
Rodrigues D Chui
David Q Kusko
Costa V Caudy
James U Caudy
Faith N Butt
Nicolas K Tollner
Wickens K Tollner
Munro S Figeroa
Nicolas F Caldarera
Silvio A Marrier
Ricardo T Nicka
Cody B Malet
Morrow F Darakjy
Johnson U Paprocki
Faith A Briddick
Antonio K Paprocki
Munro H Paprocki
Costa F Caldarera
IdCountryDate
1000France2024-04-21
1001Italy2024-05-11
1002Canada2024-05-06
1003Spain2024-05-14
1004Italy2024-05-17
1005United Kingdom2024-05-11
1006Argentina2024-05-02
1007Italy2024-05-11
1008Canada2024-04-23
1009Germany2024-05-02
1010France2024-05-03
1011Argentina2024-05-09
1012Australia2024-05-19
1013Russia2024-05-05
1014Spain2024-05-07
1015France2024-04-27
1016Argentina2024-05-13
1017Germany2024-05-06
1018United Kingdom2024-05-01
1019Brazil2024-04-29
1020Brazil2024-05-07
1021Canada2024-04-29
1022Argentina2024-04-25
1023Brazil2024-04-29
1024Canada2024-04-30
1025Russia2024-05-12
1026Spain2024-04-23
1027Canada2024-05-17
1028France2024-04-23
1029Australia2024-05-11
1030France2024-04-24
1031Japan2024-05-07
1032India2024-05-02
1033India2024-05-18
1034Japan2024-04-23
1035Japan2024-04-22
1036Italy2024-05-05
1037Australia2024-04-23
1038France2024-05-08
1039India2024-04-21
1040Brazil2024-05-17
1041Canada2024-04-29
1042Japan2024-05-20
1043France2024-05-03
1044Germany2024-05-14
1045India2024-05-07
1046Russia2024-04-26
1047Canada2024-04-25
1048Japan2024-05-03
1049Japan2024-05-03

On-Demand Data

NameIdCountryDate
Jefferson W Oldroyd1000Canada2024-05-15
Isabel I Briddick1001Germany2024-05-20
Johnson F Rim1002France2024-05-10
Jefferson S Flosi1003India2024-04-21
Aditya V Stenseth1004United Kingdom2024-05-13
Faith Z Kusko1005Germany2024-05-12
Aditya Q Albares1006Italy2024-05-08
Arvin G Doe1007Italy2024-05-09
Emily Q Morasca1008Russia2024-05-18
Francesco G Shinko1009Australia2024-05-19
Arvin A Maclead1010Argentina2024-05-05
Johnson I Sergi1011Italy2024-05-04
Leon C Darakjy1012Canada2024-05-06
Faith O Flosi1013Australia2024-05-11
Jones I Nicka1014Canada2024-05-03
Emily G Ferencz1015Canada2024-04-28
Arvin B Venere1016Italy2024-05-16
Mayumi O Inouye1017Spain2024-05-12
Salvatore K Nicka1018Germany2024-05-15
David F Poquette1019Brazil2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo M MacleadCanadaAmy Elsner RENEWAL
Mujtaba R OldroydBrazilElwin Sharvill NEW
Faith J BologniaIndiaAnna Fali UNQUALIFIED
Kaitlin R AmigonFranceIvan Magalhaes NEGOTIATION
Cody Y MaletCanadaElwin Sharvill NEGOTIATION
Ricardo S SchemmerItalyStephen Shaw RENEWAL
Ivar P ButtRussiaIoni Bowcher RENEWAL
Leja C RutaItalyIvan Magalhaes PROPOSAL
David X MaletBrazilIvan Magalhaes QUALIFIED
Salvatore G AlbaresItalyXuxue Feng UNQUALIFIED
Alejandro A SchemmerBrazilIoni Bowcher QUALIFIED
Cody H RulapaughSpainXuxue Feng PROPOSAL
Francesco L AlbaresIndiaAsiya Javayant RENEWAL
Greenwood Y GlickCanadaAnna Fali UNQUALIFIED
Izzy V SergiJapanAmy Elsner NEGOTIATION
Silvio J TollnerCanadaAmy Elsner NEW
Arvin L RulapaughUnited KingdomXuxue Feng UNQUALIFIED
Misaki B StensethBrazilStephen Shaw QUALIFIED
Jefferson P ChuiRussiaBernardo Dominic NEGOTIATION
Stacey H TollnerSpainStephen Shaw NEW
Nicolas P WieserIndiaAsiya Javayant RENEWAL
Munro H MarrierJapanElwin Sharvill PROPOSAL
James K SchemmerItalyElwin Sharvill UNQUALIFIED
Juan U BriddickUnited KingdomElwin Sharvill NEW
Izzy C FlosiAustraliaAmy Elsner PROPOSAL
Maria M NickaJapanIvan Magalhaes QUALIFIED
Leja W FigeroaArgentinaStephen Shaw QUALIFIED
Aruna V BowleySpainBernardo Dominic UNQUALIFIED
Jennifer P VocelkaBrazilIoni Bowcher QUALIFIED
Aika T MorascaBrazilAnna Fali UNQUALIFIED
Stacey L RutaSpainIvan Magalhaes PROPOSAL
Chavez N BowleyUnited KingdomAnna Fali UNQUALIFIED
Silvio P GlickFranceIoni Bowcher PROPOSAL
Jefferson X ShinkoCanadaIvan Magalhaes NEGOTIATION
Morrow V BriddickCanadaAsiya Javayant UNQUALIFIED
Claire U FigeroaCanadaAmy Elsner QUALIFIED
Jones S GlickUnited KingdomXuxue Feng UNQUALIFIED
Kaitlin X SchemmerRussiaIoni Bowcher QUALIFIED
Murillo O TollnerItalyStephen Shaw NEW
Silvio D MarrierCanadaIvan Magalhaes 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>