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
Octavia C TollnerItalyAsiya Javayant QUALIFIED
Salvatore I MorascaSpainStephen Shaw RENEWAL
Adams C MaletGermanyXuxue Feng NEW
Rodrigues Q VocelkaCanadaIvan Magalhaes UNQUALIFIED
Francesco O GarufiAustraliaAnna Fali NEGOTIATION
Cody E VenereArgentinaAnna Fali RENEWAL
Rodrigues R PerinCanadaBernardo Dominic NEGOTIATION
Izzy U StockhamSpainXuxue Feng NEGOTIATION
Maria P FerenczArgentinaBernardo Dominic NEW
Ricardo U ButtUnited KingdomIvan Magalhaes UNQUALIFIED
Cody B ChuiBrazilElwin Sharvill UNQUALIFIED
Alejandro W IturbideCanadaXuxue Feng RENEWAL
Leja Y SchemmerCanadaElwin Sharvill PROPOSAL
Leon R InouyeItalyElwin Sharvill PROPOSAL
Emily E WaycottSpainOnyama Limba NEGOTIATION
Aika I FollerRussiaElwin Sharvill NEW
Clifford R KuskoSpainBernardo Dominic QUALIFIED
Ivar Q OstroskyAustraliaOnyama Limba UNQUALIFIED
Jeanfrancois M MarrierUnited KingdomAmy Elsner QUALIFIED
Silvio I DoeIndiaElwin Sharvill QUALIFIED
Morrow K CaldareraRussiaAmy Elsner NEW
Nicolas L RulapaughSpainXuxue Feng UNQUALIFIED
Munro Y OldroydSpainIoni Bowcher RENEWAL
Octavia Y SchemmerRussiaOnyama Limba RENEWAL
David P MacleadCanadaOnyama Limba UNQUALIFIED
Isabel A GauchoCanadaElwin Sharvill PROPOSAL
Deepesh I MarrierBrazilElwin Sharvill QUALIFIED
Kaitlin N RutaUnited KingdomXuxue Feng PROPOSAL
Salvatore T NestleGermanyElwin Sharvill PROPOSAL
David E GarufiUnited KingdomBernardo Dominic QUALIFIED
Claire V SaylorsBrazilOnyama Limba QUALIFIED
Claire S ChuiSpainIvan Magalhaes NEW
Morrow J CaudyBrazilXuxue Feng PROPOSAL
Claire V PaprockiSpainXuxue Feng PROPOSAL
Juan B OstroskyFranceElwin Sharvill PROPOSAL
Faith Y IturbideFranceElwin Sharvill QUALIFIED
Mayumi L OstroskyBrazilStephen Shaw RENEWAL
Isabel P MorascaBrazilIvan Magalhaes PROPOSAL
Stacey U AmigonBrazilXuxue Feng NEGOTIATION
Mujtaba D VenereFranceElwin Sharvill RENEWAL
Greenwood Z SaylorsJapanStephen Shaw NEGOTIATION
Wickens C KuskoIndiaBernardo Dominic NEGOTIATION
Munro Q GauchoGermanyOnyama Limba NEW
Leon O GauchoJapanOnyama Limba QUALIFIED
Deepesh R SlusarskiJapanStephen Shaw NEW
Maisha V WhobreyRussiaXuxue Feng NEW
Kaitlin F InouyeGermanyStephen Shaw NEGOTIATION
Adams G DilliardSpainAsiya Javayant QUALIFIED
Silvio Q BowleyGermanyXuxue Feng PROPOSAL
Isabel M VenereIndiaOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Antonio I PerinIndiaBernardo Dominic UNQUALIFIED
Sinclair E FlosiItalyIoni Bowcher UNQUALIFIED
Mayumi Y BologniaIndiaXuxue Feng UNQUALIFIED
Octavia Z DilliardIndiaAnna Fali NEGOTIATION
Clifford Z OstroskySpainAnna Fali PROPOSAL
Chavez T MorascaUnited KingdomStephen Shaw UNQUALIFIED
Antonio L NickaBrazilIoni Bowcher RENEWAL
David T FerenczJapanXuxue Feng NEGOTIATION
Darci O GarufiSpainStephen Shaw QUALIFIED
Misaki W MacleadIndiaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues D ButtUnited Kingdom2024-04-09Rangoni Of Florence NEGOTIATION69Xuxue Feng
1001Jennifer Z IturbideBrazil2024-04-04Benton, John B Jr NEW7Amy Elsner
1002Aika X WieserCanada2024-04-09Buckley Miller Wright RENEWAL53Bernardo Dominic
1003Faith X DilliardSpain2024-04-12Truhlar And Truhlar Attys NEGOTIATION91Anna Fali
1004Wickens H SaylorsSpain2024-04-02Feltz Printing Service UNQUALIFIED13Anna Fali
1005Aika J VocelkaUnited Kingdom2024-04-22Commercial Press PROPOSAL96Bernardo Dominic
1006Stacey M ChuiAustralia2024-04-11King, Christopher A Esq QUALIFIED53Stephen Shaw
1007Maria G PoquetteJapan2024-03-31Chemel, James L Cpa NEGOTIATION78Bernardo Dominic
1008Ivar I FollerBrazil2024-04-11Feiner Bros QUALIFIED89Ivan Magalhaes
1009Julie Z OldroydBrazil2024-04-21King, Christopher A Esq NEGOTIATION36Anna Fali
1010Greenwood E VocelkaItaly2024-04-12Printing Dimensions NEGOTIATION49Amy Elsner
1011Deepesh U ButtAustralia2024-04-11Dorl, James J Esq PROPOSAL72Ivan Magalhaes
1012Morrow J FerenczRussia2024-04-17King, Christopher A Esq QUALIFIED82Ioni Bowcher
1013Darci Z MarrierCanada2024-04-27Chapman, Ross E Esq RENEWAL0Elwin Sharvill
1014Izzy X PaprockiSpain2024-04-22Printing Dimensions NEGOTIATION35Anna Fali
1015Mayumi K CaudyBrazil2024-04-05Truhlar And Truhlar Attys RENEWAL52Bernardo Dominic
1016Izzy E VenereItaly2024-04-26Dorl, James J Esq RENEWAL0Elwin Sharvill
1017Darci A DoeGermany2024-04-10Rousseaux, Michael Esq NEGOTIATION64Stephen Shaw
1018Aruna T BowleyJapan2024-04-04Chanay, Jeffrey A Esq QUALIFIED67Onyama Limba
1019Jefferson K KolmetzFrance2024-04-17Chemel, James L Cpa PROPOSAL56Anna Fali
1020Darci U KolmetzCanada2024-04-05Chapman, Ross E Esq RENEWAL2Xuxue Feng
1021Arvin T DarakjySpain2024-04-16Chanay, Jeffrey A Esq NEW79Asiya Javayant
1022Tony P PoquetteIndia2024-04-13Dorl, James J Esq RENEWAL94Elwin Sharvill
1023Juan G SchemmerIndia2024-04-08Rousseaux, Michael Esq NEGOTIATION23Asiya Javayant
1024James K AlbaresBrazil2024-04-15Benton, John B Jr RENEWAL23Ivan Magalhaes
1025James O GauchoAustralia2024-04-21Morlong Associates RENEWAL51Ivan Magalhaes
1026Ricardo T ShinkoUnited Kingdom2024-04-08Dorl, James J Esq RENEWAL89Bernardo Dominic
1027Alejandro A CampainSpain2024-03-31Morlong Associates UNQUALIFIED62Xuxue Feng
1028Morrow W RoysterItaly2024-04-13Truhlar And Truhlar Attys UNQUALIFIED10Elwin Sharvill
1029Cody U PoquetteFrance2024-04-25Commercial Press UNQUALIFIED66Ivan Magalhaes
1030Wickens F DoeGermany2024-04-16Rangoni Of Florence UNQUALIFIED36Asiya Javayant
1031Chavez H CampainRussia2024-04-08Morlong Associates NEW61Elwin Sharvill
1032Ivar F VocelkaCanada2024-04-15Rangoni Of Florence NEW46Onyama Limba
1033Kadeem U DarakjyItaly2024-04-20King, Christopher A Esq PROPOSAL97Stephen Shaw
1034Leon R CaudyJapan2024-04-11Dorl, James J Esq RENEWAL50Ioni Bowcher
1035Misaki T AmigonBrazil2024-04-07Rangoni Of Florence PROPOSAL69Ivan Magalhaes
1036Maisha M FigeroaItaly2024-03-31Benton, John B Jr NEGOTIATION45Amy Elsner
1037Munro Q CaldareraArgentina2024-04-09Benton, John B Jr PROPOSAL87Onyama Limba
1038Jeanfrancois L StensethIndia2024-04-24Feltz Printing Service PROPOSAL82Stephen Shaw
1039David Y OldroydJapan2024-04-04Feltz Printing Service NEGOTIATION81Elwin Sharvill
1040Munro D SchemmerGermany2024-04-23Rangoni Of Florence NEGOTIATION40Xuxue Feng
1041Tony J OldroydSpain2024-04-10Buckley Miller Wright NEW3Asiya Javayant
1042Jeanfrancois Y FigeroaGermany2024-04-02Printing Dimensions UNQUALIFIED31Stephen Shaw
1043Maisha A GillianGermany2024-04-06Chemel, James L Cpa NEW91Xuxue Feng
1044David H SchemmerCanada2024-04-16Buckley Miller Wright PROPOSAL99Amy Elsner
1045Kaitlin D GlickArgentina2024-04-17King, Christopher A Esq RENEWAL85Elwin Sharvill
1046Aditya S BologniaSpain2024-04-23Feiner Bros NEGOTIATION86Stephen Shaw
1047Salvatore X TollnerJapan2024-03-31Morlong Associates NEW96Ioni Bowcher
1048Jones N AmigonBrazil2024-03-29Rangoni Of Florence RENEWAL72Xuxue Feng
1049Tony T FlosiIndia2024-04-25Truhlar And Truhlar Attys PROPOSAL85Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Alejandro O RimSpainStephen Shaw PROPOSAL
Emily Q MaletBrazilElwin Sharvill UNQUALIFIED
Adams R CaldareraAustraliaAmy Elsner QUALIFIED
Kaitlin K MacleadCanadaIoni Bowcher PROPOSAL
Antonio Y WieserRussiaXuxue Feng RENEWAL
Jones N FollerJapanBernardo Dominic QUALIFIED
Stacey K SchemmerAustraliaIoni Bowcher PROPOSAL
Ricardo B BowleyCanadaElwin Sharvill PROPOSAL
Ashley B RimAustraliaAmy Elsner RENEWAL
Smith K AlbaresRussiaIoni Bowcher UNQUALIFIED
Rodrigues A PoquetteGermanyElwin Sharvill UNQUALIFIED
Aika Z GlickSpainXuxue Feng QUALIFIED
Faith J PerinGermanyStephen Shaw QUALIFIED
Jennifer W MaletAustraliaStephen Shaw UNQUALIFIED
Costa Q AlbaresAustraliaIoni Bowcher QUALIFIED
Deepesh Z InouyeCanadaOnyama Limba NEGOTIATION
Munro N FollerFranceAnna Fali QUALIFIED
Munro R CaldareraRussiaElwin Sharvill UNQUALIFIED
Salvatore P SaylorsCanadaElwin Sharvill UNQUALIFIED
Kaitlin H FigeroaItalyOnyama Limba QUALIFIED
Izzy D ChuiSpainBernardo Dominic PROPOSAL
Aditya M DarakjyCanadaStephen Shaw RENEWAL
Cody I TollnerUnited KingdomAnna Fali NEW
Maisha N VocelkaItalyAmy Elsner PROPOSAL
Kadeem G AlbaresGermanyAnna Fali NEGOTIATION
Darci I SergiBrazilStephen Shaw NEW
Julie M FigeroaCanadaAsiya Javayant RENEWAL
Izzy M VocelkaGermanyAnna Fali PROPOSAL
Isabel S TollnerAustraliaAsiya Javayant NEGOTIATION
Darci M IturbideUnited KingdomAmy Elsner RENEWAL
Salvatore T NickaAustraliaIoni Bowcher NEW
Aditya W DarakjyCanadaIoni Bowcher RENEWAL
Faith L KuskoArgentinaIvan Magalhaes PROPOSAL
Johnson M DarakjyFranceIoni Bowcher UNQUALIFIED
Leon C SchemmerJapanAnna Fali PROPOSAL
Aruna A MaletJapanIvan Magalhaes NEGOTIATION
Leon I AlbaresItalyAnna Fali NEW
Aruna A CaldareraIndiaIvan Magalhaes PROPOSAL
Claire O DarakjyArgentinaAnna Fali UNQUALIFIED
Arvin P FerenczIndiaBernardo Dominic NEGOTIATION
Faith J MacleadJapanAnna Fali RENEWAL
Jennifer M ShinkoRussiaStephen Shaw PROPOSAL
Maisha Z GarufiSpainAsiya Javayant RENEWAL
Wickens O AlbaresGermanyStephen Shaw QUALIFIED
Jeanfrancois V MorascaRussiaBernardo Dominic RENEWAL
Mujtaba T BowleyJapanIvan Magalhaes RENEWAL
Maisha R PerinBrazilAnna Fali UNQUALIFIED
Kadeem V TollnerRussiaIvan Magalhaes PROPOSAL
Julie E PaprockiRussiaStephen Shaw PROPOSAL
Jeanfrancois Y NickaJapanXuxue Feng RENEWAL
Frozen Columns
Name
Silvio C Whobrey
Smith F Poquette
Wickens F Butt
Misaki M Oldroyd
Chavez L Maclead
Kadeem O Chui
Emily R Foller
Sinclair F Ferencz
Jennifer I Venere
Leon J Stenseth
Claire E Nestle
David Y Stenseth
Nicolas H Wieser
Ashley I Campain
Francesco K Tollner
Jones Z Caldarera
David L Shinko
David D Briddick
Darci T Gillian
Kaitlin Z Bolognia
Kaitlin R Malet
Clifford N Darakjy
Sinclair K Figeroa
Nicolas U Kolmetz
Mujtaba N Ferencz
Wickens N Tollner
Wickens D Wieser
Alejandro H Albares
Emily Y Foller
Antonio J Caudy
Emily T Figeroa
Aditya I Shinko
Tony J Ferencz
Rodrigues X Glick
Jennifer W Caudy
Aditya H Gaucho
Alejandro G Malet
Tony F Saylors
Jones W Dilliard
Silvio E Kusko
Jefferson M Inouye
Misaki R Ostrosky
Silvio I Kusko
Costa N Tollner
Maisha H Malet
Arvin Q Venere
Juan W Kusko
Deepesh S Briddick
Ashley T Darakjy
Jennifer R Whobrey
IdCountryDate
1000Australia2024-04-11
1001Italy2024-04-05
1002India2024-04-04
1003United Kingdom2024-04-24
1004Germany2024-04-14
1005United Kingdom2024-04-15
1006Canada2024-04-18
1007Australia2024-04-26
1008Australia2024-04-25
1009Germany2024-03-31
1010United Kingdom2024-04-05
1011Canada2024-04-08
1012India2024-04-02
1013Germany2024-04-15
1014United Kingdom2024-04-07
1015Argentina2024-04-05
1016Russia2024-04-21
1017Russia2024-04-04
1018Australia2024-04-11
1019Spain2024-03-31
1020Argentina2024-04-05
1021United Kingdom2024-03-31
1022Germany2024-04-07
1023Spain2024-04-23
1024Japan2024-04-15
1025Australia2024-04-18
1026Japan2024-04-18
1027Canada2024-04-26
1028Brazil2024-04-06
1029Germany2024-04-25
1030France2024-04-21
1031United Kingdom2024-04-21
1032France2024-04-26
1033United Kingdom2024-04-01
1034Argentina2024-04-14
1035Japan2024-04-08
1036France2024-04-27
1037United Kingdom2024-04-16
1038Canada2024-04-19
1039Japan2024-04-24
1040Spain2024-04-19
1041Japan2024-04-10
1042United Kingdom2024-04-18
1043Argentina2024-04-06
1044Germany2024-04-25
1045Brazil2024-04-16
1046Australia2024-04-17
1047Russia2024-04-02
1048France2024-04-11
1049France2024-04-08

