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
Costa I RulapaughUnited KingdomXuxue Feng NEGOTIATION
Alejandro P MaletRussiaXuxue Feng NEGOTIATION
Adams E WhobreySpainOnyama Limba PROPOSAL
Jeanfrancois P ButtSpainIvan Magalhaes RENEWAL
Francesco Q RimAustraliaIvan Magalhaes PROPOSAL
Mujtaba O TollnerSpainElwin Sharvill QUALIFIED
Smith X GlickJapanAnna Fali PROPOSAL
Misaki G InouyeAustraliaIoni Bowcher QUALIFIED
Greenwood C FigeroaFranceBernardo Dominic NEW
Tony S WaycottIndiaBernardo Dominic NEW
Aruna B RimItalyAnna Fali UNQUALIFIED
Kadeem R MarrierItalyIvan Magalhaes QUALIFIED
Murillo D AmigonCanadaElwin Sharvill RENEWAL
Antonio T AmigonArgentinaIvan Magalhaes PROPOSAL
Costa K GauchoGermanyElwin Sharvill NEW
Emily S WhobreyGermanyElwin Sharvill RENEWAL
Deepesh D RimIndiaAnna Fali RENEWAL
James R DoeCanadaAmy Elsner RENEWAL
Greenwood Z SaylorsSpainStephen Shaw QUALIFIED
Tony Q OstroskyJapanIoni Bowcher UNQUALIFIED
Faith G MaletAustraliaOnyama Limba NEGOTIATION
Ashley F MorascaIndiaIvan Magalhaes PROPOSAL
Johnson A TollnerIndiaIvan Magalhaes RENEWAL
Cody K GarufiUnited KingdomXuxue Feng QUALIFIED
Antonio L RimBrazilAnna Fali NEW
Izzy C VocelkaRussiaAnna Fali NEGOTIATION
Arvin F RoysterGermanyAmy Elsner NEGOTIATION
Kadeem P NestleAustraliaBernardo Dominic NEW
Mayumi H ShinkoRussiaIoni Bowcher UNQUALIFIED
Tony H GlickFranceBernardo Dominic NEW
Ricardo D WhobreyItalyBernardo Dominic UNQUALIFIED
Leon C PerinSpainIvan Magalhaes NEW
Maisha X InouyeGermanyAsiya Javayant PROPOSAL
Isabel C GillianGermanyBernardo Dominic QUALIFIED
Alejandro T MorascaRussiaIoni Bowcher RENEWAL
Maisha U RimUnited KingdomElwin Sharvill NEW
Tony M SlusarskiJapanAnna Fali NEGOTIATION
Cody F DilliardItalyStephen Shaw NEGOTIATION
James J ChuiJapanXuxue Feng UNQUALIFIED
Clifford A FerenczArgentinaAnna Fali RENEWAL
Deepesh I StensethAustraliaIoni Bowcher RENEWAL
Jones I CampainBrazilIoni Bowcher PROPOSAL
Claire V SchemmerRussiaIoni Bowcher NEW
Cody M PaprockiSpainBernardo Dominic NEGOTIATION
Jones W MarrierIndiaStephen Shaw RENEWAL
Ivar O FlosiBrazilBernardo Dominic PROPOSAL
Arvin Q NickaUnited KingdomBernardo Dominic QUALIFIED
Leon X GillianSpainStephen Shaw NEW
Misaki D GlickRussiaXuxue Feng PROPOSAL
Jennifer W SchemmerCanadaBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
James C BowleyAustraliaXuxue Feng RENEWAL
Aditya V PaprockiIndiaElwin Sharvill RENEWAL
Jennifer D GauchoGermanyXuxue Feng QUALIFIED
Ashley T PerinFranceAmy Elsner UNQUALIFIED
Leon X SlusarskiJapanElwin Sharvill NEW
Claire Y FigeroaRussiaBernardo Dominic PROPOSAL
Kaitlin U DilliardFranceAmy Elsner NEW
Arvin Y CampainAustraliaXuxue Feng QUALIFIED
Stacey K InouyeBrazilIoni Bowcher UNQUALIFIED
Nicolas O FigeroaArgentinaStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jeanfrancois L GillianGermany2024-03-24Rangoni Of Florence UNQUALIFIED31Bernardo Dominic
1001Munro I TollnerRussia2024-03-25Morlong Associates NEGOTIATION72Bernardo Dominic
1002Clifford J VocelkaAustralia2024-03-19Chemel, James L Cpa NEGOTIATION30Anna Fali
1003James R GarufiRussia2024-04-16Rangoni Of Florence NEW92Bernardo Dominic
1004Ivar H FollerSpain2024-03-24Rangoni Of Florence UNQUALIFIED51Asiya Javayant
1005Emily P VenereBrazil2024-04-05Benton, John B Jr UNQUALIFIED86Onyama Limba
1006Mujtaba Y GlickUnited Kingdom2024-03-25Buckley Miller Wright PROPOSAL26Xuxue Feng
1007Maria C MarrierSpain2024-03-23Truhlar And Truhlar Attys RENEWAL91Onyama Limba
1008Rodrigues K CaldareraFrance2024-03-29Feiner Bros NEW44Amy Elsner
1009Maria R WieserAustralia2024-03-28Chanay, Jeffrey A Esq QUALIFIED61Amy Elsner
1010Stacey X SchemmerSpain2024-03-27Benton, John B Jr QUALIFIED24Xuxue Feng
1011Aditya I PerinArgentina2024-04-07Buckley Miller Wright NEGOTIATION8Amy Elsner
1012Adams D WhobreyCanada2024-04-11Rangoni Of Florence RENEWAL68Amy Elsner
1013Faith P DilliardIndia2024-04-03King, Christopher A Esq RENEWAL78Asiya Javayant
1014Francesco Z CaudyIndia2024-03-20King, Christopher A Esq UNQUALIFIED99Stephen Shaw
1015Leja E InouyeArgentina2024-03-28Buckley Miller Wright UNQUALIFIED88Ivan Magalhaes
1016Jennifer Q RulapaughCanada2024-04-05Truhlar And Truhlar Attys NEW24Asiya Javayant
1017Morrow B OstroskyCanada2024-03-28Truhlar And Truhlar Attys RENEWAL53Elwin Sharvill
1018Francesco Y FerenczJapan2024-03-28King, Christopher A Esq NEGOTIATION46Bernardo Dominic
1019James N SaylorsBrazil2024-03-23Printing Dimensions RENEWAL59Anna Fali
1020Deepesh C KolmetzGermany2024-04-02Chapman, Ross E Esq NEW95Anna Fali
1021Morrow A PerinCanada2024-03-19Truhlar And Truhlar Attys NEW91Onyama Limba
1022Misaki T StensethBrazil2024-03-30Rousseaux, Michael Esq PROPOSAL57Onyama Limba
1023Leon M FollerIndia2024-03-27Feltz Printing Service UNQUALIFIED63Ioni Bowcher
1024Isabel N IturbideJapan2024-03-23Truhlar And Truhlar Attys UNQUALIFIED28Amy Elsner
1025Izzy H RoysterFrance2024-04-06Feiner Bros NEGOTIATION91Elwin Sharvill
1026Tony Z GillianJapan2024-03-31Feltz Printing Service RENEWAL1Onyama Limba
1027Deepesh S InouyeBrazil2024-03-22Rousseaux, Michael Esq NEGOTIATION7Onyama Limba
1028Greenwood E VenereSpain2024-04-01Chanay, Jeffrey A Esq NEW32Onyama Limba
1029Kaitlin I RimCanada2024-04-17Rangoni Of Florence PROPOSAL20Stephen Shaw
1030Aika N GillianCanada2024-04-07Chapman, Ross E Esq RENEWAL89Xuxue Feng
1031Silvio S NickaCanada2024-03-20Buckley Miller Wright PROPOSAL15Anna Fali
1032Smith I DilliardSpain2024-04-01Commercial Press NEGOTIATION33Ivan Magalhaes
1033David A InouyeRussia2024-03-24Rangoni Of Florence NEW47Amy Elsner
1034Jones T RimBrazil2024-04-17Benton, John B Jr NEGOTIATION11Bernardo Dominic
1035Clifford X FlosiBrazil2024-03-29Rangoni Of Florence UNQUALIFIED24Xuxue Feng
1036Leja M PoquetteUnited Kingdom2024-04-09Commercial Press UNQUALIFIED87Elwin Sharvill
1037Emily H SchemmerBrazil2024-04-03Feiner Bros PROPOSAL40Anna Fali
1038Morrow J WhobreyUnited Kingdom2024-03-20Chemel, James L Cpa QUALIFIED77Ivan Magalhaes
1039Munro K ShinkoIndia2024-04-17Printing Dimensions RENEWAL29Xuxue Feng
1040Jefferson D SlusarskiGermany2024-03-23Commercial Press RENEWAL80Onyama Limba
1041Izzy Y GarufiSpain2024-03-22Feltz Printing Service NEGOTIATION18Bernardo Dominic
1042Maisha R PerinGermany2024-04-14Benton, John B Jr RENEWAL49Amy Elsner
1043Clifford E CampainSpain2024-03-28Printing Dimensions NEGOTIATION4Anna Fali
1044Izzy P NestleJapan2024-03-19Printing Dimensions RENEWAL98Xuxue Feng
1045Octavia O PaprockiRussia2024-03-21Chapman, Ross E Esq UNQUALIFIED89Elwin Sharvill
1046Aditya Z AlbaresItaly2024-04-13Chapman, Ross E Esq RENEWAL99Onyama Limba
1047Sinclair N InouyeRussia2024-04-02King, Christopher A Esq QUALIFIED31Ioni Bowcher
1048Aditya R OstroskyGermany2024-04-01Benton, John B Jr RENEWAL96Onyama Limba
1049Ashley P MacleadCanada2024-04-17Morlong Associates PROPOSAL59Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Costa L MacleadArgentinaXuxue Feng NEW
Ashley N FigeroaIndiaAnna Fali UNQUALIFIED
Leon X FigeroaJapanAsiya Javayant RENEWAL
Salvatore U DarakjyRussiaElwin Sharvill QUALIFIED
Aika P MaletAustraliaStephen Shaw UNQUALIFIED
Izzy I NickaUnited KingdomBernardo Dominic PROPOSAL
Tony T InouyeIndiaElwin Sharvill NEW
Ricardo K FigeroaRussiaElwin Sharvill QUALIFIED
Adams W GauchoIndiaAmy Elsner NEW
Silvio C OstroskySpainIvan Magalhaes QUALIFIED
Munro P ShinkoUnited KingdomIvan Magalhaes NEW
Nicolas W CaldareraFranceIvan Magalhaes RENEWAL
Kaitlin D MorascaUnited KingdomStephen Shaw NEW
Cody K GauchoRussiaIoni Bowcher RENEWAL
Isabel I NickaBrazilIvan Magalhaes UNQUALIFIED
Deepesh Y DoeFranceElwin Sharvill RENEWAL
Cody A KolmetzItalyAmy Elsner QUALIFIED
Isabel R DilliardJapanIoni Bowcher NEGOTIATION
Ashley I DarakjyRussiaOnyama Limba RENEWAL
Morrow M StockhamItalyIvan Magalhaes NEGOTIATION
Alejandro E FigeroaSpainIoni Bowcher RENEWAL
Cody O VocelkaItalyAsiya Javayant QUALIFIED
Cody R NickaJapanAmy Elsner QUALIFIED
Aika W NestleArgentinaAsiya Javayant UNQUALIFIED
Tony B SlusarskiSpainStephen Shaw RENEWAL
Adams L VenereUnited KingdomAmy Elsner PROPOSAL
Jefferson C GarufiUnited KingdomOnyama Limba PROPOSAL
Aruna L TollnerJapanIoni Bowcher UNQUALIFIED
Octavia I SchemmerBrazilAnna Fali NEGOTIATION
Maisha H SergiArgentinaXuxue Feng RENEWAL
Murillo P SchemmerBrazilBernardo Dominic RENEWAL
Costa C CaudyJapanStephen Shaw NEW
Jones M TollnerCanadaIvan Magalhaes UNQUALIFIED
Greenwood O WhobreyRussiaOnyama Limba RENEWAL
Mujtaba J FollerAustraliaIoni Bowcher PROPOSAL
Ivar I SlusarskiGermanyIvan Magalhaes RENEWAL
Johnson G GauchoArgentinaIoni Bowcher UNQUALIFIED
Jones Y SergiGermanyOnyama Limba UNQUALIFIED
Kaitlin D DilliardItalyElwin Sharvill UNQUALIFIED
Costa G DarakjyIndiaStephen Shaw NEW
Julie P WaycottArgentinaAmy Elsner QUALIFIED
Aruna P MaletIndiaXuxue Feng RENEWAL
Silvio D AmigonItalyXuxue Feng RENEWAL
Munro U RimSpainOnyama Limba PROPOSAL
Kaitlin O DarakjyBrazilIvan Magalhaes NEW
Leon N GauchoArgentinaAmy Elsner NEGOTIATION
Darci Y NickaIndiaBernardo Dominic PROPOSAL
Arvin F KolmetzGermanyElwin Sharvill NEGOTIATION
Jefferson R NestleBrazilXuxue Feng NEGOTIATION
Francesco O AmigonBrazilIoni Bowcher NEGOTIATION
Frozen Columns
Name
David P Maclead
Murillo M Kolmetz
Wickens A Malet
Isabel Y Waycott
Isabel F Maclead
Isabel T Albares
Silvio D Foller
Faith U Briddick
Stacey Z Rulapaugh
Mayumi U Glick
Izzy T Stockham
Cody O Venere
Cody E Kolmetz
Sinclair O Foller
Isabel R Kolmetz
Isabel L Ostrosky
Claire B Garufi
Deepesh S Darakjy
Juan Z Malet
Julie R Flosi
Nicolas T Gaucho
Octavia D Ostrosky
Antonio U Saylors
Smith X Nicka
Leja I Perin
Mujtaba G Stenseth
Kadeem S Shinko
Stacey R Briddick
Jones O Caudy
Francesco O Campain
Ricardo N Whobrey
Alejandro Y Nicka
Murillo Y Iturbide
Tony B Kolmetz
Juan P Stenseth
Kaitlin Z Gillian
Rodrigues W Slusarski
Tony D Campain
Murillo J Morasca
Jennifer I Maclead
Adams D Flosi
Johnson L Waycott
Maria V Royster
Jennifer V Inouye
Nicolas K Venere
Sinclair A Darakjy
Aika X Ruta
Aruna L Chui
Deepesh Q Stenseth
Antonio A Schemmer
IdCountryDate
1000Australia2024-04-06
1001Italy2024-04-13
1002Italy2024-03-20
1003Argentina2024-04-02
1004Brazil2024-03-26
1005Canada2024-04-06
1006India2024-04-15
1007Brazil2024-03-24
1008Japan2024-03-29
1009United Kingdom2024-03-19
1010Canada2024-03-24
1011Argentina2024-03-20
1012Spain2024-04-13
1013Canada2024-04-12
1014Spain2024-03-27
1015Germany2024-04-12
1016United Kingdom2024-03-22
1017France2024-03-27
1018Australia2024-04-01
1019Japan2024-04-07
1020India2024-04-08
1021United Kingdom2024-04-17
1022Brazil2024-04-04
1023Argentina2024-04-10
1024Russia2024-04-11
1025United Kingdom2024-04-05
1026India2024-04-13
1027Russia2024-04-05
1028Brazil2024-04-14
1029Germany2024-04-09
1030Germany2024-04-11
1031Australia2024-03-22
1032France2024-04-03
1033Spain2024-03-23
1034France2024-03-19
1035Germany2024-04-04
1036Germany2024-03-23
1037Germany2024-03-28
1038United Kingdom2024-03-27
1039Italy2024-03-29
1040Spain2024-04-05
1041Spain2024-03-21
1042Canada2024-04-09
1043Australia2024-03-24
1044Russia2024-04-04
1045Italy2024-03-25
1046Spain2024-04-12
1047Japan2024-03-26
1048India2024-03-19
1049Russia2024-04-03

