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
Jones V MacleadRussiaAnna Fali UNQUALIFIED
Munro C DoeBrazilBernardo Dominic UNQUALIFIED
Johnson U ShinkoIndiaElwin Sharvill PROPOSAL
Leja Z OstroskyCanadaIoni Bowcher RENEWAL
Mayumi Z NickaFranceXuxue Feng PROPOSAL
Jennifer Q FigeroaUnited KingdomBernardo Dominic UNQUALIFIED
Faith I CampainSpainAnna Fali NEGOTIATION
Claire G ButtAustraliaIoni Bowcher PROPOSAL
Aika B GlickAustraliaAsiya Javayant PROPOSAL
Tony G RimItalyXuxue Feng UNQUALIFIED
Cody F DoeJapanAmy Elsner UNQUALIFIED
Maisha P MarrierCanadaAnna Fali NEW
Julie X NestleArgentinaOnyama Limba RENEWAL
Clifford P WaycottJapanXuxue Feng QUALIFIED
Ivar B GlickFranceAmy Elsner PROPOSAL
Greenwood Z MorascaAustraliaIoni Bowcher PROPOSAL
Adams K AmigonGermanyElwin Sharvill NEW
Morrow O RulapaughItalyAsiya Javayant UNQUALIFIED
Smith A KolmetzRussiaAsiya Javayant RENEWAL
Octavia K SergiGermanyAmy Elsner PROPOSAL
Kaitlin T FerenczUnited KingdomAnna Fali NEW
Nicolas A GillianJapanIoni Bowcher NEW
Aditya B OldroydGermanyAmy Elsner NEGOTIATION
Jones S RimUnited KingdomAsiya Javayant NEW
Jennifer X GillianArgentinaXuxue Feng RENEWAL
Julie W IturbideSpainBernardo Dominic NEW
Stacey J DilliardUnited KingdomAnna Fali PROPOSAL
Aditya I BowleyCanadaAsiya Javayant UNQUALIFIED
Aditya H AlbaresArgentinaXuxue Feng RENEWAL
Murillo G BriddickUnited KingdomAsiya Javayant NEW
Smith E FlosiArgentinaIvan Magalhaes PROPOSAL
Jennifer V WaycottGermanyIoni Bowcher NEGOTIATION
Munro A ChuiSpainIvan Magalhaes QUALIFIED
Isabel H KolmetzFranceElwin Sharvill NEW
Faith U GauchoArgentinaAsiya Javayant QUALIFIED
Ashley J SergiGermanyIoni Bowcher QUALIFIED
Cody Y AmigonJapanBernardo Dominic PROPOSAL
Johnson T NickaGermanyOnyama Limba NEGOTIATION
Leja G PerinItalyOnyama Limba RENEWAL
Ricardo S FlosiJapanIoni Bowcher NEGOTIATION
Murillo E ShinkoArgentinaIoni Bowcher PROPOSAL
Jefferson P KuskoBrazilOnyama Limba NEW
Mujtaba P DarakjyFranceAnna Fali NEGOTIATION
Ricardo Z VocelkaIndiaIoni Bowcher NEW
Nicolas D NestleRussiaElwin Sharvill UNQUALIFIED
James I FigeroaCanadaIvan Magalhaes NEGOTIATION
Jones H PoquetteSpainIvan Magalhaes NEGOTIATION
Smith Z RutaGermanyIvan Magalhaes RENEWAL
Ivar L RulapaughFranceXuxue Feng QUALIFIED
Izzy Z NickaRussiaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem T MorascaBrazilStephen Shaw PROPOSAL
Aditya H KuskoFranceBernardo Dominic UNQUALIFIED
Smith P MaletItalyOnyama Limba PROPOSAL
Cody B GauchoIndiaXuxue Feng RENEWAL
Leon G MorascaSpainStephen Shaw NEW
Salvatore Z BologniaBrazilOnyama Limba NEGOTIATION
Mujtaba E RutaRussiaIvan Magalhaes UNQUALIFIED
Aruna D GarufiFranceOnyama Limba UNQUALIFIED
Octavia G MaletFranceAsiya Javayant UNQUALIFIED
Francesco P CampainArgentinaAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony R WieserIndia2024-04-21Benton, John B Jr PROPOSAL77Anna Fali
1001David T GauchoRussia2024-04-19Chapman, Ross E Esq RENEWAL24Ivan Magalhaes
1002Claire A OldroydGermany2024-04-20Morlong Associates PROPOSAL39Stephen Shaw
1003Leja R DilliardSpain2024-04-26Rangoni Of Florence NEW94Asiya Javayant
1004Emily V GillianBrazil2024-04-13Rousseaux, Michael Esq PROPOSAL70Asiya Javayant
1005Arvin K ButtItaly2024-04-22King, Christopher A Esq NEGOTIATION80Ivan Magalhaes
1006Jeanfrancois H MaletCanada2024-04-24Commercial Press NEW85Xuxue Feng
1007Alejandro V RoysterFrance2024-04-08Truhlar And Truhlar Attys UNQUALIFIED82Asiya Javayant
1008Greenwood J MarrierAustralia2024-04-16Chemel, James L Cpa PROPOSAL53Onyama Limba
1009Leja R GarufiItaly2024-04-27Chapman, Ross E Esq RENEWAL64Asiya Javayant
1010Wickens O KuskoGermany2024-04-11Truhlar And Truhlar Attys QUALIFIED13Xuxue Feng
1011Ashley M GillianBrazil2024-04-04Chanay, Jeffrey A Esq UNQUALIFIED70Stephen Shaw
1012Wickens N MaletUnited Kingdom2024-04-25Printing Dimensions PROPOSAL29Stephen Shaw
1013Sinclair B NestleArgentina2024-04-01Chapman, Ross E Esq NEGOTIATION8Ivan Magalhaes
1014Claire E ShinkoArgentina2024-04-13Commercial Press NEGOTIATION21Amy Elsner
1015Aditya G AmigonAustralia2024-04-05King, Christopher A Esq PROPOSAL40Anna Fali
1016Ricardo X CampainCanada2024-04-09King, Christopher A Esq NEW47Anna Fali
1017Darci V FerenczCanada2024-04-24Commercial Press RENEWAL98Bernardo Dominic
1018Mujtaba I CaldareraBrazil2024-04-23Rousseaux, Michael Esq QUALIFIED54Ioni Bowcher
1019Faith A SaylorsSpain2024-04-10Commercial Press NEGOTIATION0Ioni Bowcher
1020Francesco R AlbaresIndia2024-04-01Chanay, Jeffrey A Esq NEGOTIATION88Onyama Limba
1021Izzy T StockhamIndia2024-03-31Printing Dimensions QUALIFIED40Stephen Shaw
1022Smith J StensethSpain2024-04-03Rousseaux, Michael Esq NEW65Bernardo Dominic
1023Murillo D MarrierItaly2024-04-20Chanay, Jeffrey A Esq RENEWAL51Asiya Javayant
1024Aika D FigeroaItaly2024-04-11Commercial Press UNQUALIFIED27Ivan Magalhaes
1025Jefferson X StensethBrazil2024-04-23Truhlar And Truhlar Attys QUALIFIED79Elwin Sharvill
1026Silvio V VocelkaGermany2024-04-22Truhlar And Truhlar Attys NEW93Amy Elsner
1027Murillo E BriddickCanada2024-04-18Feiner Bros NEGOTIATION56Anna Fali
1028Chavez E OldroydRussia2024-04-26Chemel, James L Cpa PROPOSAL99Amy Elsner
1029Murillo R OstroskyArgentina2024-04-18Rousseaux, Michael Esq QUALIFIED11Bernardo Dominic
1030Claire B KolmetzAustralia2024-04-02Printing Dimensions PROPOSAL0Ivan Magalhaes
1031Cody E NestleFrance2024-04-11Morlong Associates QUALIFIED67Bernardo Dominic
1032Isabel C NickaCanada2024-04-28Chemel, James L Cpa QUALIFIED92Asiya Javayant
1033Smith T RutaGermany2024-04-10Chanay, Jeffrey A Esq PROPOSAL86Onyama Limba
1034Stacey D InouyeFrance2024-04-13Rousseaux, Michael Esq UNQUALIFIED77Xuxue Feng
1035Deepesh X OstroskyArgentina2024-04-10Truhlar And Truhlar Attys NEGOTIATION30Ioni Bowcher
1036David N BriddickFrance2024-04-18Chapman, Ross E Esq RENEWAL5Amy Elsner
1037Wickens N CaudySpain2024-04-28Truhlar And Truhlar Attys QUALIFIED23Asiya Javayant
1038Kadeem O SchemmerAustralia2024-04-05Dorl, James J Esq UNQUALIFIED14Stephen Shaw
1039Leon D GlickItaly2024-04-18Chapman, Ross E Esq PROPOSAL36Xuxue Feng
1040David H MacleadAustralia2024-04-19Benton, John B Jr QUALIFIED60Xuxue Feng
1041Johnson B SaylorsIndia2024-03-31Rousseaux, Michael Esq NEW46Asiya Javayant
1042Francesco Q AmigonGermany2024-04-11Printing Dimensions UNQUALIFIED6Amy Elsner
1043Isabel P StensethRussia2024-04-05Benton, John B Jr PROPOSAL33Ioni Bowcher
1044Izzy P GarufiBrazil2024-04-23Buckley Miller Wright UNQUALIFIED85Bernardo Dominic
1045Leon I BriddickBrazil2024-04-14Truhlar And Truhlar Attys PROPOSAL91Amy Elsner
1046Kadeem V FerenczIndia2024-04-06Truhlar And Truhlar Attys PROPOSAL56Elwin Sharvill
1047David T VocelkaUnited Kingdom2024-04-08Truhlar And Truhlar Attys UNQUALIFIED92Elwin Sharvill
1048Julie V ChuiJapan2024-04-26Rousseaux, Michael Esq PROPOSAL40Amy Elsner
1049Smith D SlusarskiGermany2024-04-11Truhlar And Truhlar Attys NEW0Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Emily L MaletBrazilIvan Magalhaes NEGOTIATION
Adams S MaletBrazilXuxue Feng QUALIFIED
Munro W ButtUnited KingdomXuxue Feng NEGOTIATION
Ashley F GarufiRussiaIvan Magalhaes QUALIFIED
Silvio V PoquetteUnited KingdomIvan Magalhaes RENEWAL
Aruna D VenereBrazilAnna Fali NEW
Leja N KolmetzRussiaIoni Bowcher QUALIFIED
Leja T CampainBrazilOnyama Limba PROPOSAL
Kaitlin F RimFranceIoni Bowcher UNQUALIFIED
Izzy Y IturbideItalyBernardo Dominic RENEWAL
Nicolas B RimSpainIoni Bowcher UNQUALIFIED
Francesco Z VenereFranceOnyama Limba NEW
Costa K CaldareraAustraliaAsiya Javayant UNQUALIFIED
Tony D RoysterBrazilAnna Fali QUALIFIED
Alejandro Y BowleySpainAsiya Javayant PROPOSAL
Leja S FollerGermanyAmy Elsner QUALIFIED
Julie M KuskoRussiaXuxue Feng NEGOTIATION
Misaki L NestleSpainIvan Magalhaes QUALIFIED
Stacey V ChuiGermanyOnyama Limba PROPOSAL
Maria N DilliardItalyIoni Bowcher PROPOSAL
Julie M MacleadUnited KingdomAnna Fali NEW
Morrow T DarakjyBrazilOnyama Limba NEW
Ricardo U OldroydAustraliaXuxue Feng UNQUALIFIED
Wickens K GauchoAustraliaAsiya Javayant NEGOTIATION
Deepesh P MorascaUnited KingdomAmy Elsner UNQUALIFIED
Tony N BriddickArgentinaIvan Magalhaes UNQUALIFIED
Jefferson V KolmetzSpainXuxue Feng PROPOSAL
Aditya S NickaArgentinaIoni Bowcher UNQUALIFIED
Misaki K WieserCanadaStephen Shaw PROPOSAL
Francesco N VenereSpainIoni Bowcher NEW
Costa T NickaJapanIvan Magalhaes NEGOTIATION
Faith Q NestleBrazilIvan Magalhaes PROPOSAL
Jones I WieserSpainAmy Elsner QUALIFIED
Silvio S AlbaresBrazilOnyama Limba NEGOTIATION
Ricardo L RutaFranceBernardo Dominic RENEWAL
Aruna P FollerItalyElwin Sharvill NEW
Jeanfrancois Z AlbaresArgentinaAmy Elsner RENEWAL
Emily S StensethBrazilAsiya Javayant RENEWAL
Adams L RoysterArgentinaIvan Magalhaes UNQUALIFIED
Costa B BologniaFranceStephen Shaw QUALIFIED
Kadeem C WaycottIndiaAmy Elsner PROPOSAL
Mujtaba G GillianJapanAnna Fali PROPOSAL
Aruna Z MaletBrazilStephen Shaw UNQUALIFIED
Aditya P FollerIndiaBernardo Dominic UNQUALIFIED
Wickens J DarakjyAustraliaAmy Elsner RENEWAL
Darci Z SergiSpainXuxue Feng UNQUALIFIED
Alejandro V MaletFranceElwin Sharvill NEW
Adams O PoquetteBrazilElwin Sharvill NEGOTIATION
Murillo N IturbideItalyElwin Sharvill NEW
Maisha B AlbaresJapanStephen Shaw UNQUALIFIED
Frozen Columns
Name
Emily R Oldroyd
Julie I Iturbide
Jefferson G Malet
Leja I Flosi
Jones O Iturbide
Darci M Perin
James C Caldarera
Misaki C Nestle
James D Rulapaugh
David O Caudy
Cody X Doe
Ivar W Inouye
Morrow S Kusko
Salvatore X Venere
Munro E Poquette
Clifford F Nicka
Jefferson Y Figeroa
Faith J Flosi
Ashley N Ostrosky
Aika N Gaucho
Jeanfrancois K Malet
Cody W Morasca
Leja Z Briddick
Jefferson N Flosi
Jeanfrancois Z Kusko
David G Rulapaugh
Cody W Inouye
Aditya N Flosi
Izzy M Ostrosky
Izzy M Garufi
Francesco C Chui
Arvin L Doe
Mujtaba D Perin
Jennifer F Whobrey
Ivar P Nicka
Morrow C Figeroa
Darci G Tollner
Ashley Q Gaucho
Jones W Campain
Adams S Vocelka
Smith X Foller
Tony C Garufi
Chavez P Royster
Jefferson Q Royster
Munro I Bowley
Ashley J Poquette
Antonio T Waycott
Smith J Amigon
Faith F Venere
Antonio N Campain
IdCountryDate
1000Spain2024-04-06
1001Italy2024-04-09
1002Canada2024-04-02
1003France2024-04-13
1004Italy2024-04-22
1005France2024-04-09
1006Russia2024-04-11
1007Argentina2024-04-10
1008Italy2024-04-26
1009France2024-03-30
1010India2024-04-18
1011Japan2024-04-20
1012United Kingdom2024-04-16
1013Brazil2024-04-12
1014Germany2024-04-09
1015Australia2024-04-20
1016Germany2024-04-10
1017India2024-04-08
1018Canada2024-04-08
1019India2024-04-27
1020France2024-04-12
1021Spain2024-04-27
1022France2024-04-21
1023Australia2024-04-02
1024Argentina2024-04-23
1025United Kingdom2024-04-06
1026Argentina2024-04-02
1027India2024-04-08
1028United Kingdom2024-04-09
1029United Kingdom2024-04-21
1030Germany2024-04-05
1031Japan2024-04-07
1032India2024-04-21
1033Italy2024-04-26
1034Russia2024-04-17
1035Spain2024-04-10
1036France2024-04-15
1037Spain2024-04-18
1038Russia2024-04-28
1039Italy2024-04-05
1040Germany2024-04-13
1041France2024-04-23
1042Spain2024-04-20
1043Spain2024-04-08
1044Spain2024-04-03
1045Argentina2024-04-15
1046Russia2024-04-26
1047Russia2024-04-17
1048Argentina2024-04-18
1049Canada2024-04-06

