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
Leja I GillianBrazilElwin Sharvill UNQUALIFIED
Isabel D BowleyJapanBernardo Dominic PROPOSAL
Isabel J FerenczRussiaAmy Elsner QUALIFIED
Sinclair H DoeSpainAmy Elsner PROPOSAL
Juan L CaldareraJapanXuxue Feng QUALIFIED
Murillo U StensethJapanAnna Fali NEW
David G SlusarskiFranceOnyama Limba NEW
Clifford Y GarufiUnited KingdomXuxue Feng NEW
Ashley B DarakjyAustraliaStephen Shaw NEGOTIATION
Isabel I RimCanadaElwin Sharvill PROPOSAL
Juan I PerinIndiaAnna Fali PROPOSAL
Mujtaba F StockhamFranceIvan Magalhaes NEGOTIATION
Stacey W MaletJapanStephen Shaw PROPOSAL
Mayumi V WieserCanadaIoni Bowcher NEGOTIATION
Ivar F GauchoJapanAnna Fali NEGOTIATION
Ricardo R IturbideRussiaBernardo Dominic QUALIFIED
Jeanfrancois V KolmetzAustraliaAnna Fali NEGOTIATION
Claire Q PoquetteArgentinaAnna Fali NEW
Alejandro H BologniaJapanStephen Shaw UNQUALIFIED
Murillo J CampainArgentinaAnna Fali NEW
Isabel J CaldareraIndiaBernardo Dominic PROPOSAL
Jeanfrancois Y InouyeRussiaIvan Magalhaes NEGOTIATION
Nicolas L ButtRussiaOnyama Limba NEGOTIATION
Kadeem O InouyeFranceBernardo Dominic PROPOSAL
Faith I SergiJapanIvan Magalhaes NEGOTIATION
Jennifer Y RulapaughCanadaAsiya Javayant UNQUALIFIED
Darci P RutaSpainIvan Magalhaes PROPOSAL
Aruna T MaletCanadaAnna Fali PROPOSAL
Isabel B FollerUnited KingdomAsiya Javayant NEGOTIATION
Leja D PaprockiItalyIvan Magalhaes RENEWAL
Morrow Y ChuiIndiaElwin Sharvill PROPOSAL
Misaki D AmigonItalyIoni Bowcher QUALIFIED
Emily F GarufiRussiaOnyama Limba NEW
Faith Y SaylorsCanadaStephen Shaw RENEWAL
Kadeem O PoquetteAustraliaOnyama Limba UNQUALIFIED
Alejandro R FlosiGermanyAmy Elsner RENEWAL
Chavez U CaldareraItalyBernardo Dominic UNQUALIFIED
Ricardo C OldroydFranceBernardo Dominic RENEWAL
Darci H OstroskyFranceStephen Shaw UNQUALIFIED
Francesco C VocelkaFranceBernardo Dominic QUALIFIED
Kaitlin U CaldareraFranceElwin Sharvill QUALIFIED
Aditya H SchemmerFranceOnyama Limba NEW
Greenwood H KolmetzAustraliaOnyama Limba UNQUALIFIED
Morrow Q BriddickBrazilStephen Shaw UNQUALIFIED
Emily L SergiItalyIoni Bowcher NEGOTIATION
Ivar E RoysterCanadaBernardo Dominic QUALIFIED
Jennifer R GillianItalyStephen Shaw NEGOTIATION
Sinclair S CaudyCanadaXuxue Feng PROPOSAL
Izzy Q PaprockiUnited KingdomIvan Magalhaes NEGOTIATION
David L DarakjyGermanyAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Clifford Y GarufiItalyAmy Elsner UNQUALIFIED
Octavia V RoysterBrazilAmy Elsner NEW
Mayumi W NickaAustraliaXuxue Feng RENEWAL
Greenwood B OstroskyFranceOnyama Limba NEGOTIATION
Leja L StensethBrazilOnyama Limba PROPOSAL
Alejandro D OldroydSpainAsiya Javayant PROPOSAL
Emily X RoysterSpainIvan Magalhaes NEGOTIATION
Clifford G GarufiBrazilOnyama Limba NEW
Ashley Q DoeGermanyOnyama Limba PROPOSAL
Faith W OstroskyItalyIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia C ShinkoRussia2024-04-06Rousseaux, Michael Esq NEGOTIATION72Ivan Magalhaes
1001Deepesh Y WhobreyGermany2024-04-01Chemel, James L Cpa PROPOSAL81Xuxue Feng
1002Mayumi R NestleAustralia2024-04-21Dorl, James J Esq QUALIFIED47Ioni Bowcher
1003Jones N SaylorsIndia2024-04-11Rousseaux, Michael Esq NEGOTIATION31Anna Fali
1004Aika L OldroydArgentina2024-04-16Morlong Associates NEW93Stephen Shaw
1005Salvatore T BowleyFrance2024-03-30Morlong Associates NEGOTIATION79Ioni Bowcher
1006Munro T SergiArgentina2024-04-23Feiner Bros QUALIFIED78Elwin Sharvill
1007Ashley Q MaletRussia2024-04-19Feiner Bros PROPOSAL59Anna Fali
1008Alejandro S KuskoIndia2024-04-24Truhlar And Truhlar Attys NEGOTIATION71Amy Elsner
1009Murillo I CaudyBrazil2024-04-17Commercial Press RENEWAL97Stephen Shaw
1010Rodrigues F WaycottRussia2024-04-18Buckley Miller Wright PROPOSAL45Bernardo Dominic
1011Chavez V MacleadBrazil2024-03-28Benton, John B Jr NEGOTIATION60Onyama Limba
1012Rodrigues D InouyeArgentina2024-04-16King, Christopher A Esq UNQUALIFIED49Amy Elsner
1013Ivar S NestleRussia2024-03-27King, Christopher A Esq RENEWAL10Ivan Magalhaes
1014Antonio S GarufiJapan2024-04-13Dorl, James J Esq PROPOSAL21Amy Elsner
1015Jennifer Q MarrierSpain2024-03-29Rousseaux, Michael Esq UNQUALIFIED64Stephen Shaw
1016Jeanfrancois X DoeFrance2024-04-01Feltz Printing Service UNQUALIFIED41Onyama Limba
1017Rodrigues J InouyeArgentina2024-04-25Chemel, James L Cpa NEW70Xuxue Feng
1018Claire X ButtUnited Kingdom2024-04-06Printing Dimensions NEGOTIATION40Ivan Magalhaes
1019Silvio N MacleadArgentina2024-04-02Rangoni Of Florence RENEWAL90Ivan Magalhaes
1020Antonio D BriddickBrazil2024-04-19Rangoni Of Florence NEGOTIATION6Anna Fali
1021Munro T KuskoGermany2024-04-13Buckley Miller Wright QUALIFIED82Asiya Javayant
1022Isabel H GauchoCanada2024-04-11Chanay, Jeffrey A Esq NEW72Stephen Shaw
1023Stacey L RimArgentina2024-04-06Chanay, Jeffrey A Esq QUALIFIED79Asiya Javayant
1024Jefferson Q VenereUnited Kingdom2024-04-01Rangoni Of Florence RENEWAL26Bernardo Dominic
1025David M BriddickGermany2024-03-30Rangoni Of Florence NEW29Amy Elsner
1026Nicolas U SlusarskiJapan2024-04-08Morlong Associates RENEWAL65Bernardo Dominic
1027Chavez T MacleadArgentina2024-04-14Chanay, Jeffrey A Esq QUALIFIED53Stephen Shaw
1028James F BowleyJapan2024-04-24Morlong Associates NEGOTIATION51Ivan Magalhaes
1029Greenwood V PaprockiAustralia2024-04-19Printing Dimensions UNQUALIFIED96Ioni Bowcher
1030Adams Z FollerUnited Kingdom2024-04-19Buckley Miller Wright NEGOTIATION88Anna Fali
1031James F MaletJapan2024-03-29Truhlar And Truhlar Attys RENEWAL88Ivan Magalhaes
1032Maria J GarufiFrance2024-04-10Truhlar And Truhlar Attys NEW33Elwin Sharvill
1033Johnson I ButtCanada2024-04-19Buckley Miller Wright RENEWAL97Onyama Limba
1034Julie G FigeroaSpain2024-04-23Feiner Bros NEW76Onyama Limba
1035Ivar C FigeroaIndia2024-04-03Chapman, Ross E Esq NEGOTIATION64Stephen Shaw
1036Ricardo F DilliardUnited Kingdom2024-04-10Buckley Miller Wright QUALIFIED24Asiya Javayant
1037Clifford L CaudyUnited Kingdom2024-04-22Rousseaux, Michael Esq RENEWAL9Amy Elsner
1038Julie N ButtRussia2024-03-29Morlong Associates QUALIFIED90Bernardo Dominic
1039Maria M DarakjyItaly2024-04-04Printing Dimensions PROPOSAL73Ivan Magalhaes
1040Leon K CaldareraRussia2024-04-07Buckley Miller Wright QUALIFIED57Ioni Bowcher
1041Ashley J NestleArgentina2024-04-08Printing Dimensions QUALIFIED19Ioni Bowcher
1042Costa I BowleyBrazil2024-03-27Commercial Press UNQUALIFIED69Ivan Magalhaes
1043Leon K WieserUnited Kingdom2024-04-23Buckley Miller Wright RENEWAL76Amy Elsner
1044Sinclair G ShinkoFrance2024-04-02Feltz Printing Service RENEWAL68Onyama Limba
1045Aditya Z BowleyFrance2024-04-19Rousseaux, Michael Esq NEW91Xuxue Feng
1046Julie S WieserAustralia2024-04-22Chemel, James L Cpa RENEWAL4Elwin Sharvill
1047Jones O BologniaGermany2024-04-09Buckley Miller Wright NEW75Stephen Shaw
1048Arvin X FlosiItaly2024-03-28Chapman, Ross E Esq UNQUALIFIED99Bernardo Dominic
1049Stacey V PerinFrance2024-04-20Chemel, James L Cpa PROPOSAL53Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Arvin E NestleFranceAnna Fali PROPOSAL
Isabel I RutaArgentinaAnna Fali QUALIFIED
Clifford Z KuskoSpainStephen Shaw PROPOSAL
Misaki G RutaItalyAsiya Javayant RENEWAL
Juan P TollnerItalyAsiya Javayant UNQUALIFIED
Maria T GarufiIndiaIoni Bowcher PROPOSAL
Mayumi F FerenczBrazilOnyama Limba UNQUALIFIED
Julie P PaprockiRussiaAsiya Javayant NEW
Julie X OstroskyAustraliaAmy Elsner NEW
Leja D StensethSpainBernardo Dominic NEGOTIATION
Antonio N RimGermanyBernardo Dominic RENEWAL
Isabel K DoeFranceAsiya Javayant UNQUALIFIED
Emily S KuskoRussiaIvan Magalhaes RENEWAL
Kadeem P FollerFranceElwin Sharvill QUALIFIED
Costa S PerinCanadaBernardo Dominic NEW
Kaitlin P TollnerGermanyAmy Elsner QUALIFIED
Octavia L KuskoFranceAsiya Javayant RENEWAL
Adams N PaprockiRussiaElwin Sharvill QUALIFIED
Munro V OstroskyArgentinaElwin Sharvill UNQUALIFIED
Kaitlin F DarakjyItalyOnyama Limba UNQUALIFIED
Ricardo E OstroskyJapanAsiya Javayant RENEWAL
Jones N CaudySpainXuxue Feng QUALIFIED
Munro M SaylorsSpainOnyama Limba RENEWAL
Maria M RoysterBrazilStephen Shaw RENEWAL
Costa T TollnerCanadaElwin Sharvill PROPOSAL
Isabel R VocelkaRussiaElwin Sharvill QUALIFIED
Francesco V FollerArgentinaAnna Fali UNQUALIFIED
Kadeem I NestleFranceAnna Fali NEGOTIATION
Maria U MarrierArgentinaAsiya Javayant PROPOSAL
Antonio X FlosiIndiaStephen Shaw QUALIFIED
Jennifer R SergiAustraliaStephen Shaw NEGOTIATION
Sinclair E BriddickAustraliaAnna Fali PROPOSAL
Aika G ChuiJapanAsiya Javayant UNQUALIFIED
Jeanfrancois M MaletRussiaIoni Bowcher QUALIFIED
Stacey U RulapaughFranceXuxue Feng UNQUALIFIED
Juan T RoysterAustraliaElwin Sharvill UNQUALIFIED
Juan A RimItalyOnyama Limba NEW
Arvin U WaycottItalyOnyama Limba QUALIFIED
Izzy N SlusarskiGermanyStephen Shaw NEGOTIATION
Jeanfrancois N PaprockiCanadaOnyama Limba NEGOTIATION
Chavez K TollnerSpainIvan Magalhaes NEW
David K CaldareraRussiaAmy Elsner QUALIFIED
Julie S NestleCanadaStephen Shaw UNQUALIFIED
Jones D MaletJapanIoni Bowcher QUALIFIED
Juan Y WieserGermanyIoni Bowcher NEGOTIATION
Nicolas Y StensethJapanXuxue Feng QUALIFIED
Misaki S AlbaresArgentinaAnna Fali NEGOTIATION
Claire B GarufiUnited KingdomIvan Magalhaes PROPOSAL
Misaki W MarrierIndiaAnna Fali NEW
Antonio E OstroskyGermanyElwin Sharvill RENEWAL
Frozen Columns
Name
Kadeem T Gaucho
Johnson H Gaucho
Faith O Amigon
Adams Y Kusko
Tony C Oldroyd
Munro P Maclead
David N Kolmetz
Rodrigues F Oldroyd
Munro K Venere
Arvin X Bolognia
Jennifer R Oldroyd
Tony C Caudy
Leon H Butt
Jennifer P Gillian
Jeanfrancois Z Nestle
Kadeem X Saylors
Jennifer N Maclead
Misaki D Tollner
Leon X Royster
Sinclair O Sergi
Silvio R Butt
Jennifer B Gillian
Antonio H Wieser
Mujtaba H Oldroyd
Izzy J Perin
Izzy H Albares
Isabel Z Paprocki
Mujtaba Q Ruta
Stacey I Darakjy
Chavez X Iturbide
Mayumi Z Shinko
Misaki F Sergi
Morrow G Sergi
Kaitlin V Paprocki
Wickens Y Briddick
Antonio H Slusarski
Leon N Figeroa
Kaitlin L Whobrey
Claire Q Stenseth
Cody L Whobrey
Stacey V Venere
Leon G Vocelka
Rodrigues Z Poquette
Tony D Sergi
Cody G Bowley
Chavez A Chui
Cody S Gillian
Aditya D Nestle
Smith Q Dilliard
Tony P Flosi
IdCountryDate
1000Spain2024-04-24
1001Spain2024-04-14
1002Spain2024-04-01
1003Japan2024-03-30
1004United Kingdom2024-04-09
1005United Kingdom2024-04-07
1006France2024-04-13
1007United Kingdom2024-04-21
1008Germany2024-04-15
1009Italy2024-04-19
1010Argentina2024-03-31
1011Canada2024-04-02
1012India2024-03-27
1013Italy2024-04-25
1014Germany2024-04-12
1015Australia2024-04-25
1016Italy2024-04-17
1017Argentina2024-03-30
1018Germany2024-04-21
1019Russia2024-04-11
1020Japan2024-04-02
1021India2024-04-02
1022Russia2024-04-18
1023Germany2024-04-09
1024France2024-03-29
1025Canada2024-04-03
1026United Kingdom2024-04-11
1027Russia2024-04-21
1028Italy2024-04-06
1029Japan2024-03-29
1030India2024-04-23
1031Italy2024-04-20
1032India2024-04-14
1033Russia2024-04-25
1034Japan2024-04-09
1035India2024-03-28
1036Russia2024-04-23
1037Spain2024-04-20
1038Italy2024-04-12
1039Russia2024-04-13
1040India2024-04-12
1041Spain2024-04-05
1042Italy2024-04-08
1043Canada2024-04-16
1044Australia2024-03-28
1045United Kingdom2024-04-14
1046United Kingdom2024-04-12
1047Germany2024-04-12
1048France2024-04-20
1049United Kingdom2024-04-19

