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
Jeanfrancois N SergiJapanAnna Fali NEGOTIATION
Kaitlin P GillianGermanyStephen Shaw QUALIFIED
Jefferson B FerenczArgentinaStephen Shaw UNQUALIFIED
Kadeem J PerinCanadaBernardo Dominic QUALIFIED
Misaki L VenereGermanyElwin Sharvill QUALIFIED
Aruna A AlbaresGermanyIoni Bowcher NEW
Arvin D FigeroaGermanyOnyama Limba QUALIFIED
Salvatore U DilliardItalyOnyama Limba NEGOTIATION
Jennifer O DilliardAustraliaBernardo Dominic UNQUALIFIED
Julie M MacleadRussiaBernardo Dominic PROPOSAL
Nicolas Z DoeSpainAnna Fali UNQUALIFIED
Greenwood R MaletFranceBernardo Dominic NEGOTIATION
Rodrigues X CaudyJapanStephen Shaw RENEWAL
Salvatore Y RoysterJapanAsiya Javayant RENEWAL
Morrow Q MacleadSpainIvan Magalhaes UNQUALIFIED
Emily Z FlosiJapanIvan Magalhaes UNQUALIFIED
Smith W DarakjyCanadaIoni Bowcher QUALIFIED
Maria A FerenczItalyOnyama Limba PROPOSAL
Smith N RulapaughItalyIvan Magalhaes NEGOTIATION
Darci P PoquetteBrazilStephen Shaw RENEWAL
James Y MaletIndiaAmy Elsner QUALIFIED
Wickens G WaycottUnited KingdomAsiya Javayant QUALIFIED
Antonio V AmigonGermanyAsiya Javayant UNQUALIFIED
Faith C WaycottArgentinaOnyama Limba NEGOTIATION
Isabel K CampainJapanIvan Magalhaes NEGOTIATION
Aditya Y WhobreyCanadaAmy Elsner UNQUALIFIED
Jones E FollerCanadaBernardo Dominic NEW
Leja N WhobreySpainAsiya Javayant PROPOSAL
Arvin M NestleIndiaXuxue Feng RENEWAL
Rodrigues X BologniaJapanIoni Bowcher PROPOSAL
Smith N BowleyIndiaXuxue Feng RENEWAL
Aruna H InouyeUnited KingdomIvan Magalhaes NEGOTIATION
Clifford D SlusarskiUnited KingdomStephen Shaw NEGOTIATION
Munro D RimJapanXuxue Feng NEGOTIATION
Misaki I NickaBrazilStephen Shaw RENEWAL
Tony Z RoysterIndiaIvan Magalhaes NEGOTIATION
Alejandro O RutaAustraliaOnyama Limba NEGOTIATION
Aruna X BowleyAustraliaIoni Bowcher NEW
Clifford F ButtBrazilXuxue Feng QUALIFIED
Tony H MaletFranceIoni Bowcher NEW
Adams N AmigonBrazilAnna Fali PROPOSAL
Costa F RulapaughBrazilIvan Magalhaes QUALIFIED
Emily C GauchoArgentinaAsiya Javayant RENEWAL
Ivar R RulapaughSpainAsiya Javayant QUALIFIED
Aditya L MorascaSpainElwin Sharvill NEGOTIATION
Kaitlin T PaprockiFranceAnna Fali UNQUALIFIED
Isabel K FigeroaAustraliaIoni Bowcher UNQUALIFIED
Leon Y BowleyRussiaXuxue Feng QUALIFIED
Misaki G GauchoGermanyStephen Shaw NEGOTIATION
Clifford F OstroskyFranceAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Cody W OstroskyIndiaXuxue Feng UNQUALIFIED
James B RutaFranceStephen Shaw PROPOSAL
Sinclair Q FollerRussiaBernardo Dominic NEW
Murillo P ShinkoRussiaIvan Magalhaes UNQUALIFIED
Darci V SaylorsUnited KingdomAsiya Javayant PROPOSAL
Nicolas Z DilliardUnited KingdomXuxue Feng NEW
Deepesh Y DilliardGermanyAsiya Javayant RENEWAL
Murillo T MacleadJapanOnyama Limba QUALIFIED
Leja H GlickItalyStephen Shaw QUALIFIED
Jefferson A GlickFranceAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro G RoysterCanada2024-04-15Chapman, Ross E Esq UNQUALIFIED3Anna Fali
1001Darci P OstroskyIndia2024-04-16Rousseaux, Michael Esq QUALIFIED50Stephen Shaw
1002Octavia N VocelkaAustralia2024-04-06Feltz Printing Service RENEWAL60Amy Elsner
1003Faith N InouyeSpain2024-04-16King, Christopher A Esq RENEWAL70Elwin Sharvill
1004Aruna G CaudySpain2024-04-14Rousseaux, Michael Esq NEW10Asiya Javayant
1005Claire Q SergiBrazil2024-04-17Rousseaux, Michael Esq UNQUALIFIED88Amy Elsner
1006Julie Z SchemmerArgentina2024-04-03Chemel, James L Cpa RENEWAL86Stephen Shaw
1007Morrow L RoysterAustralia2024-03-22Commercial Press PROPOSAL17Amy Elsner
1008Costa D ButtRussia2024-03-22Rangoni Of Florence RENEWAL65Anna Fali
1009Isabel H KolmetzGermany2024-04-12Chemel, James L Cpa QUALIFIED17Anna Fali
1010Jones X BriddickJapan2024-04-12Dorl, James J Esq QUALIFIED59Ivan Magalhaes
1011Emily L NickaBrazil2024-04-03Rousseaux, Michael Esq QUALIFIED10Ivan Magalhaes
1012Jefferson C MarrierFrance2024-04-08Rangoni Of Florence RENEWAL4Ivan Magalhaes
1013Smith H BowleyIndia2024-03-19Commercial Press RENEWAL21Stephen Shaw
1014Ivar C RutaAustralia2024-04-11Commercial Press PROPOSAL53Ioni Bowcher
1015Leja R RutaAustralia2024-04-02Feltz Printing Service RENEWAL17Xuxue Feng
1016Aika Y MaletJapan2024-03-27Rangoni Of Florence UNQUALIFIED64Ivan Magalhaes
1017Munro Q MacleadBrazil2024-04-03Feiner Bros RENEWAL74Onyama Limba
1018Kaitlin I TollnerBrazil2024-03-30Chemel, James L Cpa NEGOTIATION99Ivan Magalhaes
1019Adams W FlosiUnited Kingdom2024-04-08Rousseaux, Michael Esq UNQUALIFIED25Anna Fali
1020Isabel Z OstroskyArgentina2024-03-20Truhlar And Truhlar Attys NEW39Amy Elsner
1021Darci P OstroskyRussia2024-03-30Chemel, James L Cpa RENEWAL16Asiya Javayant
1022Deepesh L MorascaBrazil2024-04-03Truhlar And Truhlar Attys NEGOTIATION52Ioni Bowcher
1023Octavia K FollerJapan2024-04-05Commercial Press QUALIFIED31Xuxue Feng
1024Johnson M AlbaresArgentina2024-04-10Printing Dimensions RENEWAL15Amy Elsner
1025Leja G ButtBrazil2024-04-12Feltz Printing Service QUALIFIED2Anna Fali
1026Salvatore J KuskoIndia2024-03-26Chapman, Ross E Esq UNQUALIFIED6Asiya Javayant
1027Deepesh N VocelkaFrance2024-04-17Rangoni Of Florence RENEWAL34Elwin Sharvill
1028Rodrigues G MacleadArgentina2024-04-08Morlong Associates UNQUALIFIED78Amy Elsner
1029Costa E NestleGermany2024-04-10Chapman, Ross E Esq NEGOTIATION90Ioni Bowcher
1030Misaki A FigeroaGermany2024-04-09Rangoni Of Florence PROPOSAL38Onyama Limba
1031Kaitlin K FlosiFrance2024-04-03Feltz Printing Service UNQUALIFIED18Ioni Bowcher
1032Kadeem M SaylorsJapan2024-04-01Chanay, Jeffrey A Esq NEW78Bernardo Dominic
1033Jones A SlusarskiGermany2024-04-06Chemel, James L Cpa UNQUALIFIED49Elwin Sharvill
1034Tony A BowleyBrazil2024-04-01Buckley Miller Wright PROPOSAL18Asiya Javayant
1035Deepesh S CaudyArgentina2024-04-12Feiner Bros NEW20Bernardo Dominic
1036Arvin R DilliardIndia2024-03-31Rousseaux, Michael Esq QUALIFIED49Asiya Javayant
1037Mayumi G PaprockiArgentina2024-03-25Rousseaux, Michael Esq QUALIFIED79Bernardo Dominic
1038Chavez A CampainJapan2024-04-04King, Christopher A Esq RENEWAL65Ivan Magalhaes
1039James M FollerSpain2024-04-10Rousseaux, Michael Esq NEW80Anna Fali
1040Julie Z GlickCanada2024-04-07Chanay, Jeffrey A Esq PROPOSAL83Xuxue Feng
1041Mayumi N VenereFrance2024-04-02Rousseaux, Michael Esq PROPOSAL39Amy Elsner
1042Alejandro V CampainAustralia2024-04-06Chapman, Ross E Esq NEW42Ioni Bowcher
1043Leja G WaycottIndia2024-04-05Buckley Miller Wright RENEWAL28Bernardo Dominic
1044Jeanfrancois F TollnerItaly2024-03-22Chanay, Jeffrey A Esq QUALIFIED81Ioni Bowcher
1045Francesco X StockhamArgentina2024-04-17Feltz Printing Service UNQUALIFIED52Elwin Sharvill
1046Rodrigues O OstroskyAustralia2024-04-06Commercial Press NEGOTIATION96Bernardo Dominic
1047Maria U CaldareraArgentina2024-03-27King, Christopher A Esq UNQUALIFIED21Ioni Bowcher
1048Sinclair Z OldroydGermany2024-04-12Rousseaux, Michael Esq NEGOTIATION27Elwin Sharvill
1049Silvio B DoeArgentina2024-04-02Truhlar And Truhlar Attys QUALIFIED4Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Adams A MaletItalyElwin Sharvill RENEWAL
Darci Y GlickRussiaElwin Sharvill QUALIFIED
Claire R BologniaFranceOnyama Limba QUALIFIED
Kaitlin A KuskoUnited KingdomIvan Magalhaes QUALIFIED
Darci A GarufiBrazilIvan Magalhaes NEW
Chavez W FigeroaFranceXuxue Feng QUALIFIED
Jeanfrancois X StensethFranceIoni Bowcher RENEWAL
Julie D VocelkaJapanElwin Sharvill RENEWAL
Munro I CaudyJapanAsiya Javayant PROPOSAL
Stacey T RutaBrazilAmy Elsner NEW
Darci C StockhamGermanyElwin Sharvill NEGOTIATION
Emily O KolmetzFranceXuxue Feng PROPOSAL
Munro Q ButtItalyAnna Fali RENEWAL
Rodrigues I KuskoItalyBernardo Dominic NEW
Arvin G StockhamItalyElwin Sharvill RENEWAL
Sinclair R DoeItalyAmy Elsner NEW
Juan S MacleadGermanyXuxue Feng NEW
Leon A MaletAustraliaIvan Magalhaes QUALIFIED
Leon W OstroskyIndiaOnyama Limba NEW
Adams H AmigonSpainIvan Magalhaes UNQUALIFIED
Aruna J PaprockiBrazilElwin Sharvill RENEWAL
Julie Y MorascaJapanAmy Elsner NEW
Antonio C OldroydBrazilAsiya Javayant NEGOTIATION
Cody L CampainItalyAnna Fali UNQUALIFIED
Maria A AmigonSpainIoni Bowcher UNQUALIFIED
Silvio T StensethFranceStephen Shaw PROPOSAL
Misaki S RoysterSpainStephen Shaw NEGOTIATION
Munro C OstroskyArgentinaAmy Elsner NEW
Misaki F BologniaBrazilXuxue Feng NEGOTIATION
Aika F GillianGermanyAnna Fali QUALIFIED
Smith G SchemmerSpainOnyama Limba NEGOTIATION
Jones Q ShinkoRussiaIvan Magalhaes UNQUALIFIED
Johnson C VocelkaJapanIvan Magalhaes NEW
Silvio H GauchoItalyAnna Fali NEGOTIATION
Antonio S KolmetzUnited KingdomElwin Sharvill QUALIFIED
Clifford Y StockhamFranceAnna Fali UNQUALIFIED
Antonio N OldroydGermanyIoni Bowcher RENEWAL
Jeanfrancois E InouyeAustraliaIvan Magalhaes RENEWAL
Aika I OldroydJapanElwin Sharvill UNQUALIFIED
Maisha U VenereGermanyAsiya Javayant QUALIFIED
Ricardo Q RutaUnited KingdomAmy Elsner RENEWAL
Nicolas C FollerJapanIvan Magalhaes NEW
Ashley E MaletRussiaAsiya Javayant QUALIFIED
Mayumi L DilliardGermanyAsiya Javayant UNQUALIFIED
Ivar Q PaprockiAustraliaBernardo Dominic UNQUALIFIED
Murillo N ButtCanadaIoni Bowcher UNQUALIFIED
Isabel O AlbaresFranceElwin Sharvill NEW
Aika H KolmetzBrazilAsiya Javayant NEGOTIATION
Deepesh J FerenczGermanyOnyama Limba PROPOSAL
Smith L FerenczFranceBernardo Dominic PROPOSAL
Frozen Columns
Name
Adams L Chui
Mujtaba U Stockham
Smith N Malet
Tony U Poquette
Aika E Sergi
Stacey J Rim
Sinclair H Morasca
Alejandro U Nicka
Johnson R Ostrosky
Salvatore O Tollner
Salvatore H Vocelka
Jennifer A Malet
Cody K Slusarski
Adams I Oldroyd
Antonio M Garufi
Rodrigues Z Malet
Adams N Doe
Juan O Kusko
James T Butt
Jennifer D Saylors
Leon R Gaucho
Claire J Poquette
David O Malet
Aika F Gaucho
Aruna F Figeroa
Faith M Vocelka
Wickens Y Butt
Juan Z Malet
Wickens D Rulapaugh
Silvio H Flosi
Leja K Iturbide
David B Schemmer
Aditya T Glick
Faith U Bolognia
Johnson O Ferencz
Costa P Gillian
Adams R Waycott
Darci V Gillian
James E Rulapaugh
Aika Z Royster
Antonio H Gillian
Antonio T Shinko
Tony U Maclead
Cody Q Briddick
Arvin E Morasca
Octavia T Kusko
Faith A Kolmetz
Ivar A Briddick
Jefferson E Vocelka
Ricardo D Schemmer
IdCountryDate
1000Spain2024-04-12
1001Argentina2024-03-30
1002Canada2024-03-24
1003Russia2024-04-02
1004Spain2024-03-23
1005Canada2024-03-19
1006Japan2024-03-27
1007India2024-04-14
1008Japan2024-04-09
1009Argentina2024-04-11
1010Australia2024-04-15
1011France2024-03-22
1012Brazil2024-04-02
1013Japan2024-04-17
1014United Kingdom2024-03-29
1015Italy2024-04-15
1016Germany2024-03-28
1017Japan2024-03-31
1018United Kingdom2024-03-26
1019India2024-03-20
1020Argentina2024-03-30
1021India2024-04-01
1022Italy2024-04-10
1023Italy2024-04-06
1024Russia2024-03-23
1025Canada2024-03-28
1026Italy2024-03-20
1027Australia2024-03-28
1028Canada2024-04-04
1029Brazil2024-03-27
1030Japan2024-04-13
1031Japan2024-04-17
1032United Kingdom2024-04-16
1033Brazil2024-04-05
1034Germany2024-03-27
1035Brazil2024-04-05
1036India2024-03-28
1037Australia2024-04-16
1038Argentina2024-04-09
1039Argentina2024-03-29
1040Russia2024-04-05
1041United Kingdom2024-03-19
1042Australia2024-04-08
1043Germany2024-03-25
1044Argentina2024-03-27
1045United Kingdom2024-03-22
1046India2024-03-29
1047France2024-04-10
1048Germany2024-03-29
1049Russia2024-03-25

