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 H InouyeSpainOnyama Limba PROPOSAL
Darci P ShinkoRussiaStephen Shaw UNQUALIFIED
James E InouyeCanadaAnna Fali NEGOTIATION
Clifford X BowleyCanadaAsiya Javayant UNQUALIFIED
Kaitlin A CampainRussiaOnyama Limba RENEWAL
Smith V VenereRussiaOnyama Limba RENEWAL
Jennifer E ChuiCanadaAnna Fali NEGOTIATION
Smith E BriddickAustraliaXuxue Feng RENEWAL
Silvio U MaletArgentinaAnna Fali NEGOTIATION
Maisha T NickaSpainAsiya Javayant NEGOTIATION
Leon X RimItalyIvan Magalhaes PROPOSAL
Clifford V InouyeRussiaAsiya Javayant PROPOSAL
Munro T SaylorsCanadaAsiya Javayant QUALIFIED
Octavia E VenereSpainAnna Fali NEGOTIATION
Johnson H CaudySpainXuxue Feng RENEWAL
Mayumi I RoysterBrazilAnna Fali NEGOTIATION
Clifford V IturbideBrazilIvan Magalhaes QUALIFIED
Salvatore O SaylorsUnited KingdomXuxue Feng QUALIFIED
James K MarrierFranceXuxue Feng NEGOTIATION
Jennifer J OldroydArgentinaElwin Sharvill UNQUALIFIED
Ricardo O CaldareraAustraliaIoni Bowcher PROPOSAL
Rodrigues J MorascaBrazilStephen Shaw PROPOSAL
Wickens C StensethArgentinaElwin Sharvill NEGOTIATION
Wickens I PaprockiCanadaIoni Bowcher UNQUALIFIED
Silvio Z PoquetteRussiaOnyama Limba PROPOSAL
Costa O MaletIndiaAnna Fali NEW
Aika R RimIndiaBernardo Dominic QUALIFIED
Nicolas Z CaudyFranceStephen Shaw UNQUALIFIED
Aditya B OldroydRussiaElwin Sharvill QUALIFIED
Antonio U SchemmerCanadaStephen Shaw RENEWAL
Cody A TollnerUnited KingdomAmy Elsner UNQUALIFIED
Clifford W BowleyCanadaIvan Magalhaes UNQUALIFIED
Octavia S RutaIndiaAsiya Javayant NEW
Wickens A CampainIndiaAmy Elsner NEGOTIATION
Jefferson M MarrierAustraliaStephen Shaw NEW
Morrow F GarufiItalyXuxue Feng PROPOSAL
Darci M ButtFranceOnyama Limba QUALIFIED
Alejandro E SlusarskiFranceBernardo Dominic QUALIFIED
Rodrigues U DarakjyRussiaOnyama Limba UNQUALIFIED
Munro W CaudyCanadaAmy Elsner UNQUALIFIED
Nicolas U RoysterItalyStephen Shaw NEW
Greenwood T SaylorsIndiaStephen Shaw PROPOSAL
Wickens C CaldareraArgentinaStephen Shaw UNQUALIFIED
Rodrigues B SaylorsCanadaAnna Fali NEW
Smith D KuskoFranceAmy Elsner RENEWAL
Maria C ShinkoItalyStephen Shaw NEGOTIATION
Murillo V VenereAustraliaAnna Fali NEW
Leon Y RulapaughFranceElwin Sharvill NEW
Smith Q BowleyCanadaStephen Shaw NEW
Mayumi Q ChuiJapanXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Emily X CaudyJapanOnyama Limba NEW
Ashley D GarufiBrazilBernardo Dominic RENEWAL
Isabel W RimAustraliaAnna Fali RENEWAL
Faith S KolmetzUnited KingdomStephen Shaw UNQUALIFIED
Izzy K SergiFranceAnna Fali PROPOSAL
Octavia Q FlosiGermanyAsiya Javayant QUALIFIED
Kadeem S BowleyBrazilStephen Shaw QUALIFIED
Smith U WhobreyCanadaIvan Magalhaes NEGOTIATION
Leja A StockhamRussiaIoni Bowcher QUALIFIED
Kaitlin G AlbaresFranceBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody L WhobreyItaly2024-04-12Feltz Printing Service UNQUALIFIED26Amy Elsner
1001Wickens E NestleBrazil2024-04-12Printing Dimensions NEGOTIATION81Elwin Sharvill
1002Chavez B MaletJapan2024-03-30Benton, John B Jr QUALIFIED64Ioni Bowcher
1003Maria S SaylorsSpain2024-04-12Rousseaux, Michael Esq PROPOSAL25Ioni Bowcher
1004Julie E NickaGermany2024-04-04Buckley Miller Wright NEW32Onyama Limba
1005Chavez Z RimAustralia2024-04-02Benton, John B Jr RENEWAL62Xuxue Feng
1006Ricardo V SlusarskiJapan2024-04-19Printing Dimensions RENEWAL13Elwin Sharvill
1007Faith X PaprockiArgentina2024-03-27Morlong Associates UNQUALIFIED64Elwin Sharvill
1008Leon R CaldareraJapan2024-04-12Chanay, Jeffrey A Esq PROPOSAL26Ivan Magalhaes
1009Aruna X RimBrazil2024-04-19Dorl, James J Esq PROPOSAL49Ioni Bowcher
1010Leja P DoeItaly2024-04-24Rangoni Of Florence NEGOTIATION42Ivan Magalhaes
1011Mujtaba G AlbaresBrazil2024-03-31Chapman, Ross E Esq PROPOSAL86Anna Fali
1012Antonio N FlosiGermany2024-04-10Chapman, Ross E Esq RENEWAL92Onyama Limba
1013Sinclair U OldroydItaly2024-03-28Chapman, Ross E Esq PROPOSAL32Ioni Bowcher
1014Jones C DoeAustralia2024-04-01Commercial Press QUALIFIED28Amy Elsner
1015James U VocelkaCanada2024-04-05Dorl, James J Esq PROPOSAL66Ioni Bowcher
1016Morrow W MacleadRussia2024-04-06Benton, John B Jr QUALIFIED65Amy Elsner
1017Darci F RulapaughItaly2024-04-20Printing Dimensions NEW5Ivan Magalhaes
1018Sinclair K NickaBrazil2024-04-23Chemel, James L Cpa NEW51Stephen Shaw
1019Juan R OldroydRussia2024-04-20King, Christopher A Esq PROPOSAL7Bernardo Dominic
1020Kaitlin D DoeBrazil2024-04-24Chapman, Ross E Esq NEGOTIATION31Ivan Magalhaes
1021Murillo Y BriddickFrance2024-04-19Buckley Miller Wright NEW50Bernardo Dominic
1022Jennifer O StensethRussia2024-04-03Feltz Printing Service NEW94Elwin Sharvill
1023Chavez E InouyeBrazil2024-04-22Chapman, Ross E Esq NEGOTIATION42Ivan Magalhaes
1024Smith T IturbideJapan2024-04-18Printing Dimensions QUALIFIED28Asiya Javayant
1025Kadeem H StensethItaly2024-04-23Printing Dimensions UNQUALIFIED95Asiya Javayant
1026James V NestleSpain2024-03-30Feltz Printing Service QUALIFIED36Elwin Sharvill
1027Maria H KolmetzSpain2024-04-01Chemel, James L Cpa PROPOSAL36Onyama Limba
1028Antonio P CampainItaly2024-03-30Truhlar And Truhlar Attys NEW18Amy Elsner
1029Mujtaba W CampainArgentina2024-04-22Commercial Press QUALIFIED5Xuxue Feng
1030Jefferson G NestleBrazil2024-04-02Rangoni Of Florence RENEWAL79Asiya Javayant
1031Ricardo V KolmetzUnited Kingdom2024-04-21Commercial Press NEGOTIATION49Elwin Sharvill
1032Misaki M SergiGermany2024-04-13Truhlar And Truhlar Attys NEGOTIATION94Anna Fali
1033Darci A FigeroaCanada2024-04-22King, Christopher A Esq RENEWAL64Ioni Bowcher
1034Maisha Q AlbaresIndia2024-04-04Morlong Associates NEW54Amy Elsner
1035Jeanfrancois Q SaylorsJapan2024-04-23Truhlar And Truhlar Attys NEGOTIATION85Onyama Limba
1036Tony M StockhamBrazil2024-04-05Morlong Associates NEW72Ivan Magalhaes
1037Morrow X RutaRussia2024-04-24Truhlar And Truhlar Attys PROPOSAL9Onyama Limba
1038Greenwood M RutaIndia2024-04-19Feltz Printing Service QUALIFIED20Asiya Javayant
1039Cody F PoquetteJapan2024-04-05Benton, John B Jr NEGOTIATION96Bernardo Dominic
1040Isabel I DilliardArgentina2024-03-28Chemel, James L Cpa NEW55Xuxue Feng
1041Mujtaba O FlosiBrazil2024-04-01Truhlar And Truhlar Attys NEGOTIATION43Amy Elsner
1042Salvatore O SaylorsBrazil2024-04-05Rousseaux, Michael Esq PROPOSAL64Stephen Shaw
1043James J GauchoAustralia2024-03-31Benton, John B Jr UNQUALIFIED43Onyama Limba
1044Isabel M GarufiCanada2024-03-27Chapman, Ross E Esq PROPOSAL37Amy Elsner
1045Greenwood I GlickFrance2024-04-04Truhlar And Truhlar Attys PROPOSAL84Amy Elsner
1046Salvatore P DarakjyAustralia2024-04-17Chanay, Jeffrey A Esq QUALIFIED35Bernardo Dominic
1047Francesco N NickaRussia2024-03-31Commercial Press QUALIFIED75Elwin Sharvill
1048Costa V ChuiSpain2024-04-04Rangoni Of Florence PROPOSAL22Ivan Magalhaes
1049Aika C StockhamArgentina2024-04-11Chemel, James L Cpa RENEWAL35Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Maisha V CaldareraCanadaOnyama Limba PROPOSAL
Jones E GlickFranceAmy Elsner NEGOTIATION
Mujtaba J FollerFranceAnna Fali QUALIFIED
Ashley D AmigonCanadaIoni Bowcher QUALIFIED
Ashley E DilliardJapanElwin Sharvill UNQUALIFIED
Aruna G CaldareraArgentinaElwin Sharvill QUALIFIED
Misaki U InouyeFranceStephen Shaw PROPOSAL
Sinclair F DilliardUnited KingdomIvan Magalhaes NEGOTIATION
Antonio N NestleGermanyStephen Shaw NEW
Deepesh D TollnerArgentinaElwin Sharvill RENEWAL
Aditya Z DoeGermanyBernardo Dominic RENEWAL
Kadeem U IturbideUnited KingdomIvan Magalhaes NEGOTIATION
Greenwood G SlusarskiJapanBernardo Dominic QUALIFIED
Jennifer X FigeroaIndiaOnyama Limba NEGOTIATION
Ricardo N StensethFranceAmy Elsner QUALIFIED
Antonio R PaprockiAustraliaBernardo Dominic QUALIFIED
Ricardo E DilliardAustraliaXuxue Feng NEW
Salvatore J SlusarskiBrazilAmy Elsner QUALIFIED
Kaitlin L CampainGermanyAnna Fali QUALIFIED
Mayumi I WhobreyItalyXuxue Feng RENEWAL
Nicolas M ChuiIndiaBernardo Dominic QUALIFIED
Mayumi J SergiJapanAnna Fali PROPOSAL
Murillo T MorascaGermanyElwin Sharvill PROPOSAL
Stacey X GlickUnited KingdomAsiya Javayant PROPOSAL
Ivar M RutaSpainBernardo Dominic RENEWAL
Maria E CaldareraCanadaAsiya Javayant NEW
Alejandro N VenereJapanIoni Bowcher NEW
James K WhobreyItalyStephen Shaw UNQUALIFIED
Izzy H KuskoCanadaElwin Sharvill PROPOSAL
Stacey F ShinkoJapanElwin Sharvill PROPOSAL
Izzy N MaletUnited KingdomAmy Elsner QUALIFIED
Jennifer D MacleadAustraliaAmy Elsner NEW
Misaki R RutaArgentinaAmy Elsner QUALIFIED
Adams I WieserItalyIoni Bowcher NEGOTIATION
Maria J CaudyItalyAsiya Javayant UNQUALIFIED
Jennifer R MacleadAustraliaAmy Elsner RENEWAL
Mayumi P SlusarskiBrazilOnyama Limba RENEWAL
Kadeem U FollerItalyIoni Bowcher QUALIFIED
Jones Q StensethBrazilAmy Elsner QUALIFIED
Alejandro T SaylorsBrazilAsiya Javayant PROPOSAL
Izzy G MarrierUnited KingdomAmy Elsner UNQUALIFIED
Stacey M DarakjyAustraliaIvan Magalhaes NEGOTIATION
Maisha D StockhamCanadaAmy Elsner NEW
Julie F WhobreyItalyAmy Elsner PROPOSAL
Rodrigues M GarufiIndiaStephen Shaw PROPOSAL
Mayumi T VocelkaUnited KingdomElwin Sharvill NEGOTIATION
Jeanfrancois W BriddickFranceIvan Magalhaes UNQUALIFIED
Wickens M WieserArgentinaBernardo Dominic NEGOTIATION
Faith K CaudyUnited KingdomOnyama Limba UNQUALIFIED
Morrow U WaycottFranceAnna Fali NEGOTIATION
Frozen Columns
Name
James D Rulapaugh
Jeanfrancois H Caldarera
Smith S Caldarera
Izzy J Butt
Aika G Rim
Johnson B Ruta
Kaitlin C Butt
Leon P Perin
Munro L Shinko
Chavez T Kusko
Ricardo B Saylors
David J Slusarski
Francesco D Kolmetz
Stacey B Venere
Alejandro K Gaucho
Jennifer J Caudy
Arvin H Briddick
Alejandro Z Glick
Wickens D Bolognia
Sinclair G Slusarski
Stacey T Sergi
Nicolas A Rim
Alejandro D Bolognia
Nicolas G Rulapaugh
Arvin R Nicka
Jennifer W Royster
Clifford B Maclead
Mujtaba F Garufi
Ashley D Poquette
Silvio I Chui
Emily X Vocelka
Leja N Iturbide
Julie L Nicka
Johnson M Tollner
Julie T Rim
James W Wieser
Rodrigues C Shinko
Jeanfrancois T Venere
Ashley H Foller
Aika V Venere
Greenwood Y Bolognia
Jefferson R Ferencz
Tony X Chui
Mujtaba C Darakjy
Antonio I Figeroa
Costa G Iturbide
Nicolas I Rim
Rodrigues Y Caudy
Mujtaba Z Royster
Tony P Marrier
IdCountryDate
1000Japan2024-04-08
1001Italy2024-04-01
1002France2024-04-04
1003Germany2024-04-22
1004Japan2024-04-24
1005Australia2024-03-26
1006India2024-04-08
1007Argentina2024-04-07
1008Germany2024-03-29
1009Brazil2024-04-03
1010Russia2024-04-07
1011Australia2024-04-08
1012India2024-03-29
1013Japan2024-03-29
1014Spain2024-03-30
1015Japan2024-04-05
1016Brazil2024-03-26
1017Germany2024-04-02
1018United Kingdom2024-04-19
1019Japan2024-03-26
1020Italy2024-03-28
1021Argentina2024-03-31
1022Japan2024-04-13
1023Canada2024-04-02
1024Italy2024-04-24
1025India2024-04-17
1026Brazil2024-03-29
1027Canada2024-04-16
1028Italy2024-03-26
1029Australia2024-04-18
1030Germany2024-04-16
1031United Kingdom2024-04-17
1032Argentina2024-04-06
1033Japan2024-04-24
1034France2024-04-02
1035United Kingdom2024-04-17
1036Brazil2024-04-02
1037Japan2024-04-15
1038France2024-03-31
1039Australia2024-04-03
1040Japan2024-04-22
1041Australia2024-03-30
1042Canada2024-03-26
1043Italy2024-04-17
1044Russia2024-04-24
1045Spain2024-04-14
1046Spain2024-04-09
1047Brazil2024-04-09
1048Argentina2024-03-28
1049Canada2024-03-29

