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
Cody I OldroydJapanIvan Magalhaes PROPOSAL
Maisha D CaldareraFranceAsiya Javayant QUALIFIED
Silvio U StensethAustraliaOnyama Limba NEW
Isabel R PaprockiItalyBernardo Dominic NEW
Mayumi X AlbaresIndiaOnyama Limba QUALIFIED
Ivar O OstroskyAustraliaAsiya Javayant PROPOSAL
Rodrigues Z MorascaSpainIoni Bowcher QUALIFIED
Antonio J PoquetteRussiaStephen Shaw NEW
Nicolas U RimCanadaIvan Magalhaes NEGOTIATION
Aditya F RulapaughCanadaElwin Sharvill QUALIFIED
Maisha E ShinkoArgentinaAmy Elsner NEW
Aika S PaprockiSpainBernardo Dominic QUALIFIED
Antonio F ChuiSpainAsiya Javayant NEW
David J NickaSpainIvan Magalhaes QUALIFIED
Costa G KolmetzSpainIoni Bowcher PROPOSAL
Nicolas P MacleadJapanElwin Sharvill NEW
Arvin O VenereIndiaBernardo Dominic QUALIFIED
Julie B BriddickRussiaBernardo Dominic QUALIFIED
Izzy V AlbaresBrazilIvan Magalhaes NEGOTIATION
Octavia P ChuiBrazilStephen Shaw NEGOTIATION
Ricardo A IturbideGermanyAnna Fali UNQUALIFIED
Julie W FlosiCanadaOnyama Limba RENEWAL
Salvatore J SergiJapanAsiya Javayant UNQUALIFIED
Darci Y RoysterFranceIoni Bowcher QUALIFIED
Leja Y ShinkoSpainAnna Fali PROPOSAL
Deepesh A PaprockiFranceIoni Bowcher NEW
Wickens K MacleadIndiaXuxue Feng RENEWAL
Jeanfrancois M BowleyIndiaIoni Bowcher RENEWAL
Leja U GauchoUnited KingdomOnyama Limba NEW
Maria Y SaylorsCanadaElwin Sharvill PROPOSAL
Jennifer D NestleArgentinaAsiya Javayant NEGOTIATION
Faith G FigeroaJapanIvan Magalhaes NEGOTIATION
Maria M KolmetzArgentinaAmy Elsner NEW
Isabel D SchemmerItalyOnyama Limba QUALIFIED
Rodrigues B ShinkoBrazilElwin Sharvill UNQUALIFIED
Deepesh O GauchoCanadaAnna Fali NEW
Nicolas Y WhobreyUnited KingdomAsiya Javayant NEW
Faith F WhobreyJapanAnna Fali QUALIFIED
Deepesh Q BriddickCanadaAmy Elsner RENEWAL
Mujtaba K NickaCanadaStephen Shaw NEGOTIATION
Faith J IturbideCanadaElwin Sharvill NEW
Salvatore V PerinUnited KingdomIoni Bowcher UNQUALIFIED
Silvio V BriddickBrazilAsiya Javayant RENEWAL
Aditya I StockhamArgentinaAmy Elsner NEW
Kadeem V RutaIndiaBernardo Dominic NEGOTIATION
James T TollnerUnited KingdomIoni Bowcher NEW
Ivar W BowleySpainBernardo Dominic RENEWAL
Isabel W MaletJapanIvan Magalhaes QUALIFIED
Ivar U TollnerJapanStephen Shaw QUALIFIED
Johnson E MarrierUnited KingdomBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois E ShinkoRussiaIvan Magalhaes RENEWAL
Deepesh R RimArgentinaStephen Shaw PROPOSAL
Antonio I TollnerBrazilOnyama Limba QUALIFIED
Jones A SchemmerCanadaBernardo Dominic PROPOSAL
Leja U CaudyUnited KingdomBernardo Dominic UNQUALIFIED
Juan N FlosiAustraliaStephen Shaw UNQUALIFIED
Leja Q WaycottUnited KingdomXuxue Feng RENEWAL
Leja R GarufiItalyOnyama Limba NEGOTIATION
Maria L KuskoItalyIoni Bowcher NEGOTIATION
Wickens Z GauchoSpainAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody Q InouyeUnited Kingdom2024-04-25Printing Dimensions NEGOTIATION62Stephen Shaw
1001Izzy R KolmetzSpain2024-04-16King, Christopher A Esq RENEWAL72Anna Fali
1002Darci J VenereBrazil2024-04-02Feltz Printing Service NEW95Amy Elsner
1003Wickens C OldroydItaly2024-04-17Truhlar And Truhlar Attys NEGOTIATION97Ioni Bowcher
1004Alejandro Z CaldareraFrance2024-04-15Printing Dimensions UNQUALIFIED16Elwin Sharvill
1005Maria X WieserFrance2024-04-13Printing Dimensions RENEWAL67Ivan Magalhaes
1006James S VocelkaSpain2024-04-19Rousseaux, Michael Esq UNQUALIFIED83Ivan Magalhaes
1007Mayumi D MaletCanada2024-04-23Dorl, James J Esq QUALIFIED45Bernardo Dominic
1008Ricardo G IturbideSpain2024-04-17Dorl, James J Esq RENEWAL54Xuxue Feng
1009Chavez M GillianJapan2024-04-02Morlong Associates NEW2Anna Fali
1010Aditya R RulapaughSpain2024-04-12King, Christopher A Esq RENEWAL57Xuxue Feng
1011Aditya L PaprockiGermany2024-04-27Commercial Press PROPOSAL57Anna Fali
1012Leja F VenereAustralia2024-04-10Printing Dimensions QUALIFIED4Elwin Sharvill
1013Antonio Y IturbideJapan2024-04-19Rousseaux, Michael Esq PROPOSAL32Stephen Shaw
1014Adams Y DilliardFrance2024-04-19Benton, John B Jr NEGOTIATION49Anna Fali
1015Darci Y GauchoIndia2024-04-09Buckley Miller Wright RENEWAL54Onyama Limba
1016Misaki Y StensethFrance2024-04-23Morlong Associates UNQUALIFIED62Asiya Javayant
1017Claire W BologniaBrazil2024-04-06Chapman, Ross E Esq NEW56Xuxue Feng
1018Deepesh U DarakjyAustralia2024-04-27Printing Dimensions PROPOSAL83Stephen Shaw
1019Octavia Y MaletItaly2024-04-03Benton, John B Jr UNQUALIFIED12Bernardo Dominic
1020Costa Q RoysterAustralia2024-04-20Truhlar And Truhlar Attys RENEWAL24Bernardo Dominic
1021Maria R SchemmerItaly2024-04-23Benton, John B Jr QUALIFIED53Asiya Javayant
1022Adams K RulapaughUnited Kingdom2024-04-21Feltz Printing Service NEGOTIATION83Xuxue Feng
1023Juan F MaletArgentina2024-04-01Chapman, Ross E Esq NEW91Ioni Bowcher
1024Mujtaba E AlbaresSpain2024-04-02Truhlar And Truhlar Attys NEW22Onyama Limba
1025Francesco L InouyeBrazil2024-04-03King, Christopher A Esq RENEWAL24Stephen Shaw
1026Emily O PoquetteUnited Kingdom2024-04-10Feltz Printing Service NEW80Asiya Javayant
1027Claire V FlosiSpain2024-04-26Truhlar And Truhlar Attys NEGOTIATION90Bernardo Dominic
1028Leon R WaycottIndia2024-04-17Feltz Printing Service QUALIFIED25Ioni Bowcher
1029Izzy D GlickIndia2024-04-11Morlong Associates QUALIFIED2Amy Elsner
1030Aika E GarufiCanada2024-04-28Chemel, James L Cpa PROPOSAL86Onyama Limba
1031Kadeem E RimCanada2024-04-26Benton, John B Jr QUALIFIED87Ivan Magalhaes
1032Adams U VenereFrance2024-04-07Feltz Printing Service UNQUALIFIED92Ioni Bowcher
1033Morrow E CaldareraIndia2024-04-14Chanay, Jeffrey A Esq UNQUALIFIED43Elwin Sharvill
1034Tony D OldroydGermany2024-04-12Feltz Printing Service UNQUALIFIED63Bernardo Dominic
1035Nicolas J DarakjyUnited Kingdom2024-04-27Feltz Printing Service RENEWAL29Bernardo Dominic
1036Ivar Q DilliardIndia2024-04-06King, Christopher A Esq PROPOSAL67Ivan Magalhaes
1037Johnson V PoquetteJapan2024-04-25Morlong Associates UNQUALIFIED85Xuxue Feng
1038Arvin B FerenczRussia2024-04-28Feltz Printing Service UNQUALIFIED4Ivan Magalhaes
1039Arvin T DilliardAustralia2024-04-01Truhlar And Truhlar Attys NEW42Ivan Magalhaes
1040Smith S ButtUnited Kingdom2024-04-16Chemel, James L Cpa QUALIFIED5Asiya Javayant
1041Smith Q OldroydBrazil2024-04-01Rangoni Of Florence RENEWAL45Bernardo Dominic
1042Ricardo G FollerFrance2024-04-07Benton, John B Jr NEW7Onyama Limba
1043Nicolas L MaletIndia2024-04-24Benton, John B Jr PROPOSAL47Xuxue Feng
1044Francesco R GarufiBrazil2024-04-16Feltz Printing Service NEGOTIATION58Bernardo Dominic
1045Stacey Z RulapaughUnited Kingdom2024-04-13Chemel, James L Cpa QUALIFIED95Asiya Javayant
1046Ricardo S ChuiUnited Kingdom2024-04-08Feiner Bros QUALIFIED55Ivan Magalhaes
1047Aruna O PaprockiRussia2024-04-17Truhlar And Truhlar Attys QUALIFIED88Amy Elsner
1048Jefferson K TollnerItaly2024-04-20Chemel, James L Cpa NEW57Amy Elsner
1049Greenwood B CaudyGermany2024-04-12Rousseaux, Michael Esq NEW5Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Deepesh F ShinkoFranceStephen Shaw UNQUALIFIED
Aditya G GlickArgentinaIvan Magalhaes QUALIFIED
Aika X AmigonJapanAmy Elsner QUALIFIED
Kadeem J BologniaBrazilAsiya Javayant RENEWAL
Faith V CaudyFranceAsiya Javayant PROPOSAL
Maria I OstroskyItalyElwin Sharvill PROPOSAL
Francesco Z SlusarskiItalyAsiya Javayant UNQUALIFIED
Julie F DarakjyIndiaIvan Magalhaes RENEWAL
Jefferson B DilliardArgentinaAsiya Javayant NEGOTIATION
Costa V RimBrazilElwin Sharvill QUALIFIED
Emily B AmigonFranceOnyama Limba UNQUALIFIED
Costa A OstroskyGermanyBernardo Dominic NEW
Morrow Y FlosiGermanyXuxue Feng NEW
David Z OstroskyItalyBernardo Dominic UNQUALIFIED
Chavez Z InouyeIndiaIvan Magalhaes RENEWAL
Aruna I RulapaughJapanXuxue Feng NEW
Izzy Y GarufiArgentinaIoni Bowcher NEGOTIATION
Faith E FollerSpainIoni Bowcher UNQUALIFIED
Silvio R StockhamGermanyAnna Fali NEGOTIATION
Misaki F WaycottArgentinaIvan Magalhaes RENEWAL
Tony H CampainSpainIvan Magalhaes NEW
Greenwood H AmigonRussiaAsiya Javayant NEGOTIATION
David D OldroydFranceStephen Shaw UNQUALIFIED
Juan E MaletGermanyAnna Fali RENEWAL
Misaki C MaletRussiaBernardo Dominic QUALIFIED
Murillo K OstroskyGermanyStephen Shaw RENEWAL
Isabel O PerinItalyIoni Bowcher PROPOSAL
Costa A BowleyRussiaOnyama Limba UNQUALIFIED
Tony E StockhamFranceElwin Sharvill RENEWAL
Johnson P InouyeIndiaXuxue Feng PROPOSAL
Morrow P DarakjyGermanyElwin Sharvill NEW
Nicolas Y SchemmerSpainAnna Fali UNQUALIFIED
Claire L MaletIndiaBernardo Dominic RENEWAL
Ricardo Q MaletSpainAsiya Javayant RENEWAL
Ivar R MaletArgentinaAsiya Javayant UNQUALIFIED
Leon U RulapaughJapanOnyama Limba UNQUALIFIED
Jennifer U MaletRussiaXuxue Feng QUALIFIED
Aditya M ShinkoJapanXuxue Feng UNQUALIFIED
Sinclair J CaudyFranceIoni Bowcher NEW
Faith F ShinkoItalyAsiya Javayant RENEWAL
Stacey T TollnerAustraliaIoni Bowcher NEGOTIATION
Maisha U MacleadGermanyXuxue Feng QUALIFIED
Aika P GauchoSpainAnna Fali NEW
Chavez X FlosiAustraliaIvan Magalhaes NEGOTIATION
Costa H RoysterRussiaAmy Elsner PROPOSAL
Jefferson Z SlusarskiFranceBernardo Dominic QUALIFIED
Maisha O BowleyCanadaIoni Bowcher NEW
Johnson R RutaSpainElwin Sharvill NEW
Darci A WaycottFranceAsiya Javayant UNQUALIFIED
Ivar M KolmetzGermanyOnyama Limba RENEWAL
Frozen Columns
Name
Chavez Q Butt
Leja A Rulapaugh
Kadeem E Tollner
Jefferson O Malet
Julie H Nestle
Jennifer B Foller
Greenwood J Bowley
Jennifer E Albares
Mujtaba I Ruta
David K Poquette
Stacey S Rulapaugh
Greenwood J Glick
Arvin J Perin
Deepesh N Waycott
Johnson S Campain
Jones A Nestle
Jefferson Q Shinko
Jefferson H Nicka
Ivar W Malet
Octavia E Vocelka
Mujtaba X Inouye
Leon I Ostrosky
Greenwood J Rulapaugh
Leja F Caudy
Jennifer O Amigon
Ashley E Dilliard
Murillo W Briddick
Darci Q Garufi
Jeanfrancois Y Vocelka
Antonio O Wieser
Aruna V Kusko
Sinclair Q Darakjy
Adams Q Amigon
Leon S Dilliard
Darci U Kusko
Claire X Albares
David W Dilliard
Kaitlin T Tollner
Alejandro H Shinko
Leon F Dilliard
Ivar G Vocelka
Adams K Foller
Julie B Poquette
Deepesh B Royster
Leon K Inouye
Maisha S Vocelka
Emily C Marrier
Adams X Malet
Julie H Gillian
Murillo O Venere
IdCountryDate
1000Germany2024-04-26
1001Brazil2024-04-26
1002Russia2024-04-28
1003India2024-04-11
1004Germany2024-04-21
1005Canada2024-04-07
1006Germany2024-04-30
1007India2024-04-25
1008United Kingdom2024-04-16
1009Canada2024-04-10
1010India2024-04-12
1011Italy2024-04-30
1012Spain2024-04-07
1013Italy2024-04-16
1014Canada2024-04-11
1015Germany2024-04-17
1016United Kingdom2024-04-21
1017Italy2024-04-10
1018Russia2024-04-05
1019Japan2024-04-10
1020Japan2024-04-11
1021Canada2024-04-01
1022Germany2024-04-02
1023France2024-04-25
1024Russia2024-04-14
1025Australia2024-04-20
1026Russia2024-04-28
1027Brazil2024-04-19
1028Canada2024-04-29
1029Canada2024-04-15
1030Germany2024-04-01
1031Australia2024-04-09
1032France2024-04-15
1033Canada2024-04-09
1034India2024-04-19
1035United Kingdom2024-04-20
1036Germany2024-04-25
1037India2024-04-22
1038Russia2024-04-04
1039Brazil2024-04-29
1040Australia2024-04-16
1041Germany2024-04-12
1042Brazil2024-04-19
1043Italy2024-04-19
1044United Kingdom2024-04-28
1045Italy2024-04-04
1046Italy2024-04-01
1047Argentina2024-04-02
1048Japan2024-04-14
1049France2024-04-08

