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
Morrow Q ButtAustraliaStephen Shaw RENEWAL
Juan A MorascaGermanyIoni Bowcher PROPOSAL
Maisha K WaycottItalyOnyama Limba RENEWAL
Sinclair F MarrierArgentinaXuxue Feng UNQUALIFIED
Kadeem M TollnerJapanIvan Magalhaes RENEWAL
Cody I ButtJapanIvan Magalhaes UNQUALIFIED
Mujtaba G AmigonGermanyOnyama Limba NEW
Ashley B TollnerItalyAnna Fali NEW
Alejandro A NickaArgentinaIvan Magalhaes UNQUALIFIED
Isabel Y AmigonUnited KingdomIoni Bowcher NEGOTIATION
Aruna D DarakjyGermanyIvan Magalhaes QUALIFIED
Maria Z BowleyIndiaAsiya Javayant NEW
Mujtaba K PaprockiRussiaAsiya Javayant PROPOSAL
Maisha S DarakjyIndiaXuxue Feng UNQUALIFIED
Maisha D MarrierGermanyElwin Sharvill RENEWAL
Mujtaba O ChuiIndiaStephen Shaw RENEWAL
Silvio L OldroydSpainStephen Shaw NEW
Kaitlin O BriddickCanadaStephen Shaw RENEWAL
Maisha S AmigonGermanyXuxue Feng RENEWAL
Maisha G ShinkoCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois T StockhamCanadaIoni Bowcher NEW
David Q DarakjyBrazilAsiya Javayant UNQUALIFIED
Alejandro Z CaldareraItalyOnyama Limba UNQUALIFIED
Leja C BowleyItalyIoni Bowcher NEW
Aditya D ChuiCanadaIoni Bowcher NEW
Izzy I FollerFranceAmy Elsner UNQUALIFIED
Emily P MacleadBrazilOnyama Limba NEW
Kaitlin X KuskoUnited KingdomAmy Elsner UNQUALIFIED
Ricardo J MaletBrazilXuxue Feng NEW
Jennifer Q ButtUnited KingdomIvan Magalhaes RENEWAL
Maria U NickaArgentinaAnna Fali NEW
Jones T BowleyItalyXuxue Feng QUALIFIED
Maisha D GarufiGermanyElwin Sharvill NEGOTIATION
Clifford A VocelkaArgentinaAmy Elsner PROPOSAL
Clifford S CaudyRussiaAmy Elsner UNQUALIFIED
Sinclair B GillianBrazilAnna Fali RENEWAL
Darci I DoeArgentinaIoni Bowcher UNQUALIFIED
Francesco B VenereAustraliaBernardo Dominic PROPOSAL
Juan E BriddickItalyAnna Fali QUALIFIED
Misaki N FerenczCanadaXuxue Feng RENEWAL
Izzy H InouyeAustraliaXuxue Feng NEW
Jeanfrancois N SchemmerUnited KingdomXuxue Feng PROPOSAL
David Y KuskoJapanAnna Fali RENEWAL
Antonio N WaycottFranceIoni Bowcher PROPOSAL
Ricardo S WaycottItalyAmy Elsner QUALIFIED
Maisha E ChuiFranceAnna Fali QUALIFIED
Clifford C StockhamFranceElwin Sharvill PROPOSAL
Ricardo T FlosiJapanStephen Shaw UNQUALIFIED
Kaitlin G WieserIndiaAmy Elsner RENEWAL
Alejandro Z PoquetteAustraliaAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson I SergiArgentinaAmy Elsner UNQUALIFIED
Smith S DilliardRussiaStephen Shaw PROPOSAL
Jones W DilliardJapanIoni Bowcher NEW
Kadeem K PaprockiItalyIoni Bowcher NEW
Alejandro G DarakjySpainAmy Elsner UNQUALIFIED
Maisha V RulapaughItalyIoni Bowcher UNQUALIFIED
Smith Y GillianIndiaIoni Bowcher NEGOTIATION
Jeanfrancois B CaudyBrazilIvan Magalhaes NEGOTIATION
James N SaylorsFranceOnyama Limba NEW
Aruna M KolmetzSpainAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith Y RutaGermany2024-04-22Truhlar And Truhlar Attys QUALIFIED34Anna Fali
1001Jones Q RulapaughRussia2024-04-10Rangoni Of Florence RENEWAL88Ioni Bowcher
1002Morrow K CampainCanada2024-03-28Benton, John B Jr QUALIFIED16Ioni Bowcher
1003Faith C GlickSpain2024-04-17Rangoni Of Florence PROPOSAL36Stephen Shaw
1004James N TollnerAustralia2024-04-23Chapman, Ross E Esq NEGOTIATION68Elwin Sharvill
1005Leon W KuskoRussia2024-04-15Benton, John B Jr UNQUALIFIED36Amy Elsner
1006Juan E ShinkoJapan2024-04-12Buckley Miller Wright QUALIFIED60Bernardo Dominic
1007Faith Z CaudyRussia2024-04-21Benton, John B Jr UNQUALIFIED1Anna Fali
1008Munro Z OstroskySpain2024-04-23Rangoni Of Florence NEW3Xuxue Feng
1009Maisha Q FerenczRussia2024-04-04Commercial Press QUALIFIED46Amy Elsner
1010Nicolas Z SergiItaly2024-04-11Truhlar And Truhlar Attys NEGOTIATION4Anna Fali
1011Claire R MorascaGermany2024-03-27Printing Dimensions NEGOTIATION15Amy Elsner
1012James Y SergiSpain2024-03-27Feltz Printing Service NEGOTIATION35Asiya Javayant
1013Leja V StockhamCanada2024-03-30Printing Dimensions PROPOSAL87Onyama Limba
1014Tony C SlusarskiCanada2024-04-11Feiner Bros NEW55Bernardo Dominic
1015Alejandro R DoeCanada2024-04-19Dorl, James J Esq RENEWAL70Ivan Magalhaes
1016Octavia L VocelkaRussia2024-04-19Printing Dimensions RENEWAL61Stephen Shaw
1017Maria P VocelkaJapan2024-04-10Chapman, Ross E Esq NEGOTIATION80Stephen Shaw
1018Alejandro N IturbideBrazil2024-03-28Printing Dimensions UNQUALIFIED38Amy Elsner
1019Maisha S OldroydAustralia2024-04-19Benton, John B Jr NEGOTIATION21Anna Fali
1020Clifford A PerinCanada2024-03-27Chemel, James L Cpa PROPOSAL14Bernardo Dominic
1021Misaki A GauchoJapan2024-04-17King, Christopher A Esq NEGOTIATION38Bernardo Dominic
1022Maria I RimUnited Kingdom2024-04-16Printing Dimensions QUALIFIED13Stephen Shaw
1023Alejandro S KuskoIndia2024-04-08Benton, John B Jr NEGOTIATION12Amy Elsner
1024Julie X StensethArgentina2024-04-14Truhlar And Truhlar Attys PROPOSAL5Ioni Bowcher
1025Sinclair D BriddickAustralia2024-04-09Rangoni Of Florence RENEWAL14Anna Fali
1026Adams A OstroskyFrance2024-04-09Chanay, Jeffrey A Esq QUALIFIED29Ioni Bowcher
1027Jefferson Q PerinAustralia2024-04-19Commercial Press NEGOTIATION6Asiya Javayant
1028Tony B RulapaughRussia2024-04-03Feltz Printing Service RENEWAL60Ivan Magalhaes
1029Faith S KuskoArgentina2024-03-27Commercial Press PROPOSAL76Elwin Sharvill
1030Stacey S MacleadFrance2024-04-15Chemel, James L Cpa RENEWAL68Stephen Shaw
1031Mayumi D GarufiSpain2024-04-21Chapman, Ross E Esq UNQUALIFIED73Anna Fali
1032Kaitlin B GlickArgentina2024-04-22Chapman, Ross E Esq UNQUALIFIED95Anna Fali
1033Salvatore C WhobreyItaly2024-04-20Printing Dimensions PROPOSAL6Elwin Sharvill
1034Ashley F KolmetzItaly2024-04-24Rousseaux, Michael Esq NEGOTIATION69Bernardo Dominic
1035Juan X DilliardGermany2024-04-15Rangoni Of Florence UNQUALIFIED76Amy Elsner
1036Mujtaba L KuskoArgentina2024-03-26Truhlar And Truhlar Attys QUALIFIED60Bernardo Dominic
1037Jeanfrancois M SergiItaly2024-04-02Chanay, Jeffrey A Esq PROPOSAL80Asiya Javayant
1038Nicolas J GarufiSpain2024-04-12Commercial Press RENEWAL71Bernardo Dominic
1039Arvin M DarakjyGermany2024-04-21Buckley Miller Wright QUALIFIED87Bernardo Dominic
1040Nicolas D BriddickItaly2024-04-24Truhlar And Truhlar Attys NEW71Amy Elsner
1041Julie A PerinRussia2024-04-22Rousseaux, Michael Esq NEW91Asiya Javayant
1042Leja I IturbideBrazil2024-04-02Chapman, Ross E Esq QUALIFIED44Xuxue Feng
1043Aruna O RoysterArgentina2024-04-20Feltz Printing Service PROPOSAL75Xuxue Feng
1044Greenwood F GillianArgentina2024-03-31Dorl, James J Esq UNQUALIFIED97Amy Elsner
1045Faith X NickaUnited Kingdom2024-03-27Feltz Printing Service QUALIFIED29Ioni Bowcher
1046Nicolas W PerinItaly2024-03-31Rousseaux, Michael Esq NEGOTIATION69Elwin Sharvill
1047Ivar J RutaSpain2024-04-13Truhlar And Truhlar Attys UNQUALIFIED18Ioni Bowcher
1048Jennifer P SlusarskiCanada2024-04-01Feiner Bros RENEWAL69Elwin Sharvill
1049Izzy P BowleyItaly2024-04-05Benton, John B Jr PROPOSAL64Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Maria R GlickRussiaBernardo Dominic NEW
Darci W OldroydFranceAsiya Javayant QUALIFIED
Julie F ChuiIndiaAnna Fali UNQUALIFIED
Jennifer F DilliardJapanIoni Bowcher NEGOTIATION
Johnson X WaycottRussiaOnyama Limba NEW
Salvatore F OldroydCanadaIoni Bowcher NEW
Clifford I VenereItalyAsiya Javayant NEW
Aditya A ButtJapanIoni Bowcher NEW
Jeanfrancois A NickaSpainStephen Shaw QUALIFIED
Mujtaba I GillianIndiaAnna Fali PROPOSAL
Ashley F VocelkaBrazilIvan Magalhaes NEW
Adams V GlickUnited KingdomElwin Sharvill UNQUALIFIED
Ricardo Q BriddickIndiaAnna Fali QUALIFIED
Misaki Z KuskoJapanXuxue Feng QUALIFIED
Jones W WhobreyArgentinaOnyama Limba RENEWAL
Costa A NickaAustraliaAsiya Javayant NEGOTIATION
Costa C CaudyGermanyAmy Elsner PROPOSAL
Claire R FerenczSpainStephen Shaw RENEWAL
Stacey K MaletRussiaIvan Magalhaes RENEWAL
Sinclair J BowleyUnited KingdomAmy Elsner UNQUALIFIED
Smith Q KolmetzCanadaXuxue Feng NEGOTIATION
Alejandro S FlosiAustraliaOnyama Limba NEW
Mujtaba R MaletRussiaOnyama Limba NEGOTIATION
Aruna W BowleyAustraliaElwin Sharvill PROPOSAL
Leja V PerinArgentinaIoni Bowcher QUALIFIED
Kadeem M VenereItalyAmy Elsner QUALIFIED
Maisha F GlickArgentinaAnna Fali NEGOTIATION
Ricardo V CaudyItalyStephen Shaw QUALIFIED
Antonio Q RimRussiaXuxue Feng NEW
Leja O SlusarskiAustraliaStephen Shaw NEGOTIATION
Mayumi E MaletAustraliaOnyama Limba UNQUALIFIED
Isabel C WieserSpainBernardo Dominic RENEWAL
Kaitlin Q KuskoFranceAsiya Javayant PROPOSAL
Stacey M NestleAustraliaStephen Shaw NEW
Rodrigues A AmigonItalyStephen Shaw NEW
Chavez M OstroskyCanadaAmy Elsner PROPOSAL
Maria F CaldareraSpainAsiya Javayant UNQUALIFIED
David Z DilliardArgentinaBernardo Dominic QUALIFIED
Jones J VenereArgentinaAmy Elsner RENEWAL
Octavia A VenereJapanStephen Shaw NEW
Deepesh Q FollerSpainOnyama Limba NEW
Clifford C SaylorsJapanIoni Bowcher RENEWAL
Aruna C StensethArgentinaStephen Shaw NEW
Rodrigues W RulapaughAustraliaIoni Bowcher NEW
Deepesh A ButtRussiaElwin Sharvill RENEWAL
Kadeem C PerinAustraliaIvan Magalhaes NEGOTIATION
Salvatore C RoysterSpainAmy Elsner UNQUALIFIED
Munro A TollnerRussiaXuxue Feng QUALIFIED
Johnson Q SergiCanadaAmy Elsner UNQUALIFIED
Costa S FollerGermanyXuxue Feng PROPOSAL
Frozen Columns
Name
David H Dilliard
Leja C Amigon
Mayumi J Waycott
James A Gaucho
Sinclair E Saylors
Alejandro F Sergi
Clifford U Gillian
Octavia L Perin
Smith L Marrier
Jefferson A Malet
Salvatore X Iturbide
Ivar D Foller
Ashley N Poquette
Maisha X Figeroa
Adams L Maclead
Isabel W Rulapaugh
Julie K Caldarera
Julie G Tollner
Johnson N Kusko
Mujtaba R Campain
Arvin A Poquette
Jones T Malet
Maisha I Gaucho
Rodrigues V Nicka
Munro L Venere
Stacey A Malet
Jefferson Y Tollner
Costa F Flosi
Murillo S Malet
Aditya X Rulapaugh
Jones X Caudy
Mujtaba B Ruta
Aika Y Maclead
Sinclair W Foller
Stacey X Marrier
Jones V Sergi
Nicolas K Butt
Aruna A Briddick
Kaitlin S Figeroa
Francesco I Shinko
Octavia M Stenseth
Francesco O Slusarski
Leon E Morasca
Jennifer H Ferencz
Salvatore Y Darakjy
Silvio A Inouye
Jennifer R Schemmer
Francesco Z Dilliard
Aruna L Maclead
Jones W Chui
IdCountryDate
1000Brazil2024-04-23
1001Russia2024-04-01
1002Japan2024-04-23
1003Germany2024-04-11
1004United Kingdom2024-04-22
1005United Kingdom2024-04-23
1006Germany2024-04-12
1007Canada2024-04-09
1008Germany2024-03-30
1009Italy2024-04-09
1010Australia2024-04-07
1011Russia2024-04-05
1012Germany2024-04-24
1013Argentina2024-03-30
1014United Kingdom2024-04-18
1015Canada2024-04-05
1016Russia2024-03-28
1017Spain2024-04-12
1018Russia2024-04-05
1019Argentina2024-03-29
1020Canada2024-04-03
1021Australia2024-03-27
1022Spain2024-04-15
1023United Kingdom2024-04-09
1024Brazil2024-04-19
1025Australia2024-04-24
1026Argentina2024-04-06
1027Germany2024-03-27
1028Brazil2024-04-19
1029France2024-04-09
1030Germany2024-04-05
1031France2024-04-24
1032France2024-04-10
1033France2024-04-08
1034Russia2024-03-30
1035Argentina2024-04-14
1036India2024-04-04
1037Argentina2024-04-16
1038Germany2024-04-06
1039Argentina2024-04-02
1040Italy2024-04-23
1041Brazil2024-03-28
1042Italy2024-03-26
1043Brazil2024-04-03
1044Japan2024-04-14
1045Canada2024-04-02
1046France2024-04-10
1047United Kingdom2024-03-28
1048United Kingdom2024-03-28
1049Australia2024-04-01