On-Demand Data

NameIdCountryDate
Smith F Malet1000India2024-03-21
Greenwood S Amigon1001United Kingdom2024-04-09
Jeanfrancois F Perin1002Russia2024-03-26
Misaki P Iturbide1003United Kingdom2024-04-08
Leja U Slusarski1004France2024-04-06
Alejandro R Ostrosky1005France2024-03-20
Claire L Kusko1006Spain2024-03-23
Misaki D Whobrey1007Germany2024-04-02
Munro G Kusko1008France2024-04-08
Aditya R Kusko1009Germany2024-03-19
Claire R Inouye1010Russia2024-04-07
Emily C Kolmetz1011Canada2024-03-21
Deepesh Q Glick1012United Kingdom2024-04-16
Mujtaba R Marrier1013Germany2024-04-11
James R Darakjy1014India2024-04-16
Wickens Q Bowley1015India2024-04-05
Munro X Bowley1016Australia2024-04-15
Misaki I Briddick1017Brazil2024-03-22
Greenwood M Perin1018Spain2024-04-17
Julie X Morasca1019Germany2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James K DarakjyUnited KingdomAmy Elsner NEGOTIATION
Kadeem J StensethGermanyAsiya Javayant NEGOTIATION
Ivar X DarakjyItalyAsiya Javayant UNQUALIFIED
Antonio O AlbaresAustraliaIoni Bowcher RENEWAL
Tony G RimSpainIoni Bowcher PROPOSAL
Antonio V BriddickGermanyBernardo Dominic NEW
Ashley N MacleadSpainOnyama Limba NEW
Misaki Z VocelkaItalyElwin Sharvill NEGOTIATION
Jeanfrancois O WieserJapanStephen Shaw UNQUALIFIED
Jones B VocelkaAustraliaStephen Shaw UNQUALIFIED
Ivar E NestleBrazilOnyama Limba PROPOSAL
Alejandro C RoysterFranceAsiya Javayant PROPOSAL
Adams X SchemmerFranceIvan Magalhaes PROPOSAL
Ivar K AmigonCanadaStephen Shaw RENEWAL
Rodrigues R FerenczJapanAnna Fali QUALIFIED
Smith T NestleRussiaElwin Sharvill NEW
Mayumi V GillianIndiaIvan Magalhaes NEGOTIATION
Kaitlin Q NickaFranceIvan Magalhaes PROPOSAL
Antonio J DilliardBrazilAsiya Javayant QUALIFIED
Izzy Q SlusarskiBrazilIoni Bowcher PROPOSAL
Misaki R IturbideItalyIvan Magalhaes NEGOTIATION
Clifford T PaprockiUnited KingdomStephen Shaw NEGOTIATION
Jefferson B BologniaIndiaOnyama Limba NEGOTIATION
Jeanfrancois N ButtArgentinaIoni Bowcher NEW
Octavia G StockhamGermanyStephen Shaw RENEWAL
James B BowleyUnited KingdomAmy Elsner PROPOSAL
Silvio N KolmetzJapanElwin Sharvill PROPOSAL
Silvio B RoysterIndiaStephen Shaw PROPOSAL
Leja G SlusarskiArgentinaIvan Magalhaes NEGOTIATION
Misaki A MarrierBrazilIoni Bowcher NEGOTIATION
Chavez K RoysterArgentinaAnna Fali QUALIFIED
Octavia Q KolmetzJapanElwin Sharvill QUALIFIED
Stacey G AmigonItalyIoni Bowcher RENEWAL
Murillo Z CaudyRussiaXuxue Feng RENEWAL
Leja Z IturbideFranceAnna Fali RENEWAL
Jeanfrancois Q TollnerCanadaXuxue Feng PROPOSAL
Antonio Q WaycottFranceBernardo Dominic NEW
Arvin T GauchoUnited KingdomAnna Fali PROPOSAL
Wickens N StockhamArgentinaAnna Fali QUALIFIED
Emily Z RoysterJapanXuxue Feng NEGOTIATION

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