On-Demand Data

NameIdCountryDate
Leon Y Chui1000France2024-04-09
Smith S Campain1001Australia2024-03-26
Maria P Stockham1002India2024-04-01
Juan E Garufi1003United Kingdom2024-03-29
Wickens U Perin1004Italy2024-04-15
Tony J Briddick1005Spain2024-03-26
Jennifer C Amigon1006Italy2024-04-02
Sinclair A Royster1007Russia2024-03-20
Izzy L Kusko1008Brazil2024-03-19
Costa T Stockham1009Germany2024-03-23
Jones L Wieser1010Italy2024-03-23
Octavia T Stenseth1011Japan2024-03-27
David F Slusarski1012Canada2024-03-26
Aika Q Paprocki1013India2024-04-13
Cody X Kolmetz1014Italy2024-04-01
David P Perin1015France2024-04-14
Francesco W Whobrey1016Canada2024-04-14
Nicolas Z Malet1017Russia2024-04-14
Jeanfrancois S Ruta1018India2024-04-15
Rodrigues Q Ferencz1019Spain2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois G GlickFranceBernardo Dominic RENEWAL
David N NestleRussiaStephen Shaw PROPOSAL
Leon W RimBrazilBernardo Dominic QUALIFIED
Nicolas K GauchoJapanAnna Fali NEW
Isabel J WieserRussiaIoni Bowcher PROPOSAL
Faith F BriddickIndiaOnyama Limba NEW
Adams P OldroydArgentinaIoni Bowcher NEGOTIATION
Octavia P FigeroaIndiaIoni Bowcher QUALIFIED
Silvio H SchemmerGermanyAsiya Javayant QUALIFIED
Rodrigues U MaletBrazilAnna Fali RENEWAL
Leon C SlusarskiIndiaBernardo Dominic QUALIFIED
Mujtaba C BowleyGermanyAnna Fali QUALIFIED
Adams F PoquetteIndiaAmy Elsner QUALIFIED
Wickens T CampainRussiaAnna Fali PROPOSAL
Adams J CaudyArgentinaIoni Bowcher NEGOTIATION
Salvatore G KuskoGermanyIvan Magalhaes UNQUALIFIED
Clifford A StensethItalyBernardo Dominic NEW
Greenwood R BologniaCanadaXuxue Feng NEW
Claire B DilliardGermanyBernardo Dominic PROPOSAL
Munro N OstroskyRussiaIvan Magalhaes QUALIFIED
Aruna P RimRussiaAnna Fali QUALIFIED
Nicolas F NestleIndiaAsiya Javayant NEGOTIATION
Francesco X PaprockiArgentinaOnyama Limba PROPOSAL
Nicolas A RoysterCanadaOnyama Limba RENEWAL
Costa Q ShinkoCanadaIoni Bowcher RENEWAL
Salvatore R MaletRussiaBernardo Dominic RENEWAL
Aditya C DilliardJapanAnna Fali QUALIFIED
Tony Q AmigonCanadaXuxue Feng UNQUALIFIED
Jeanfrancois D PerinFranceOnyama Limba PROPOSAL
Maria S StensethJapanIvan Magalhaes PROPOSAL
Jeanfrancois W NickaArgentinaIvan Magalhaes PROPOSAL
David O BologniaBrazilAsiya Javayant NEW
Murillo Z BologniaAustraliaBernardo Dominic NEGOTIATION
Jones A FollerUnited KingdomAmy Elsner NEW
Mujtaba K ChuiArgentinaAmy Elsner QUALIFIED
Salvatore H KolmetzSpainAnna Fali QUALIFIED
Salvatore R GauchoItalyAsiya Javayant QUALIFIED
Ashley G KuskoGermanyAnna Fali PROPOSAL
Smith J PerinCanadaIvan Magalhaes QUALIFIED
Ashley B FigeroaUnited KingdomAsiya Javayant 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>