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
Clifford E MaletAustraliaAsiya Javayant UNQUALIFIED
David D PaprockiUnited KingdomAmy Elsner NEW
James H GillianAustraliaOnyama Limba NEGOTIATION
Aruna T CaldareraUnited KingdomIvan Magalhaes QUALIFIED
Tony W CaudyRussiaStephen Shaw UNQUALIFIED
Rodrigues O SchemmerAustraliaAmy Elsner UNQUALIFIED
Antonio F BowleyJapanIoni Bowcher QUALIFIED
Aika U BriddickRussiaAmy Elsner RENEWAL
Salvatore M FlosiCanadaIoni Bowcher QUALIFIED
Wickens V WieserGermanyIvan Magalhaes NEW
Francesco K ChuiBrazilIoni Bowcher PROPOSAL
Ricardo U NestleArgentinaOnyama Limba NEGOTIATION
Maisha T FerenczArgentinaIvan Magalhaes NEW
Adams R DarakjyFranceOnyama Limba UNQUALIFIED
Antonio J AlbaresUnited KingdomElwin Sharvill QUALIFIED
Juan U ButtGermanyOnyama Limba QUALIFIED
Ivar Y FlosiBrazilAnna Fali UNQUALIFIED
Octavia P PoquetteFranceOnyama Limba PROPOSAL
Rodrigues K ButtJapanAsiya Javayant NEW
David F OstroskyAustraliaOnyama Limba NEW
Aruna A GarufiRussiaIoni Bowcher PROPOSAL
Aruna J OldroydGermanyXuxue Feng UNQUALIFIED
Ashley B TollnerItalyIoni Bowcher RENEWAL
Aika M PoquetteBrazilStephen Shaw UNQUALIFIED
Silvio I RulapaughArgentinaXuxue Feng PROPOSAL
Chavez R SchemmerItalyIoni Bowcher UNQUALIFIED
Munro D MorascaUnited KingdomBernardo Dominic NEGOTIATION
Jones C RimJapanIvan Magalhaes UNQUALIFIED
Octavia V AmigonRussiaAnna Fali PROPOSAL
Aika Z ButtAustraliaIoni Bowcher PROPOSAL
Kadeem B DarakjyUnited KingdomAmy Elsner QUALIFIED
Stacey G PerinBrazilAmy Elsner UNQUALIFIED
Cody U OldroydJapanAmy Elsner QUALIFIED
Ivar H ButtFranceOnyama Limba RENEWAL
Emily J VocelkaIndiaAmy Elsner QUALIFIED
Costa M DarakjyUnited KingdomAnna Fali PROPOSAL
Smith L FollerIndiaIvan Magalhaes QUALIFIED
Leon U BologniaJapanElwin Sharvill NEW
Jones N GillianIndiaElwin Sharvill QUALIFIED
Juan Z FigeroaSpainAsiya Javayant PROPOSAL
Isabel D KuskoIndiaIvan Magalhaes NEW
Tony G AlbaresSpainIoni Bowcher QUALIFIED
Murillo V WieserUnited KingdomIvan Magalhaes UNQUALIFIED
Deepesh O MorascaArgentinaAmy Elsner PROPOSAL
Tony K SaylorsArgentinaAmy Elsner NEW
Arvin X BowleyAustraliaIvan Magalhaes NEW
Salvatore I CaldareraRussiaStephen Shaw PROPOSAL
Octavia I KolmetzFranceIoni Bowcher NEW
Izzy A NestleAustraliaElwin Sharvill PROPOSAL
Isabel K ChuiBrazilAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mujtaba D CaldareraFranceOnyama Limba PROPOSAL
Aika Q GlickUnited KingdomAsiya Javayant QUALIFIED
Emily J RoysterSpainIvan Magalhaes UNQUALIFIED
David T GlickArgentinaIoni Bowcher RENEWAL
Ashley E VocelkaItalyElwin Sharvill RENEWAL
Deepesh I FerenczItalyOnyama Limba PROPOSAL
Isabel K BriddickIndiaAsiya Javayant PROPOSAL
Nicolas L DarakjyJapanIoni Bowcher UNQUALIFIED
Deepesh M GauchoJapanAsiya Javayant NEGOTIATION
Munro P GlickArgentinaOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan S PerinJapan2024-04-05Rangoni Of Florence RENEWAL59Asiya Javayant
1001Arvin T MaletBrazil2024-03-28Chanay, Jeffrey A Esq NEW46Ioni Bowcher
1002Clifford L MacleadArgentina2024-04-07Buckley Miller Wright RENEWAL1Xuxue Feng
1003Jefferson Y OstroskyGermany2024-04-09Chemel, James L Cpa QUALIFIED39Amy Elsner
1004Maisha V OstroskyCanada2024-04-16Morlong Associates NEGOTIATION4Anna Fali
1005Ricardo C OstroskyGermany2024-03-31Printing Dimensions RENEWAL64Asiya Javayant
1006Mujtaba T VenereItaly2024-04-12Rousseaux, Michael Esq UNQUALIFIED97Asiya Javayant
1007Antonio O NickaAustralia2024-04-17Truhlar And Truhlar Attys UNQUALIFIED18Bernardo Dominic
1008Darci S PoquetteItaly2024-03-28Truhlar And Truhlar Attys QUALIFIED78Ivan Magalhaes
1009Cody C FlosiRussia2024-03-29King, Christopher A Esq RENEWAL33Ivan Magalhaes
1010Stacey R AlbaresFrance2024-03-20Feiner Bros RENEWAL36Bernardo Dominic
1011Tony Y OstroskyJapan2024-04-01Chapman, Ross E Esq UNQUALIFIED85Xuxue Feng
1012Octavia M MarrierGermany2024-04-06Commercial Press QUALIFIED67Elwin Sharvill
1013Jefferson X CampainAustralia2024-04-12Rousseaux, Michael Esq NEW85Elwin Sharvill
1014Leja V DilliardArgentina2024-04-09Feltz Printing Service NEGOTIATION37Stephen Shaw
1015Ricardo E SergiItaly2024-04-15Truhlar And Truhlar Attys NEGOTIATION41Ioni Bowcher
1016Leon Y MaletRussia2024-04-18Rousseaux, Michael Esq RENEWAL49Ioni Bowcher
1017David N CaldareraFrance2024-04-02Morlong Associates NEGOTIATION86Asiya Javayant
1018Cody L WaycottIndia2024-03-22King, Christopher A Esq NEW96Xuxue Feng
1019Julie G FlosiRussia2024-03-31Chemel, James L Cpa UNQUALIFIED70Stephen Shaw
1020Isabel R KolmetzItaly2024-04-11Chapman, Ross E Esq PROPOSAL70Xuxue Feng
1021Murillo L BriddickSpain2024-04-08King, Christopher A Esq QUALIFIED40Ivan Magalhaes
1022Ashley H SchemmerIndia2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED2Onyama Limba
1023Chavez M OldroydAustralia2024-04-14Dorl, James J Esq RENEWAL28Asiya Javayant
1024Ashley T GillianAustralia2024-04-14Truhlar And Truhlar Attys NEGOTIATION43Xuxue Feng
1025Octavia T PerinGermany2024-04-02Chanay, Jeffrey A Esq PROPOSAL34Amy Elsner
1026Octavia U OstroskySpain2024-03-25Rousseaux, Michael Esq RENEWAL84Anna Fali
1027Morrow J BologniaCanada2024-03-20Buckley Miller Wright QUALIFIED18Asiya Javayant
1028Ricardo X ChuiCanada2024-04-01Chemel, James L Cpa RENEWAL74Amy Elsner
1029Rodrigues E AmigonSpain2024-03-25Commercial Press UNQUALIFIED13Bernardo Dominic
1030Ivar T StensethItaly2024-03-23Truhlar And Truhlar Attys NEGOTIATION90Elwin Sharvill
1031Emily A DoeGermany2024-03-21Rousseaux, Michael Esq PROPOSAL43Stephen Shaw
1032Kaitlin U VocelkaJapan2024-04-02Truhlar And Truhlar Attys NEW43Amy Elsner
1033Faith Z CampainIndia2024-04-01Rangoni Of Florence RENEWAL90Xuxue Feng
1034Adams Z SchemmerIndia2024-03-25Dorl, James J Esq NEW47Ioni Bowcher
1035Mujtaba H FollerRussia2024-04-07Chapman, Ross E Esq RENEWAL27Bernardo Dominic
1036Darci X DoeUnited Kingdom2024-03-31Morlong Associates PROPOSAL96Anna Fali
1037Adams B GillianIndia2024-03-21Truhlar And Truhlar Attys PROPOSAL89Onyama Limba
1038Ashley P CampainIndia2024-03-27Rousseaux, Michael Esq QUALIFIED94Ivan Magalhaes
1039Darci I NestleItaly2024-04-09Feltz Printing Service RENEWAL42Asiya Javayant
1040David H MaletFrance2024-04-03Truhlar And Truhlar Attys UNQUALIFIED73Anna Fali
1041Alejandro U KolmetzBrazil2024-04-10Dorl, James J Esq QUALIFIED41Ivan Magalhaes
1042Rodrigues Y AmigonRussia2024-04-14Morlong Associates NEW61Asiya Javayant
1043Ivar Z RutaItaly2024-03-20Chanay, Jeffrey A Esq RENEWAL12Bernardo Dominic
1044Adams F NickaArgentina2024-04-15Rangoni Of Florence QUALIFIED76Bernardo Dominic
1045Kadeem O KolmetzGermany2024-04-11Rangoni Of Florence UNQUALIFIED4Bernardo Dominic
1046Arvin Y RimArgentina2024-03-21King, Christopher A Esq RENEWAL63Asiya Javayant
1047James E BowleyArgentina2024-03-20Feiner Bros NEGOTIATION88Stephen Shaw
1048Munro Y SchemmerBrazil2024-04-10King, Christopher A Esq RENEWAL83Ivan Magalhaes
1049Stacey Z VenereJapan2024-04-18Chapman, Ross E Esq NEW47Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba V VocelkaRussiaIvan Magalhaes NEW
Faith I CaldareraGermanyXuxue Feng RENEWAL
Munro U NickaFranceXuxue Feng NEW
Francesco E MacleadGermanyStephen Shaw UNQUALIFIED
Ricardo L WhobreyGermanyStephen Shaw QUALIFIED
Kaitlin Q WieserSpainAmy Elsner PROPOSAL
Clifford H NestleUnited KingdomOnyama Limba NEW
Rodrigues A GlickFranceOnyama Limba UNQUALIFIED
Adams Y NickaBrazilIvan Magalhaes NEGOTIATION
Darci H GlickCanadaStephen Shaw PROPOSAL
Francesco O IturbideGermanyBernardo Dominic RENEWAL
Jefferson S StensethArgentinaIvan Magalhaes NEGOTIATION
Leon T ButtRussiaAnna Fali NEW
Adams S StockhamCanadaAnna Fali NEGOTIATION
Ivar F FerenczArgentinaOnyama Limba RENEWAL
Sinclair W NestleFranceAmy Elsner PROPOSAL
Costa I MacleadFranceAnna Fali NEW
Mayumi S DoeFranceAsiya Javayant NEW
Ricardo F MacleadBrazilIoni Bowcher UNQUALIFIED
Ivar W StensethBrazilAmy Elsner UNQUALIFIED
Sinclair N InouyeBrazilOnyama Limba QUALIFIED
Kaitlin O CampainItalyIoni Bowcher QUALIFIED
Salvatore Y MaletRussiaAmy Elsner UNQUALIFIED
Stacey R OldroydCanadaIoni Bowcher PROPOSAL
Jones X StockhamBrazilIoni Bowcher RENEWAL
Kaitlin Q BologniaSpainIoni Bowcher QUALIFIED
Leja A ButtCanadaOnyama Limba NEGOTIATION
Greenwood L RimSpainXuxue Feng NEW
Kaitlin Q PerinRussiaOnyama Limba RENEWAL
Darci I KolmetzFranceBernardo Dominic PROPOSAL
Smith Q PaprockiIndiaXuxue Feng NEW
Smith L ChuiAustraliaIvan Magalhaes PROPOSAL
Mujtaba G IturbideJapanIvan Magalhaes QUALIFIED
Ashley L DarakjyCanadaStephen Shaw QUALIFIED
Misaki J GarufiRussiaAnna Fali NEW
Aruna G IturbideRussiaIvan Magalhaes UNQUALIFIED
Silvio Y SergiItalyAsiya Javayant PROPOSAL
Murillo D OstroskyGermanyElwin Sharvill RENEWAL
Jefferson C MaletJapanAsiya Javayant PROPOSAL
Jennifer Z VenereRussiaAmy Elsner RENEWAL
Salvatore F ButtIndiaAnna Fali NEGOTIATION
Ivar A AlbaresFranceAsiya Javayant QUALIFIED
Mayumi L AmigonArgentinaElwin Sharvill RENEWAL
Antonio G FerenczItalyIvan Magalhaes NEW
Ivar X OldroydItalyStephen Shaw NEGOTIATION
Salvatore G DilliardRussiaIoni Bowcher NEW
Aika T ButtJapanAnna Fali UNQUALIFIED
Claire F IturbideRussiaIoni Bowcher UNQUALIFIED
Maisha N MaletUnited KingdomOnyama Limba NEGOTIATION
Juan S RoysterSpainElwin Sharvill NEGOTIATION
Frozen Columns
Name
Izzy C Gaucho
Smith Q Chui
Darci F Royster
Greenwood P Marrier
Johnson C Nestle
Johnson I Saylors
Emily T Campain
Antonio J Rulapaugh
Smith F Figeroa
Munro V Whobrey
Jeanfrancois O Garufi
Jones S Malet
Arvin X Saylors
Faith T Bowley
Greenwood D Perin
Aika A Figeroa
Munro X Sergi
Leon Z Perin
Jeanfrancois Z Morasca
James S Ostrosky
Francesco N Paprocki
Johnson I Royster
Izzy I Dilliard
Murillo Y Figeroa
Aika W Sergi
Chavez Y Inouye
Chavez Q Rim
Mujtaba X Slusarski
Murillo P Briddick
Jones C Perin
Cody D Butt
Ivar M Perin
Aditya H Chui
Francesco C Tollner
Johnson S Campain
Kadeem L Royster
Aruna V Dilliard
Ashley G Venere
Murillo K Shinko
Sinclair H Slusarski
Julie C Saylors
Arvin L Malet
Francesco K Bowley
Murillo Y Royster
Silvio I Marrier
Juan D Rim
Misaki P Paprocki
Salvatore S Bolognia
Alejandro C Nestle
Nicolas E Maclead
IdCountryDate
1000Japan2024-03-20
1001United Kingdom2024-03-21
1002Spain2024-04-16
1003United Kingdom2024-04-06
1004Russia2024-04-09
1005Russia2024-03-24
1006Germany2024-03-20
1007Italy2024-04-06
1008Spain2024-03-20
1009Russia2024-04-10
1010Spain2024-04-03
1011Japan2024-03-26
1012Canada2024-03-21
1013Japan2024-03-24
1014Spain2024-03-31
1015Canada2024-03-25
1016Russia2024-03-26
1017Spain2024-04-14
1018Italy2024-04-14
1019Argentina2024-03-22
1020Australia2024-03-22
1021United Kingdom2024-03-20
1022Australia2024-03-31
1023Germany2024-03-27
1024Germany2024-04-05
1025Italy2024-04-18
1026Italy2024-03-27
1027Spain2024-04-06
1028Spain2024-03-22
1029Spain2024-03-31
1030France2024-04-17
1031Brazil2024-03-24
1032India2024-04-03
1033Japan2024-04-10
1034Argentina2024-04-11
1035Russia2024-03-28
1036India2024-04-12
1037Brazil2024-03-28
1038Italy2024-04-11
1039Spain2024-03-24
1040Spain2024-04-08
1041Brazil2024-04-03
1042Spain2024-03-22
1043Germany2024-04-11
1044Japan2024-03-23
1045Japan2024-04-17
1046Japan2024-04-18
1047France2024-04-11
1048Italy2024-04-04
1049Italy2024-04-14

