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
Leja D WhobreySpainAnna Fali RENEWAL
Cody Y PaprockiUnited KingdomBernardo Dominic NEGOTIATION
Wickens D BowleyIndiaXuxue Feng NEW
Stacey E MarrierSpainAmy Elsner RENEWAL
Murillo U MacleadJapanAnna Fali NEGOTIATION
Maria W NestleJapanIvan Magalhaes NEW
Murillo M FlosiArgentinaAsiya Javayant PROPOSAL
Juan S FollerFranceOnyama Limba NEGOTIATION
Adams J GillianJapanAsiya Javayant NEGOTIATION
Jennifer T CaldareraBrazilAmy Elsner UNQUALIFIED
Sinclair U WieserFranceXuxue Feng UNQUALIFIED
Jennifer N ButtFranceAmy Elsner UNQUALIFIED
Munro P CaudyRussiaXuxue Feng NEW
Silvio J OstroskyJapanAmy Elsner NEGOTIATION
Silvio Z MaletArgentinaBernardo Dominic NEGOTIATION
Mayumi K RimUnited KingdomBernardo Dominic UNQUALIFIED
David U FigeroaBrazilOnyama Limba UNQUALIFIED
Maisha L DilliardFranceAnna Fali QUALIFIED
Isabel C AlbaresJapanAmy Elsner NEW
Munro U GlickAustraliaStephen Shaw RENEWAL
Jones I MarrierCanadaAsiya Javayant PROPOSAL
Salvatore G FollerArgentinaAmy Elsner NEW
Sinclair C MarrierAustraliaElwin Sharvill PROPOSAL
Aditya G MarrierGermanyAmy Elsner NEGOTIATION
Ashley F RoysterIndiaStephen Shaw NEW
Aditya O FlosiGermanyAnna Fali NEGOTIATION
Maria L MaletSpainElwin Sharvill NEGOTIATION
Francesco K RimIndiaStephen Shaw UNQUALIFIED
Silvio H MaletAustraliaIvan Magalhaes RENEWAL
Greenwood V StockhamRussiaIoni Bowcher PROPOSAL
Darci Z FlosiUnited KingdomIvan Magalhaes RENEWAL
Stacey U VenereGermanyStephen Shaw RENEWAL
Aruna A MaletCanadaXuxue Feng RENEWAL
Chavez P VocelkaItalyAsiya Javayant NEW
Maria D SchemmerGermanyAsiya Javayant UNQUALIFIED
Greenwood S SlusarskiIndiaIvan Magalhaes PROPOSAL
Munro V NickaFranceStephen Shaw UNQUALIFIED
Mayumi K KuskoJapanXuxue Feng NEGOTIATION
Deepesh I CaldareraJapanStephen Shaw PROPOSAL
David U VocelkaJapanAsiya Javayant PROPOSAL
Leon I PaprockiIndiaIvan Magalhaes RENEWAL
Leja A CaudyJapanIvan Magalhaes PROPOSAL
Cody L AmigonItalyIvan Magalhaes RENEWAL
Maisha M DilliardGermanyAnna Fali QUALIFIED
Chavez Q SchemmerCanadaXuxue Feng UNQUALIFIED
Munro N FlosiArgentinaAsiya Javayant RENEWAL
Cody I StockhamItalyAnna Fali PROPOSAL
Salvatore G StensethArgentinaOnyama Limba NEW
Nicolas W ChuiGermanyOnyama Limba QUALIFIED
Rodrigues Y GauchoUnited KingdomBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Wickens W KuskoIndiaIvan Magalhaes NEW
Chavez O AlbaresSpainXuxue Feng PROPOSAL
Jefferson P PaprockiArgentinaIvan Magalhaes RENEWAL
Greenwood A KuskoBrazilAsiya Javayant UNQUALIFIED
Deepesh C RutaItalyStephen Shaw NEW
Jefferson X VenereFranceIoni Bowcher RENEWAL
David F GlickFranceOnyama Limba NEGOTIATION
Chavez G InouyeIndiaBernardo Dominic NEW
Morrow E AmigonItalyIoni Bowcher QUALIFIED
Cody V AlbaresItalyStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar R MarrierCanada2024-04-12Feiner Bros PROPOSAL11Bernardo Dominic
1001Silvio K FerenczIndia2024-04-27Chanay, Jeffrey A Esq PROPOSAL76Elwin Sharvill
1002Aditya O GauchoArgentina2024-04-11Feiner Bros QUALIFIED13Xuxue Feng
1003Stacey X RoysterCanada2024-04-22Buckley Miller Wright QUALIFIED39Ioni Bowcher
1004Darci M AlbaresItaly2024-04-26Commercial Press NEGOTIATION35Asiya Javayant
1005Julie B VocelkaSpain2024-04-30Benton, John B Jr RENEWAL23Bernardo Dominic
1006Nicolas Z NestleBrazil2024-04-10Feiner Bros QUALIFIED99Bernardo Dominic
1007Aika J FerenczIndia2024-04-27Printing Dimensions RENEWAL15Xuxue Feng
1008Stacey Q TollnerFrance2024-04-01Chapman, Ross E Esq QUALIFIED67Anna Fali
1009Claire M DarakjyGermany2024-04-22Dorl, James J Esq RENEWAL62Anna Fali
1010Aditya L NestleJapan2024-04-27King, Christopher A Esq QUALIFIED46Xuxue Feng
1011Johnson B RutaRussia2024-04-13Rangoni Of Florence NEGOTIATION56Elwin Sharvill
1012Ashley U FlosiIndia2024-04-26Truhlar And Truhlar Attys NEW29Xuxue Feng
1013Ivar Q NestleIndia2024-04-13Truhlar And Truhlar Attys QUALIFIED77Asiya Javayant
1014Aditya J VenereUnited Kingdom2024-04-27Chapman, Ross E Esq RENEWAL7Asiya Javayant
1015Darci L MarrierGermany2024-04-16Benton, John B Jr QUALIFIED84Stephen Shaw
1016Rodrigues F VocelkaUnited Kingdom2024-04-07King, Christopher A Esq UNQUALIFIED42Anna Fali
1017Stacey A GillianAustralia2024-04-19Rangoni Of Florence UNQUALIFIED94Bernardo Dominic
1018Antonio Z DoeSpain2024-04-20Feiner Bros QUALIFIED86Asiya Javayant
1019Jeanfrancois T OldroydUnited Kingdom2024-04-04Buckley Miller Wright NEW50Anna Fali
1020Jennifer F GauchoGermany2024-04-15Feltz Printing Service NEW9Stephen Shaw
1021Maria T FollerBrazil2024-04-08Rousseaux, Michael Esq UNQUALIFIED60Xuxue Feng
1022Ricardo I RutaUnited Kingdom2024-04-27Feiner Bros NEGOTIATION3Ioni Bowcher
1023Johnson P SergiFrance2024-04-22Chemel, James L Cpa QUALIFIED84Elwin Sharvill
1024Sinclair D PerinCanada2024-04-05Rousseaux, Michael Esq NEGOTIATION87Bernardo Dominic
1025Stacey Q AlbaresSpain2024-04-23Morlong Associates RENEWAL74Onyama Limba
1026Kaitlin S RimFrance2024-04-21King, Christopher A Esq NEGOTIATION55Ioni Bowcher
1027David J CaudyAustralia2024-04-16Rousseaux, Michael Esq RENEWAL86Ioni Bowcher
1028Alejandro I VenereSpain2024-04-01Chanay, Jeffrey A Esq NEGOTIATION17Ivan Magalhaes
1029Nicolas A StensethSpain2024-04-04Truhlar And Truhlar Attys PROPOSAL3Onyama Limba
1030Salvatore N GillianCanada2024-04-30Chemel, James L Cpa PROPOSAL42Ivan Magalhaes
1031Silvio L AlbaresJapan2024-04-12Benton, John B Jr RENEWAL8Elwin Sharvill
1032Cody B FollerUnited Kingdom2024-04-03Rangoni Of Florence QUALIFIED66Onyama Limba
1033Faith F DoeJapan2024-04-24Commercial Press UNQUALIFIED87Anna Fali
1034Greenwood L FollerUnited Kingdom2024-04-25Feiner Bros QUALIFIED28Anna Fali
1035Francesco X OstroskyCanada2024-04-17Morlong Associates QUALIFIED3Amy Elsner
1036Izzy Y TollnerRussia2024-04-12Buckley Miller Wright RENEWAL72Anna Fali
1037Julie A FollerArgentina2024-04-25King, Christopher A Esq QUALIFIED23Onyama Limba
1038Silvio G IturbideBrazil2024-04-03Printing Dimensions PROPOSAL77Amy Elsner
1039Deepesh Q SaylorsSpain2024-04-10Feltz Printing Service RENEWAL44Asiya Javayant
1040Aditya G StockhamFrance2024-04-01Commercial Press NEGOTIATION41Ivan Magalhaes
1041Nicolas C DilliardItaly2024-04-05Rangoni Of Florence RENEWAL2Ioni Bowcher
1042Darci N KolmetzArgentina2024-04-25Chemel, James L Cpa NEGOTIATION99Amy Elsner
1043Faith S InouyeAustralia2024-04-18Chanay, Jeffrey A Esq NEGOTIATION29Anna Fali
1044Misaki I FollerGermany2024-04-20Rousseaux, Michael Esq UNQUALIFIED90Asiya Javayant
1045Leja Q GarufiGermany2024-04-12Chemel, James L Cpa QUALIFIED12Stephen Shaw
1046Morrow T CaldareraArgentina2024-04-26Rangoni Of Florence NEW36Bernardo Dominic
1047Kaitlin R BologniaArgentina2024-04-08Morlong Associates NEW47Bernardo Dominic
1048Leon X PoquetteJapan2024-04-13Rangoni Of Florence PROPOSAL7Ivan Magalhaes
1049Johnson G ShinkoIndia2024-04-21King, Christopher A Esq NEW16Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Clifford L BriddickIndiaIvan Magalhaes UNQUALIFIED
Salvatore Q GarufiRussiaAsiya Javayant NEW
Aruna M DarakjyFranceOnyama Limba NEW
Aruna C DoeIndiaAnna Fali QUALIFIED
Rodrigues R SchemmerJapanIvan Magalhaes NEW
Murillo E CaudyFranceOnyama Limba UNQUALIFIED
Leja U MacleadRussiaElwin Sharvill UNQUALIFIED
Leon S BriddickAustraliaAmy Elsner NEW
David O DarakjyCanadaAsiya Javayant NEW
Aruna O FigeroaCanadaIvan Magalhaes NEGOTIATION
Aika K GlickBrazilXuxue Feng QUALIFIED
Leja T VenereCanadaAnna Fali NEGOTIATION
Leja H CampainUnited KingdomAmy Elsner QUALIFIED
Alejandro L VenereArgentinaElwin Sharvill NEW
Antonio T GillianArgentinaAmy Elsner QUALIFIED
Cody Y SergiBrazilIoni Bowcher UNQUALIFIED
Francesco W OstroskyIndiaOnyama Limba NEGOTIATION
Julie C IturbideAustraliaXuxue Feng UNQUALIFIED
David M StensethGermanyBernardo Dominic NEGOTIATION
Maria Z SlusarskiCanadaOnyama Limba NEW
Sinclair N MacleadArgentinaIvan Magalhaes PROPOSAL
Maria V NestleItalyAsiya Javayant PROPOSAL
Ricardo I WhobreyCanadaAmy Elsner PROPOSAL
Mujtaba R GillianGermanyAmy Elsner NEGOTIATION
Julie I PerinAustraliaAmy Elsner QUALIFIED
Maria B StockhamBrazilElwin Sharvill NEW
Aruna I DarakjyCanadaStephen Shaw RENEWAL
Nicolas X MarrierCanadaAmy Elsner UNQUALIFIED
Smith W CaldareraJapanIvan Magalhaes QUALIFIED
Chavez F NickaUnited KingdomIvan Magalhaes PROPOSAL
Julie L DoeCanadaStephen Shaw PROPOSAL
Claire J MarrierUnited KingdomAsiya Javayant NEW
Ashley N MarrierBrazilAnna Fali UNQUALIFIED
Leon H CaldareraCanadaStephen Shaw PROPOSAL
Leon D MaletArgentinaXuxue Feng NEW
Claire C SergiGermanyElwin Sharvill QUALIFIED
Ivar K DilliardGermanyElwin Sharvill NEGOTIATION
Isabel T GillianItalyBernardo Dominic PROPOSAL
Leon Z MorascaItalyAnna Fali UNQUALIFIED
Clifford P MaletItalyAsiya Javayant UNQUALIFIED
Faith D GauchoCanadaElwin Sharvill QUALIFIED
Stacey C GillianFranceIoni Bowcher NEGOTIATION
Emily D VocelkaAustraliaStephen Shaw NEW
Kadeem K IturbideAustraliaIoni Bowcher QUALIFIED
Claire J VenereCanadaIoni Bowcher QUALIFIED
Antonio Y WaycottAustraliaOnyama Limba PROPOSAL
Stacey A MarrierGermanyAsiya Javayant NEGOTIATION
Izzy F GauchoIndiaIoni Bowcher NEW
Jennifer P NickaBrazilOnyama Limba NEGOTIATION
Silvio L CaldareraUnited KingdomXuxue Feng RENEWAL
Frozen Columns
Name
Juan G Figeroa
Aika S Poquette
Maria M Nicka
Mujtaba K Ostrosky
Stacey E Bowley
Leja Z Amigon
Kadeem N Maclead
Mujtaba L Sergi
Isabel X Stenseth
Leon V Caldarera
Morrow V Royster
Rodrigues B Amigon
Octavia N Foller
Smith X Butt
Jones Y Caldarera
Kadeem I Stockham
Costa B Gillian
Julie O Wieser
Aika J Saylors
Emily L Schemmer
Clifford R Royster
Jeanfrancois Q Albares
Antonio Z Briddick
David E Albares
Francesco Z Rim
Leon G Campain
Aika Y Caldarera
Sinclair S Darakjy
Greenwood Y Chui
Stacey F Poquette
Octavia M Venere
Costa E Gillian
Jefferson U Tollner
Salvatore S Bolognia
Faith S Malet
Isabel T Rim
Kadeem U Ostrosky
Arvin Q Dilliard
Arvin G Stockham
Aruna N Albares
Kadeem G Albares
Salvatore D Ferencz
Juan S Doe
Silvio K Foller
Darci K Caldarera
Maisha E Stenseth
Silvio T Waycott
Jones B Caldarera
Octavia B Ferencz
Isabel C Rulapaugh
IdCountryDate
1000Brazil2024-04-01
1001India2024-04-19
1002Germany2024-04-16
1003India2024-04-21
1004Spain2024-04-13
1005India2024-04-21
1006Argentina2024-04-30
1007Canada2024-04-19
1008Australia2024-04-06
1009Italy2024-04-29
1010India2024-04-30
1011Japan2024-04-01
1012Argentina2024-04-12
1013India2024-04-19
1014Canada2024-04-14
1015Argentina2024-04-01
1016Australia2024-04-24
1017Argentina2024-04-12
1018United Kingdom2024-04-17
1019Argentina2024-04-06
1020Japan2024-04-01
1021Australia2024-04-17
1022Japan2024-04-09
1023Japan2024-04-29
1024Germany2024-04-29
1025Italy2024-04-10
1026Russia2024-04-10
1027Argentina2024-04-28
1028France2024-04-01
1029Canada2024-04-18
1030Argentina2024-04-16
1031Australia2024-04-15
1032Argentina2024-04-17
1033India2024-04-09
1034India2024-04-04
1035Germany2024-04-09
1036Canada2024-04-02
1037Argentina2024-04-15
1038Japan2024-04-10
1039United Kingdom2024-04-11
1040Japan2024-04-05
1041Germany2024-04-05
1042Canada2024-04-08
1043United Kingdom2024-04-01
1044Argentina2024-04-06
1045Spain2024-04-04
1046Canada2024-04-19
1047Italy2024-04-08
1048Italy2024-04-26
1049France2024-04-07

