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
Aika P WhobreyBrazilOnyama Limba QUALIFIED
Jennifer V CampainIndiaIvan Magalhaes NEW
Clifford N SergiAustraliaIvan Magalhaes PROPOSAL
Aika X AmigonArgentinaIvan Magalhaes NEGOTIATION
Claire K DilliardGermanyAnna Fali RENEWAL
Deepesh H IturbideJapanAnna Fali NEGOTIATION
Jeanfrancois E PaprockiAustraliaAsiya Javayant NEW
Morrow E GillianRussiaIvan Magalhaes RENEWAL
Ricardo P GlickArgentinaXuxue Feng QUALIFIED
Smith U SergiSpainAmy Elsner PROPOSAL
Mujtaba W RulapaughJapanBernardo Dominic NEGOTIATION
Jennifer D IturbideSpainBernardo Dominic NEW
Octavia X WhobreyIndiaIvan Magalhaes QUALIFIED
Johnson F CaudyFranceIvan Magalhaes RENEWAL
Smith X PaprockiItalyAmy Elsner QUALIFIED
Adams V AlbaresItalyAnna Fali NEGOTIATION
Cody P WhobreyFranceAsiya Javayant QUALIFIED
Ivar U VenereItalyBernardo Dominic UNQUALIFIED
Murillo X WhobreyFranceBernardo Dominic PROPOSAL
Salvatore P AmigonItalyElwin Sharvill RENEWAL
Claire K GarufiGermanyIoni Bowcher RENEWAL
Morrow B RulapaughUnited KingdomXuxue Feng PROPOSAL
Isabel B VenereArgentinaOnyama Limba UNQUALIFIED
Alejandro L WhobreyArgentinaIoni Bowcher NEW
Chavez Y MorascaJapanStephen Shaw RENEWAL
Kaitlin N FlosiSpainAnna Fali RENEWAL
Silvio B MaletAustraliaIoni Bowcher RENEWAL
Deepesh I DilliardBrazilOnyama Limba RENEWAL
Kadeem I DilliardFranceOnyama Limba QUALIFIED
Arvin L InouyeRussiaAmy Elsner RENEWAL
Smith O WieserUnited KingdomAnna Fali QUALIFIED
Ashley L SaylorsJapanElwin Sharvill NEGOTIATION
James W CaldareraSpainXuxue Feng QUALIFIED
Darci D RimItalyBernardo Dominic RENEWAL
Johnson I SergiBrazilIoni Bowcher NEW
Misaki H WieserJapanXuxue Feng NEW
Sinclair P GlickSpainIoni Bowcher NEW
David S MorascaUnited KingdomIoni Bowcher NEW
Mayumi V BriddickItalyBernardo Dominic NEW
Octavia E MaletSpainIoni Bowcher UNQUALIFIED
Leja N FlosiFranceOnyama Limba UNQUALIFIED
Maisha A GarufiRussiaXuxue Feng RENEWAL
Misaki G FollerAustraliaAmy Elsner NEW
Sinclair D FlosiGermanyElwin Sharvill RENEWAL
Maisha R MarrierSpainAnna Fali PROPOSAL
Aika S WaycottJapanStephen Shaw NEW
Octavia Q BologniaBrazilStephen Shaw NEW
Johnson E RimFranceXuxue Feng QUALIFIED
Munro X CaldareraSpainAnna Fali UNQUALIFIED
Rodrigues F BriddickArgentinaIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois B KolmetzItalyIvan Magalhaes NEGOTIATION
Sinclair O MarrierItalyAsiya Javayant NEGOTIATION
Jeanfrancois N RoysterAustraliaXuxue Feng RENEWAL
Costa G ButtItalyIvan Magalhaes UNQUALIFIED
Izzy S GlickGermanyBernardo Dominic UNQUALIFIED
Aruna E IturbideIndiaElwin Sharvill PROPOSAL
Kaitlin N NickaRussiaOnyama Limba PROPOSAL
Munro P OldroydFranceElwin Sharvill NEGOTIATION
Octavia D MaletJapanAnna Fali PROPOSAL
Wickens W PaprockiSpainAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba R SchemmerAustralia2024-04-11Buckley Miller Wright NEGOTIATION47Stephen Shaw
1001Cody F ButtJapan2024-05-03Chanay, Jeffrey A Esq NEW64Anna Fali
1002Nicolas Z GillianBrazil2024-05-08Chapman, Ross E Esq NEW67Asiya Javayant
1003Johnson R CaldareraRussia2024-05-09Rousseaux, Michael Esq UNQUALIFIED64Ioni Bowcher
1004Morrow Z GarufiAustralia2024-04-11Feiner Bros PROPOSAL91Ioni Bowcher
1005Clifford I PerinGermany2024-05-09Benton, John B Jr RENEWAL44Stephen Shaw
1006Alejandro A RimBrazil2024-05-09Chapman, Ross E Esq NEW0Asiya Javayant
1007Costa I SchemmerGermany2024-04-24Chapman, Ross E Esq NEW59Anna Fali
1008Isabel A IturbideFrance2024-04-16Truhlar And Truhlar Attys NEW95Elwin Sharvill
1009Ricardo M VenereGermany2024-05-07Printing Dimensions NEGOTIATION5Ivan Magalhaes
1010Octavia Z WhobreyAustralia2024-04-28Truhlar And Truhlar Attys RENEWAL37Anna Fali
1011Stacey I FerenczItaly2024-04-20Commercial Press NEW46Elwin Sharvill
1012Adams J FerenczArgentina2024-04-14Chanay, Jeffrey A Esq NEGOTIATION95Anna Fali
1013Ricardo J ButtSpain2024-04-29Chapman, Ross E Esq PROPOSAL34Bernardo Dominic
1014Johnson K RoysterUnited Kingdom2024-04-11Chanay, Jeffrey A Esq QUALIFIED81Bernardo Dominic
1015Jefferson E BowleyArgentina2024-04-13Rangoni Of Florence NEGOTIATION45Asiya Javayant
1016Costa T MaletArgentina2024-04-17King, Christopher A Esq UNQUALIFIED39Bernardo Dominic
1017Chavez E CaudyJapan2024-04-13King, Christopher A Esq QUALIFIED63Stephen Shaw
1018Costa N PerinSpain2024-04-12King, Christopher A Esq NEGOTIATION98Anna Fali
1019Munro I MaletRussia2024-04-26Chemel, James L Cpa QUALIFIED90Elwin Sharvill
1020Wickens V FollerAustralia2024-05-06Truhlar And Truhlar Attys NEGOTIATION92Asiya Javayant
1021Chavez O SergiBrazil2024-05-02Truhlar And Truhlar Attys UNQUALIFIED79Onyama Limba
1022Deepesh X StockhamBrazil2024-04-10Buckley Miller Wright UNQUALIFIED45Elwin Sharvill
1023Chavez S RimUnited Kingdom2024-04-17Printing Dimensions PROPOSAL25Ivan Magalhaes
1024Mujtaba Y MaletFrance2024-05-06Rousseaux, Michael Esq PROPOSAL26Ioni Bowcher
1025Tony A ButtCanada2024-04-21Feiner Bros UNQUALIFIED33Anna Fali
1026Aika T AlbaresSpain2024-05-04Chanay, Jeffrey A Esq NEGOTIATION43Anna Fali
1027Aika Y WieserFrance2024-04-22Chemel, James L Cpa RENEWAL49Bernardo Dominic
1028Murillo F StensethFrance2024-04-26Feltz Printing Service NEW18Stephen Shaw
1029Aditya L ShinkoAustralia2024-04-21Benton, John B Jr NEGOTIATION81Ivan Magalhaes
1030Murillo F DoeItaly2024-05-02Benton, John B Jr NEW76Ivan Magalhaes
1031Izzy N MacleadAustralia2024-04-30Feltz Printing Service UNQUALIFIED97Xuxue Feng
1032Ricardo G CampainGermany2024-04-30Feltz Printing Service NEW6Xuxue Feng
1033Silvio L GauchoCanada2024-04-11Dorl, James J Esq NEW31Amy Elsner
1034Sinclair F GlickGermany2024-04-19King, Christopher A Esq NEW16Bernardo Dominic
1035Ricardo V DoeJapan2024-05-03Printing Dimensions PROPOSAL9Elwin Sharvill
1036Ricardo W VocelkaCanada2024-04-29Morlong Associates PROPOSAL53Elwin Sharvill
1037Alejandro B GillianIndia2024-04-25Feiner Bros PROPOSAL63Asiya Javayant
1038Emily A AmigonUnited Kingdom2024-04-29Rousseaux, Michael Esq QUALIFIED29Onyama Limba
1039Salvatore B KolmetzAustralia2024-05-07Feltz Printing Service NEGOTIATION41Amy Elsner
1040Smith C NickaRussia2024-04-19Feiner Bros RENEWAL43Onyama Limba
1041Leja I GillianIndia2024-04-12Dorl, James J Esq NEW16Onyama Limba
1042Maisha O ChuiItaly2024-04-20Rangoni Of Florence UNQUALIFIED39Amy Elsner
1043Juan M DoeCanada2024-04-21King, Christopher A Esq QUALIFIED40Anna Fali
1044Kaitlin E NickaCanada2024-05-09Morlong Associates RENEWAL93Amy Elsner
1045Misaki A NestleUnited Kingdom2024-04-19Rangoni Of Florence PROPOSAL48Ivan Magalhaes
1046Leon E NickaGermany2024-05-03Rangoni Of Florence NEW75Stephen Shaw
1047Murillo T SchemmerBrazil2024-04-22Feiner Bros PROPOSAL26Ioni Bowcher
1048Aditya S KuskoIndia2024-05-06Chanay, Jeffrey A Esq NEW86Elwin Sharvill
1049Smith Q InouyeBrazil2024-04-14Benton, John B Jr NEGOTIATION15Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Morrow R MaletArgentinaAsiya Javayant UNQUALIFIED
Tony Z DarakjyCanadaAsiya Javayant QUALIFIED
Claire X MarrierRussiaOnyama Limba RENEWAL
Deepesh J DilliardItalyStephen Shaw QUALIFIED
Nicolas K OldroydBrazilIoni Bowcher NEW
Salvatore Q RulapaughFranceElwin Sharvill NEW
Aika C FigeroaFranceStephen Shaw PROPOSAL
Jones D StensethSpainStephen Shaw RENEWAL
Munro S RimArgentinaAmy Elsner NEW
Morrow P AmigonFranceAsiya Javayant QUALIFIED
Aika A PerinBrazilIvan Magalhaes UNQUALIFIED
Aruna O PaprockiAustraliaAmy Elsner RENEWAL
Isabel E WhobreyFranceElwin Sharvill NEGOTIATION
Maria S BologniaIndiaElwin Sharvill NEGOTIATION
Adams W DarakjyUnited KingdomStephen Shaw QUALIFIED
Antonio Y AmigonAustraliaElwin Sharvill NEW
Julie C MaletIndiaIvan Magalhaes QUALIFIED
Ivar K AmigonFranceBernardo Dominic UNQUALIFIED
Aruna Y BowleyGermanyAsiya Javayant QUALIFIED
Smith R BowleyRussiaStephen Shaw NEW
Stacey Z BologniaAustraliaIvan Magalhaes UNQUALIFIED
Adams L BowleyFranceBernardo Dominic NEGOTIATION
Sinclair T CampainItalyBernardo Dominic UNQUALIFIED
Rodrigues P VenereIndiaAsiya Javayant UNQUALIFIED
Arvin A DoeSpainXuxue Feng NEW
Costa M RutaCanadaElwin Sharvill QUALIFIED
Murillo U VenereArgentinaXuxue Feng QUALIFIED
Aditya H MaletBrazilAmy Elsner RENEWAL
Smith A CampainSpainStephen Shaw QUALIFIED
Munro U RimSpainIoni Bowcher NEGOTIATION
Nicolas L DilliardAustraliaStephen Shaw QUALIFIED
Clifford T MorascaItalyOnyama Limba NEW
James V WaycottCanadaElwin Sharvill PROPOSAL
Sinclair C ChuiRussiaAnna Fali RENEWAL
Adams K NickaCanadaOnyama Limba UNQUALIFIED
Ivar P FlosiUnited KingdomAnna Fali UNQUALIFIED
Aruna B DilliardUnited KingdomBernardo Dominic PROPOSAL
Chavez Z WieserAustraliaXuxue Feng QUALIFIED
James S WieserBrazilXuxue Feng UNQUALIFIED
Morrow V RoysterBrazilIoni Bowcher PROPOSAL
Costa P ButtUnited KingdomElwin Sharvill UNQUALIFIED
Silvio N VenereCanadaIvan Magalhaes NEGOTIATION
Ricardo E SlusarskiUnited KingdomOnyama Limba NEW
Salvatore U AlbaresUnited KingdomXuxue Feng UNQUALIFIED
Murillo N WhobreyUnited KingdomStephen Shaw NEGOTIATION
Stacey H MorascaUnited KingdomElwin Sharvill UNQUALIFIED
Aditya J SlusarskiUnited KingdomAnna Fali PROPOSAL
Faith C GillianIndiaAsiya Javayant RENEWAL
Alejandro D GlickCanadaXuxue Feng QUALIFIED
Deepesh I FigeroaUnited KingdomBernardo Dominic NEGOTIATION
Frozen Columns
Name
Jefferson Y Kolmetz
Murillo T Garufi
Adams L Sergi
Wickens U Nicka
Kadeem O Dilliard
Adams I Maclead
Stacey V Vocelka
Tony H Rulapaugh
Silvio Z Shinko
Jeanfrancois B Paprocki
Jefferson T Bowley
Jones H Garufi
Deepesh E Stenseth
Deepesh U Foller
Munro Y Venere
Kaitlin F Doe
Aruna N Albares
Costa O Marrier
Maria W Ostrosky
Deepesh Z Rulapaugh
Costa H Dilliard
Kaitlin J Sergi
Maisha I Dilliard
Maria G Garufi
Stacey T Flosi
Kadeem M Waycott
Darci H Bolognia
Izzy V Paprocki
Morrow O Garufi
Juan S Tollner
Juan P Whobrey
David J Figeroa
James J Ruta
Maisha L Shinko
Jones O Butt
Sinclair J Sergi
James J Kusko
Arvin A Inouye
Maria O Flosi
Johnson I Darakjy
Arvin F Flosi
David O Bolognia
Silvio J Butt
Costa G Tollner
Aika A Caldarera
Arvin C Vocelka
Kaitlin H Foller
Nicolas B Vocelka
Misaki J Tollner
Aditya I Briddick
IdCountryDate
1000Italy2024-04-21
1001Russia2024-04-30
1002Italy2024-04-20
1003France2024-04-27
1004Canada2024-04-25
1005Italy2024-04-22
1006Russia2024-04-22
1007Argentina2024-04-21
1008Canada2024-04-27
1009Spain2024-04-18
1010Brazil2024-04-13
1011Canada2024-04-24
1012Germany2024-04-27
1013United Kingdom2024-05-05
1014Russia2024-04-12
1015Argentina2024-04-24
1016Italy2024-04-22
1017Canada2024-04-26
1018Canada2024-04-27
1019Canada2024-05-09
1020Spain2024-04-10
1021Canada2024-04-16
1022United Kingdom2024-04-27
1023Japan2024-04-13
1024Australia2024-05-01
1025United Kingdom2024-04-11
1026Spain2024-04-26
1027Spain2024-04-27
1028Australia2024-04-20
1029Germany2024-04-22
1030Italy2024-04-16
1031Japan2024-04-12
1032Spain2024-05-09
1033Canada2024-05-02
1034Russia2024-04-15
1035France2024-04-11
1036Italy2024-04-14
1037Brazil2024-04-24
1038Spain2024-05-05
1039Russia2024-04-15
1040Italy2024-04-10
1041Canada2024-04-13
1042India2024-04-11
1043Canada2024-05-03
1044Brazil2024-04-10
1045Canada2024-05-04
1046Brazil2024-04-20
1047France2024-04-24
1048Japan2024-04-23
1049Italy2024-04-23

