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
Ashley F MacleadBrazilIvan Magalhaes UNQUALIFIED
Ivar L DoeRussiaOnyama Limba RENEWAL
Claire V BologniaJapanIvan Magalhaes PROPOSAL
Kaitlin K WieserRussiaIvan Magalhaes NEGOTIATION
Arvin Z BologniaRussiaOnyama Limba NEW
Juan D ButtGermanyElwin Sharvill UNQUALIFIED
Mujtaba P CaldareraIndiaIvan Magalhaes NEW
Jeanfrancois O AmigonUnited KingdomAnna Fali RENEWAL
Wickens G PaprockiIndiaXuxue Feng PROPOSAL
Leon D ChuiFranceIoni Bowcher NEW
Johnson Y GauchoSpainAsiya Javayant NEW
Stacey A ShinkoFranceAnna Fali QUALIFIED
Salvatore C GauchoSpainAnna Fali NEW
Claire R BriddickGermanyElwin Sharvill RENEWAL
Maisha J CampainUnited KingdomIoni Bowcher RENEWAL
Silvio N StockhamAustraliaXuxue Feng PROPOSAL
Chavez D DarakjyCanadaIvan Magalhaes NEW
Stacey H PaprockiJapanIoni Bowcher RENEWAL
Clifford Q VenereFranceAnna Fali NEW
Faith T NestleRussiaAnna Fali RENEWAL
Leja I MarrierArgentinaAnna Fali PROPOSAL
Chavez Q RimIndiaIvan Magalhaes RENEWAL
Emily D WaycottGermanyXuxue Feng PROPOSAL
Francesco K MacleadJapanIoni Bowcher UNQUALIFIED
Izzy D FlosiSpainIvan Magalhaes NEW
Munro H BowleyArgentinaElwin Sharvill RENEWAL
Emily Z VocelkaBrazilIoni Bowcher NEGOTIATION
James V BriddickSpainAsiya Javayant NEGOTIATION
Julie G RutaJapanAmy Elsner NEW
Adams Q ShinkoArgentinaIoni Bowcher NEGOTIATION
Salvatore C ShinkoArgentinaXuxue Feng NEW
Silvio K DarakjyArgentinaStephen Shaw PROPOSAL
Octavia Y SergiSpainIvan Magalhaes UNQUALIFIED
Adams F InouyeArgentinaElwin Sharvill PROPOSAL
Silvio M BologniaBrazilAmy Elsner QUALIFIED
Munro A CaldareraJapanStephen Shaw PROPOSAL
Nicolas Z BowleyCanadaAnna Fali NEW
Faith D SergiFranceIoni Bowcher RENEWAL
Jones W ButtArgentinaOnyama Limba QUALIFIED
Ricardo X DoeUnited KingdomElwin Sharvill PROPOSAL
Silvio A BowleySpainXuxue Feng QUALIFIED
Johnson A OldroydArgentinaAnna Fali QUALIFIED
Jefferson C RimIndiaElwin Sharvill PROPOSAL
Antonio Q ShinkoCanadaXuxue Feng PROPOSAL
Jefferson U RulapaughUnited KingdomStephen Shaw PROPOSAL
Cody P AlbaresItalyXuxue Feng PROPOSAL
Alejandro G GarufiItalyAmy Elsner NEW
Greenwood R PoquetteFranceElwin Sharvill RENEWAL
Emily T MorascaCanadaIoni Bowcher RENEWAL
Clifford T BowleyRussiaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maria P MarrierGermanyIoni Bowcher NEW
Murillo A PoquetteAustraliaElwin Sharvill NEGOTIATION
Claire Q CaldareraRussiaAnna Fali RENEWAL
Rodrigues K PaprockiRussiaAmy Elsner NEGOTIATION
Darci K PoquetteArgentinaXuxue Feng NEGOTIATION
Sinclair C MorascaItalyBernardo Dominic UNQUALIFIED
Leja G TollnerGermanyIoni Bowcher UNQUALIFIED
Nicolas D FigeroaItalyElwin Sharvill PROPOSAL
Sinclair H RoysterArgentinaAmy Elsner QUALIFIED
Kadeem Q WaycottGermanyElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams V FollerSpain2024-04-05Chemel, James L Cpa QUALIFIED21Asiya Javayant
1001David U MaletFrance2024-04-06Feiner Bros UNQUALIFIED5Xuxue Feng
1002David T CaudyAustralia2024-04-27Morlong Associates NEGOTIATION28Xuxue Feng
1003Leon M CaldareraSpain2024-04-05Chemel, James L Cpa NEW31Elwin Sharvill
1004Arvin Y CaudyRussia2024-04-14Printing Dimensions UNQUALIFIED86Elwin Sharvill
1005Salvatore H PoquetteCanada2024-04-22Commercial Press NEGOTIATION39Ivan Magalhaes
1006Rodrigues L StensethBrazil2024-04-18Printing Dimensions NEW78Anna Fali
1007Leon A RutaItaly2024-04-30Morlong Associates NEGOTIATION66Ivan Magalhaes
1008Kaitlin O WieserUnited Kingdom2024-04-24Truhlar And Truhlar Attys PROPOSAL29Amy Elsner
1009Wickens N OldroydAustralia2024-04-19Feiner Bros PROPOSAL33Amy Elsner
1010Misaki G ShinkoCanada2024-04-12Chanay, Jeffrey A Esq QUALIFIED30Anna Fali
1011Misaki F OstroskyItaly2024-04-25Morlong Associates PROPOSAL19Amy Elsner
1012Darci L OldroydSpain2024-04-19Dorl, James J Esq NEGOTIATION82Amy Elsner
1013Leja L PaprockiUnited Kingdom2024-04-30Rangoni Of Florence UNQUALIFIED80Amy Elsner
1014Cody B DarakjyIndia2024-04-14Rousseaux, Michael Esq QUALIFIED97Bernardo Dominic
1015Emily Z MorascaUnited Kingdom2024-04-08Morlong Associates UNQUALIFIED75Anna Fali
1016Chavez S WieserFrance2024-04-19Feiner Bros NEW27Ioni Bowcher
1017David Y GarufiUnited Kingdom2024-04-09Chanay, Jeffrey A Esq QUALIFIED54Xuxue Feng
1018Maria K OldroydJapan2024-04-13Rousseaux, Michael Esq NEGOTIATION39Amy Elsner
1019Ivar D DilliardFrance2024-04-10Chemel, James L Cpa UNQUALIFIED62Ivan Magalhaes
1020Maisha T MacleadJapan2024-04-23Printing Dimensions NEGOTIATION90Xuxue Feng
1021Jennifer W OstroskyArgentina2024-04-26Rousseaux, Michael Esq NEW12Ivan Magalhaes
1022David D SergiSpain2024-04-13Dorl, James J Esq PROPOSAL39Stephen Shaw
1023Jefferson X BowleyFrance2024-04-30Rousseaux, Michael Esq RENEWAL95Bernardo Dominic
1024Ivar S VocelkaBrazil2024-04-20Morlong Associates RENEWAL74Bernardo Dominic
1025Mujtaba N FlosiRussia2024-04-10Morlong Associates UNQUALIFIED34Ivan Magalhaes
1026Misaki U MorascaUnited Kingdom2024-04-22Truhlar And Truhlar Attys UNQUALIFIED72Ivan Magalhaes
1027Faith N NestleUnited Kingdom2024-04-04Rangoni Of Florence UNQUALIFIED30Stephen Shaw
1028Claire T StockhamBrazil2024-04-05Benton, John B Jr RENEWAL59Asiya Javayant
1029Isabel V BowleyUnited Kingdom2024-04-28Buckley Miller Wright QUALIFIED18Amy Elsner
1030Jeanfrancois L SchemmerRussia2024-04-14Rousseaux, Michael Esq PROPOSAL44Elwin Sharvill
1031Rodrigues K StockhamSpain2024-04-30Rangoni Of Florence RENEWAL18Elwin Sharvill
1032Izzy U MarrierCanada2024-05-03Rousseaux, Michael Esq RENEWAL5Stephen Shaw
1033Jones G BologniaCanada2024-04-08Chemel, James L Cpa NEW15Ioni Bowcher
1034Julie H DilliardUnited Kingdom2024-04-22King, Christopher A Esq QUALIFIED93Onyama Limba
1035David R CaudyCanada2024-04-13Commercial Press QUALIFIED42Onyama Limba
1036Sinclair K OstroskyBrazil2024-05-01Truhlar And Truhlar Attys NEW62Anna Fali
1037Aika H BowleyIndia2024-04-08King, Christopher A Esq NEW22Bernardo Dominic
1038Jefferson Z StensethJapan2024-04-24Commercial Press PROPOSAL87Xuxue Feng
1039Sinclair S OldroydJapan2024-04-18Chanay, Jeffrey A Esq NEW95Asiya Javayant
1040Mujtaba E MarrierArgentina2024-04-12Benton, John B Jr NEW67Elwin Sharvill
1041Ricardo M CaudyGermany2024-04-19Chapman, Ross E Esq RENEWAL76Stephen Shaw
1042Aika K PerinGermany2024-04-11Commercial Press NEGOTIATION88Asiya Javayant
1043Costa Z WaycottBrazil2024-04-11Dorl, James J Esq QUALIFIED31Ivan Magalhaes
1044Alejandro E ShinkoSpain2024-04-07Printing Dimensions RENEWAL52Amy Elsner
1045Clifford R StockhamRussia2024-04-04Dorl, James J Esq RENEWAL10Stephen Shaw
1046Aditya B BowleyArgentina2024-04-20Morlong Associates NEW16Asiya Javayant
1047Salvatore N BriddickCanada2024-04-30Feiner Bros UNQUALIFIED39Bernardo Dominic
1048Darci Y FigeroaCanada2024-04-08Rousseaux, Michael Esq RENEWAL10Amy Elsner
1049Leja T VenereGermany2024-04-09Chemel, James L Cpa PROPOSAL30Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Aruna W VenereBrazilOnyama Limba QUALIFIED
Aruna R BologniaItalyAsiya Javayant NEGOTIATION
Leon G MaletGermanyAsiya Javayant QUALIFIED
Maria H TollnerBrazilBernardo Dominic QUALIFIED
Nicolas R RulapaughItalyAmy Elsner NEW
Jefferson K StensethRussiaIvan Magalhaes QUALIFIED
Isabel X GillianAustraliaElwin Sharvill RENEWAL
Smith H CampainSpainAsiya Javayant NEW
James T SchemmerCanadaIoni Bowcher RENEWAL
Murillo Z BowleyAustraliaIvan Magalhaes PROPOSAL
Isabel V NickaItalyOnyama Limba NEGOTIATION
Jefferson F GillianCanadaStephen Shaw UNQUALIFIED
Jefferson S WaycottJapanOnyama Limba PROPOSAL
Claire Z SchemmerItalyStephen Shaw QUALIFIED
Julie X RimAustraliaBernardo Dominic RENEWAL
Aruna F KuskoArgentinaAmy Elsner RENEWAL
Tony D SlusarskiAustraliaAnna Fali RENEWAL
Leja U OldroydFranceIvan Magalhaes NEW
Mujtaba G RimSpainAmy Elsner NEGOTIATION
Johnson M DilliardCanadaIoni Bowcher PROPOSAL
Ricardo F AlbaresSpainStephen Shaw RENEWAL
David U OldroydIndiaIoni Bowcher PROPOSAL
David L AmigonFranceAmy Elsner RENEWAL
Chavez N FigeroaFranceAmy Elsner QUALIFIED
Salvatore N SlusarskiItalyAnna Fali PROPOSAL
James C RulapaughGermanyAsiya Javayant NEW
Rodrigues S FigeroaBrazilIoni Bowcher UNQUALIFIED
Aika M SlusarskiJapanAnna Fali RENEWAL
Maisha V FlosiAustraliaOnyama Limba UNQUALIFIED
Leon Y GillianSpainIoni Bowcher NEW
Antonio B StockhamFranceAnna Fali RENEWAL
Francesco Z RulapaughJapanXuxue Feng QUALIFIED
Octavia C KolmetzFranceOnyama Limba NEGOTIATION
Kadeem I ButtUnited KingdomAmy Elsner NEW
Rodrigues F ShinkoArgentinaOnyama Limba RENEWAL
Juan F DoeArgentinaElwin Sharvill QUALIFIED
Johnson B StockhamAustraliaAsiya Javayant NEW
Emily M KuskoRussiaElwin Sharvill NEGOTIATION
Murillo Z RoysterArgentinaIvan Magalhaes NEGOTIATION
Smith E KuskoItalyAsiya Javayant NEW
Sinclair T VenereRussiaAmy Elsner QUALIFIED
Munro T SaylorsCanadaBernardo Dominic UNQUALIFIED
Smith H InouyeCanadaStephen Shaw UNQUALIFIED
Maisha E BowleyItalyStephen Shaw NEGOTIATION
Deepesh Y PaprockiSpainBernardo Dominic NEW
Jennifer R StensethArgentinaIoni Bowcher NEW
Kadeem F FerenczAustraliaAnna Fali NEW
Tony F PerinFranceAmy Elsner UNQUALIFIED
James I ButtBrazilAmy Elsner PROPOSAL
Mayumi O CampainBrazilAsiya Javayant QUALIFIED
Frozen Columns
Name
David K Malet
Alejandro U Vocelka
Greenwood R Campain
Ricardo F Ferencz
Kaitlin E Rim
Jefferson M Rim
Octavia O Wieser
Deepesh P Glick
Alejandro H Malet
Adams X Poquette
Tony L Foller
Emily E Darakjy
Jennifer Y Doe
Jefferson A Wieser
Jefferson A Gillian
Leon U Bowley
Stacey M Albares
Misaki S Whobrey
Ivar K Morasca
Leon R Vocelka
Ricardo Y Stockham
Nicolas O Kolmetz
Kadeem Z Sergi
Aruna V Ostrosky
Rodrigues J Vocelka
Aruna J Bowley
Cody L Perin
Juan X Maclead
Munro V Oldroyd
Antonio U Ruta
James C Rulapaugh
Claire V Rulapaugh
Misaki W Marrier
Aruna K Kolmetz
Jefferson O Malet
Izzy T Rulapaugh
Aruna V Garufi
Faith O Caudy
Jeanfrancois H Nicka
Ashley R Doe
Juan V Campain
Smith C Foller
Salvatore Q Darakjy
Izzy Y Campain
Leja U Chui
Murillo S Slusarski
Deepesh E Sergi
Antonio L Perin
Claire N Stockham
Rodrigues J Vocelka
IdCountryDate
1000Australia2024-05-01
1001India2024-04-08
1002United Kingdom2024-05-02
1003France2024-04-08
1004Australia2024-04-20
1005Russia2024-04-26
1006Russia2024-05-02
1007Germany2024-04-22
1008United Kingdom2024-04-17
1009United Kingdom2024-04-17
1010Brazil2024-04-07
1011Brazil2024-04-30
1012Australia2024-04-16
1013Australia2024-04-29
1014Italy2024-04-13
1015India2024-04-14
1016Australia2024-04-14
1017Russia2024-04-18
1018Argentina2024-04-24
1019Russia2024-04-14
1020Brazil2024-04-28
1021Spain2024-04-05
1022Italy2024-04-14
1023Brazil2024-04-07
1024United Kingdom2024-05-01
1025Russia2024-04-20
1026Canada2024-04-06
1027Russia2024-04-18
1028United Kingdom2024-04-19
1029Australia2024-04-18
1030Germany2024-04-28
1031Russia2024-04-17
1032France2024-05-01
1033France2024-04-16
1034India2024-05-01
1035Australia2024-04-18
1036United Kingdom2024-04-24
1037Australia2024-04-24
1038United Kingdom2024-04-16
1039Russia2024-04-20
1040Italy2024-05-02
1041Italy2024-04-13
1042India2024-04-07
1043Brazil2024-04-21
1044France2024-04-30
1045Argentina2024-05-02
1046Japan2024-04-28
1047India2024-04-30
1048India2024-04-23
1049United Kingdom2024-04-12

