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 H BowleyJapanAnna Fali RENEWAL
David F GillianUnited KingdomOnyama Limba NEW
Maria J WaycottSpainIvan Magalhaes QUALIFIED
Aika D RimIndiaAsiya Javayant NEGOTIATION
Sinclair Z CaudyIndiaAsiya Javayant NEGOTIATION
Deepesh G StockhamArgentinaOnyama Limba QUALIFIED
Emily C DoeItalyAsiya Javayant RENEWAL
Sinclair F StensethSpainIvan Magalhaes RENEWAL
Deepesh R VenereArgentinaOnyama Limba UNQUALIFIED
Mayumi F RimFranceAsiya Javayant QUALIFIED
Francesco T PoquetteSpainAsiya Javayant NEGOTIATION
Deepesh X AlbaresGermanyElwin Sharvill NEGOTIATION
Ricardo G DoeItalyAnna Fali RENEWAL
Kaitlin G FlosiCanadaAnna Fali RENEWAL
Alejandro N InouyeBrazilXuxue Feng NEW
Kadeem L GlickRussiaOnyama Limba NEGOTIATION
Tony J SergiArgentinaElwin Sharvill NEGOTIATION
Greenwood S FerenczAustraliaIvan Magalhaes QUALIFIED
Sinclair N RimUnited KingdomStephen Shaw NEW
Jennifer X DarakjyFranceBernardo Dominic QUALIFIED
Julie W VenereAustraliaIoni Bowcher UNQUALIFIED
Maria C OldroydArgentinaOnyama Limba UNQUALIFIED
Nicolas V VocelkaAustraliaElwin Sharvill QUALIFIED
Murillo M WaycottRussiaIoni Bowcher NEGOTIATION
Clifford J ShinkoAustraliaAsiya Javayant UNQUALIFIED
Julie U PaprockiBrazilIvan Magalhaes RENEWAL
Jeanfrancois E SlusarskiAustraliaStephen Shaw UNQUALIFIED
Jefferson W IturbideCanadaStephen Shaw UNQUALIFIED
Stacey G ChuiIndiaIvan Magalhaes NEGOTIATION
Johnson Y CampainUnited KingdomOnyama Limba RENEWAL
Salvatore T InouyeUnited KingdomStephen Shaw UNQUALIFIED
Stacey Q CaldareraIndiaAmy Elsner UNQUALIFIED
Jefferson Q GlickRussiaOnyama Limba UNQUALIFIED
Claire U FerenczIndiaElwin Sharvill QUALIFIED
Aditya E KolmetzBrazilElwin Sharvill NEGOTIATION
Misaki J OstroskyIndiaElwin Sharvill RENEWAL
Clifford G GlickJapanStephen Shaw NEW
Jennifer E TollnerSpainIvan Magalhaes NEGOTIATION
Deepesh N SaylorsAustraliaBernardo Dominic NEGOTIATION
Claire I ButtAustraliaStephen Shaw QUALIFIED
Murillo E RulapaughAustraliaXuxue Feng PROPOSAL
Kadeem R CaudyItalyIoni Bowcher NEW
Smith L TollnerIndiaStephen Shaw NEGOTIATION
Emily W OstroskySpainBernardo Dominic QUALIFIED
Jones T TollnerArgentinaXuxue Feng NEW
Munro D CampainUnited KingdomOnyama Limba QUALIFIED
Munro N RutaSpainIvan Magalhaes PROPOSAL
Aika L FlosiFranceOnyama Limba QUALIFIED
Cody R VenereCanadaStephen Shaw QUALIFIED
Costa I CaldareraIndiaAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Rodrigues L FigeroaSpainBernardo Dominic NEW
Silvio N DoeBrazilAnna Fali UNQUALIFIED
Julie U GauchoCanadaIoni Bowcher QUALIFIED
Morrow W MaletCanadaBernardo Dominic RENEWAL
Isabel R SergiIndiaIvan Magalhaes PROPOSAL
Smith G FigeroaBrazilAsiya Javayant NEW
Julie A MorascaSpainIoni Bowcher UNQUALIFIED
Wickens R VocelkaArgentinaAnna Fali NEGOTIATION
Octavia O TollnerArgentinaIoni Bowcher UNQUALIFIED
Aditya S NestleAustraliaStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco B NickaArgentina2024-03-18King, Christopher A Esq RENEWAL41Amy Elsner
1001Jeanfrancois V CampainSpain2024-04-14Chanay, Jeffrey A Esq UNQUALIFIED72Bernardo Dominic
1002Chavez N GillianGermany2024-04-07King, Christopher A Esq PROPOSAL81Anna Fali
1003Julie E PoquetteSpain2024-03-21Rousseaux, Michael Esq NEGOTIATION77Xuxue Feng
1004Mayumi L WieserJapan2024-04-13Rangoni Of Florence PROPOSAL67Stephen Shaw
1005Aruna Y GauchoCanada2024-03-26Feiner Bros PROPOSAL84Ioni Bowcher
1006Leon K OstroskyUnited Kingdom2024-04-09Feltz Printing Service UNQUALIFIED56Onyama Limba
1007Tony N WaycottArgentina2024-03-22Chanay, Jeffrey A Esq UNQUALIFIED88Bernardo Dominic
1008Izzy V GlickArgentina2024-04-10King, Christopher A Esq RENEWAL47Amy Elsner
1009Kaitlin D OldroydItaly2024-03-27Commercial Press NEGOTIATION46Stephen Shaw
1010Mayumi J WhobreyJapan2024-04-04Chemel, James L Cpa RENEWAL22Stephen Shaw
1011Ivar J InouyeUnited Kingdom2024-04-10Morlong Associates RENEWAL16Ivan Magalhaes
1012Murillo G CaldareraRussia2024-03-28Chapman, Ross E Esq NEW94Stephen Shaw
1013Kaitlin F FerenczIndia2024-03-17Rangoni Of Florence NEW45Asiya Javayant
1014Jennifer P GauchoJapan2024-03-19Morlong Associates PROPOSAL62Elwin Sharvill
1015Mayumi C WaycottSpain2024-04-12Printing Dimensions UNQUALIFIED89Ivan Magalhaes
1016Leon X StensethAustralia2024-04-10Truhlar And Truhlar Attys RENEWAL83Amy Elsner
1017Kaitlin H MacleadFrance2024-03-29Rousseaux, Michael Esq RENEWAL81Elwin Sharvill
1018Claire W GillianIndia2024-04-10Chanay, Jeffrey A Esq NEGOTIATION90Stephen Shaw
1019Salvatore R RimItaly2024-03-26Commercial Press RENEWAL2Stephen Shaw
1020Kaitlin Z OldroydCanada2024-04-13Commercial Press QUALIFIED44Ioni Bowcher
1021David B WaycottGermany2024-04-07King, Christopher A Esq QUALIFIED88Amy Elsner
1022Tony W IturbideFrance2024-03-21Rousseaux, Michael Esq PROPOSAL93Ioni Bowcher
1023Maria C AmigonBrazil2024-04-12King, Christopher A Esq NEGOTIATION69Anna Fali
1024Greenwood F PaprockiRussia2024-03-27Truhlar And Truhlar Attys RENEWAL56Ioni Bowcher
1025Misaki Y NickaRussia2024-03-24Feiner Bros NEGOTIATION87Bernardo Dominic
1026Octavia Q SlusarskiSpain2024-03-19Chemel, James L Cpa RENEWAL87Elwin Sharvill
1027James E SergiItaly2024-03-24Commercial Press QUALIFIED60Asiya Javayant
1028Rodrigues X GillianJapan2024-04-03Dorl, James J Esq PROPOSAL32Ioni Bowcher
1029Costa K CaudyUnited Kingdom2024-03-26Buckley Miller Wright RENEWAL22Elwin Sharvill
1030Salvatore D VocelkaUnited Kingdom2024-03-29Buckley Miller Wright RENEWAL32Asiya Javayant
1031Jefferson X CampainItaly2024-04-04Morlong Associates PROPOSAL83Ivan Magalhaes
1032Wickens N ShinkoRussia2024-04-10Benton, John B Jr NEGOTIATION21Ivan Magalhaes
1033Jefferson K KuskoIndia2024-03-26King, Christopher A Esq UNQUALIFIED39Ivan Magalhaes
1034Aika D SchemmerUnited Kingdom2024-04-01Rousseaux, Michael Esq PROPOSAL46Elwin Sharvill
1035Mayumi O SchemmerJapan2024-03-17Chemel, James L Cpa NEW82Amy Elsner
1036Salvatore H GarufiIndia2024-04-06Feltz Printing Service NEW15Amy Elsner
1037Misaki O StensethSpain2024-03-26Commercial Press NEW21Elwin Sharvill
1038Izzy P FollerBrazil2024-03-25Chemel, James L Cpa NEGOTIATION66Elwin Sharvill
1039Greenwood U PerinCanada2024-04-10Feltz Printing Service QUALIFIED42Bernardo Dominic
1040Kadeem X FlosiCanada2024-03-30Buckley Miller Wright RENEWAL4Xuxue Feng
1041Aika C MaletUnited Kingdom2024-03-18Morlong Associates NEGOTIATION11Amy Elsner
1042Murillo F FigeroaSpain2024-04-13Commercial Press UNQUALIFIED68Elwin Sharvill
1043Morrow C KolmetzBrazil2024-03-29Feltz Printing Service NEW60Elwin Sharvill
1044Silvio E WaycottSpain2024-04-15Chapman, Ross E Esq NEGOTIATION8Onyama Limba
1045Octavia O StensethCanada2024-04-09Printing Dimensions UNQUALIFIED18Ioni Bowcher
1046Izzy K MaletBrazil2024-04-03Feiner Bros NEW41Ioni Bowcher
1047Ashley Y FigeroaCanada2024-03-25Chemel, James L Cpa PROPOSAL15Onyama Limba
1048Deepesh U PoquetteUnited Kingdom2024-04-10Feltz Printing Service PROPOSAL99Elwin Sharvill
1049Cody D DilliardSpain2024-04-13Chapman, Ross E Esq NEW87Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Izzy S WieserJapanXuxue Feng NEW
Mujtaba T PoquetteFranceAmy Elsner RENEWAL
Claire Z RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
James U GillianJapanAsiya Javayant RENEWAL
Maria G BologniaIndiaXuxue Feng NEGOTIATION
Ivar P NickaGermanyIvan Magalhaes UNQUALIFIED
Maisha K MaletUnited KingdomOnyama Limba UNQUALIFIED
Isabel Q AmigonBrazilIvan Magalhaes NEGOTIATION
Antonio O ShinkoArgentinaIvan Magalhaes RENEWAL
Claire O FerenczSpainAnna Fali QUALIFIED
Alejandro G OldroydArgentinaAsiya Javayant QUALIFIED
Darci S OstroskyIndiaAmy Elsner NEGOTIATION
Smith N StensethJapanXuxue Feng RENEWAL
Julie E ShinkoJapanIoni Bowcher PROPOSAL
Jones A CampainCanadaBernardo Dominic UNQUALIFIED
Jones G VenereItalyAnna Fali RENEWAL
Salvatore V CaudyUnited KingdomElwin Sharvill RENEWAL
Juan X FerenczItalyOnyama Limba PROPOSAL
Ricardo S FlosiItalyIoni Bowcher QUALIFIED
Clifford G MarrierCanadaIoni Bowcher NEGOTIATION
Jones D OldroydGermanyAnna Fali QUALIFIED
Jeanfrancois P WaycottAustraliaElwin Sharvill NEW
James W GillianFranceStephen Shaw QUALIFIED
Kaitlin P OldroydAustraliaAmy Elsner UNQUALIFIED
Alejandro K RutaRussiaAnna Fali RENEWAL
Maisha M FlosiAustraliaAsiya Javayant PROPOSAL
Sinclair L OstroskyArgentinaAnna Fali NEGOTIATION
Chavez Q GauchoJapanOnyama Limba NEGOTIATION
Kaitlin X NestleSpainStephen Shaw NEW
Mayumi Z WaycottJapanXuxue Feng NEGOTIATION
Aruna S RulapaughFranceBernardo Dominic QUALIFIED
Alejandro V OldroydJapanStephen Shaw NEGOTIATION
Juan O CaldareraSpainIoni Bowcher NEGOTIATION
Faith A VenereItalyIvan Magalhaes NEGOTIATION
Mujtaba W MaletAustraliaAmy Elsner NEW
Morrow C AmigonSpainIoni Bowcher UNQUALIFIED
Chavez K ChuiRussiaStephen Shaw RENEWAL
Cody H PaprockiGermanyElwin Sharvill PROPOSAL
Aditya H SlusarskiItalyAmy Elsner RENEWAL
David H IturbideUnited KingdomBernardo Dominic NEGOTIATION
Munro Z RutaItalyStephen Shaw NEGOTIATION
Silvio U BologniaArgentinaIvan Magalhaes NEW
Jennifer A MaletGermanyAmy Elsner RENEWAL
Francesco N OstroskyIndiaXuxue Feng NEGOTIATION
Chavez N FerenczAustraliaElwin Sharvill NEGOTIATION
Deepesh E PaprockiFranceStephen Shaw NEGOTIATION
Misaki U NickaArgentinaOnyama Limba NEGOTIATION
Maria R OldroydJapanOnyama Limba QUALIFIED
Stacey R WhobreyArgentinaAnna Fali RENEWAL
Salvatore K FigeroaCanadaStephen Shaw NEGOTIATION
Frozen Columns
Name
Johnson W Ruta
Clifford J Bowley
Kaitlin E Rim
Emily S Gillian
Ricardo E Paprocki
Silvio U Kusko
Francesco P Figeroa
Sinclair F Poquette
Costa I Shinko
Munro V Caudy
David U Wieser
Deepesh L Nestle
David R Gillian
Ivar E Morasca
Tony Q Bolognia
Munro J Amigon
Aruna G Nicka
Ashley H Vocelka
Izzy G Foller
Jefferson Q Poquette
Cody U Saylors
Munro H Ferencz
Darci C Bolognia
Adams X Whobrey
Kadeem M Shinko
Adams P Glick
Juan M Gaucho
Maria J Iturbide
Nicolas I Maclead
Faith A Venere
Nicolas D Vocelka
Ricardo J Amigon
Isabel B Caudy
Aruna O Rulapaugh
Chavez S Ruta
Claire N Dilliard
Mujtaba Y Kusko
Rodrigues D Gillian
Silvio Q Slusarski
Mayumi N Tollner
Morrow G Malet
Leon G Chui
Salvatore S Briddick
Julie N Poquette
Jones L Kolmetz
Aditya L Nestle
Jennifer N Ostrosky
Jeanfrancois C Kolmetz
Cody A Paprocki
David C Rulapaugh
IdCountryDate
1000Germany2024-03-24
1001France2024-03-18
1002Canada2024-03-18
1003Australia2024-04-14
1004France2024-03-22
1005India2024-04-08
1006Canada2024-04-09
1007United Kingdom2024-03-28
1008Russia2024-03-17
1009Russia2024-04-10
1010Russia2024-03-20
1011France2024-04-01
1012Spain2024-03-20
1013Australia2024-03-24
1014Japan2024-04-10
1015France2024-03-28
1016United Kingdom2024-04-07
1017Japan2024-04-03
1018Australia2024-04-15
1019Japan2024-04-07
1020Argentina2024-03-26
1021Spain2024-04-11
1022Germany2024-03-26
1023Canada2024-04-11
1024Canada2024-04-13
1025Brazil2024-04-01
1026Russia2024-03-21
1027Canada2024-03-27
1028Australia2024-03-17
1029France2024-04-12
1030France2024-04-12
1031India2024-04-09
1032Canada2024-03-30
1033Japan2024-04-10
1034Argentina2024-04-02
1035Japan2024-04-15
1036Japan2024-03-19
1037Germany2024-03-17
1038Canada2024-04-11
1039Japan2024-04-10
1040Canada2024-04-11
1041France2024-03-24
1042India2024-03-19
1043Italy2024-03-19
1044Italy2024-04-09
1045Spain2024-03-20
1046Brazil2024-04-01
1047Japan2024-04-10
1048France2024-03-26
1049Japan2024-04-08

