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
Izzy Y GillianJapanStephen Shaw QUALIFIED
Wickens O AlbaresBrazilAmy Elsner PROPOSAL
Greenwood Y MaletIndiaAmy Elsner NEGOTIATION
Aruna C FlosiUnited KingdomElwin Sharvill UNQUALIFIED
Aditya K NestleBrazilAnna Fali NEW
Kadeem U TollnerAustraliaIvan Magalhaes RENEWAL
Ashley V RoysterRussiaAmy Elsner UNQUALIFIED
Clifford E OldroydGermanyAsiya Javayant PROPOSAL
Ashley W AlbaresIndiaOnyama Limba UNQUALIFIED
Jennifer I DilliardBrazilAnna Fali NEGOTIATION
Stacey B FigeroaAustraliaAsiya Javayant PROPOSAL
Faith C BowleyAustraliaOnyama Limba NEW
Arvin L DilliardUnited KingdomElwin Sharvill NEW
Morrow S PoquetteGermanyOnyama Limba QUALIFIED
Faith F BriddickGermanyStephen Shaw RENEWAL
Antonio M NestleRussiaOnyama Limba QUALIFIED
Nicolas V MarrierUnited KingdomOnyama Limba UNQUALIFIED
Ivar E RimIndiaIvan Magalhaes PROPOSAL
Nicolas J GarufiFranceAsiya Javayant UNQUALIFIED
Maisha L CaldareraItalyIvan Magalhaes QUALIFIED
Jefferson K PaprockiArgentinaOnyama Limba PROPOSAL
Julie L MaletSpainElwin Sharvill RENEWAL
Juan Q RoysterJapanBernardo Dominic RENEWAL
Wickens W ShinkoItalyIvan Magalhaes PROPOSAL
Rodrigues W WaycottJapanOnyama Limba NEGOTIATION
Salvatore Z PaprockiIndiaBernardo Dominic NEGOTIATION
Ashley G PaprockiBrazilIoni Bowcher NEW
David V WhobreyRussiaAmy Elsner NEGOTIATION
Smith X GillianArgentinaXuxue Feng PROPOSAL
Ivar P ShinkoFranceAsiya Javayant QUALIFIED
Clifford J ShinkoRussiaXuxue Feng NEW
Faith X FlosiGermanyAmy Elsner UNQUALIFIED
Mayumi A KuskoIndiaIoni Bowcher RENEWAL
Salvatore Z WaycottBrazilXuxue Feng RENEWAL
Arvin Q PerinUnited KingdomXuxue Feng UNQUALIFIED
Maria H PaprockiSpainElwin Sharvill NEGOTIATION
Deepesh Y TollnerAustraliaAnna Fali PROPOSAL
David C CaldareraRussiaBernardo Dominic RENEWAL
Costa P RimGermanyAsiya Javayant NEGOTIATION
Arvin N WhobreyAustraliaOnyama Limba RENEWAL
Julie H IturbideCanadaStephen Shaw RENEWAL
Rodrigues U AlbaresFranceIoni Bowcher NEW
Greenwood M BowleyIndiaIoni Bowcher RENEWAL
Mayumi Q ButtAustraliaBernardo Dominic NEW
Salvatore L WhobreyFranceAmy Elsner NEW
Juan B VenereCanadaAmy Elsner NEW
James J GarufiUnited KingdomAsiya Javayant RENEWAL
Darci G BowleyBrazilElwin Sharvill UNQUALIFIED
Mayumi F DarakjyCanadaIvan Magalhaes RENEWAL
Aruna L BowleyIndiaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Antonio F CaldareraRussiaBernardo Dominic QUALIFIED
Aruna T MacleadAustraliaIoni Bowcher PROPOSAL
Morrow J NestleIndiaOnyama Limba PROPOSAL
Leon U MorascaRussiaStephen Shaw PROPOSAL
Aditya Y PoquetteUnited KingdomIoni Bowcher NEW
Isabel C InouyeAustraliaAmy Elsner RENEWAL
Tony J WhobreySpainIoni Bowcher RENEWAL
Kadeem T InouyeItalyBernardo Dominic NEGOTIATION
Jennifer D MorascaJapanBernardo Dominic NEW
Isabel K RimSpainAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro U GillianGermany2024-04-07Chemel, James L Cpa QUALIFIED28Stephen Shaw
1001Deepesh S StensethArgentina2024-04-24Printing Dimensions NEGOTIATION7Ivan Magalhaes
1002Chavez Q ChuiCanada2024-04-22Rangoni Of Florence NEGOTIATION42Onyama Limba
1003Leja K InouyeAustralia2024-04-09Printing Dimensions NEW25Onyama Limba
1004Kadeem A RimArgentina2024-05-02Chemel, James L Cpa NEGOTIATION74Bernardo Dominic
1005Jennifer W NickaArgentina2024-04-06Morlong Associates PROPOSAL38Bernardo Dominic
1006David W OstroskyJapan2024-04-07Chapman, Ross E Esq RENEWAL48Anna Fali
1007Smith A InouyeRussia2024-04-05Buckley Miller Wright QUALIFIED80Bernardo Dominic
1008Jennifer X KolmetzGermany2024-04-30Printing Dimensions PROPOSAL58Stephen Shaw
1009Silvio T AlbaresItaly2024-04-30Feltz Printing Service NEW84Elwin Sharvill
1010Leja S PerinBrazil2024-04-06Feiner Bros NEGOTIATION14Bernardo Dominic
1011Mujtaba W RoysterJapan2024-04-06Feiner Bros QUALIFIED98Bernardo Dominic
1012Jefferson L OldroydSpain2024-04-20King, Christopher A Esq UNQUALIFIED14Ivan Magalhaes
1013Emily M ButtCanada2024-04-19King, Christopher A Esq PROPOSAL36Anna Fali
1014Ricardo M ShinkoGermany2024-04-14King, Christopher A Esq NEW0Anna Fali
1015Nicolas A RulapaughJapan2024-04-04Chemel, James L Cpa PROPOSAL23Bernardo Dominic
1016Silvio B BriddickItaly2024-04-17King, Christopher A Esq PROPOSAL62Xuxue Feng
1017Morrow V StensethBrazil2024-04-03Rousseaux, Michael Esq NEGOTIATION33Anna Fali
1018Ashley L FollerGermany2024-04-03Printing Dimensions NEGOTIATION21Xuxue Feng
1019Morrow K ButtUnited Kingdom2024-04-29Rangoni Of Florence NEGOTIATION65Ivan Magalhaes
1020Deepesh Z FerenczBrazil2024-04-14Truhlar And Truhlar Attys UNQUALIFIED17Xuxue Feng
1021Arvin K RimUnited Kingdom2024-04-04Printing Dimensions RENEWAL33Asiya Javayant
1022Aika K MaletAustralia2024-04-24Buckley Miller Wright NEW33Anna Fali
1023David J RutaIndia2024-04-29Morlong Associates RENEWAL4Anna Fali
1024Aika A CaldareraRussia2024-04-04Chanay, Jeffrey A Esq QUALIFIED64Asiya Javayant
1025Costa B TollnerArgentina2024-04-25Commercial Press NEGOTIATION74Onyama Limba
1026Deepesh M IturbideGermany2024-04-22Chemel, James L Cpa PROPOSAL50Onyama Limba
1027Smith N WaycottSpain2024-04-14Dorl, James J Esq NEW70Ioni Bowcher
1028Alejandro X FollerGermany2024-04-26Buckley Miller Wright QUALIFIED87Asiya Javayant
1029Maria H DoeArgentina2024-04-29Chanay, Jeffrey A Esq QUALIFIED25Asiya Javayant
1030Chavez B SaylorsFrance2024-04-14Commercial Press RENEWAL56Anna Fali
1031Smith S DoeJapan2024-04-30Feltz Printing Service QUALIFIED45Bernardo Dominic
1032Aditya W BologniaCanada2024-05-02Commercial Press NEW92Amy Elsner
1033Salvatore G ButtCanada2024-04-20Chanay, Jeffrey A Esq NEGOTIATION25Amy Elsner
1034Julie S SergiUnited Kingdom2024-04-08Morlong Associates NEW50Anna Fali
1035Claire Q CaudyCanada2024-04-20Chanay, Jeffrey A Esq NEGOTIATION49Onyama Limba
1036Ricardo S FigeroaBrazil2024-04-04Truhlar And Truhlar Attys PROPOSAL78Bernardo Dominic
1037Isabel A SchemmerUnited Kingdom2024-04-18Feiner Bros QUALIFIED69Asiya Javayant
1038Clifford B FerenczRussia2024-04-08Truhlar And Truhlar Attys RENEWAL55Onyama Limba
1039Sinclair Y StensethItaly2024-04-10Benton, John B Jr NEW97Xuxue Feng
1040Morrow A CaudySpain2024-04-06King, Christopher A Esq NEGOTIATION64Amy Elsner
1041David I FerenczFrance2024-04-04Printing Dimensions PROPOSAL89Amy Elsner
1042Leja W GauchoArgentina2024-04-22Chapman, Ross E Esq QUALIFIED60Ioni Bowcher
1043Jefferson C TollnerJapan2024-04-21Printing Dimensions RENEWAL33Xuxue Feng
1044Darci D IturbideRussia2024-04-12Morlong Associates QUALIFIED68Xuxue Feng
1045James C NestleSpain2024-04-26King, Christopher A Esq RENEWAL1Anna Fali
1046Ivar X DarakjySpain2024-04-30Printing Dimensions RENEWAL89Bernardo Dominic
1047Leja D NestleItaly2024-04-05Rousseaux, Michael Esq NEGOTIATION76Anna Fali
1048David I BowleyArgentina2024-04-03Rousseaux, Michael Esq NEGOTIATION39Amy Elsner
1049Aruna P ShinkoFrance2024-04-28Chemel, James L Cpa RENEWAL4Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Izzy W StockhamUnited KingdomAsiya Javayant QUALIFIED
Mayumi G PoquetteFranceAmy Elsner UNQUALIFIED
Misaki T StensethArgentinaAmy Elsner NEGOTIATION
Rodrigues R StensethItalyIoni Bowcher UNQUALIFIED
Morrow F VocelkaRussiaAmy Elsner QUALIFIED
Francesco G SaylorsGermanyElwin Sharvill UNQUALIFIED
Octavia K StockhamItalyIoni Bowcher RENEWAL
Izzy X SaylorsSpainBernardo Dominic RENEWAL
Arvin A SlusarskiArgentinaAnna Fali UNQUALIFIED
Jones S MaletArgentinaIoni Bowcher NEGOTIATION
Murillo D BowleyCanadaBernardo Dominic RENEWAL
Adams T WhobreyAustraliaElwin Sharvill PROPOSAL
Arvin E FollerRussiaOnyama Limba PROPOSAL
David U MaletIndiaIoni Bowcher RENEWAL
Salvatore Y RoysterBrazilAsiya Javayant PROPOSAL
Ricardo U GillianArgentinaStephen Shaw PROPOSAL
Ricardo J ButtAustraliaIoni Bowcher NEW
Aika O OldroydUnited KingdomElwin Sharvill NEGOTIATION
Johnson I IturbideJapanIoni Bowcher NEW
Kaitlin F GlickGermanyStephen Shaw NEGOTIATION
Stacey L NestleSpainAnna Fali PROPOSAL
Sinclair E GarufiGermanyStephen Shaw RENEWAL
Mayumi I DarakjyGermanyAmy Elsner UNQUALIFIED
David H KolmetzAustraliaAmy Elsner UNQUALIFIED
Maria E KolmetzGermanyIvan Magalhaes UNQUALIFIED
Isabel O MaletFranceXuxue Feng RENEWAL
Emily G ChuiArgentinaIoni Bowcher RENEWAL
Salvatore B WieserItalyOnyama Limba NEGOTIATION
Tony D MaletCanadaStephen Shaw QUALIFIED
Arvin V MaletItalyXuxue Feng NEW
Arvin Y WieserAustraliaIoni Bowcher NEGOTIATION
Maisha O AlbaresCanadaIoni Bowcher RENEWAL
Cody L SergiRussiaOnyama Limba QUALIFIED
Arvin S AlbaresArgentinaElwin Sharvill NEGOTIATION
Nicolas R IturbideCanadaAmy Elsner NEW
Nicolas B RimSpainAnna Fali NEGOTIATION
Emily M PerinIndiaIoni Bowcher QUALIFIED
Smith B MaletFranceIoni Bowcher NEGOTIATION
Aditya L InouyeItalyBernardo Dominic NEW
Antonio J WhobreyFranceIoni Bowcher NEGOTIATION
Ashley W SergiAustraliaAmy Elsner NEW
Salvatore N DarakjyUnited KingdomXuxue Feng QUALIFIED
Octavia N PaprockiFranceAsiya Javayant QUALIFIED
Jennifer U OstroskyItalyOnyama Limba NEGOTIATION
Alejandro R PoquetteSpainAmy Elsner QUALIFIED
Izzy D DarakjyArgentinaXuxue Feng QUALIFIED
Emily P CampainBrazilIvan Magalhaes PROPOSAL
Aditya Y ChuiSpainIoni Bowcher RENEWAL
Johnson G CampainAustraliaAmy Elsner QUALIFIED
Ricardo V GarufiRussiaAmy Elsner QUALIFIED
Frozen Columns
Name
Murillo U Stenseth
Nicolas N Marrier
Cody G Waycott
Wickens E Albares
Greenwood P Rulapaugh
Stacey A Figeroa
Deepesh N Maclead
Leon L Inouye
Mayumi C Inouye
Morrow E Waycott
Stacey B Dilliard
Isabel A Saylors
Kaitlin E Perin
David P Ferencz
Antonio L Kusko
Ricardo J Nicka
Salvatore F Dilliard
Juan P Royster
Leja L Butt
Rodrigues J Doe
Leja O Garufi
Tony G Rim
Ricardo J Tollner
Ricardo D Caudy
Faith K Rulapaugh
Nicolas U Marrier
Clifford E Bolognia
Clifford Y Flosi
Johnson Y Venere
Misaki M Flosi
David Z Figeroa
Tony I Slusarski
Mayumi V Chui
Jefferson U Butt
Misaki G Butt
Nicolas K Briddick
Jones Z Albares
Juan N Figeroa
Aika E Rim
Adams K Chui
Tony P Caudy
Rodrigues E Rim
Munro Y Ostrosky
Octavia M Schemmer
Sinclair V Ferencz
Tony D Bolognia
Sinclair Y Caldarera
Leon Z Albares
Leon U Garufi
David P Campain
IdCountryDate
1000Germany2024-04-07
1001United Kingdom2024-04-12
1002Spain2024-04-21
1003United Kingdom2024-04-24
1004Argentina2024-04-17
1005Spain2024-04-10
1006Canada2024-05-02
1007France2024-04-21
1008Brazil2024-04-17
1009Germany2024-04-07
1010Italy2024-04-26
1011Spain2024-04-24
1012Russia2024-04-25
1013Germany2024-04-20
1014United Kingdom2024-04-04
1015Australia2024-04-11
1016Russia2024-04-19
1017Germany2024-04-30
1018Japan2024-04-03
1019United Kingdom2024-04-05
1020Argentina2024-04-04
1021Italy2024-04-06
1022France2024-04-10
1023India2024-05-02
1024Brazil2024-04-05
1025Argentina2024-04-20
1026United Kingdom2024-04-25
1027Germany2024-04-26
1028Argentina2024-04-19
1029Argentina2024-04-06
1030India2024-04-13
1031Brazil2024-04-14
1032Japan2024-04-13
1033India2024-04-10
1034Spain2024-04-05
1035Australia2024-04-29
1036Brazil2024-04-08
1037Australia2024-04-03
1038Brazil2024-04-21
1039Russia2024-04-21
1040Argentina2024-04-22
1041Brazil2024-04-18
1042Spain2024-04-07
1043France2024-04-06
1044Canada2024-04-22
1045France2024-04-07
1046United Kingdom2024-04-13
1047France2024-04-08
1048Brazil2024-04-06
1049India2024-04-14