On-Demand Data

NameIdCountryDate
Silvio W Schemmer1000France2024-04-08
Leja O Rulapaugh1001Germany2024-04-24
David D Bowley1002France2024-04-09
James G Shinko1003Germany2024-04-28
Izzy M Garufi1004France2024-04-18
Claire M Chui1005Germany2024-04-13
Greenwood U Gaucho1006Japan2024-05-02
Octavia T Kolmetz1007Germany2024-04-19
Leja K Amigon1008India2024-04-16
Sinclair C Briddick1009United Kingdom2024-04-14
Johnson Z Foller1010Russia2024-04-28
Alejandro G Shinko1011United Kingdom2024-04-12
Smith W Royster1012France2024-04-07
Adams A Garufi1013Spain2024-04-06
Darci U Caudy1014France2024-04-29
Julie O Campain1015Spain2024-04-09
Izzy C Iturbide1016Italy2024-04-04
Munro J Caldarera1017United Kingdom2024-04-28
Arvin K Maclead1018Canada2024-04-14
Jennifer E Perin1019Russia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio U FlosiCanadaStephen Shaw NEW
Leja R PerinArgentinaIvan Magalhaes UNQUALIFIED
Aika L MorascaBrazilXuxue Feng RENEWAL
Maisha G RutaCanadaStephen Shaw NEW
Kadeem V RulapaughCanadaAnna Fali NEGOTIATION
Antonio C CaldareraRussiaAnna Fali QUALIFIED
Mayumi J FollerUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas H StockhamArgentinaAmy Elsner NEW
Mayumi J MarrierJapanXuxue Feng NEGOTIATION
Isabel Z GlickUnited KingdomIvan Magalhaes UNQUALIFIED
Arvin W FlosiArgentinaXuxue Feng RENEWAL
Adams Q StensethGermanyAmy Elsner NEGOTIATION
Deepesh F RutaSpainAsiya Javayant PROPOSAL
Chavez K MarrierSpainStephen Shaw QUALIFIED
Aditya A ButtArgentinaOnyama Limba UNQUALIFIED
Jones C PaprockiBrazilAsiya Javayant UNQUALIFIED
Cody L SergiCanadaBernardo Dominic PROPOSAL
Emily F KuskoBrazilStephen Shaw QUALIFIED
Misaki K AmigonBrazilIoni Bowcher NEGOTIATION
Octavia B MaletSpainAsiya Javayant NEW
Aditya P PoquetteAustraliaStephen Shaw NEGOTIATION
Faith O CampainGermanyBernardo Dominic QUALIFIED
Aruna Q CaudyCanadaAsiya Javayant QUALIFIED
Ivar Y MaletUnited KingdomXuxue Feng QUALIFIED
Murillo G MarrierBrazilOnyama Limba QUALIFIED
Rodrigues P DoeJapanAnna Fali NEGOTIATION
Ricardo G AmigonArgentinaIoni Bowcher RENEWAL
Octavia F DilliardUnited KingdomElwin Sharvill PROPOSAL
Claire I MaletSpainStephen Shaw QUALIFIED
Arvin L IturbideCanadaXuxue Feng UNQUALIFIED
Mayumi C InouyeUnited KingdomAmy Elsner PROPOSAL
Octavia W WhobreyCanadaBernardo Dominic UNQUALIFIED
Maisha K WieserCanadaAnna Fali UNQUALIFIED
Antonio S OstroskyBrazilAmy Elsner RENEWAL
Sinclair V WhobreyAustraliaIvan Magalhaes NEGOTIATION
David E FigeroaUnited KingdomAmy Elsner QUALIFIED
Salvatore Q GauchoFranceBernardo Dominic QUALIFIED
Wickens R BologniaRussiaAmy Elsner NEW
Octavia U SaylorsIndiaXuxue Feng PROPOSAL
Nicolas B MacleadAustraliaXuxue Feng RENEWAL

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