On-Demand Data

NameIdCountryDate
Antonio M Malet1000India2024-04-02
Smith A Gillian1001India2024-03-31
Antonio T Schemmer1002India2024-04-06
Juan J Garufi1003Canada2024-03-29
Nicolas W Rulapaugh1004Australia2024-04-10
Greenwood B Chui1005Australia2024-04-17
Nicolas A Doe1006United Kingdom2024-04-04
Nicolas G Amigon1007Japan2024-04-21
Silvio K Amigon1008Brazil2024-04-08
Greenwood H Inouye1009Italy2024-04-12
Leja I Rulapaugh1010United Kingdom2024-04-21
Salvatore Y Paprocki1011United Kingdom2024-04-03
Leon H Briddick1012Argentina2024-04-01
Jennifer Z Waycott1013Spain2024-04-02
Aruna Z Sergi1014Italy2024-04-12
Izzy J Malet1015Japan2024-03-28
Jefferson W Paprocki1016Brazil2024-03-29
Johnson D Maclead1017France2024-04-07
Costa B Flosi1018India2024-03-27
Jefferson Z Kusko1019Spain2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi M PaprockiGermanyAsiya Javayant NEW
Antonio K BriddickArgentinaOnyama Limba PROPOSAL
Misaki I GlickGermanyIvan Magalhaes RENEWAL
Sinclair T RimIndiaIvan Magalhaes UNQUALIFIED
Ashley O RoysterCanadaElwin Sharvill NEW
Arvin M WieserCanadaElwin Sharvill PROPOSAL
Jeanfrancois P WaycottIndiaElwin Sharvill NEW
Kadeem Q GarufiItalyIoni Bowcher QUALIFIED
Emily Q PerinAustraliaStephen Shaw UNQUALIFIED
Deepesh L StockhamJapanAmy Elsner UNQUALIFIED
Ashley Q CaldareraIndiaBernardo Dominic QUALIFIED
Greenwood P GlickBrazilOnyama Limba UNQUALIFIED
Murillo J WaycottArgentinaElwin Sharvill NEGOTIATION
Ashley Z RoysterGermanyXuxue Feng NEW
Nicolas N RimFranceBernardo Dominic NEGOTIATION
Francesco C CaldareraIndiaOnyama Limba QUALIFIED
Jennifer T SlusarskiBrazilElwin Sharvill QUALIFIED
Kaitlin U ShinkoBrazilAsiya Javayant QUALIFIED
Aditya D BriddickAustraliaOnyama Limba RENEWAL
Kadeem W MaletGermanyAnna Fali QUALIFIED
Arvin T CaudyArgentinaAnna Fali NEGOTIATION
Maisha X NestleRussiaXuxue Feng RENEWAL
Maria Q InouyeAustraliaIoni Bowcher UNQUALIFIED
Tony D CampainRussiaAsiya Javayant NEW
Juan E ButtSpainOnyama Limba QUALIFIED
Aruna X PoquetteGermanyElwin Sharvill RENEWAL
Ivar P KuskoAustraliaElwin Sharvill PROPOSAL
Jones I AlbaresArgentinaOnyama Limba NEW
James N FerenczIndiaAnna Fali PROPOSAL
Rodrigues L SlusarskiIndiaXuxue Feng NEGOTIATION
Misaki E FigeroaGermanyBernardo Dominic UNQUALIFIED
Stacey R SergiBrazilOnyama Limba UNQUALIFIED
Octavia S StockhamArgentinaAmy Elsner UNQUALIFIED
Sinclair R RulapaughSpainOnyama Limba NEW
Wickens L DoeCanadaBernardo Dominic UNQUALIFIED
Aditya J NestleSpainElwin Sharvill PROPOSAL
Deepesh C StensethRussiaElwin Sharvill QUALIFIED
Salvatore W GlickFranceBernardo Dominic UNQUALIFIED
Claire V DilliardJapanIvan Magalhaes NEGOTIATION
Izzy Q FigeroaArgentinaIvan Magalhaes 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>