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 T FlosiItalyAmy Elsner RENEWAL
Izzy G SlusarskiFranceAsiya Javayant NEGOTIATION
Deepesh L ButtUnited KingdomBernardo Dominic NEGOTIATION
Morrow N KuskoIndiaAmy Elsner PROPOSAL
Antonio W ChuiCanadaAnna Fali NEW
Sinclair H CaudyUnited KingdomBernardo Dominic PROPOSAL
Nicolas U FollerBrazilBernardo Dominic RENEWAL
Darci D StensethArgentinaOnyama Limba NEW
Ashley Y PerinFranceIoni Bowcher QUALIFIED
Maria W IturbideBrazilOnyama Limba PROPOSAL
Jones Z WhobreyUnited KingdomStephen Shaw NEGOTIATION
Claire Q NestleItalyStephen Shaw UNQUALIFIED
Cody H RoysterSpainOnyama Limba NEGOTIATION
Adams J BologniaFranceStephen Shaw QUALIFIED
Sinclair D RimBrazilIoni Bowcher NEW
Kadeem G SergiSpainBernardo Dominic UNQUALIFIED
Leon Q PoquetteGermanyIoni Bowcher UNQUALIFIED
Cody D RoysterFranceElwin Sharvill QUALIFIED
Murillo F DoeIndiaElwin Sharvill PROPOSAL
Rodrigues E GlickAustraliaStephen Shaw QUALIFIED
Kaitlin X BologniaIndiaStephen Shaw NEGOTIATION
Murillo H RoysterArgentinaXuxue Feng RENEWAL
Morrow D VenereArgentinaElwin Sharvill RENEWAL
Aruna J CaudyBrazilIoni Bowcher NEW
Misaki Y GillianRussiaBernardo Dominic NEW
Clifford I RimArgentinaAnna Fali UNQUALIFIED
Aika O SchemmerRussiaElwin Sharvill RENEWAL
Isabel L OldroydJapanBernardo Dominic UNQUALIFIED
Johnson I VenereItalyAmy Elsner UNQUALIFIED
Izzy Y RulapaughAustraliaXuxue Feng UNQUALIFIED
Chavez P FollerBrazilElwin Sharvill NEGOTIATION
Nicolas W SergiBrazilElwin Sharvill NEW
Maisha L CaldareraGermanyAsiya Javayant RENEWAL
Ashley N AmigonAustraliaBernardo Dominic PROPOSAL
Leon I StockhamUnited KingdomElwin Sharvill NEGOTIATION
Ashley Z PoquetteSpainXuxue Feng QUALIFIED
Smith U FerenczIndiaAmy Elsner NEW
David M FerenczArgentinaXuxue Feng NEW
Murillo P OldroydUnited KingdomAnna Fali RENEWAL
Sinclair B RutaGermanyIoni Bowcher UNQUALIFIED
Aruna D KolmetzBrazilOnyama Limba UNQUALIFIED
Jeanfrancois D SchemmerBrazilStephen Shaw QUALIFIED
Munro W AlbaresCanadaIvan Magalhaes RENEWAL
Costa I StockhamUnited KingdomAsiya Javayant NEGOTIATION
Jeanfrancois M PoquetteBrazilOnyama Limba UNQUALIFIED
Isabel Q VenereJapanIoni Bowcher UNQUALIFIED
Jefferson J TollnerRussiaAnna Fali NEW
Mayumi R MorascaGermanyBernardo Dominic NEGOTIATION
Leon H OldroydJapanElwin Sharvill NEGOTIATION
Arvin U CaldareraBrazilAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Aika J GarufiRussiaAsiya Javayant NEW
Ashley R InouyeRussiaXuxue Feng NEW
Rodrigues B MorascaArgentinaStephen Shaw NEW
Aditya L OstroskyGermanyBernardo Dominic NEGOTIATION
Kaitlin H GlickRussiaIoni Bowcher PROPOSAL
James H ChuiGermanyAmy Elsner RENEWAL
Kaitlin Y RutaUnited KingdomElwin Sharvill NEGOTIATION
Wickens A GlickCanadaIoni Bowcher NEGOTIATION
Tony N CaudyCanadaBernardo Dominic UNQUALIFIED
Francesco P WhobreyRussiaAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie T AlbaresArgentina2024-04-15Feiner Bros NEW23Asiya Javayant
1001Aditya A StensethFrance2024-04-26Chapman, Ross E Esq NEW77Ioni Bowcher
1002Julie Y IturbideUnited Kingdom2024-04-09Printing Dimensions RENEWAL5Ivan Magalhaes
1003Arvin G StockhamCanada2024-04-05Commercial Press PROPOSAL42Stephen Shaw
1004Aika G NickaCanada2024-04-13Chapman, Ross E Esq NEGOTIATION38Elwin Sharvill
1005Leon T StockhamIndia2024-04-26Commercial Press RENEWAL98Ioni Bowcher
1006Kaitlin T DarakjyRussia2024-04-25Dorl, James J Esq PROPOSAL64Elwin Sharvill
1007Deepesh S RoysterIndia2024-04-17Morlong Associates PROPOSAL56Asiya Javayant
1008Costa X RutaArgentina2024-03-31Feltz Printing Service NEGOTIATION2Ioni Bowcher
1009Wickens M SaylorsCanada2024-04-16Rousseaux, Michael Esq PROPOSAL11Onyama Limba
1010Claire Y IturbideRussia2024-04-20Rangoni Of Florence RENEWAL2Amy Elsner
1011Aruna O RulapaughCanada2024-04-12Commercial Press QUALIFIED48Anna Fali
1012Stacey M ShinkoJapan2024-04-05Chemel, James L Cpa RENEWAL4Bernardo Dominic
1013David P AlbaresIndia2024-03-30Rousseaux, Michael Esq PROPOSAL25Asiya Javayant
1014Ivar U MaletItaly2024-03-31Dorl, James J Esq PROPOSAL36Ioni Bowcher
1015Mujtaba E TollnerItaly2024-04-22Rousseaux, Michael Esq RENEWAL58Xuxue Feng
1016Smith E VenereArgentina2024-04-14Printing Dimensions NEGOTIATION39Ioni Bowcher
1017Aruna C MaletCanada2024-04-08Rousseaux, Michael Esq UNQUALIFIED44Asiya Javayant
1018Tony T GillianSpain2024-04-13Morlong Associates UNQUALIFIED11Stephen Shaw
1019Julie L DilliardRussia2024-04-06Printing Dimensions QUALIFIED84Stephen Shaw
1020Cody M FlosiBrazil2024-04-13Feiner Bros QUALIFIED41Onyama Limba
1021Faith A KolmetzFrance2024-04-17Chapman, Ross E Esq PROPOSAL82Anna Fali
1022Maria S NickaSpain2024-03-29Chapman, Ross E Esq NEGOTIATION54Ivan Magalhaes
1023Julie H ButtIndia2024-04-25Feiner Bros NEW38Xuxue Feng
1024Jefferson D WieserCanada2024-04-10Benton, John B Jr NEW49Elwin Sharvill
1025Munro P NestleIndia2024-04-15Chanay, Jeffrey A Esq PROPOSAL24Amy Elsner
1026Antonio W CampainArgentina2024-04-04Feltz Printing Service NEW84Ioni Bowcher
1027Clifford Y NestleBrazil2024-04-17Benton, John B Jr UNQUALIFIED67Amy Elsner
1028David O RulapaughFrance2024-04-03Truhlar And Truhlar Attys PROPOSAL3Ivan Magalhaes
1029Ricardo S WhobreyAustralia2024-04-11Chemel, James L Cpa NEW55Anna Fali
1030Darci P OstroskyUnited Kingdom2024-04-13Benton, John B Jr NEGOTIATION89Amy Elsner
1031Jennifer E InouyeItaly2024-04-25Rousseaux, Michael Esq NEGOTIATION33Onyama Limba
1032Mujtaba T CampainUnited Kingdom2024-04-03Morlong Associates QUALIFIED55Elwin Sharvill
1033Adams U FollerJapan2024-04-02Chapman, Ross E Esq NEGOTIATION85Stephen Shaw
1034Kadeem C StockhamArgentina2024-04-26King, Christopher A Esq UNQUALIFIED38Ioni Bowcher
1035Ivar G FlosiCanada2024-04-08Chanay, Jeffrey A Esq UNQUALIFIED75Ioni Bowcher
1036Jeanfrancois B KuskoCanada2024-04-27Dorl, James J Esq UNQUALIFIED2Onyama Limba
1037Jeanfrancois B MaletItaly2024-04-26Rousseaux, Michael Esq NEGOTIATION22Xuxue Feng
1038Maria Y PerinAustralia2024-04-03Benton, John B Jr PROPOSAL93Stephen Shaw
1039Aika L FollerFrance2024-04-16Chemel, James L Cpa QUALIFIED65Ivan Magalhaes
1040Izzy R FollerFrance2024-04-21Chemel, James L Cpa QUALIFIED28Stephen Shaw
1041Jennifer A SchemmerRussia2024-04-04Commercial Press QUALIFIED72Amy Elsner
1042Francesco T BriddickUnited Kingdom2024-04-22Chemel, James L Cpa QUALIFIED87Bernardo Dominic
1043Arvin O FerenczJapan2024-04-26Rousseaux, Michael Esq UNQUALIFIED20Ivan Magalhaes
1044Ashley N PoquetteGermany2024-03-29King, Christopher A Esq PROPOSAL42Ivan Magalhaes
1045Sinclair L PaprockiCanada2024-04-15Benton, John B Jr UNQUALIFIED34Xuxue Feng
1046Maisha X NestleArgentina2024-04-08Buckley Miller Wright RENEWAL61Onyama Limba
1047Claire M DoeRussia2024-04-15Dorl, James J Esq UNQUALIFIED30Amy Elsner
1048Misaki E AlbaresJapan2024-04-15Truhlar And Truhlar Attys QUALIFIED50Amy Elsner
1049Antonio O MorascaItaly2024-04-17Feltz Printing Service NEW33Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin H SergiJapanAsiya Javayant NEW
Jones N MorascaRussiaAnna Fali QUALIFIED
Silvio D BriddickGermanyIoni Bowcher UNQUALIFIED
Jeanfrancois S NestleCanadaXuxue Feng NEGOTIATION
Adams P NestleBrazilElwin Sharvill UNQUALIFIED
Misaki K DoeCanadaBernardo Dominic PROPOSAL
Munro C SaylorsIndiaIoni Bowcher RENEWAL
Sinclair G StensethSpainIvan Magalhaes UNQUALIFIED
Silvio B GillianAustraliaBernardo Dominic NEW
Ricardo O IturbideSpainAnna Fali UNQUALIFIED
Emily N ShinkoIndiaXuxue Feng QUALIFIED
Darci X BologniaRussiaAnna Fali RENEWAL
Emily R MorascaJapanIvan Magalhaes NEW
James B RimCanadaStephen Shaw NEW
Cody X CampainUnited KingdomIvan Magalhaes NEGOTIATION
Kadeem N MarrierRussiaElwin Sharvill PROPOSAL
Chavez P TollnerRussiaOnyama Limba PROPOSAL
Octavia X CampainFranceElwin Sharvill NEGOTIATION
Maria S RimGermanyStephen Shaw RENEWAL
David V StockhamIndiaIoni Bowcher RENEWAL
Mujtaba D GarufiFranceIoni Bowcher PROPOSAL
Octavia D MaletGermanyOnyama Limba UNQUALIFIED
Munro I RoysterJapanElwin Sharvill NEW
Salvatore T KuskoRussiaAmy Elsner PROPOSAL
Adams J WieserUnited KingdomIoni Bowcher PROPOSAL
Juan V FollerCanadaBernardo Dominic NEGOTIATION
Salvatore J PaprockiBrazilIoni Bowcher UNQUALIFIED
Misaki W VocelkaGermanyIvan Magalhaes PROPOSAL
Wickens T MaletGermanyAmy Elsner QUALIFIED
Jennifer T PerinCanadaAnna Fali RENEWAL
Chavez Q SchemmerSpainXuxue Feng NEW
Alejandro V SergiCanadaElwin Sharvill UNQUALIFIED
Aruna S CampainBrazilAsiya Javayant QUALIFIED
Kaitlin K MaletUnited KingdomIoni Bowcher RENEWAL
Costa W NestleAustraliaStephen Shaw QUALIFIED
Maria F AlbaresFranceBernardo Dominic QUALIFIED
Greenwood V CaudyArgentinaIoni Bowcher NEGOTIATION
Sinclair K SaylorsIndiaElwin Sharvill NEGOTIATION
Silvio J PerinUnited KingdomAnna Fali PROPOSAL
Cody O TollnerIndiaAnna Fali QUALIFIED
Antonio W KolmetzCanadaOnyama Limba NEW
Rodrigues V ShinkoGermanyElwin Sharvill PROPOSAL
Maria Z StockhamUnited KingdomAnna Fali QUALIFIED
Leon N RimGermanyAnna Fali RENEWAL
Maria K DarakjyGermanyAmy Elsner NEW
Alejandro J RimItalyOnyama Limba UNQUALIFIED
Jeanfrancois D NestleBrazilBernardo Dominic RENEWAL
Costa Q CampainCanadaAsiya Javayant UNQUALIFIED
Morrow L FollerCanadaAmy Elsner UNQUALIFIED
Salvatore H SergiCanadaAmy Elsner PROPOSAL
Frozen Columns
Name
Izzy D Bowley
Leja J Tollner
Sinclair K Nestle
Aruna D Nicka
Silvio E Venere
Clifford R Maclead
Jones W Gaucho
Johnson O Malet
Arvin C Albares
Izzy T Campain
Nicolas Z Glick
Leon F Waycott
Octavia V Ruta
Aruna L Nestle
Stacey Q Marrier
Jefferson Y Nestle
Arvin Y Oldroyd
Deepesh A Foller
Misaki Q Figeroa
Octavia Y Figeroa
Octavia X Bowley
Izzy V Ferencz
Ashley S Vocelka
Morrow L Ferencz
Alejandro K Poquette
Maisha P Flosi
James U Malet
Faith U Kusko
Misaki U Caldarera
Nicolas V Saylors
Leja Z Saylors
Darci O Perin
Tony F Flosi
Johnson Q Kolmetz
Kadeem Z Garufi
Ashley T Tollner
Juan C Caldarera
Aruna I Poquette
Alejandro G Figeroa
Salvatore L Inouye
Johnson H Perin
Murillo T Morasca
Clifford B Wieser
Salvatore U Caudy
David B Kusko
Cody H Inouye
Maria S Figeroa
Jennifer X Garufi
Antonio M Bolognia
James Z Nestle
IdCountryDate
1000Italy2024-04-26
1001Brazil2024-04-07
1002Australia2024-04-04
1003India2024-04-25
1004Brazil2024-03-30
1005Brazil2024-04-20
1006Japan2024-04-22
1007Japan2024-04-20
1008Spain2024-03-31
1009Canada2024-04-22
1010Germany2024-04-24
1011United Kingdom2024-04-11
1012Japan2024-04-11
1013Argentina2024-04-02
1014Germany2024-03-31
1015Canada2024-04-14
1016Japan2024-04-12
1017Spain2024-04-22
1018Canada2024-04-13
1019Canada2024-04-24
1020Italy2024-04-16
1021Brazil2024-04-13
1022United Kingdom2024-04-09
1023Canada2024-03-31
1024Japan2024-04-09
1025Brazil2024-04-12
1026Italy2024-04-07
1027India2024-04-07
1028Spain2024-04-22
1029France2024-03-29
1030France2024-04-25
1031India2024-04-01
1032Italy2024-03-29
1033Australia2024-04-22
1034Argentina2024-04-16
1035Canada2024-04-16
1036France2024-04-02
1037Italy2024-04-09
1038United Kingdom2024-04-12
1039Russia2024-03-30
1040Spain2024-04-09
1041Brazil2024-04-08
1042Australia2024-03-29
1043India2024-04-24
1044India2024-04-23
1045Brazil2024-04-18
1046Italy2024-04-25
1047Germany2024-04-18
1048Brazil2024-04-19
1049France2024-04-21