On-Demand Data

NameIdCountryDate
Antonio I Malet1000Spain2024-04-14
Izzy C Royster1001Spain2024-04-04
Faith U Kolmetz1002Brazil2024-04-13
Juan Y Gaucho1003India2024-04-25
James N Stenseth1004Canada2024-04-25
Rodrigues G Figeroa1005India2024-04-09
Claire L Chui1006France2024-04-30
Ashley U Amigon1007Canada2024-04-29
Adams Q Flosi1008Brazil2024-04-23
Johnson B Waycott1009Spain2024-04-21
David F Campain1010Canada2024-04-05
Kadeem C Nestle1011India2024-05-01
Kadeem T Malet1012United Kingdom2024-04-27
Chavez G Doe1013Spain2024-04-10
Jefferson N Oldroyd1014Brazil2024-04-29
Ashley I Kolmetz1015Argentina2024-04-08
Stacey N Doe1016India2024-04-25
Misaki W Flosi1017Germany2024-04-26
James L Dilliard1018Argentina2024-04-04
Salvatore J Doe1019Brazil2024-04-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson S CampainFranceAmy Elsner NEGOTIATION
Rodrigues C TollnerAustraliaOnyama Limba QUALIFIED
Johnson T SaylorsUnited KingdomStephen Shaw QUALIFIED
Silvio M PaprockiFranceAsiya Javayant PROPOSAL
David U RoysterItalyAsiya Javayant NEW
Wickens N GlickJapanBernardo Dominic PROPOSAL
Maria O AmigonBrazilIvan Magalhaes UNQUALIFIED
Nicolas M MacleadSpainAnna Fali UNQUALIFIED
Aruna R CaldareraJapanIoni Bowcher QUALIFIED
Maria Q GlickUnited KingdomOnyama Limba QUALIFIED
Arvin M WhobreyBrazilAsiya Javayant UNQUALIFIED
Emily B OldroydUnited KingdomAsiya Javayant NEW
Murillo M SergiCanadaXuxue Feng QUALIFIED
Munro Y NestleSpainAmy Elsner NEGOTIATION
Darci V DoeIndiaIoni Bowcher NEW
Arvin B StockhamSpainAsiya Javayant UNQUALIFIED
Munro N MacleadBrazilOnyama Limba NEGOTIATION
Aika J SlusarskiUnited KingdomStephen Shaw PROPOSAL
Emily P ChuiIndiaIoni Bowcher UNQUALIFIED
Morrow P CampainJapanAsiya Javayant PROPOSAL
Jeanfrancois G AlbaresIndiaXuxue Feng NEGOTIATION
James X ButtUnited KingdomElwin Sharvill PROPOSAL
Deepesh K InouyeFranceStephen Shaw NEW
Johnson A SergiItalyIoni Bowcher RENEWAL
Emily Q SaylorsRussiaStephen Shaw RENEWAL
Darci C FigeroaArgentinaIoni Bowcher UNQUALIFIED
Maria N RimJapanAmy Elsner UNQUALIFIED
Chavez M AlbaresRussiaElwin Sharvill NEW
Munro B InouyeBrazilAmy Elsner PROPOSAL
Wickens O FlosiSpainBernardo Dominic RENEWAL
Johnson N OldroydCanadaIoni Bowcher PROPOSAL
Claire U ButtRussiaBernardo Dominic NEGOTIATION
Greenwood I OstroskyCanadaBernardo Dominic RENEWAL
Misaki R CampainItalyAsiya Javayant RENEWAL
Munro C SergiGermanyOnyama Limba PROPOSAL
Emily B KuskoJapanIvan Magalhaes PROPOSAL
Aika H NestleCanadaIoni Bowcher NEW
Ashley V WhobreyBrazilOnyama Limba UNQUALIFIED
Leon H MorascaAustraliaAnna Fali NEW
Aruna W PerinIndiaStephen Shaw PROPOSAL

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