On-Demand Data

NameIdCountryDate
Johnson N Morasca1000Brazil2024-04-06
Mujtaba K Caudy1001Brazil2024-04-06
Misaki F Doe1002Argentina2024-04-16
Mujtaba M Royster1003Brazil2024-04-12
Ivar L Caldarera1004Russia2024-04-18
Nicolas P Kolmetz1005Australia2024-04-05
Darci E Iturbide1006Argentina2024-04-28
Adams T Butt1007Canada2024-04-03
Kaitlin Y Waycott1008Japan2024-04-14
Faith X Gillian1009United Kingdom2024-04-17
Jeanfrancois Y Bolognia1010Germany2024-04-08
Johnson Q Flosi1011Canada2024-04-20
Salvatore O Slusarski1012Germany2024-04-20
Cody Q Malet1013Spain2024-04-16
Mujtaba D Rulapaugh1014Russia2024-04-11
Maisha Z Garufi1015Russia2024-04-28
Leja X Bowley1016United Kingdom2024-04-05
Chavez Y Stockham1017Russia2024-04-11
Francesco I Maclead1018Australia2024-04-21
Kadeem B Stockham1019Italy2024-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair P PoquetteSpainAnna Fali UNQUALIFIED
Jennifer E NestleCanadaIvan Magalhaes NEW
Maisha D SlusarskiGermanyOnyama Limba QUALIFIED
Smith C GarufiIndiaAmy Elsner RENEWAL
James O MarrierUnited KingdomAsiya Javayant PROPOSAL
Ashley E CaldareraSpainOnyama Limba UNQUALIFIED
Darci E RulapaughAustraliaXuxue Feng UNQUALIFIED
Francesco T CampainRussiaXuxue Feng NEW
Aruna O GarufiIndiaIoni Bowcher PROPOSAL
Emily D SergiAustraliaElwin Sharvill QUALIFIED
Cody L GarufiSpainIvan Magalhaes UNQUALIFIED
Isabel I MarrierUnited KingdomXuxue Feng RENEWAL
Tony H KolmetzArgentinaStephen Shaw UNQUALIFIED
Ashley I MaletSpainXuxue Feng NEGOTIATION
Salvatore A WaycottItalyBernardo Dominic NEGOTIATION
Ivar X DoeItalyElwin Sharvill QUALIFIED
Izzy Z WaycottBrazilElwin Sharvill NEGOTIATION
Mujtaba W ButtIndiaIvan Magalhaes RENEWAL
Aika C DilliardArgentinaAsiya Javayant NEGOTIATION
Faith W GillianIndiaBernardo Dominic NEW
Maria J DoeBrazilIvan Magalhaes QUALIFIED
Antonio T InouyeJapanIvan Magalhaes PROPOSAL
Faith B PoquetteRussiaAsiya Javayant UNQUALIFIED
Costa X PerinGermanyAmy Elsner PROPOSAL
Ivar P StockhamBrazilElwin Sharvill NEGOTIATION
Emily D KolmetzRussiaBernardo Dominic NEGOTIATION
Cody D GarufiCanadaIoni Bowcher QUALIFIED
Alejandro Y WieserIndiaStephen Shaw NEGOTIATION
Aruna Y RimIndiaBernardo Dominic QUALIFIED
Mayumi A GlickItalyIoni Bowcher NEW
Maisha O FigeroaUnited KingdomBernardo Dominic RENEWAL
Alejandro Z NickaIndiaOnyama Limba PROPOSAL
Francesco N CaudyAustraliaBernardo Dominic UNQUALIFIED
Maisha V AlbaresUnited KingdomAsiya Javayant UNQUALIFIED
Munro F SlusarskiAustraliaOnyama Limba UNQUALIFIED
Izzy K WieserCanadaAsiya Javayant NEGOTIATION
Munro A KolmetzJapanBernardo Dominic NEW
Leon L AlbaresJapanAnna Fali UNQUALIFIED
Julie Q PoquetteCanadaIoni Bowcher PROPOSAL
Smith C PerinRussiaStephen Shaw QUALIFIED

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