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
Leon Z BowleyArgentinaIoni Bowcher NEW
Silvio I DilliardJapanOnyama Limba RENEWAL
Tony B RutaFranceElwin Sharvill UNQUALIFIED
Aditya M DilliardSpainAmy Elsner NEGOTIATION
Julie A AmigonUnited KingdomElwin Sharvill UNQUALIFIED
Arvin P FollerJapanStephen Shaw NEW
Misaki A SchemmerCanadaIoni Bowcher RENEWAL
Mujtaba M DarakjyCanadaIvan Magalhaes NEGOTIATION
Ricardo B SaylorsGermanyStephen Shaw RENEWAL
Misaki E AlbaresFranceStephen Shaw RENEWAL
Ashley C GauchoUnited KingdomStephen Shaw QUALIFIED
Tony J DoeFranceAmy Elsner QUALIFIED
Ricardo N VenereGermanyIvan Magalhaes NEGOTIATION
Darci K AlbaresItalyXuxue Feng UNQUALIFIED
Costa H ChuiSpainAmy Elsner PROPOSAL
Leja C NestleArgentinaIvan Magalhaes UNQUALIFIED
Kadeem O TollnerUnited KingdomIoni Bowcher RENEWAL
Julie S ChuiBrazilElwin Sharvill QUALIFIED
Mujtaba V KuskoGermanyBernardo Dominic NEGOTIATION
Johnson Y FlosiFranceAsiya Javayant UNQUALIFIED
Morrow P SergiItalyOnyama Limba NEW
Kadeem T IturbideBrazilAmy Elsner UNQUALIFIED
Antonio X FlosiItalyOnyama Limba NEGOTIATION
Sinclair N OstroskyIndiaAsiya Javayant NEGOTIATION
Leon K PaprockiFranceIvan Magalhaes RENEWAL
Cody K MaletUnited KingdomAsiya Javayant NEW
Chavez W PerinFranceIoni Bowcher RENEWAL
Johnson X CampainBrazilOnyama Limba RENEWAL
Smith V KuskoAustraliaElwin Sharvill UNQUALIFIED
Julie C BriddickFranceIvan Magalhaes QUALIFIED
Mujtaba X SaylorsIndiaBernardo Dominic NEW
Rodrigues S DilliardBrazilStephen Shaw UNQUALIFIED
James B TollnerBrazilAmy Elsner PROPOSAL
Stacey T StockhamBrazilAnna Fali NEW
Ivar F GauchoAustraliaOnyama Limba NEW
Isabel C NestleArgentinaElwin Sharvill PROPOSAL
Munro R SaylorsCanadaOnyama Limba NEGOTIATION
Darci Q BriddickRussiaIvan Magalhaes NEW
Antonio C KolmetzUnited KingdomStephen Shaw UNQUALIFIED
Johnson A RutaIndiaXuxue Feng NEW
Adams T NestleArgentinaElwin Sharvill NEGOTIATION
Morrow Q StensethSpainAmy Elsner PROPOSAL
Chavez R FigeroaFranceIoni Bowcher QUALIFIED
Maria D DilliardArgentinaIoni Bowcher PROPOSAL
Arvin O SergiFranceAsiya Javayant RENEWAL
David R RutaJapanBernardo Dominic RENEWAL
Deepesh L SergiCanadaOnyama Limba PROPOSAL
Darci Q DilliardUnited KingdomOnyama Limba NEW
Misaki N VenereFranceAsiya Javayant PROPOSAL
Aruna M PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro M SaylorsJapanIvan Magalhaes RENEWAL
Greenwood K RoysterUnited KingdomXuxue Feng NEW
Francesco U WieserItalyAnna Fali NEW
Octavia K GillianGermanyAsiya Javayant QUALIFIED
Salvatore W NestleSpainAmy Elsner QUALIFIED
Arvin J PerinBrazilIvan Magalhaes NEW
Smith H OldroydRussiaIoni Bowcher NEGOTIATION
Greenwood Y AmigonArgentinaAnna Fali PROPOSAL
Antonio Z MaletCanadaXuxue Feng RENEWAL
Francesco B FlosiUnited KingdomOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna G StensethFrance2024-04-21Rousseaux, Michael Esq NEW13Ivan Magalhaes
1001Aika X TollnerGermany2024-04-09Truhlar And Truhlar Attys RENEWAL34Asiya Javayant
1002Jennifer P FlosiGermany2024-04-19Feltz Printing Service NEW63Elwin Sharvill
1003Silvio Z SlusarskiBrazil2024-04-21Commercial Press QUALIFIED91Bernardo Dominic
1004David O SergiGermany2024-03-29Chemel, James L Cpa NEW22Stephen Shaw
1005Arvin L AlbaresUnited Kingdom2024-03-28King, Christopher A Esq PROPOSAL52Ivan Magalhaes
1006Jennifer M KolmetzSpain2024-04-05Chanay, Jeffrey A Esq RENEWAL2Stephen Shaw
1007Arvin W CaudySpain2024-04-10Chanay, Jeffrey A Esq RENEWAL40Ioni Bowcher
1008Ricardo A FigeroaRussia2024-04-08Commercial Press NEW96Amy Elsner
1009Johnson O ShinkoIndia2024-04-01Buckley Miller Wright UNQUALIFIED16Xuxue Feng
1010Jones D NestleGermany2024-04-14Chapman, Ross E Esq PROPOSAL8Anna Fali
1011Leon U StockhamItaly2024-04-08Chemel, James L Cpa UNQUALIFIED99Asiya Javayant
1012Ivar C SergiGermany2024-04-18Chemel, James L Cpa PROPOSAL68Ivan Magalhaes
1013Kaitlin P CaldareraRussia2024-04-14King, Christopher A Esq PROPOSAL90Asiya Javayant
1014Munro W ShinkoCanada2024-04-10Benton, John B Jr NEGOTIATION27Onyama Limba
1015Mujtaba L MaletItaly2024-03-27Buckley Miller Wright RENEWAL12Ioni Bowcher
1016Smith D BologniaItaly2024-03-25Dorl, James J Esq UNQUALIFIED40Stephen Shaw
1017Munro E InouyeItaly2024-04-03Printing Dimensions RENEWAL81Ivan Magalhaes
1018Stacey I MorascaJapan2024-04-06King, Christopher A Esq RENEWAL67Bernardo Dominic
1019Julie P GauchoJapan2024-04-20King, Christopher A Esq NEW19Anna Fali
1020Misaki A OldroydUnited Kingdom2024-04-14Chemel, James L Cpa NEW83Onyama Limba
1021Sinclair S AlbaresArgentina2024-04-15Feiner Bros UNQUALIFIED57Elwin Sharvill
1022Izzy N OstroskyJapan2024-04-22Benton, John B Jr NEGOTIATION79Asiya Javayant
1023Arvin C NickaUnited Kingdom2024-04-10Truhlar And Truhlar Attys RENEWAL13Onyama Limba
1024Nicolas N GlickBrazil2024-04-08Morlong Associates QUALIFIED23Ioni Bowcher
1025Morrow R RulapaughIndia2024-04-10Rangoni Of Florence RENEWAL1Ioni Bowcher
1026Munro B BriddickGermany2024-04-04Chapman, Ross E Esq NEGOTIATION16Bernardo Dominic
1027Jeanfrancois D ChuiFrance2024-04-17Chapman, Ross E Esq QUALIFIED48Anna Fali
1028Chavez C CampainRussia2024-04-02Rousseaux, Michael Esq QUALIFIED6Asiya Javayant
1029Ashley J FlosiRussia2024-04-19Chemel, James L Cpa NEGOTIATION59Amy Elsner
1030Leon H BriddickJapan2024-04-07Chapman, Ross E Esq RENEWAL19Amy Elsner
1031Jeanfrancois H IturbideSpain2024-04-11Buckley Miller Wright PROPOSAL4Xuxue Feng
1032Murillo G MacleadItaly2024-04-01Printing Dimensions UNQUALIFIED26Onyama Limba
1033Faith O GlickAustralia2024-04-15Morlong Associates RENEWAL99Amy Elsner
1034Stacey Y InouyeJapan2024-04-04Printing Dimensions PROPOSAL37Xuxue Feng
1035Misaki Q FigeroaItaly2024-04-03Chapman, Ross E Esq NEW54Onyama Limba
1036Morrow L MarrierIndia2024-04-19Commercial Press QUALIFIED78Onyama Limba
1037Juan W FerenczJapan2024-03-29Morlong Associates NEW54Anna Fali
1038Stacey T CaldareraRussia2024-03-26Rousseaux, Michael Esq UNQUALIFIED39Anna Fali
1039Clifford X PerinBrazil2024-04-08Benton, John B Jr RENEWAL46Stephen Shaw
1040James L WieserRussia2024-04-23Feltz Printing Service QUALIFIED99Elwin Sharvill
1041Misaki B DarakjyArgentina2024-04-10Feltz Printing Service RENEWAL57Bernardo Dominic
1042Jefferson W ShinkoGermany2024-04-05Chapman, Ross E Esq QUALIFIED55Stephen Shaw
1043Wickens M SchemmerJapan2024-04-12Dorl, James J Esq UNQUALIFIED19Anna Fali
1044Izzy N StensethRussia2024-04-05Commercial Press QUALIFIED77Xuxue Feng
1045Isabel D FigeroaBrazil2024-04-09Commercial Press QUALIFIED26Asiya Javayant
1046David D MaletAustralia2024-03-27Feltz Printing Service UNQUALIFIED2Anna Fali
1047Aditya M KolmetzArgentina2024-03-27Buckley Miller Wright PROPOSAL52Onyama Limba
1048Rodrigues F PoquetteArgentina2024-04-08Benton, John B Jr PROPOSAL73Ioni Bowcher
1049Isabel M DoeIndia2024-04-12Buckley Miller Wright NEGOTIATION79Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Murillo H AlbaresFranceBernardo Dominic PROPOSAL
Ricardo Z FigeroaFranceAsiya Javayant RENEWAL
Smith V CaudyIndiaAsiya Javayant UNQUALIFIED
Ricardo D AmigonIndiaAsiya Javayant NEW
Smith S VocelkaCanadaAnna Fali QUALIFIED
Murillo S CampainSpainElwin Sharvill NEGOTIATION
Juan E InouyeFranceStephen Shaw NEW
Greenwood E WhobreyAustraliaElwin Sharvill PROPOSAL
Aruna G RutaItalyAmy Elsner RENEWAL
Aditya I NestleFranceElwin Sharvill UNQUALIFIED
Kaitlin R IturbideBrazilOnyama Limba PROPOSAL
Ricardo P DilliardIndiaStephen Shaw NEGOTIATION
Arvin K MaletFranceAmy Elsner NEGOTIATION
Sinclair N FerenczGermanyIvan Magalhaes RENEWAL
Arvin W TollnerUnited KingdomXuxue Feng PROPOSAL
Claire Q RulapaughItalyAsiya Javayant NEGOTIATION
Chavez H GlickIndiaOnyama Limba NEGOTIATION
Deepesh Q PoquetteFranceAsiya Javayant RENEWAL
Aika W MorascaAustraliaAsiya Javayant NEW
Kaitlin J DilliardRussiaIoni Bowcher QUALIFIED
Morrow M SaylorsBrazilAsiya Javayant NEGOTIATION
Johnson K WieserGermanyIvan Magalhaes NEW
Leja L SchemmerArgentinaIoni Bowcher PROPOSAL
Leja S BologniaSpainIoni Bowcher NEW
Misaki F NestleRussiaStephen Shaw UNQUALIFIED
Julie Z CaudyBrazilBernardo Dominic PROPOSAL
Kaitlin Y MacleadSpainXuxue Feng NEGOTIATION
Murillo M ChuiBrazilIvan Magalhaes NEW
Misaki L KolmetzUnited KingdomStephen Shaw QUALIFIED
Ricardo B FigeroaIndiaOnyama Limba NEGOTIATION
Maria O DarakjyAustraliaAnna Fali QUALIFIED
Ashley C GauchoAustraliaXuxue Feng QUALIFIED
Morrow B PerinIndiaOnyama Limba QUALIFIED
Leja K PoquetteIndiaOnyama Limba RENEWAL
Emily L RutaSpainIvan Magalhaes PROPOSAL
Silvio N BriddickUnited KingdomOnyama Limba PROPOSAL
James U AlbaresAustraliaElwin Sharvill RENEWAL
Murillo Q FigeroaItalyAmy Elsner NEGOTIATION
Munro T OstroskyCanadaElwin Sharvill RENEWAL
Salvatore I WhobreyGermanyAsiya Javayant NEW
Chavez Y GauchoAustraliaStephen Shaw NEGOTIATION
Murillo H PoquetteGermanyIvan Magalhaes QUALIFIED
Aruna X FerenczIndiaAmy Elsner UNQUALIFIED
Isabel R PaprockiJapanAmy Elsner NEW
Julie R RimFranceIoni Bowcher RENEWAL
Sinclair A PaprockiRussiaOnyama Limba PROPOSAL
Izzy Q InouyeArgentinaElwin Sharvill PROPOSAL
Mayumi K InouyeArgentinaBernardo Dominic UNQUALIFIED
Juan Q GillianCanadaElwin Sharvill NEW
Smith D MarrierSpainAnna Fali RENEWAL
Frozen Columns
Name
Emily R Gaucho
Silvio K Darakjy
Julie K Stockham
Ricardo R Shinko
Faith E Darakjy
Maisha K Darakjy
Nicolas O Schemmer
Johnson P Bowley
Sinclair Y Nicka
Jeanfrancois L Poquette
Mujtaba O Bolognia
Claire F Ferencz
Cody O Flosi
Aika R Morasca
Chavez T Shinko
Misaki V Nicka
Faith N Iturbide
Sinclair A Nestle
Johnson Z Bowley
Jennifer U Poquette
Antonio F Poquette
Emily U Bolognia
Greenwood J Vocelka
Octavia Z Inouye
Silvio P Nestle
Munro Y Caldarera
Izzy U Shinko
Tony D Caudy
Tony B Morasca
Cody P Kolmetz
Greenwood X Perin
Leja X Royster
Nicolas F Glick
Mayumi U Darakjy
Juan O Stenseth
Munro G Kolmetz
Ivar Z Slusarski
Tony A Oldroyd
Isabel K Venere
Arvin V Rim
Faith E Stockham
Salvatore E Chui
Octavia K Royster
Jennifer Z Waycott
Rodrigues L Darakjy
Francesco K Royster
Arvin P Stenseth
Misaki H Inouye
Misaki G Sergi
Francesco I Foller
IdCountryDate
1000Canada2024-04-21
1001Australia2024-04-15
1002Italy2024-04-07
1003Japan2024-04-14
1004Russia2024-03-26
1005Brazil2024-04-14
1006Australia2024-04-02
1007India2024-04-17
1008Brazil2024-03-25
1009Canada2024-04-03
1010United Kingdom2024-03-27
1011Brazil2024-04-03
1012Italy2024-03-29
1013Japan2024-04-17
1014Canada2024-03-27
1015Australia2024-04-07
1016Spain2024-03-26
1017Canada2024-04-22
1018Japan2024-04-07
1019France2024-04-23
1020India2024-03-29
1021United Kingdom2024-04-11
1022Germany2024-04-02
1023Canada2024-04-08
1024Canada2024-04-13
1025India2024-04-19
1026Japan2024-03-28
1027France2024-04-11
1028Spain2024-04-11
1029Japan2024-03-25
1030Argentina2024-04-03
1031Italy2024-04-02
1032Canada2024-04-11
1033Argentina2024-04-16
1034Argentina2024-03-29
1035Argentina2024-04-04
1036Russia2024-03-27
1037India2024-04-21
1038Australia2024-04-20
1039Russia2024-04-05
1040Japan2024-04-19
1041India2024-04-21
1042Argentina2024-04-09
1043Spain2024-04-19
1044Italy2024-04-02
1045Brazil2024-03-26
1046India2024-04-11
1047United Kingdom2024-04-06
1048Russia2024-04-05
1049Argentina2024-04-09

