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
Julie B InouyeArgentinaOnyama Limba UNQUALIFIED
Kadeem D StensethBrazilIoni Bowcher RENEWAL
Maria N GauchoArgentinaAnna Fali UNQUALIFIED
James K BriddickSpainOnyama Limba NEGOTIATION
Francesco X SchemmerArgentinaElwin Sharvill PROPOSAL
Mayumi G MaletRussiaElwin Sharvill NEGOTIATION
Darci T MaletCanadaAsiya Javayant RENEWAL
Darci I DilliardGermanyBernardo Dominic RENEWAL
Kadeem Q StensethBrazilOnyama Limba NEW
Faith B GlickRussiaBernardo Dominic PROPOSAL
Ivar S DilliardIndiaBernardo Dominic NEGOTIATION
Murillo T PaprockiGermanyIoni Bowcher QUALIFIED
Johnson C GillianArgentinaElwin Sharvill RENEWAL
Smith K CaldareraGermanyOnyama Limba RENEWAL
Rodrigues Z WaycottRussiaAnna Fali QUALIFIED
Nicolas S FigeroaGermanyAsiya Javayant NEW
Octavia S ChuiAustraliaStephen Shaw NEGOTIATION
Alejandro E NickaSpainIvan Magalhaes RENEWAL
Izzy T DilliardFranceOnyama Limba PROPOSAL
Kaitlin Z GarufiBrazilOnyama Limba PROPOSAL
Tony D WhobreyCanadaAmy Elsner QUALIFIED
Wickens X MarrierRussiaIvan Magalhaes RENEWAL
Faith M GarufiUnited KingdomAnna Fali NEGOTIATION
Francesco H CaudySpainOnyama Limba UNQUALIFIED
Kaitlin Q DoeCanadaAsiya Javayant PROPOSAL
Isabel D OldroydItalyAsiya Javayant UNQUALIFIED
Darci H PerinFranceIoni Bowcher UNQUALIFIED
Julie X WhobreyAustraliaAsiya Javayant NEGOTIATION
Octavia O OstroskySpainAsiya Javayant NEW
Misaki K FerenczBrazilIvan Magalhaes RENEWAL
Antonio O GillianRussiaIoni Bowcher NEGOTIATION
Ivar Y PoquetteFranceIoni Bowcher RENEWAL
Silvio T StensethCanadaOnyama Limba RENEWAL
Deepesh F OstroskyJapanStephen Shaw QUALIFIED
Ashley I FlosiGermanyIvan Magalhaes UNQUALIFIED
Aruna F SchemmerItalyOnyama Limba UNQUALIFIED
Sinclair A MaletJapanAnna Fali PROPOSAL
Johnson Z FigeroaArgentinaStephen Shaw RENEWAL
Ricardo P SlusarskiFranceAnna Fali NEGOTIATION
Aika A IturbideFranceBernardo Dominic PROPOSAL
Sinclair S TollnerUnited KingdomAsiya Javayant RENEWAL
Jeanfrancois P MaletUnited KingdomBernardo Dominic PROPOSAL
Stacey L FerenczRussiaIvan Magalhaes RENEWAL
Maria I DilliardGermanyOnyama Limba UNQUALIFIED
Misaki B GauchoFranceAmy Elsner UNQUALIFIED
Salvatore R KolmetzAustraliaOnyama Limba UNQUALIFIED
Mujtaba D ShinkoGermanyIvan Magalhaes PROPOSAL
Misaki R WhobreyAustraliaAmy Elsner NEGOTIATION
Francesco E FerenczSpainBernardo Dominic NEW
Leon Y RoysterSpainBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ivar Z MorascaArgentinaAnna Fali RENEWAL
Tony L ButtJapanIvan Magalhaes PROPOSAL
Aruna J BowleyArgentinaIoni Bowcher PROPOSAL
Smith K OstroskySpainAsiya Javayant RENEWAL
Leja Z SergiIndiaIvan Magalhaes PROPOSAL
Jones R FlosiUnited KingdomAmy Elsner QUALIFIED
Mayumi B MarrierItalyBernardo Dominic PROPOSAL
Francesco V CaldareraGermanyOnyama Limba NEGOTIATION
Kaitlin L IturbideUnited KingdomElwin Sharvill RENEWAL
Isabel J CaldareraJapanIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jeanfrancois Z RutaGermany2024-03-29Benton, John B Jr NEGOTIATION43Amy Elsner
1001Nicolas E KolmetzFrance2024-04-13Printing Dimensions PROPOSAL33Bernardo Dominic
1002Morrow Z AmigonSpain2024-04-16Chapman, Ross E Esq RENEWAL6Anna Fali
1003Ivar R MarrierUnited Kingdom2024-04-21Morlong Associates QUALIFIED91Xuxue Feng
1004Mujtaba U BriddickJapan2024-04-05Truhlar And Truhlar Attys QUALIFIED28Asiya Javayant
1005Leon T VenereFrance2024-04-23Buckley Miller Wright RENEWAL32Elwin Sharvill
1006Deepesh O MorascaFrance2024-04-03Chemel, James L Cpa PROPOSAL0Asiya Javayant
1007Murillo X KuskoAustralia2024-03-29Rangoni Of Florence UNQUALIFIED58Xuxue Feng
1008Kaitlin X WhobreyUnited Kingdom2024-04-17Commercial Press UNQUALIFIED33Ioni Bowcher
1009Salvatore D VenereJapan2024-04-08Morlong Associates NEGOTIATION6Ioni Bowcher
1010Tony B SchemmerCanada2024-04-17Chanay, Jeffrey A Esq PROPOSAL89Xuxue Feng
1011Ricardo M PoquetteBrazil2024-04-08Chapman, Ross E Esq NEW97Ivan Magalhaes
1012Arvin Y GillianJapan2024-04-06Morlong Associates RENEWAL58Bernardo Dominic
1013Maisha U PerinBrazil2024-04-18Buckley Miller Wright NEW0Anna Fali
1014Aruna D MaletArgentina2024-04-27Chemel, James L Cpa QUALIFIED73Ivan Magalhaes
1015Munro W OstroskyItaly2024-04-01Truhlar And Truhlar Attys NEGOTIATION98Anna Fali
1016Adams X PerinFrance2024-04-02Chapman, Ross E Esq RENEWAL58Anna Fali
1017Ashley U MaletFrance2024-04-27Rousseaux, Michael Esq NEW33Bernardo Dominic
1018David T RulapaughGermany2024-04-22Benton, John B Jr NEGOTIATION61Ivan Magalhaes
1019Costa P TollnerJapan2024-04-26Chanay, Jeffrey A Esq NEW30Amy Elsner
1020Kadeem C VocelkaCanada2024-04-08Truhlar And Truhlar Attys NEW30Onyama Limba
1021Smith N RoysterArgentina2024-04-15Feiner Bros NEGOTIATION60Amy Elsner
1022Silvio Y GarufiIndia2024-04-18Buckley Miller Wright QUALIFIED76Elwin Sharvill
1023Arvin Q NestleArgentina2024-04-08Dorl, James J Esq NEW55Ioni Bowcher
1024Maisha O VocelkaFrance2024-04-04Rousseaux, Michael Esq QUALIFIED10Anna Fali
1025Jeanfrancois C NickaSpain2024-04-16Benton, John B Jr NEW70Bernardo Dominic
1026Misaki W CaudyRussia2024-04-14Benton, John B Jr NEGOTIATION46Bernardo Dominic
1027Emily I OldroydIndia2024-04-04Feltz Printing Service RENEWAL5Ioni Bowcher
1028Stacey N FerenczFrance2024-04-02Commercial Press NEW99Asiya Javayant
1029Ivar A NestleBrazil2024-04-15Chemel, James L Cpa NEGOTIATION82Xuxue Feng
1030Izzy A ShinkoAustralia2024-04-21Chemel, James L Cpa RENEWAL97Bernardo Dominic
1031Arvin Q MarrierFrance2024-04-17Benton, John B Jr NEW15Stephen Shaw
1032Juan K MaletItaly2024-04-21Rangoni Of Florence PROPOSAL33Xuxue Feng
1033Smith D OstroskyFrance2024-04-08Rousseaux, Michael Esq NEW61Onyama Limba
1034Francesco C RutaAustralia2024-04-15Morlong Associates QUALIFIED85Asiya Javayant
1035Cody C FollerIndia2024-04-07Printing Dimensions NEW15Ioni Bowcher
1036Adams V FlosiCanada2024-04-05Rousseaux, Michael Esq NEGOTIATION58Onyama Limba
1037James G DarakjyGermany2024-04-17Rangoni Of Florence PROPOSAL38Xuxue Feng
1038Jennifer B WaycottIndia2024-04-26Printing Dimensions NEW28Xuxue Feng
1039Kaitlin A ButtRussia2024-04-20Buckley Miller Wright NEW78Xuxue Feng
1040Munro C SchemmerSpain2024-04-25Morlong Associates NEW2Elwin Sharvill
1041Johnson A DoeRussia2024-04-07Rousseaux, Michael Esq QUALIFIED24Ivan Magalhaes
1042Costa P RimAustralia2024-04-02Dorl, James J Esq NEW47Elwin Sharvill
1043Arvin C SchemmerCanada2024-03-31Morlong Associates PROPOSAL84Anna Fali
1044Darci V DoeFrance2024-04-01Morlong Associates UNQUALIFIED81Xuxue Feng
1045Stacey W GauchoSpain2024-04-13Printing Dimensions QUALIFIED35Asiya Javayant
1046Costa I GarufiJapan2024-04-13Chanay, Jeffrey A Esq NEW28Amy Elsner
1047Munro U DarakjyBrazil2024-04-03Rangoni Of Florence UNQUALIFIED79Anna Fali
1048Julie P SchemmerRussia2024-04-18Chemel, James L Cpa UNQUALIFIED45Ioni Bowcher
1049Emily N PerinJapan2024-04-25Morlong Associates PROPOSAL92Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Jefferson J VenereIndiaXuxue Feng UNQUALIFIED
Morrow C GauchoGermanyAmy Elsner NEW
Izzy Y GlickUnited KingdomOnyama Limba UNQUALIFIED
Adams U AmigonFranceOnyama Limba NEW
Aika U WieserItalyIvan Magalhaes UNQUALIFIED
Stacey M WaycottFranceIvan Magalhaes UNQUALIFIED
Misaki F DarakjyAustraliaStephen Shaw UNQUALIFIED
Misaki Q ButtRussiaXuxue Feng QUALIFIED
Costa N CaudySpainStephen Shaw QUALIFIED
Francesco N ShinkoRussiaAnna Fali NEGOTIATION
Kaitlin G RutaIndiaOnyama Limba UNQUALIFIED
Leon D MaletBrazilIvan Magalhaes NEGOTIATION
Maria I KuskoCanadaBernardo Dominic NEGOTIATION
Johnson F SlusarskiJapanStephen Shaw RENEWAL
Silvio Y RimJapanStephen Shaw UNQUALIFIED
Juan P AlbaresCanadaIoni Bowcher UNQUALIFIED
Darci A PoquetteRussiaXuxue Feng QUALIFIED
Claire O VenereArgentinaAsiya Javayant RENEWAL
Salvatore G FollerRussiaAsiya Javayant UNQUALIFIED
Nicolas C TollnerItalyIoni Bowcher RENEWAL
Ivar B SlusarskiBrazilAmy Elsner RENEWAL
Rodrigues S FlosiJapanAnna Fali RENEWAL
Chavez J KolmetzSpainAmy Elsner RENEWAL
Clifford F BriddickItalyAnna Fali RENEWAL
Antonio B MarrierUnited KingdomOnyama Limba PROPOSAL
Octavia A CaudyAustraliaAnna Fali RENEWAL
Morrow D StockhamAustraliaAmy Elsner UNQUALIFIED
Greenwood I RulapaughCanadaBernardo Dominic PROPOSAL
Jennifer H BriddickGermanyAsiya Javayant PROPOSAL
Mayumi E BologniaAustraliaBernardo Dominic RENEWAL
Misaki N AmigonSpainIoni Bowcher NEW
Izzy E ButtBrazilAsiya Javayant RENEWAL
Leja N RulapaughGermanyOnyama Limba PROPOSAL
Antonio W TollnerArgentinaAmy Elsner RENEWAL
Ashley N RoysterIndiaAmy Elsner NEW
Clifford E BologniaRussiaAmy Elsner NEGOTIATION
Izzy B OstroskyRussiaAsiya Javayant NEW
Silvio Z MaletArgentinaAnna Fali QUALIFIED
Antonio N MaletAustraliaIoni Bowcher PROPOSAL
Aruna E TollnerFranceElwin Sharvill NEGOTIATION
Antonio D BologniaFranceElwin Sharvill PROPOSAL
Antonio Y MaletArgentinaAmy Elsner UNQUALIFIED
Maria H ChuiAustraliaStephen Shaw NEGOTIATION
David F GauchoBrazilBernardo Dominic PROPOSAL
Sinclair W OstroskyIndiaIvan Magalhaes NEW
Jennifer A WaycottGermanyElwin Sharvill NEW
Izzy A DoeGermanyXuxue Feng PROPOSAL
Adams W DilliardAustraliaOnyama Limba QUALIFIED
Adams Q RoysterUnited KingdomAnna Fali PROPOSAL
Maria N DarakjyGermanyAmy Elsner PROPOSAL
Frozen Columns
Name
Aditya G Briddick
Smith T Doe
Misaki B Dilliard
Arvin S Amigon
Leja S Butt
Julie S Ferencz
Arvin U Campain
Munro H Amigon
Munro V Flosi
Tony N Royster
Aruna R Kusko
Octavia H Sergi
Izzy G Butt
Greenwood J Butt
Jeanfrancois D Nestle
Julie E Glick
Maisha V Ostrosky
Izzy P Venere
Maria E Rulapaugh
Maria N Rim
Izzy N Iturbide
Julie G Inouye
Chavez Y Dilliard
Sinclair D Flosi
Aditya G Ferencz
Murillo Z Caudy
David N Sergi
Leon L Slusarski
Rodrigues W Malet
Morrow E Gaucho
Salvatore Q Stockham
Ashley L Nicka
Stacey X Morasca
Smith V Saylors
Jefferson C Chui
Octavia C Bowley
Smith J Paprocki
Darci N Butt
Julie B Amigon
Jones V Iturbide
Claire U Maclead
Leon P Venere
Leja V Ruta
Deepesh W Paprocki
Salvatore R Ferencz
Mayumi U Bowley
Kadeem P Vocelka
Darci R Butt
Misaki C Ferencz
Leon R Ostrosky
IdCountryDate
1000Italy2024-04-03
1001Italy2024-04-13
1002Spain2024-04-07
1003Germany2024-04-27
1004France2024-04-01
1005Japan2024-04-25
1006India2024-04-18
1007United Kingdom2024-04-06
1008Argentina2024-04-26
1009Japan2024-04-04
1010Spain2024-04-23
1011India2024-04-23
1012France2024-04-17
1013Argentina2024-04-23
1014United Kingdom2024-04-22
1015Canada2024-04-26
1016Brazil2024-04-02
1017Germany2024-04-25
1018Japan2024-04-04
1019Spain2024-04-09
1020Russia2024-03-29
1021Canada2024-04-09
1022France2024-04-13
1023Brazil2024-03-30
1024Germany2024-04-04
1025Brazil2024-04-03
1026Japan2024-04-05
1027Brazil2024-04-25
1028Spain2024-03-31
1029Russia2024-04-09
1030Germany2024-03-31
1031United Kingdom2024-04-13
1032Canada2024-04-13
1033India2024-04-04
1034Italy2024-04-10
1035United Kingdom2024-04-21
1036Australia2024-04-25
1037India2024-04-12
1038Japan2024-04-21
1039India2024-04-10
1040United Kingdom2024-04-02
1041United Kingdom2024-03-29
1042Spain2024-04-04
1043Germany2024-04-14
1044Canada2024-04-05
1045Brazil2024-04-11
1046Spain2024-04-05
1047Italy2024-04-09
1048India2024-04-27
1049Australia2024-04-16