On-Demand Data

NameIdCountryDate
Misaki T Whobrey1000Brazil2024-04-16
Nicolas Z Wieser1001Argentina2024-05-03
Nicolas Q Chui1002Spain2024-04-23
Deepesh T Chui1003Canada2024-04-25
Alejandro B Butt1004Australia2024-05-09
Claire C Nestle1005Spain2024-04-13
Alejandro P Doe1006Russia2024-04-24
Salvatore E Campain1007Russia2024-05-08
Kadeem O Maclead1008Germany2024-05-05
Sinclair X Waycott1009India2024-04-24
Darci D Perin1010Brazil2024-04-29
Silvio O Poquette1011Russia2024-05-02
Stacey H Sergi1012France2024-04-10
Leja M Butt1013Australia2024-04-17
Deepesh E Dilliard1014India2024-04-26
Aruna D Malet1015Canada2024-04-14
Kaitlin M Caldarera1016Canada2024-04-15
Antonio B Gaucho1017Argentina2024-04-11
Octavia S Dilliard1018Italy2024-04-11
Deepesh W Ostrosky1019Spain2024-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith I OstroskyUnited KingdomXuxue Feng PROPOSAL
Darci Z SlusarskiGermanyElwin Sharvill QUALIFIED
Jefferson Z StensethUnited KingdomBernardo Dominic NEGOTIATION
Kaitlin Z SergiJapanElwin Sharvill NEGOTIATION
Arvin P CaudyAustraliaIvan Magalhaes PROPOSAL
Rodrigues W SergiUnited KingdomXuxue Feng NEW
Emily F SlusarskiCanadaOnyama Limba NEGOTIATION
Ricardo F GauchoFranceBernardo Dominic UNQUALIFIED
Johnson N InouyeArgentinaIoni Bowcher NEW
Leja B BowleyUnited KingdomOnyama Limba NEGOTIATION
Clifford G SchemmerItalyAnna Fali NEGOTIATION
Adams N FollerArgentinaAmy Elsner NEGOTIATION
Maisha N GarufiCanadaXuxue Feng NEGOTIATION
Wickens Q StockhamAustraliaStephen Shaw QUALIFIED
Clifford A MorascaArgentinaIoni Bowcher PROPOSAL
Deepesh R FollerAustraliaIoni Bowcher UNQUALIFIED
Clifford G WhobreyCanadaStephen Shaw NEW
Tony D ChuiGermanyOnyama Limba RENEWAL
Leon T TollnerFranceAmy Elsner NEGOTIATION
Antonio X OstroskyGermanyElwin Sharvill PROPOSAL
Francesco C DarakjyAustraliaXuxue Feng PROPOSAL
Nicolas Z BowleyFranceStephen Shaw QUALIFIED
Jeanfrancois C RulapaughFranceXuxue Feng RENEWAL
Costa Q SergiGermanyStephen Shaw RENEWAL
Greenwood G BriddickRussiaIoni Bowcher NEGOTIATION
Maria T MaletFranceXuxue Feng NEGOTIATION
Salvatore N OstroskyJapanIoni Bowcher QUALIFIED
Faith N BowleyGermanyStephen Shaw UNQUALIFIED
Alejandro R PoquetteArgentinaAnna Fali RENEWAL
Juan W KuskoCanadaIvan Magalhaes PROPOSAL
Munro J TollnerAustraliaStephen Shaw NEGOTIATION
Wickens Z BriddickArgentinaXuxue Feng UNQUALIFIED
Cody C GillianCanadaAmy Elsner RENEWAL
Silvio B NickaBrazilIvan Magalhaes PROPOSAL
Alejandro U GlickItalyAnna Fali NEW
James J OldroydUnited KingdomAsiya Javayant NEGOTIATION
Arvin Q PerinUnited KingdomBernardo Dominic PROPOSAL
Julie W StensethJapanAmy Elsner UNQUALIFIED
Chavez R KuskoCanadaAnna Fali RENEWAL
Clifford S DarakjyIndiaIoni 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>