On-Demand Data

NameIdCountryDate
Maisha X Waycott1000United Kingdom2024-04-24
Darci T Tollner1001Argentina2024-04-08
Isabel C Stockham1002Spain2024-04-23
Aruna R Butt1003Argentina2024-04-01
Silvio Z Flosi1004France2024-04-11
Jones N Venere1005Germany2024-04-01
Ashley D Maclead1006United Kingdom2024-04-19
Stacey Q Marrier1007Spain2024-04-08
Claire C Saylors1008Italy2024-03-29
David D Slusarski1009United Kingdom2024-04-09
Julie C Amigon1010Brazil2024-04-11
Kadeem W Iturbide1011Brazil2024-04-20
Tony Q Oldroyd1012Australia2024-04-24
Greenwood A Oldroyd1013Spain2024-04-20
Emily M Gillian1014Canada2024-04-11
Kadeem Z Briddick1015Australia2024-03-29
Ivar G Morasca1016Russia2024-04-02
Salvatore K Gaucho1017Italy2024-04-04
Jefferson J Doe1018Spain2024-04-02
Deepesh R Morasca1019Spain2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford X DoeGermanyAnna Fali PROPOSAL
Cody D CampainItalyStephen Shaw NEW
Maisha T FollerJapanAnna Fali PROPOSAL
Darci T RulapaughItalyAsiya Javayant UNQUALIFIED
Arvin J DilliardFranceIoni Bowcher UNQUALIFIED
Maria D SergiArgentinaAnna Fali QUALIFIED
Kaitlin D PerinUnited KingdomXuxue Feng UNQUALIFIED
Clifford N WhobreyItalyAsiya Javayant PROPOSAL
Leja Y MaletIndiaBernardo Dominic RENEWAL
Jefferson S SaylorsRussiaXuxue Feng PROPOSAL
Faith V VenereArgentinaXuxue Feng UNQUALIFIED
Aruna X SchemmerSpainIoni Bowcher NEW
Morrow U ButtJapanAsiya Javayant PROPOSAL
Aruna M MorascaIndiaIvan Magalhaes NEGOTIATION
Clifford C OstroskyArgentinaElwin Sharvill QUALIFIED
Costa Q DilliardRussiaBernardo Dominic NEW
Misaki B PoquetteCanadaAmy Elsner UNQUALIFIED
Ashley A TollnerGermanyStephen Shaw UNQUALIFIED
Jeanfrancois L DilliardFranceStephen Shaw RENEWAL
Aruna N FerenczBrazilElwin Sharvill UNQUALIFIED
Faith H AmigonUnited KingdomOnyama Limba QUALIFIED
Cody M MarrierJapanIoni Bowcher PROPOSAL
Munro K PoquetteAustraliaAmy Elsner NEGOTIATION
Nicolas Z NestleRussiaXuxue Feng QUALIFIED
Johnson T ShinkoUnited KingdomAsiya Javayant QUALIFIED
Ashley K VocelkaArgentinaOnyama Limba NEW
Claire M OldroydUnited KingdomIvan Magalhaes NEGOTIATION
Aditya S RulapaughUnited KingdomAmy Elsner RENEWAL
Cody G StockhamAustraliaXuxue Feng NEW
Francesco U TollnerIndiaXuxue Feng UNQUALIFIED
Faith D DoeJapanXuxue Feng NEGOTIATION
Izzy V SchemmerGermanyAnna Fali QUALIFIED
Murillo Q MacleadGermanyIvan Magalhaes QUALIFIED
Arvin D FigeroaItalyAsiya Javayant NEGOTIATION
Juan I RimArgentinaAnna Fali RENEWAL
Juan G SchemmerBrazilIoni Bowcher QUALIFIED
Jennifer N PerinAustraliaAmy Elsner PROPOSAL
Isabel K AmigonItalyAsiya Javayant RENEWAL
Clifford F RulapaughUnited KingdomStephen Shaw NEW
David O WieserAustraliaIvan Magalhaes 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>