On-Demand Data

NameIdCountryDate
Smith C Caldarera1000Canada2024-04-05
Mayumi X Amigon1001United Kingdom2024-04-20
Ivar G Darakjy1002Spain2024-03-27
Morrow K Darakjy1003Brazil2024-04-17
Claire N Bowley1004Canada2024-04-22
Aika V Nicka1005Spain2024-03-31
Tony E Marrier1006India2024-04-15
Salvatore P Sergi1007Brazil2024-03-29
Darci E Slusarski1008France2024-04-09
Murillo J Poquette1009Argentina2024-04-17
Ricardo C Perin1010Canada2024-04-02
Kadeem B Saylors1011Canada2024-04-06
Francesco W Waycott1012India2024-03-26
Silvio U Albares1013Russia2024-04-09
Misaki B Dilliard1014Canada2024-04-07
Morrow B Morasca1015India2024-04-13
Greenwood S Waycott1016Italy2024-04-22
Emily Y Caudy1017Argentina2024-03-29
Jeanfrancois Y Gaucho1018Australia2024-04-04
Costa C Royster1019France2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood K KuskoJapanAnna Fali PROPOSAL
Izzy S KuskoArgentinaAsiya Javayant UNQUALIFIED
Alejandro W RulapaughCanadaAnna Fali UNQUALIFIED
David X SchemmerUnited KingdomAsiya Javayant NEW
Maisha S AlbaresRussiaIoni Bowcher NEGOTIATION
Rodrigues D KolmetzJapanOnyama Limba RENEWAL
Chavez Q PaprockiAustraliaAsiya Javayant RENEWAL
Sinclair Q GillianFranceAmy Elsner RENEWAL
Faith W SlusarskiGermanyBernardo Dominic RENEWAL
Murillo W GillianIndiaIoni Bowcher UNQUALIFIED
Leon P KuskoFranceIvan Magalhaes QUALIFIED
Nicolas A SaylorsBrazilBernardo Dominic PROPOSAL
Maria Q PoquetteItalyXuxue Feng NEGOTIATION
Leja Q WhobreyJapanElwin Sharvill NEGOTIATION
Cody E ButtItalyXuxue Feng UNQUALIFIED
Smith U FerenczBrazilBernardo Dominic NEGOTIATION
Rodrigues V StockhamCanadaBernardo Dominic RENEWAL
Clifford U RimJapanXuxue Feng RENEWAL
Murillo S DilliardRussiaIvan Magalhaes PROPOSAL
Aditya O GarufiJapanStephen Shaw UNQUALIFIED
Murillo S StensethCanadaAnna Fali UNQUALIFIED
Darci W AlbaresUnited KingdomAsiya Javayant RENEWAL
Misaki T RulapaughItalyXuxue Feng PROPOSAL
Maisha M BologniaUnited KingdomAmy Elsner NEGOTIATION
Greenwood I RulapaughAustraliaIoni Bowcher QUALIFIED
Jeanfrancois P WhobreyItalyAsiya Javayant NEGOTIATION
Morrow A NestleJapanBernardo Dominic UNQUALIFIED
Silvio Q BowleyBrazilAsiya Javayant RENEWAL
Leja K SaylorsGermanyIvan Magalhaes PROPOSAL
Leja V WieserGermanyOnyama Limba QUALIFIED
Tony H GlickFranceIoni Bowcher NEW
Jennifer R VocelkaUnited KingdomAmy Elsner QUALIFIED
Deepesh D VenereFranceStephen Shaw NEW
Wickens T WieserFranceOnyama Limba NEGOTIATION
Murillo P CaldareraJapanOnyama Limba UNQUALIFIED
Leon G AlbaresCanadaElwin Sharvill NEGOTIATION
Isabel D KuskoJapanIoni Bowcher NEW
Izzy G ChuiGermanyAsiya Javayant NEGOTIATION
Chavez J FollerSpainAnna Fali UNQUALIFIED
Izzy A ButtArgentinaAsiya Javayant 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>