On-Demand Data

NameIdCountryDate
Murillo E Oldroyd1000Brazil2024-03-27
Jeanfrancois P Albares1001Brazil2024-04-21
Kaitlin R Figeroa1002Canada2024-03-26
Aditya R Dilliard1003Argentina2024-03-25
Johnson Z Dilliard1004Brazil2024-04-16
Smith P Albares1005Australia2024-04-02
Maisha D Figeroa1006Argentina2024-03-31
Emily P Malet1007Spain2024-04-14
Antonio G Schemmer1008Italy2024-03-29
Mujtaba S Stenseth1009India2024-04-05
Leja M Ostrosky1010United Kingdom2024-04-20
Emily Y Ferencz1011United Kingdom2024-04-05
Ivar O Poquette1012United Kingdom2024-04-02
Ivar V Foller1013Japan2024-04-11
Darci H Flosi1014India2024-04-13
Ricardo Q Malet1015United Kingdom2024-04-12
Kadeem N Nestle1016United Kingdom2024-04-01
Julie L Schemmer1017Australia2024-03-29
Munro S Foller1018France2024-04-16
Maisha R Doe1019France2024-03-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci V WaycottRussiaBernardo Dominic NEW
Clifford R MaletGermanyAnna Fali RENEWAL
Faith A MarrierAustraliaStephen Shaw QUALIFIED
Silvio R VenereAustraliaAnna Fali RENEWAL
Wickens Y PaprockiJapanBernardo Dominic RENEWAL
Emily E RutaAustraliaAnna Fali NEW
Arvin K FollerBrazilOnyama Limba UNQUALIFIED
Mayumi U SergiSpainAnna Fali QUALIFIED
Maisha O WhobreyJapanIvan Magalhaes RENEWAL
Jones W NickaFranceBernardo Dominic UNQUALIFIED
Maisha T ChuiFranceAmy Elsner QUALIFIED
Maria O NestleCanadaAsiya Javayant NEW
Alejandro T GauchoSpainBernardo Dominic UNQUALIFIED
Jefferson J VenereFranceAmy Elsner NEGOTIATION
Isabel F MaletAustraliaXuxue Feng PROPOSAL
Julie S TollnerArgentinaElwin Sharvill NEW
Morrow O MarrierBrazilIoni Bowcher NEW
Kaitlin Q NestleBrazilAnna Fali NEGOTIATION
Maisha S SlusarskiJapanAsiya Javayant NEW
Maisha J RimGermanyElwin Sharvill PROPOSAL
Smith N DilliardBrazilOnyama Limba NEW
Emily T GarufiUnited KingdomBernardo Dominic NEGOTIATION
Leja U CaldareraIndiaAmy Elsner PROPOSAL
Jeanfrancois H KuskoAustraliaElwin Sharvill NEW
Aruna Z NickaJapanElwin Sharvill NEW
Octavia F AmigonBrazilElwin Sharvill NEGOTIATION
Ricardo Q RimItalyOnyama Limba NEW
Francesco L ButtBrazilAmy Elsner RENEWAL
Octavia H ChuiAustraliaIvan Magalhaes QUALIFIED
Chavez A PoquetteBrazilAmy Elsner NEW
Silvio N InouyeUnited KingdomAsiya Javayant RENEWAL
Claire P DarakjyItalyElwin Sharvill NEW
Mayumi W DarakjyItalyAmy Elsner RENEWAL
Munro G OldroydArgentinaXuxue Feng PROPOSAL
David B VenereJapanElwin Sharvill UNQUALIFIED
Smith C GarufiAustraliaAsiya Javayant UNQUALIFIED
Johnson Y KuskoAustraliaElwin Sharvill UNQUALIFIED
Darci S CaudyAustraliaAmy Elsner NEGOTIATION
Maria J CaudyAustraliaAmy Elsner UNQUALIFIED
Rodrigues X BriddickJapanStephen Shaw 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>