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
Ricardo V DarakjyCanadaAsiya Javayant NEGOTIATION
Jennifer C DarakjyArgentinaAsiya Javayant QUALIFIED
Maria E BriddickSpainXuxue Feng NEW
Ashley K DilliardFranceBernardo Dominic UNQUALIFIED
Chavez O DoeAustraliaOnyama Limba UNQUALIFIED
Mujtaba V ShinkoJapanOnyama Limba PROPOSAL
Smith R ShinkoUnited KingdomXuxue Feng QUALIFIED
Emily S ShinkoFranceAnna Fali RENEWAL
Smith W ChuiFranceAnna Fali RENEWAL
Claire X SergiArgentinaXuxue Feng UNQUALIFIED
Mayumi S InouyeItalyStephen Shaw RENEWAL
Wickens T GauchoJapanAmy Elsner RENEWAL
Mayumi B OldroydFranceIvan Magalhaes UNQUALIFIED
Adams U BriddickItalyElwin Sharvill QUALIFIED
Juan L AlbaresCanadaBernardo Dominic RENEWAL
Misaki U PerinBrazilIvan Magalhaes UNQUALIFIED
Aika C KolmetzBrazilStephen Shaw PROPOSAL
Leon J PerinGermanyAnna Fali PROPOSAL
Johnson R StensethItalyElwin Sharvill UNQUALIFIED
Jeanfrancois J AlbaresAustraliaIvan Magalhaes QUALIFIED
Clifford C CaldareraSpainAmy Elsner NEGOTIATION
Wickens O VocelkaArgentinaOnyama Limba NEW
Izzy W GlickRussiaStephen Shaw QUALIFIED
Darci V FigeroaFranceIoni Bowcher NEGOTIATION
Murillo G RoysterFranceElwin Sharvill UNQUALIFIED
Wickens Q WhobreyIndiaXuxue Feng QUALIFIED
Greenwood S BowleyFranceIvan Magalhaes RENEWAL
Mujtaba V FlosiFranceBernardo Dominic NEGOTIATION
Izzy A FollerGermanyBernardo Dominic NEW
Emily C StockhamFranceStephen Shaw NEGOTIATION
Arvin O CaldareraItalyIoni Bowcher NEW
James Q NestleIndiaBernardo Dominic PROPOSAL
Faith D InouyeUnited KingdomAsiya Javayant NEW
Octavia Q SlusarskiJapanBernardo Dominic QUALIFIED
Maisha E KuskoGermanyStephen Shaw UNQUALIFIED
Greenwood T WieserJapanStephen Shaw NEW
Tony F BowleyCanadaXuxue Feng UNQUALIFIED
Mujtaba W DoeSpainIvan Magalhaes NEW
Tony U PaprockiRussiaAnna Fali PROPOSAL
Ashley S TollnerArgentinaStephen Shaw PROPOSAL
Ricardo B DilliardUnited KingdomXuxue Feng RENEWAL
Deepesh P OstroskyBrazilXuxue Feng PROPOSAL
Juan S MarrierItalyXuxue Feng PROPOSAL
Ricardo S CaldareraSpainAsiya Javayant QUALIFIED
Nicolas S DilliardRussiaBernardo Dominic RENEWAL
Izzy T DoeSpainAnna Fali NEW
Izzy O BriddickSpainIvan Magalhaes RENEWAL
Jones G PaprockiIndiaXuxue Feng QUALIFIED
Morrow S FigeroaFranceAmy Elsner QUALIFIED
Ashley L WhobreyBrazilIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aika V SergiJapanAnna Fali NEW
Johnson Q PoquetteGermanyBernardo Dominic NEGOTIATION
Jennifer B FerenczBrazilAmy Elsner NEGOTIATION
Claire U WhobreyAustraliaOnyama Limba QUALIFIED
Kaitlin E NickaUnited KingdomBernardo Dominic NEGOTIATION
Mujtaba V RutaArgentinaIvan Magalhaes RENEWAL
Rodrigues Y PaprockiFranceIvan Magalhaes PROPOSAL
Claire O MaletCanadaElwin Sharvill UNQUALIFIED
Johnson F StensethAustraliaXuxue Feng NEGOTIATION
Murillo N CaudyUnited KingdomStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair N BologniaIndia2024-04-23Morlong Associates NEGOTIATION11Onyama Limba
1001Aika C OstroskyItaly2024-04-08Rangoni Of Florence PROPOSAL82Ioni Bowcher
1002Aika W VocelkaArgentina2024-04-27Buckley Miller Wright PROPOSAL7Onyama Limba
1003Jennifer F BowleyFrance2024-04-30Benton, John B Jr NEGOTIATION31Asiya Javayant
1004Juan C MaletJapan2024-04-19Chapman, Ross E Esq QUALIFIED24Bernardo Dominic
1005Adams F FollerSpain2024-04-30Chemel, James L Cpa NEW23Amy Elsner
1006Emily G ButtAustralia2024-04-27Buckley Miller Wright PROPOSAL75Amy Elsner
1007Salvatore P CampainCanada2024-04-27Rousseaux, Michael Esq NEW55Stephen Shaw
1008Arvin Y GauchoFrance2024-04-12Printing Dimensions QUALIFIED55Stephen Shaw
1009Jeanfrancois Z DilliardJapan2024-04-21Printing Dimensions QUALIFIED41Onyama Limba
1010Salvatore O GarufiIndia2024-04-13Dorl, James J Esq UNQUALIFIED53Ioni Bowcher
1011Sinclair D MaletItaly2024-04-16Printing Dimensions RENEWAL85Amy Elsner
1012Tony F VenereItaly2024-04-19Chapman, Ross E Esq NEGOTIATION44Xuxue Feng
1013Leja P CampainFrance2024-04-09Feltz Printing Service QUALIFIED96Bernardo Dominic
1014Jennifer O CampainSpain2024-04-18Chemel, James L Cpa RENEWAL85Elwin Sharvill
1015Octavia K SchemmerArgentina2024-04-16King, Christopher A Esq NEGOTIATION78Xuxue Feng
1016James K StockhamArgentina2024-04-08Benton, John B Jr NEGOTIATION94Ioni Bowcher
1017Deepesh D RutaItaly2024-05-01Feltz Printing Service NEGOTIATION47Xuxue Feng
1018Aruna T FigeroaAustralia2024-04-10Chemel, James L Cpa QUALIFIED98Onyama Limba
1019Jennifer I IturbideFrance2024-04-03Rousseaux, Michael Esq NEGOTIATION61Elwin Sharvill
1020Greenwood Z RulapaughAustralia2024-04-07Feiner Bros QUALIFIED9Stephen Shaw
1021Jones P WaycottAustralia2024-05-02Chemel, James L Cpa PROPOSAL15Anna Fali
1022Jones R BowleyArgentina2024-04-18Feltz Printing Service QUALIFIED70Bernardo Dominic
1023Octavia D DilliardCanada2024-04-03Truhlar And Truhlar Attys NEW43Ioni Bowcher
1024Johnson Z BowleyJapan2024-04-09Chapman, Ross E Esq NEGOTIATION77Amy Elsner
1025Kadeem Z CampainArgentina2024-04-03Printing Dimensions PROPOSAL10Bernardo Dominic
1026Isabel I FigeroaCanada2024-04-20Morlong Associates UNQUALIFIED0Amy Elsner
1027Rodrigues L ChuiIndia2024-04-24Feiner Bros RENEWAL43Amy Elsner
1028Jefferson O WaycottCanada2024-04-17Chemel, James L Cpa NEGOTIATION1Anna Fali
1029Maisha E RutaItaly2024-05-01Chapman, Ross E Esq NEGOTIATION7Bernardo Dominic
1030Stacey E KolmetzSpain2024-04-22Buckley Miller Wright NEW80Asiya Javayant
1031Kadeem Q RoysterUnited Kingdom2024-04-07Dorl, James J Esq QUALIFIED11Anna Fali
1032Morrow S CaldareraUnited Kingdom2024-04-19Benton, John B Jr NEW60Anna Fali
1033Darci S CaldareraAustralia2024-04-21Printing Dimensions UNQUALIFIED65Bernardo Dominic
1034Salvatore K ShinkoCanada2024-04-06Rangoni Of Florence UNQUALIFIED14Asiya Javayant
1035Mayumi N InouyeJapan2024-04-27Commercial Press UNQUALIFIED92Stephen Shaw
1036Ivar A ChuiJapan2024-04-25Truhlar And Truhlar Attys QUALIFIED19Ivan Magalhaes
1037Ivar V TollnerCanada2024-05-02King, Christopher A Esq UNQUALIFIED26Elwin Sharvill
1038Rodrigues Z IturbideArgentina2024-04-08Feiner Bros NEW84Ivan Magalhaes
1039Morrow A CaldareraIndia2024-04-09Feiner Bros NEW78Elwin Sharvill
1040Chavez B MaletFrance2024-05-01Rangoni Of Florence UNQUALIFIED87Asiya Javayant
1041Isabel L KolmetzJapan2024-05-01Feiner Bros UNQUALIFIED6Stephen Shaw
1042Claire T ShinkoUnited Kingdom2024-04-11Morlong Associates QUALIFIED86Ivan Magalhaes
1043Alejandro V GlickRussia2024-04-13Buckley Miller Wright UNQUALIFIED72Ivan Magalhaes
1044Jefferson Q WhobreyUnited Kingdom2024-04-19Commercial Press PROPOSAL57Stephen Shaw
1045Mujtaba G CaldareraSpain2024-04-05Chemel, James L Cpa NEGOTIATION5Onyama Limba
1046Octavia P SlusarskiFrance2024-04-12Chapman, Ross E Esq QUALIFIED36Elwin Sharvill
1047Ashley A VenereRussia2024-04-15Chanay, Jeffrey A Esq NEGOTIATION60Xuxue Feng
1048Tony B OstroskyCanada2024-04-06Benton, John B Jr UNQUALIFIED9Ioni Bowcher
1049Maria M CaldareraBrazil2024-04-29Benton, John B Jr RENEWAL90Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Cody E VocelkaJapanIoni Bowcher PROPOSAL
Wickens P SchemmerCanadaIvan Magalhaes NEGOTIATION
Izzy W FlosiArgentinaIvan Magalhaes PROPOSAL
Sinclair U CampainIndiaOnyama Limba RENEWAL
Munro K BowleyJapanAmy Elsner NEW
Jennifer W MacleadRussiaAsiya Javayant UNQUALIFIED
Misaki T TollnerUnited KingdomAmy Elsner NEW
James F FigeroaFranceIoni Bowcher NEGOTIATION
Murillo X GarufiIndiaIoni Bowcher UNQUALIFIED
Antonio R CaudyCanadaAsiya Javayant PROPOSAL
Leja H DilliardRussiaXuxue Feng QUALIFIED
Leon J InouyeArgentinaXuxue Feng UNQUALIFIED
Smith X PoquetteCanadaAsiya Javayant UNQUALIFIED
Jones A VocelkaFranceAmy Elsner NEGOTIATION
Aruna B SaylorsBrazilBernardo Dominic UNQUALIFIED
Stacey D OstroskyAustraliaOnyama Limba RENEWAL
Aruna S AlbaresRussiaBernardo Dominic NEGOTIATION
Ashley H MarrierRussiaStephen Shaw PROPOSAL
Kadeem G StockhamIndiaXuxue Feng RENEWAL
Izzy Y DilliardCanadaAnna Fali UNQUALIFIED
Jennifer Q MarrierItalyAsiya Javayant NEW
Jeanfrancois V OstroskyIndiaAmy Elsner UNQUALIFIED
Tony L BriddickItalyIvan Magalhaes NEW
Antonio H MacleadItalyIoni Bowcher RENEWAL
Ashley Q MarrierRussiaIvan Magalhaes QUALIFIED
Murillo C PaprockiArgentinaBernardo Dominic QUALIFIED
David Q CaldareraArgentinaIoni Bowcher PROPOSAL
Misaki J DoeSpainAsiya Javayant PROPOSAL
Mujtaba G CampainSpainIoni Bowcher UNQUALIFIED
Faith L StockhamIndiaStephen Shaw RENEWAL
Leja U RoysterAustraliaAnna Fali NEW
James W MaletJapanAnna Fali RENEWAL
Izzy Q WieserJapanAnna Fali QUALIFIED
Alejandro Q SergiIndiaOnyama Limba UNQUALIFIED
Chavez P PerinUnited KingdomIvan Magalhaes UNQUALIFIED
Maria B VocelkaArgentinaAmy Elsner NEW
Costa S GauchoUnited KingdomBernardo Dominic NEW
Jefferson U RutaRussiaBernardo Dominic QUALIFIED
Leon X GauchoRussiaIvan Magalhaes QUALIFIED
Maria S RimIndiaBernardo Dominic NEGOTIATION
Maria U SergiRussiaIvan Magalhaes NEW
Misaki O DarakjyArgentinaOnyama Limba NEW
Wickens N SchemmerArgentinaXuxue Feng NEW
Francesco S ShinkoBrazilXuxue Feng NEW
Izzy U OstroskyJapanAmy Elsner UNQUALIFIED
Clifford C WaycottFranceAmy Elsner PROPOSAL
Mujtaba T CaldareraJapanAmy Elsner NEW
Julie J MorascaBrazilAsiya Javayant PROPOSAL
Smith C IturbideIndiaXuxue Feng UNQUALIFIED
Darci G FlosiIndiaXuxue Feng NEGOTIATION
Frozen Columns
Name
Octavia G Shinko
Deepesh T Stenseth
Costa I Venere
Mujtaba A Shinko
Emily A Paprocki
Smith T Kolmetz
Ivar I Albares
Claire Q Amigon
Misaki I Stockham
Francesco W Glick
Misaki B Flosi
Misaki E Iturbide
Munro C Poquette
Rodrigues Q Ferencz
Maisha D Tollner
Rodrigues Y Rim
Jefferson E Dilliard
Rodrigues W Flosi
Mayumi I Royster
Wickens X Ostrosky
Claire N Darakjy
Antonio O Venere
Sinclair E Waycott
Deepesh J Sergi
Leon R Figeroa
Octavia F Malet
Murillo L Inouye
Wickens K Whobrey
Misaki A Doe
Cody B Oldroyd
Alejandro N Perin
Antonio R Ostrosky
Johnson V Marrier
Kaitlin X Perin
Nicolas C Malet
Greenwood W Ferencz
Jefferson I Whobrey
Mujtaba D Waycott
Mujtaba A Stenseth
Clifford X Caldarera
Tony Z Caudy
Maria L Figeroa
Faith B Royster
Misaki P Iturbide
Ivar F Maclead
Jeanfrancois L Bowley
Jennifer Y Doe
Kadeem J Dilliard
Izzy W Ostrosky
Silvio F Tollner
IdCountryDate
1000France2024-04-04
1001Russia2024-04-25
1002United Kingdom2024-04-09
1003India2024-04-25
1004Russia2024-04-24
1005Brazil2024-04-04
1006Brazil2024-04-13
1007Spain2024-04-11
1008Brazil2024-04-14
1009Japan2024-04-04
1010Germany2024-04-09
1011Brazil2024-04-15
1012Canada2024-04-28
1013Brazil2024-04-14
1014Russia2024-04-04
1015Argentina2024-04-11
1016Canada2024-05-02
1017Canada2024-04-15
1018Germany2024-04-22
1019Spain2024-04-08
1020Japan2024-04-09
1021Argentina2024-04-28
1022United Kingdom2024-05-01
1023Spain2024-05-02
1024Japan2024-04-27
1025Argentina2024-04-04
1026Japan2024-04-12
1027France2024-04-16
1028United Kingdom2024-04-20
1029Japan2024-04-06
1030Canada2024-04-24
1031France2024-04-07
1032Brazil2024-05-02
1033Russia2024-04-08
1034Canada2024-05-01
1035Japan2024-04-09
1036Brazil2024-04-29
1037Italy2024-05-02
1038Germany2024-04-09
1039Brazil2024-04-27
1040France2024-04-15
1041India2024-04-28
1042Brazil2024-04-18
1043Russia2024-04-12
1044Australia2024-04-05
1045Brazil2024-04-06
1046Germany2024-04-24
1047Italy2024-04-16
1048Argentina2024-04-11
1049Russia2024-04-08