On-Demand Data

NameIdCountryDate
Sinclair P Perin1000United Kingdom2024-03-22
Emily S Kusko1001Japan2024-04-15
Ashley Z Garufi1002Spain2024-03-31
Johnson S Flosi1003India2024-03-23
Kadeem G Doe1004France2024-03-30
Sinclair M Sergi1005Argentina2024-03-20
Aditya P Amigon1006Brazil2024-04-10
Rodrigues P Ostrosky1007Brazil2024-04-01
Mujtaba J Stockham1008India2024-03-26
Julie B Butt1009Germany2024-04-16
Leja Q Inouye1010Spain2024-04-11
Ivar W Slusarski1011Brazil2024-03-25
Adams K Gillian1012Australia2024-04-05
Greenwood W Figeroa1013Australia2024-03-31
Jennifer D Venere1014Argentina2024-04-11
Jefferson J Flosi1015France2024-03-22
Francesco P Whobrey1016Spain2024-03-20
Juan K Nicka1017Italy2024-03-21
Claire B Tollner1018Canada2024-03-30
Maisha X Doe1019Italy2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon E PerinGermanyIoni Bowcher PROPOSAL
Ivar F StockhamSpainOnyama Limba QUALIFIED
Morrow P SergiArgentinaXuxue Feng PROPOSAL
Cody R BowleyIndiaIoni Bowcher NEW
Maisha G AmigonUnited KingdomOnyama Limba RENEWAL
Leja F VocelkaCanadaOnyama Limba RENEWAL
Misaki M CaldareraRussiaIvan Magalhaes UNQUALIFIED
Leja Z GillianCanadaStephen Shaw NEGOTIATION
Nicolas G WieserArgentinaBernardo Dominic NEGOTIATION
Leja Q ChuiGermanyElwin Sharvill NEGOTIATION
Jones C RutaSpainAsiya Javayant RENEWAL
Misaki C RimGermanyAsiya Javayant UNQUALIFIED
Ricardo T BologniaItalyIoni Bowcher QUALIFIED
Misaki N AmigonUnited KingdomBernardo Dominic PROPOSAL
Izzy N WaycottGermanyElwin Sharvill UNQUALIFIED
Aditya V WieserCanadaElwin Sharvill NEW
Costa Y KuskoIndiaAnna Fali UNQUALIFIED
Misaki I SaylorsBrazilOnyama Limba QUALIFIED
Adams T ShinkoBrazilAnna Fali NEW
Deepesh H FollerSpainAsiya Javayant NEW
Octavia V FigeroaCanadaIoni Bowcher QUALIFIED
Kaitlin V StockhamGermanyAnna Fali NEGOTIATION
Jefferson Y WhobreyBrazilIvan Magalhaes QUALIFIED
Mayumi Y MacleadUnited KingdomAmy Elsner UNQUALIFIED
Johnson N GauchoSpainBernardo Dominic RENEWAL
Deepesh Q FlosiSpainAnna Fali UNQUALIFIED
Emily V AmigonRussiaOnyama Limba UNQUALIFIED
Greenwood N MaletGermanyAnna Fali PROPOSAL
James N MorascaAustraliaOnyama Limba UNQUALIFIED
Leon Q BowleyAustraliaIoni Bowcher PROPOSAL
Clifford B PaprockiCanadaBernardo Dominic NEW
Aruna B DarakjyIndiaIoni Bowcher QUALIFIED
Cody Y RulapaughGermanyAmy Elsner NEGOTIATION
Isabel O PoquetteUnited KingdomOnyama Limba UNQUALIFIED
Aditya L CampainUnited KingdomAnna Fali NEGOTIATION
Adams W DoeGermanyAsiya Javayant QUALIFIED
Aditya A GlickAustraliaOnyama Limba QUALIFIED
Wickens U WaycottSpainXuxue Feng UNQUALIFIED
Misaki E BriddickIndiaStephen Shaw UNQUALIFIED
Juan X SaylorsRussiaAsiya Javayant 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>