On-Demand Data

NameIdCountryDate
Adams K Flosi1000Italy2024-04-05
Faith Z Briddick1001Germany2024-04-12
Nicolas D Tollner1002Germany2024-04-04
Leon W Stenseth1003France2024-04-21
Jennifer E Darakjy1004Italy2024-04-15
Isabel A Iturbide1005France2024-04-19
Darci O Bolognia1006Italy2024-04-12
James D Paprocki1007Russia2024-04-03
Leon C Maclead1008India2024-04-09
Greenwood G Chui1009India2024-04-01
Deepesh Q Malet1010France2024-04-26
Nicolas Z Perin1011Argentina2024-04-07
Arvin G Inouye1012Australia2024-04-20
Ashley L Ostrosky1013Russia2024-04-06
Izzy H Vocelka1014Russia2024-04-21
Greenwood G Foller1015France2024-04-02
Sinclair D Stockham1016Japan2024-04-21
Mujtaba P Stenseth1017Russia2024-04-01
Izzy H Bolognia1018Spain2024-04-26
Alejandro W Stenseth1019Italy2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan J TollnerGermanyIoni Bowcher NEGOTIATION
Leja Q CampainArgentinaAnna Fali UNQUALIFIED
Jefferson M SaylorsAustraliaIoni Bowcher QUALIFIED
Cody D StensethBrazilIoni Bowcher RENEWAL
Darci S RulapaughIndiaStephen Shaw QUALIFIED
Misaki O FerenczGermanyIoni Bowcher PROPOSAL
Kaitlin B ChuiGermanyStephen Shaw QUALIFIED
James B RoysterBrazilStephen Shaw RENEWAL
Aditya W DarakjyAustraliaElwin Sharvill PROPOSAL
Faith S TollnerArgentinaAmy Elsner NEW
Ashley P AlbaresItalyElwin Sharvill NEGOTIATION
Isabel B CampainAustraliaOnyama Limba QUALIFIED
Smith X GillianUnited KingdomXuxue Feng PROPOSAL
Stacey F FlosiGermanyIvan Magalhaes PROPOSAL
Francesco W OstroskyJapanAnna Fali PROPOSAL
Clifford K AmigonBrazilBernardo Dominic NEW
Izzy U MaletUnited KingdomElwin Sharvill RENEWAL
Julie M RoysterItalyElwin Sharvill NEGOTIATION
Jefferson I GillianSpainIoni Bowcher QUALIFIED
Francesco A WhobreyJapanAnna Fali NEGOTIATION
Antonio M BologniaGermanyXuxue Feng QUALIFIED
Tony S DarakjyFranceIvan Magalhaes QUALIFIED
Murillo B OldroydRussiaAsiya Javayant PROPOSAL
Aditya B VocelkaJapanBernardo Dominic NEW
Kadeem S GarufiRussiaIoni Bowcher NEGOTIATION
Francesco T CaudyArgentinaIoni Bowcher NEW
Salvatore T CampainItalyXuxue Feng UNQUALIFIED
Murillo Q PoquetteSpainIoni Bowcher QUALIFIED
Mayumi A GillianCanadaAnna Fali RENEWAL
Octavia M MarrierIndiaAmy Elsner QUALIFIED
James Z NickaGermanyIvan Magalhaes QUALIFIED
Octavia P FollerArgentinaIoni Bowcher QUALIFIED
Octavia N AmigonAustraliaAmy Elsner NEGOTIATION
David U KuskoGermanyElwin Sharvill PROPOSAL
Jefferson N VocelkaRussiaElwin Sharvill UNQUALIFIED
Rodrigues Q IturbideItalyAsiya Javayant NEW
Jennifer I GillianJapanXuxue Feng QUALIFIED
Silvio X StensethRussiaBernardo Dominic NEW
Misaki G SchemmerArgentinaIoni Bowcher RENEWAL
Salvatore F MarrierAustraliaBernardo Dominic UNQUALIFIED

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