On-Demand Data

NameIdCountryDate
Sinclair P Nicka1000Australia2024-04-16
Tony H Rulapaugh1001Australia2024-04-04
Nicolas Q Poquette1002United Kingdom2024-04-16
Deepesh U Morasca1003Russia2024-04-10
Greenwood J Ferencz1004Canada2024-04-26
Maisha W Royster1005Italy2024-04-20
Mujtaba O Venere1006Brazil2024-04-14
Ashley Z Paprocki1007Japan2024-04-15
Emily B Rulapaugh1008Canada2024-05-02
Costa K Nestle1009Canada2024-04-13
Murillo U Darakjy1010United Kingdom2024-04-06
Greenwood T Bolognia1011United Kingdom2024-04-16
Alejandro Y Darakjy1012France2024-04-13
Johnson R Caldarera1013Argentina2024-04-09
Salvatore Z Darakjy1014United Kingdom2024-04-14
Clifford Y Figeroa1015Canada2024-04-08
Antonio T Nestle1016Brazil2024-04-14
Smith W Gaucho1017Italy2024-04-10
Jefferson I Campain1018Spain2024-04-04
Nicolas D Foller1019Australia2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez S GarufiIndiaIvan Magalhaes QUALIFIED
Munro Q WieserBrazilStephen Shaw NEW
Adams C RulapaughAustraliaIvan Magalhaes UNQUALIFIED
James A BowleyFranceAsiya Javayant QUALIFIED
Jones T DilliardIndiaIoni Bowcher NEW
Leon G RutaUnited KingdomIvan Magalhaes RENEWAL
Aruna X RimFranceAmy Elsner NEW
Mujtaba U FigeroaItalyBernardo Dominic NEGOTIATION
Claire C DilliardBrazilAsiya Javayant PROPOSAL
Claire S FigeroaItalyAnna Fali NEGOTIATION
Maria E AmigonRussiaXuxue Feng NEW
James W SlusarskiItalyStephen Shaw PROPOSAL
Deepesh V ChuiFranceOnyama Limba RENEWAL
Mujtaba N GlickCanadaStephen Shaw NEW
Jones C CampainFranceAmy Elsner UNQUALIFIED
Antonio F OldroydBrazilAsiya Javayant RENEWAL
Kadeem I PerinRussiaElwin Sharvill UNQUALIFIED
Aruna O TollnerSpainAmy Elsner UNQUALIFIED
Claire Y MaletFranceAnna Fali NEGOTIATION
Aditya Q OstroskyJapanAnna Fali UNQUALIFIED
Jones H GauchoUnited KingdomElwin Sharvill NEGOTIATION
Ricardo X RutaSpainIoni Bowcher PROPOSAL
Aditya T KuskoFranceIoni Bowcher PROPOSAL
Ivar N BriddickBrazilElwin Sharvill QUALIFIED
Deepesh M RulapaughCanadaAmy Elsner NEGOTIATION
Antonio S WieserAustraliaIvan Magalhaes NEW
Nicolas N OldroydAustraliaAsiya Javayant RENEWAL
Mayumi R GarufiItalyAsiya Javayant NEW
Murillo Y MacleadBrazilBernardo Dominic NEGOTIATION
Jones V WhobreyAustraliaBernardo Dominic RENEWAL
David R FollerJapanOnyama Limba RENEWAL
Izzy F ShinkoGermanyAsiya Javayant NEW
Faith G MorascaArgentinaBernardo Dominic PROPOSAL
Francesco P NickaBrazilIoni Bowcher RENEWAL
Kadeem F WaycottFranceIoni Bowcher NEGOTIATION
Claire C MaletBrazilBernardo Dominic PROPOSAL
Cody O BowleyFranceIvan Magalhaes NEW
Nicolas K DilliardRussiaXuxue Feng PROPOSAL
Aika M RutaUnited KingdomElwin Sharvill RENEWAL
Ivar A MaletIndiaStephen 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>