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
Adams P KolmetzUnited KingdomBernardo Dominic UNQUALIFIED
Alejandro Y OldroydArgentinaElwin Sharvill NEW
Salvatore W ChuiBrazilAnna Fali PROPOSAL
Adams P FlosiUnited KingdomOnyama Limba RENEWAL
Murillo C GillianSpainStephen Shaw UNQUALIFIED
Murillo E RutaSpainAnna Fali UNQUALIFIED
Adams L FollerFranceAnna Fali UNQUALIFIED
Johnson I RulapaughAustraliaIvan Magalhaes UNQUALIFIED
Jeanfrancois M WaycottJapanOnyama Limba UNQUALIFIED
Mujtaba T StockhamGermanyElwin Sharvill PROPOSAL
Misaki T SaylorsCanadaAsiya Javayant QUALIFIED
Jeanfrancois T BologniaGermanyIvan Magalhaes PROPOSAL
Kaitlin T RutaJapanStephen Shaw PROPOSAL
Munro L MaletCanadaStephen Shaw RENEWAL
Maisha N GillianJapanOnyama Limba UNQUALIFIED
Wickens U GarufiJapanStephen Shaw NEW
Claire C SchemmerItalyAsiya Javayant PROPOSAL
Aditya V MaletBrazilStephen Shaw NEGOTIATION
Mayumi Q NestleFranceOnyama Limba QUALIFIED
Jones U FerenczBrazilAsiya Javayant NEW
Jefferson Z DarakjyAustraliaAsiya Javayant RENEWAL
Adams C RoysterRussiaAsiya Javayant UNQUALIFIED
Emily C GillianArgentinaXuxue Feng UNQUALIFIED
Kaitlin J MacleadCanadaAmy Elsner UNQUALIFIED
Silvio L MacleadItalyIvan Magalhaes NEW
Chavez H BologniaArgentinaStephen Shaw NEGOTIATION
David B NickaSpainAsiya Javayant QUALIFIED
Kadeem L KolmetzArgentinaElwin Sharvill PROPOSAL
Leja H VenereGermanyXuxue Feng RENEWAL
Isabel B FollerFranceBernardo Dominic NEGOTIATION
Mujtaba Z GillianJapanAnna Fali RENEWAL
Emily E PerinItalyIoni Bowcher RENEWAL
Francesco L CaldareraItalyStephen Shaw QUALIFIED
Maria Y WhobreyUnited KingdomElwin Sharvill RENEWAL
Wickens C OldroydFranceIvan Magalhaes QUALIFIED
Wickens P SchemmerUnited KingdomAmy Elsner NEGOTIATION
Silvio S PoquetteFranceBernardo Dominic NEGOTIATION
Morrow E PaprockiGermanyStephen Shaw PROPOSAL
Kadeem H MorascaFranceAmy Elsner QUALIFIED
Jefferson P FollerAustraliaXuxue Feng NEW
Ivar F SergiJapanBernardo Dominic NEGOTIATION
Murillo J KolmetzArgentinaIvan Magalhaes RENEWAL
Costa O FigeroaUnited KingdomBernardo Dominic QUALIFIED
Stacey C FlosiBrazilAmy Elsner NEW
Kaitlin R CaudyAustraliaIvan Magalhaes UNQUALIFIED
Jeanfrancois S MaletRussiaAnna Fali NEGOTIATION
Ricardo D CampainJapanIoni Bowcher RENEWAL
Juan E SaylorsJapanBernardo Dominic QUALIFIED
Deepesh L OstroskyUnited KingdomOnyama Limba UNQUALIFIED
Octavia J SaylorsBrazilStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Clifford V WhobreyItalyElwin Sharvill RENEWAL
Leon R VocelkaItalyOnyama Limba PROPOSAL
Francesco R SaylorsArgentinaBernardo Dominic UNQUALIFIED
Greenwood K AlbaresGermanyBernardo Dominic QUALIFIED
Faith G GarufiUnited KingdomIoni Bowcher PROPOSAL
Octavia D AlbaresRussiaStephen Shaw NEGOTIATION
Jefferson A AlbaresItalyXuxue Feng QUALIFIED
Mujtaba Q WhobreyUnited KingdomStephen Shaw NEGOTIATION
Francesco G FlosiAustraliaIvan Magalhaes NEGOTIATION
Jefferson Z GillianIndiaAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey U BologniaGermany2024-04-04Chapman, Ross E Esq PROPOSAL60Elwin Sharvill
1001Deepesh P BologniaGermany2024-04-09Rousseaux, Michael Esq NEW32Bernardo Dominic
1002Murillo R KuskoGermany2024-04-24Benton, John B Jr NEW65Amy Elsner
1003Jeanfrancois Z ButtIndia2024-04-08Commercial Press NEW45Stephen Shaw
1004James H WaycottJapan2024-03-31Benton, John B Jr PROPOSAL44Elwin Sharvill
1005Costa B SaylorsGermany2024-04-04Rousseaux, Michael Esq NEGOTIATION27Asiya Javayant
1006James F MarrierArgentina2024-04-09King, Christopher A Esq UNQUALIFIED77Onyama Limba
1007Francesco R MarrierAustralia2024-04-22Benton, John B Jr PROPOSAL41Xuxue Feng
1008Silvio J MorascaUnited Kingdom2024-04-04Feiner Bros NEW24Bernardo Dominic
1009Claire D DilliardArgentina2024-03-31Buckley Miller Wright NEW80Elwin Sharvill
1010Jennifer A SaylorsIndia2024-04-04Rangoni Of Florence PROPOSAL98Elwin Sharvill
1011Clifford H MorascaBrazil2024-04-13Rousseaux, Michael Esq UNQUALIFIED12Anna Fali
1012Jones X WieserJapan2024-04-08Chemel, James L Cpa QUALIFIED97Asiya Javayant
1013Izzy V BowleyGermany2024-04-24Commercial Press UNQUALIFIED97Bernardo Dominic
1014Jeanfrancois X InouyeCanada2024-04-01Feiner Bros QUALIFIED53Onyama Limba
1015Murillo A RimGermany2024-04-21Chemel, James L Cpa QUALIFIED4Ioni Bowcher
1016Maria H WhobreyItaly2024-03-30Commercial Press QUALIFIED35Stephen Shaw
1017Misaki F DarakjyArgentina2024-04-22Dorl, James J Esq RENEWAL54Ioni Bowcher
1018Salvatore X MaletSpain2024-04-20Rousseaux, Michael Esq NEGOTIATION15Ivan Magalhaes
1019Jeanfrancois R CampainBrazil2024-04-01Morlong Associates PROPOSAL41Ioni Bowcher
1020Kadeem I FlosiJapan2024-04-13Truhlar And Truhlar Attys RENEWAL60Asiya Javayant
1021Clifford E InouyeFrance2024-04-02Benton, John B Jr QUALIFIED22Stephen Shaw
1022Tony F KolmetzItaly2024-04-11Buckley Miller Wright QUALIFIED30Anna Fali
1023Jefferson M InouyeArgentina2024-04-18Truhlar And Truhlar Attys UNQUALIFIED15Asiya Javayant
1024Munro O BowleyItaly2024-04-22Truhlar And Truhlar Attys RENEWAL80Xuxue Feng
1025David H ButtRussia2024-04-03Chemel, James L Cpa UNQUALIFIED1Stephen Shaw
1026Jones D RutaSpain2024-04-21Truhlar And Truhlar Attys QUALIFIED11Amy Elsner
1027Juan L FerenczFrance2024-04-15Rousseaux, Michael Esq QUALIFIED34Elwin Sharvill
1028Maria M OstroskyJapan2024-04-17Rangoni Of Florence PROPOSAL91Anna Fali
1029Ricardo Y MacleadRussia2024-04-17Feltz Printing Service RENEWAL84Onyama Limba
1030Izzy M WieserRussia2024-04-25King, Christopher A Esq PROPOSAL43Ioni Bowcher
1031Isabel V MacleadIndia2024-04-07Commercial Press NEGOTIATION1Asiya Javayant
1032Murillo D GauchoItaly2024-03-31Chemel, James L Cpa QUALIFIED25Onyama Limba
1033Kaitlin X MarrierIndia2024-03-31Feltz Printing Service NEW85Bernardo Dominic
1034Kadeem S WaycottGermany2024-04-02Commercial Press NEGOTIATION33Bernardo Dominic
1035Leja O MaletRussia2024-04-02Commercial Press NEGOTIATION17Bernardo Dominic
1036Aruna W MorascaUnited Kingdom2024-04-09Rousseaux, Michael Esq NEGOTIATION74Anna Fali
1037Isabel K PoquetteAustralia2024-04-15Morlong Associates NEGOTIATION77Amy Elsner
1038Costa I GlickGermany2024-04-05Printing Dimensions UNQUALIFIED75Stephen Shaw
1039Juan N RimFrance2024-04-05Feiner Bros QUALIFIED91Onyama Limba
1040Salvatore D GarufiAustralia2024-04-14Rangoni Of Florence PROPOSAL10Onyama Limba
1041Alejandro Y DarakjyAustralia2024-04-22Feiner Bros UNQUALIFIED0Ivan Magalhaes
1042Julie F DarakjyBrazil2024-04-09Commercial Press UNQUALIFIED59Ivan Magalhaes
1043Mujtaba A RutaAustralia2024-04-06Feiner Bros NEGOTIATION4Onyama Limba
1044Darci F VocelkaAustralia2024-03-31Benton, John B Jr NEGOTIATION10Ioni Bowcher
1045Maisha X RimUnited Kingdom2024-04-24Buckley Miller Wright QUALIFIED27Ioni Bowcher
1046Ricardo Y BowleyRussia2024-04-13Morlong Associates RENEWAL65Bernardo Dominic
1047Ricardo X BowleyBrazil2024-04-12Rangoni Of Florence NEW54Ivan Magalhaes
1048Leon X BologniaItaly2024-04-11Chapman, Ross E Esq QUALIFIED71Bernardo Dominic
1049Jennifer C CaudyRussia2024-04-24Benton, John B Jr UNQUALIFIED38Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Aditya I RutaUnited KingdomIvan Magalhaes NEW
Silvio P DarakjyAustraliaStephen Shaw RENEWAL
Leon V CaldareraRussiaStephen Shaw UNQUALIFIED
Mujtaba Q SergiAustraliaOnyama Limba RENEWAL
Ricardo X MacleadArgentinaBernardo Dominic PROPOSAL
Jones Y AlbaresItalyBernardo Dominic QUALIFIED
Sinclair A GauchoJapanAnna Fali PROPOSAL
Aika C KolmetzArgentinaAsiya Javayant NEGOTIATION
Stacey L CaldareraJapanAnna Fali NEW
Deepesh Z VenereIndiaStephen Shaw RENEWAL
Jennifer K RutaSpainAmy Elsner NEGOTIATION
Murillo C PerinItalyStephen Shaw RENEWAL
Wickens S TollnerUnited KingdomIoni Bowcher UNQUALIFIED
David N CaldareraSpainBernardo Dominic QUALIFIED
Mayumi B MarrierGermanyBernardo Dominic RENEWAL
Greenwood T SaylorsGermanyAsiya Javayant NEGOTIATION
Johnson V MaletUnited KingdomElwin Sharvill NEGOTIATION
Izzy L DarakjyUnited KingdomBernardo Dominic UNQUALIFIED
Claire P FerenczAustraliaOnyama Limba UNQUALIFIED
Tony Z AlbaresSpainAnna Fali RENEWAL
Sinclair C StockhamRussiaXuxue Feng QUALIFIED
Tony G VocelkaFranceAsiya Javayant NEGOTIATION
Leja U GlickSpainAmy Elsner PROPOSAL
Clifford P MacleadRussiaBernardo Dominic PROPOSAL
Julie U IturbideBrazilAnna Fali UNQUALIFIED
Mayumi Y WaycottAustraliaStephen Shaw QUALIFIED
Adams K ChuiCanadaAmy Elsner NEGOTIATION
Smith M MaletJapanStephen Shaw NEW
Izzy T NestleAustraliaAmy Elsner PROPOSAL
Kadeem M MaletItalyAsiya Javayant NEGOTIATION
Jeanfrancois S GarufiRussiaIoni Bowcher NEW
Adams J BowleyFranceBernardo Dominic QUALIFIED
Octavia J FlosiUnited KingdomIoni Bowcher PROPOSAL
Silvio C CaudyCanadaOnyama Limba NEGOTIATION
Murillo K FollerCanadaAmy Elsner NEGOTIATION
Darci F FollerCanadaElwin Sharvill PROPOSAL
Julie C BologniaRussiaStephen Shaw QUALIFIED
Claire T GauchoBrazilOnyama Limba NEW
Cody E ChuiRussiaXuxue Feng UNQUALIFIED
Costa H ButtGermanyElwin Sharvill UNQUALIFIED
Aruna N SaylorsJapanIoni Bowcher PROPOSAL
Deepesh J KolmetzBrazilAnna Fali PROPOSAL
Mayumi E FlosiGermanyXuxue Feng RENEWAL
Tony L MarrierRussiaAmy Elsner PROPOSAL
Leon Q PaprockiAustraliaAmy Elsner RENEWAL
Jefferson M CaldareraArgentinaIoni Bowcher NEGOTIATION
Adams T WaycottGermanyAmy Elsner RENEWAL
Cody Y RimItalyXuxue Feng NEGOTIATION
Murillo D MarrierBrazilIvan Magalhaes PROPOSAL
Nicolas V InouyeIndiaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Deepesh T Rim
Kadeem W Bolognia
Jefferson E Gillian
Francesco G Briddick
Aruna E Waycott
Aditya M Foller
Jeanfrancois Z Glick
Isabel W Ostrosky
Ivar C Glick
Francesco H Royster
Leon H Inouye
Clifford R Nestle
Tony V Rulapaugh
Izzy C Vocelka
Ashley M Garufi
Johnson G Perin
Morrow Y Marrier
Aika P Ferencz
Alejandro Q Morasca
Rodrigues B Ruta
Faith P Perin
Sinclair R Caldarera
Morrow Q Maclead
Sinclair F Shinko
Mujtaba D Whobrey
Julie H Bowley
Deepesh Z Kusko
Wickens L Campain
Tony B Kusko
Kadeem X Kolmetz
Silvio R Oldroyd
Ashley I Malet
Faith F Marrier
Ivar S Malet
Johnson K Vocelka
Arvin A Briddick
Ashley R Glick
Murillo C Garufi
Stacey X Venere
Alejandro I Albares
Leon L Ruta
Claire M Waycott
Kaitlin O Oldroyd
Leja Y Darakjy
Ricardo B Gaucho
Chavez I Campain
Wickens U Stockham
Kaitlin S Malet
Antonio I Stockham
Chavez B Sergi
IdCountryDate
1000Brazil2024-04-14
1001Spain2024-03-31
1002Australia2024-04-14
1003Brazil2024-04-11
1004Brazil2024-04-04
1005Argentina2024-03-27
1006Brazil2024-04-16
1007Canada2024-04-09
1008Argentina2024-04-25
1009Spain2024-04-15
1010Italy2024-04-02
1011Australia2024-03-29
1012Germany2024-04-17
1013France2024-04-01
1014Brazil2024-04-16
1015India2024-04-17
1016Canada2024-04-01
1017Argentina2024-04-22
1018India2024-04-10
1019Argentina2024-04-12
1020Japan2024-03-30
1021France2024-04-06
1022Canada2024-04-16
1023Japan2024-04-18
1024Japan2024-03-29
1025Argentina2024-04-24
1026Russia2024-04-08
1027Italy2024-04-07
1028Japan2024-04-19
1029Argentina2024-04-20
1030Germany2024-04-14
1031Germany2024-04-10
1032Canada2024-04-02
1033Canada2024-04-14
1034India2024-04-11
1035Russia2024-04-14
1036India2024-04-23
1037France2024-03-30
1038Spain2024-04-10
1039Italy2024-04-23
1040Russia2024-04-05
1041Brazil2024-04-17
1042Canada2024-04-13
1043Italy2024-03-31
1044Australia2024-04-19
1045Spain2024-03-31
1046Russia2024-04-21
1047India2024-04-21
1048Japan2024-04-16
1049Brazil2024-04-22