On-Demand Data

NameIdCountryDate
Ivar V Oldroyd1000Canada2024-04-04
Rodrigues R Albares1001Australia2024-04-13
Nicolas Q Darakjy1002United Kingdom2024-04-09
Costa E Venere1003Russia2024-04-28
Jefferson Q Venere1004Germany2024-04-02
Emily V Briddick1005Australia2024-04-02
Leon Y Glick1006United Kingdom2024-04-12
Costa K Inouye1007Germany2024-04-07
Emily J Stockham1008United Kingdom2024-04-11
Greenwood G Doe1009Argentina2024-04-08
Julie O Schemmer1010Canada2024-04-22
Salvatore W Rulapaugh1011India2024-04-15
Mayumi M Saylors1012Canada2024-04-23
Deepesh K Figeroa1013France2024-04-06
Leja C Gaucho1014France2024-04-06
Leja N Bolognia1015United Kingdom2024-04-23
Kadeem N Bolognia1016Russia2024-04-25
Jennifer C Bowley1017Italy2024-04-27
Maisha Q Gillian1018Australia2024-04-23
Sinclair B Ostrosky1019Australia2024-04-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson Q FerenczArgentinaOnyama Limba NEW
Izzy U MarrierSpainAsiya Javayant NEW
Juan P DoeRussiaElwin Sharvill QUALIFIED
Kadeem Y NestleArgentinaAnna Fali QUALIFIED
Smith A ChuiSpainBernardo Dominic NEW
Maria U WaycottBrazilElwin Sharvill NEGOTIATION
Alejandro T VenereArgentinaStephen Shaw NEGOTIATION
Mujtaba W KolmetzBrazilAsiya Javayant NEW
Greenwood N GlickIndiaAnna Fali NEW
Morrow X GillianJapanAmy Elsner NEGOTIATION
Murillo Z TollnerArgentinaAmy Elsner NEW
David T BowleyAustraliaOnyama Limba RENEWAL
Jennifer L MorascaAustraliaAsiya Javayant NEGOTIATION
Juan L KuskoRussiaOnyama Limba PROPOSAL
Jeanfrancois H MacleadRussiaIvan Magalhaes RENEWAL
Aika E OldroydRussiaXuxue Feng QUALIFIED
Nicolas N RulapaughAustraliaIoni Bowcher NEW
Costa P BowleyIndiaBernardo Dominic QUALIFIED
Isabel M GlickRussiaIoni Bowcher QUALIFIED
Smith G StensethUnited KingdomAnna Fali QUALIFIED
Chavez I MorascaItalyElwin Sharvill QUALIFIED
Izzy Z OldroydBrazilAsiya Javayant UNQUALIFIED
Ivar B MaletIndiaIvan Magalhaes QUALIFIED
Julie N SchemmerRussiaAmy Elsner NEGOTIATION
Jeanfrancois M ShinkoGermanyXuxue Feng NEW
Salvatore Z PerinBrazilAmy Elsner RENEWAL
Aruna D OldroydFranceAmy Elsner RENEWAL
Salvatore S FlosiFranceStephen Shaw RENEWAL
Costa K IturbideSpainAmy Elsner NEGOTIATION
James X PoquetteArgentinaStephen Shaw QUALIFIED
Jefferson P MaletCanadaAsiya Javayant UNQUALIFIED
Costa K VocelkaRussiaAmy Elsner NEGOTIATION
David H RulapaughFranceXuxue Feng QUALIFIED
Costa X MorascaBrazilXuxue Feng RENEWAL
David E WhobreySpainOnyama Limba PROPOSAL
Isabel U ShinkoItalyOnyama Limba RENEWAL
Ivar V OstroskyIndiaBernardo Dominic PROPOSAL
Jones W AmigonCanadaElwin Sharvill QUALIFIED
Tony V FollerGermanyOnyama Limba UNQUALIFIED
Silvio I WaycottGermanyIoni Bowcher UNQUALIFIED

<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>