On-Demand Data

NameIdCountryDate
Sinclair Z Morasca1000Argentina2024-04-21
Francesco K Ruta1001Japan2024-03-31
Faith V Ruta1002France2024-04-08
Emily T Ostrosky1003Brazil2024-04-10
Cody G Schemmer1004Argentina2024-04-01
Misaki N Rim1005Spain2024-04-11
Morrow O Oldroyd1006Canada2024-04-02
Ashley Z Perin1007Germany2024-04-02
Jones V Whobrey1008Russia2024-04-05
Munro P Bolognia1009Italy2024-04-27
Mayumi I Flosi1010Argentina2024-04-17
Octavia Q Bowley1011France2024-04-07
Jones V Rulapaugh1012Spain2024-04-16
Murillo D Vocelka1013Brazil2024-04-24
Jefferson I Poquette1014France2024-04-07
Nicolas P Oldroyd1015Italy2024-04-18
Alejandro C Tollner1016Brazil2024-04-19
Leon X Schemmer1017Italy2024-04-06
Emily Z Figeroa1018Japan2024-04-20
Chavez X Gillian1019Brazil2024-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci O SaylorsJapanAsiya Javayant RENEWAL
Cody Z AmigonCanadaIvan Magalhaes NEGOTIATION
Murillo H DarakjyIndiaOnyama Limba NEGOTIATION
Octavia N KuskoJapanStephen Shaw NEW
Julie S SaylorsAustraliaOnyama Limba NEW
Jefferson I WaycottCanadaElwin Sharvill UNQUALIFIED
Mujtaba A SergiJapanElwin Sharvill NEGOTIATION
Clifford E DarakjyItalyAmy Elsner UNQUALIFIED
Morrow B OstroskyFranceIoni Bowcher NEGOTIATION
Aruna C TollnerGermanyElwin Sharvill QUALIFIED
Deepesh B RoysterAustraliaXuxue Feng UNQUALIFIED
Leja A KuskoCanadaStephen Shaw NEGOTIATION
Alejandro H MacleadGermanyBernardo Dominic NEW
Jeanfrancois D CaldareraAustraliaStephen Shaw NEW
Octavia L RutaCanadaAnna Fali NEW
Wickens X MaletGermanyOnyama Limba NEW
Johnson N CampainFranceAsiya Javayant NEGOTIATION
Francesco T PerinGermanyBernardo Dominic PROPOSAL
Faith M DilliardArgentinaIoni Bowcher NEGOTIATION
Jefferson D KuskoGermanyAmy Elsner RENEWAL
Morrow L RutaGermanyAnna Fali RENEWAL
Antonio B ChuiCanadaAsiya Javayant UNQUALIFIED
Rodrigues C VocelkaFranceOnyama Limba NEGOTIATION
Salvatore V RutaJapanAsiya Javayant NEW
James V SergiGermanyBernardo Dominic NEGOTIATION
Mayumi W MarrierAustraliaElwin Sharvill UNQUALIFIED
Misaki O StensethArgentinaBernardo Dominic QUALIFIED
Faith I PerinArgentinaStephen Shaw UNQUALIFIED
Mujtaba W GarufiRussiaAnna Fali NEW
Ivar A BologniaUnited KingdomAmy Elsner QUALIFIED
David C SaylorsSpainOnyama Limba PROPOSAL
Murillo S FollerArgentinaAmy Elsner NEW
Johnson A WhobreyBrazilOnyama Limba NEGOTIATION
Smith Q PerinFranceIoni Bowcher UNQUALIFIED
Ivar I RimIndiaOnyama Limba NEGOTIATION
Stacey I ChuiArgentinaXuxue Feng QUALIFIED
Octavia J CaldareraJapanOnyama Limba UNQUALIFIED
Deepesh M ButtRussiaElwin Sharvill NEGOTIATION
Morrow G CaldareraSpainOnyama Limba UNQUALIFIED
Ivar R MaletBrazilBernardo Dominic NEW

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