On-Demand Data

NameIdCountryDate
Costa R Paprocki1000Germany2024-04-24
Emily C Tollner1001Argentina2024-04-19
Arvin F Whobrey1002Japan2024-03-30
Kaitlin U Bowley1003Argentina2024-04-03
Kaitlin L Glick1004Australia2024-04-04
Ricardo U Chui1005United Kingdom2024-04-24
Leon Q Ruta1006Argentina2024-04-23
Murillo U Foller1007Italy2024-04-13
Kadeem Y Sergi1008Australia2024-04-11
Wickens G Ferencz1009Russia2024-03-31
Juan Q Darakjy1010Germany2024-04-09
Leja A Venere1011Japan2024-04-22
Adams B Venere1012Brazil2024-04-05
Clifford W Waycott1013Germany2024-04-04
Ivar K Schemmer1014India2024-04-02
Costa A Sergi1015Spain2024-04-17
Kadeem V Malet1016Russia2024-04-09
Adams D Kolmetz1017Canada2024-04-25
Mayumi J Ruta1018France2024-04-14
Juan D Slusarski1019Argentina2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo R SergiAustraliaAmy Elsner PROPOSAL
Wickens A AmigonBrazilAmy Elsner NEGOTIATION
Stacey E BriddickBrazilBernardo Dominic NEGOTIATION
Greenwood I KolmetzItalyElwin Sharvill NEW
Juan T PoquetteFranceAnna Fali NEGOTIATION
Munro G DarakjyRussiaIoni Bowcher RENEWAL
Munro E ButtFranceXuxue Feng QUALIFIED
Misaki X StockhamFranceAsiya Javayant NEGOTIATION
Smith V SergiRussiaAnna Fali UNQUALIFIED
Francesco E PerinRussiaStephen Shaw PROPOSAL
Leja X OstroskyCanadaBernardo Dominic NEGOTIATION
Isabel E ShinkoIndiaBernardo Dominic UNQUALIFIED
Adams P CampainUnited KingdomBernardo Dominic QUALIFIED
Silvio T FollerArgentinaAnna Fali NEW
Ricardo W RutaGermanyStephen Shaw UNQUALIFIED
James G WhobreyRussiaElwin Sharvill QUALIFIED
Ashley M SlusarskiSpainIvan Magalhaes UNQUALIFIED
Johnson F MorascaFranceStephen Shaw RENEWAL
Cody W NickaRussiaIoni Bowcher RENEWAL
Clifford E OldroydAustraliaAmy Elsner PROPOSAL
Emily L CaldareraGermanyOnyama Limba NEW
Adams G GarufiRussiaAmy Elsner NEW
Octavia Y MacleadCanadaXuxue Feng RENEWAL
Tony U IturbideArgentinaStephen Shaw RENEWAL
Deepesh N BologniaSpainAnna Fali NEW
Jeanfrancois J AmigonBrazilStephen Shaw NEW
Greenwood U TollnerRussiaAnna Fali RENEWAL
Mayumi Y RoysterGermanyOnyama Limba NEGOTIATION
Julie Y FerenczItalyOnyama Limba NEGOTIATION
Ricardo N GillianIndiaOnyama Limba NEW
Mayumi B CaudyArgentinaIvan Magalhaes NEGOTIATION
Julie J StockhamGermanyIoni Bowcher PROPOSAL
Julie R WhobreyIndiaAmy Elsner RENEWAL
Kaitlin Y StensethGermanyElwin Sharvill NEW
Morrow D PerinUnited KingdomElwin Sharvill PROPOSAL
Jones D CaudyCanadaOnyama Limba UNQUALIFIED
Jones L NickaJapanIvan Magalhaes NEW
Jeanfrancois R CaldareraFranceStephen Shaw UNQUALIFIED
Cody D DilliardRussiaIoni Bowcher UNQUALIFIED
Maria Q SchemmerItalyAmy Elsner 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>