On-Demand Data

NameIdCountryDate
Faith A Vocelka1000Australia2024-04-04
Morrow E Iturbide1001Canada2024-04-13
Wickens Q Whobrey1002India2024-04-27
Leon F Malet1003Brazil2024-04-26
Tony J Oldroyd1004France2024-04-04
Tony H Vocelka1005Germany2024-03-30
Aditya B Bolognia1006Brazil2024-04-23
Wickens T Flosi1007Italy2024-04-15
Antonio Z Stockham1008Russia2024-04-01
Munro B Sergi1009France2024-04-14
Adams J Tollner1010France2024-04-22
Antonio T Chui1011Spain2024-04-23
Julie Z Gaucho1012Russia2024-04-01
Murillo B Vocelka1013Australia2024-04-24
Morrow U Chui1014United Kingdom2024-04-07
Deepesh G Chui1015Japan2024-04-17
Smith N Nicka1016Spain2024-04-26
Julie U Tollner1017France2024-04-22
Arvin B Venere1018Germany2024-04-26
David T Paprocki1019Russia2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia R DarakjyRussiaStephen Shaw NEGOTIATION
Sinclair E RulapaughSpainAmy Elsner NEW
Mujtaba H MarrierRussiaIvan Magalhaes RENEWAL
Aruna F SlusarskiRussiaIvan Magalhaes PROPOSAL
Ivar L WhobreyRussiaAnna Fali NEW
Aditya Q BowleyIndiaAnna Fali RENEWAL
Claire D MarrierUnited KingdomOnyama Limba QUALIFIED
David S RutaBrazilIoni Bowcher PROPOSAL
Mujtaba E FigeroaFranceXuxue Feng PROPOSAL
Clifford N OstroskyFranceIoni Bowcher UNQUALIFIED
Cody I ShinkoCanadaBernardo Dominic UNQUALIFIED
Chavez D IturbideRussiaElwin Sharvill QUALIFIED
Julie G GillianFranceAnna Fali UNQUALIFIED
Silvio P MaletUnited KingdomBernardo Dominic QUALIFIED
Munro L FollerItalyOnyama Limba NEW
Ricardo W OldroydGermanyIvan Magalhaes PROPOSAL
Wickens E FerenczJapanAmy Elsner UNQUALIFIED
Jennifer T FollerJapanIoni Bowcher NEGOTIATION
Emily Z TollnerAustraliaIvan Magalhaes NEW
Maria D GillianJapanAnna Fali NEGOTIATION
Deepesh L MaletJapanAmy Elsner RENEWAL
Leon F VocelkaRussiaAnna Fali NEW
Silvio H CaldareraCanadaAnna Fali PROPOSAL
Aditya C ShinkoArgentinaAmy Elsner QUALIFIED
Claire W ButtGermanyXuxue Feng PROPOSAL
Smith J ChuiAustraliaIvan Magalhaes NEW
Juan V FollerUnited KingdomAmy Elsner UNQUALIFIED
Faith G AlbaresIndiaBernardo Dominic NEW
Jones D MorascaFranceIvan Magalhaes QUALIFIED
Greenwood P MaletArgentinaXuxue Feng UNQUALIFIED
Alejandro A FerenczItalyOnyama Limba PROPOSAL
Aika A VocelkaJapanAsiya Javayant PROPOSAL
Antonio J GlickArgentinaIvan Magalhaes QUALIFIED
Claire F CaldareraFranceElwin Sharvill NEGOTIATION
Munro D RulapaughCanadaBernardo Dominic NEGOTIATION
Maisha F StensethGermanyOnyama Limba UNQUALIFIED
Ivar B ChuiJapanOnyama Limba UNQUALIFIED
Kadeem B VocelkaGermanyBernardo Dominic QUALIFIED
Darci P VenereRussiaIoni Bowcher NEW
Faith H MaletArgentinaIoni Bowcher 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>