On-Demand Data

NameIdCountryDate
Aditya V Waycott1000Brazil2024-04-02
Izzy U Maclead1001Canada2024-04-17
Johnson C Malet1002Argentina2024-04-20
Munro H Malet1003Japan2024-04-22
Aruna L Caldarera1004France2024-04-04
Maria P Vocelka1005Germany2024-04-24
Jeanfrancois C Inouye1006Australia2024-04-06
Darci L Paprocki1007Italy2024-04-07
Salvatore A Rim1008Spain2024-04-23
James E Sergi1009Argentina2024-04-13
Aditya C Iturbide1010Germany2024-04-24
Ivar U Caldarera1011Argentina2024-04-27
Stacey C Kolmetz1012Brazil2024-04-27
Deepesh Z Butt1013Argentina2024-04-11
Leja N Caldarera1014Russia2024-04-20
Mujtaba L Darakjy1015Italy2024-04-18
Murillo F Bolognia1016Germany2024-04-04
Nicolas U Butt1017Italy2024-04-21
Julie O Nestle1018Germany2024-04-20
Octavia Y Inouye1019Canada2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa Z KuskoRussiaOnyama Limba NEW
Smith G GarufiFranceStephen Shaw RENEWAL
Morrow N ChuiJapanOnyama Limba UNQUALIFIED
Mujtaba P MaletItalyStephen Shaw NEGOTIATION
Wickens I StensethBrazilAmy Elsner RENEWAL
Aditya I KolmetzAustraliaAnna Fali PROPOSAL
Ricardo N RoysterIndiaIoni Bowcher UNQUALIFIED
Isabel Y GauchoCanadaOnyama Limba NEW
Kadeem N CaudyAustraliaXuxue Feng UNQUALIFIED
Emily H InouyeAustraliaOnyama Limba QUALIFIED
Kaitlin D FlosiJapanElwin Sharvill PROPOSAL
Jefferson G NickaGermanyOnyama Limba NEW
Maisha G AmigonItalyElwin Sharvill PROPOSAL
Murillo C DilliardArgentinaIoni Bowcher UNQUALIFIED
Aditya X GlickAustraliaXuxue Feng UNQUALIFIED
Kaitlin D BologniaBrazilOnyama Limba QUALIFIED
Maria C PoquetteIndiaAsiya Javayant RENEWAL
Alejandro N ShinkoIndiaIoni Bowcher RENEWAL
Cody T WhobreyArgentinaElwin Sharvill QUALIFIED
Maisha W RulapaughItalyAmy Elsner NEW
Alejandro F BologniaRussiaIvan Magalhaes UNQUALIFIED
Claire I KolmetzFranceXuxue Feng NEW
Francesco P NickaGermanyAsiya Javayant RENEWAL
Morrow G SlusarskiBrazilBernardo Dominic NEGOTIATION
Aika T GillianItalyAnna Fali NEGOTIATION
Aditya B MorascaJapanXuxue Feng NEW
Nicolas E TollnerFranceIoni Bowcher PROPOSAL
Francesco G InouyeSpainAsiya Javayant QUALIFIED
Munro Z StockhamArgentinaStephen Shaw NEW
Greenwood H RoysterGermanyAmy Elsner RENEWAL
Ivar Y OldroydGermanyOnyama Limba NEGOTIATION
Jones V MorascaRussiaStephen Shaw NEW
David P GarufiGermanyAmy Elsner QUALIFIED
Ricardo Q VocelkaFranceAmy Elsner UNQUALIFIED
Maisha K InouyeCanadaElwin Sharvill QUALIFIED
Mujtaba I TollnerSpainIvan Magalhaes PROPOSAL
Mujtaba U RulapaughUnited KingdomXuxue Feng UNQUALIFIED
James K DoeGermanyStephen Shaw UNQUALIFIED
James C RoysterItalyIoni Bowcher NEGOTIATION
Clifford G MarrierIndiaXuxue 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>