On-Demand Data

NameIdCountryDate
Francesco Z Amigon1000India2024-04-11
Munro O Inouye1001Germany2024-04-11
Murillo W Saylors1002Brazil2024-03-24
Chavez W Caldarera1003France2024-04-02
Sinclair B Shinko1004Argentina2024-03-21
Julie S Paprocki1005India2024-04-10
Chavez U Waycott1006Spain2024-04-04
Leon B Maclead1007Russia2024-04-14
Morrow V Maclead1008Japan2024-03-17
Octavia K Amigon1009Spain2024-04-14
Francesco J Slusarski1010Spain2024-04-12
Leja S Campain1011Spain2024-03-22
Octavia B Sergi1012Argentina2024-03-22
Ivar Z Shinko1013United Kingdom2024-04-05
Kadeem Y Shinko1014India2024-03-30
Sinclair S Inouye1015Canada2024-03-23
Jennifer D Poquette1016Italy2024-03-27
James N Schemmer1017Canada2024-04-08
Mujtaba G Nicka1018United Kingdom2024-03-22
Julie E Rulapaugh1019Argentina2024-03-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens Y MaletArgentinaElwin Sharvill NEGOTIATION
Claire A AlbaresAustraliaElwin Sharvill PROPOSAL
Kadeem I RimIndiaIvan Magalhaes NEW
Costa G BologniaItalyBernardo Dominic NEW
Morrow E MaletItalyAnna Fali NEW
Nicolas W KolmetzFranceIoni Bowcher QUALIFIED
Ricardo R CaldareraCanadaAsiya Javayant PROPOSAL
Jeanfrancois T MaletBrazilBernardo Dominic RENEWAL
Aditya W SlusarskiBrazilAnna Fali QUALIFIED
Emily A NickaCanadaAnna Fali NEGOTIATION
Johnson D DoeJapanBernardo Dominic QUALIFIED
Jeanfrancois A FollerArgentinaAsiya Javayant PROPOSAL
Aditya N FlosiGermanyOnyama Limba QUALIFIED
Johnson C VenereBrazilIvan Magalhaes PROPOSAL
Izzy C OldroydJapanAnna Fali UNQUALIFIED
Murillo L PerinIndiaAmy Elsner NEGOTIATION
Stacey N SlusarskiGermanyAsiya Javayant UNQUALIFIED
Chavez Q IturbideItalyBernardo Dominic QUALIFIED
Munro A BologniaGermanyXuxue Feng UNQUALIFIED
Misaki W TollnerUnited KingdomAmy Elsner RENEWAL
Wickens X GarufiAustraliaAmy Elsner RENEWAL
David T DoeArgentinaOnyama Limba RENEWAL
Ashley V SchemmerJapanBernardo Dominic NEGOTIATION
Octavia Y ButtGermanyAsiya Javayant UNQUALIFIED
Octavia B CaldareraGermanyIoni Bowcher RENEWAL
Munro N MarrierBrazilAmy Elsner RENEWAL
Adams G CaldareraSpainAnna Fali RENEWAL
Nicolas E PaprockiGermanyIoni Bowcher PROPOSAL
Clifford E MaletBrazilXuxue Feng QUALIFIED
Stacey V FollerAustraliaIvan Magalhaes UNQUALIFIED
Costa E FollerArgentinaBernardo Dominic NEGOTIATION
Rodrigues H SaylorsGermanyStephen Shaw RENEWAL
Murillo Y BriddickArgentinaIoni Bowcher PROPOSAL
Ricardo E SergiFranceIvan Magalhaes NEGOTIATION
Antonio U SergiUnited KingdomXuxue Feng QUALIFIED
Aika M ButtBrazilIvan Magalhaes PROPOSAL
David K StockhamRussiaXuxue Feng RENEWAL
Greenwood A GauchoIndiaStephen Shaw RENEWAL
Faith Q PoquetteJapanStephen Shaw QUALIFIED
Faith E GarufiArgentinaStephen 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>