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
Julie D BowleySpainOnyama Limba RENEWAL
Morrow K CampainGermanyAsiya Javayant UNQUALIFIED
Adams Z SlusarskiUnited KingdomIoni Bowcher UNQUALIFIED
Jeanfrancois F ChuiAustraliaIoni Bowcher NEW
Ashley Z DilliardJapanIvan Magalhaes RENEWAL
Darci C GlickUnited KingdomOnyama Limba UNQUALIFIED
Silvio H NickaCanadaAmy Elsner QUALIFIED
Isabel W KolmetzArgentinaElwin Sharvill QUALIFIED
Francesco K VenereGermanyElwin Sharvill PROPOSAL
James Q ShinkoItalyStephen Shaw RENEWAL
Adams G AlbaresBrazilBernardo Dominic PROPOSAL
Aika Z VenereArgentinaOnyama Limba NEW
Misaki P CaldareraAustraliaAmy Elsner NEW
Morrow O WieserArgentinaIoni Bowcher RENEWAL
Clifford E SlusarskiFranceIoni Bowcher QUALIFIED
Wickens J VenereRussiaAsiya Javayant NEGOTIATION
Mujtaba I RoysterBrazilAmy Elsner PROPOSAL
Murillo A CaldareraSpainXuxue Feng PROPOSAL
Aditya T FerenczUnited KingdomElwin Sharvill RENEWAL
Nicolas R CaudyCanadaIvan Magalhaes NEW
Salvatore Y SergiGermanyOnyama Limba NEW
Silvio E RoysterBrazilAmy Elsner QUALIFIED
Antonio L BologniaAustraliaXuxue Feng PROPOSAL
Aruna W NickaItalyAnna Fali NEGOTIATION
Aruna B CaldareraArgentinaOnyama Limba RENEWAL
Francesco D FollerIndiaAsiya Javayant QUALIFIED
Kadeem K ChuiSpainAmy Elsner QUALIFIED
Deepesh W VocelkaFranceAsiya Javayant UNQUALIFIED
Tony X SaylorsRussiaElwin Sharvill UNQUALIFIED
Antonio Z MacleadUnited KingdomStephen Shaw RENEWAL
Aika L OstroskyFranceAmy Elsner UNQUALIFIED
Stacey G DarakjyIndiaOnyama Limba NEGOTIATION
Alejandro E GarufiCanadaXuxue Feng NEGOTIATION
Morrow F FigeroaSpainIvan Magalhaes NEGOTIATION
Juan N FerenczCanadaAmy Elsner PROPOSAL
Morrow O MorascaGermanyAnna Fali RENEWAL
Cody A BriddickCanadaAmy Elsner QUALIFIED
Maisha X VenereItalyBernardo Dominic UNQUALIFIED
Arvin A KolmetzUnited KingdomOnyama Limba QUALIFIED
Kadeem M DarakjyItalyElwin Sharvill NEGOTIATION
Izzy S SlusarskiUnited KingdomIvan Magalhaes RENEWAL
Johnson X SaylorsSpainIoni Bowcher PROPOSAL
Cody I NickaBrazilAnna Fali NEGOTIATION
Munro E KuskoIndiaOnyama Limba PROPOSAL
Wickens P NickaFranceXuxue Feng QUALIFIED
Aika L StensethGermanyOnyama Limba QUALIFIED
Mayumi I KolmetzBrazilIvan Magalhaes NEGOTIATION
Jennifer I SlusarskiItalyAmy Elsner NEGOTIATION
Sinclair T SaylorsBrazilAsiya Javayant PROPOSAL
Juan I CaudyRussiaIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Smith B DarakjyGermanyIoni Bowcher NEW
Kaitlin L SchemmerCanadaElwin Sharvill RENEWAL
Costa V GauchoIndiaOnyama Limba QUALIFIED
Stacey J WieserRussiaStephen Shaw RENEWAL
Arvin Z SchemmerBrazilIoni Bowcher PROPOSAL
Johnson A RutaRussiaOnyama Limba RENEWAL
Jennifer F TollnerItalyBernardo Dominic NEGOTIATION
Juan Y OstroskyCanadaStephen Shaw QUALIFIED
Francesco V FerenczFranceElwin Sharvill UNQUALIFIED
Maisha K ShinkoRussiaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody M OldroydIndia2024-04-11Rangoni Of Florence QUALIFIED85Amy Elsner
1001Smith S PerinItaly2024-04-26Feiner Bros NEGOTIATION90Anna Fali
1002Claire W MarrierArgentina2024-04-01Dorl, James J Esq UNQUALIFIED21Amy Elsner
1003Aditya K StockhamGermany2024-04-01Benton, John B Jr QUALIFIED6Asiya Javayant
1004Ricardo F SlusarskiArgentina2024-04-17Printing Dimensions QUALIFIED87Onyama Limba
1005Jefferson T AlbaresRussia2024-04-26Rangoni Of Florence QUALIFIED96Bernardo Dominic
1006Izzy P KuskoJapan2024-03-31Chanay, Jeffrey A Esq UNQUALIFIED58Stephen Shaw
1007Octavia G BologniaSpain2024-04-11Morlong Associates RENEWAL82Bernardo Dominic
1008Antonio Y SergiRussia2024-04-02Chemel, James L Cpa PROPOSAL68Ivan Magalhaes
1009Johnson R GlickJapan2024-04-08Truhlar And Truhlar Attys NEGOTIATION38Elwin Sharvill
1010Leon C GarufiSpain2024-04-27Rousseaux, Michael Esq NEGOTIATION80Onyama Limba
1011Adams H RoysterSpain2024-04-17Rousseaux, Michael Esq PROPOSAL6Amy Elsner
1012Rodrigues R PoquetteIndia2024-04-07Rousseaux, Michael Esq UNQUALIFIED14Amy Elsner
1013Aditya Y SlusarskiJapan2024-04-26Commercial Press NEGOTIATION10Stephen Shaw
1014Jeanfrancois I DilliardJapan2024-04-21Printing Dimensions NEW29Bernardo Dominic
1015David M FollerItaly2024-04-22Commercial Press NEGOTIATION90Ivan Magalhaes
1016Arvin K AmigonCanada2024-04-21Morlong Associates NEW62Anna Fali
1017Greenwood Q ButtRussia2024-04-06Buckley Miller Wright QUALIFIED0Ivan Magalhaes
1018Ivar K DarakjyArgentina2024-04-20Chanay, Jeffrey A Esq QUALIFIED63Anna Fali
1019Isabel P VocelkaArgentina2024-04-09Morlong Associates NEW41Asiya Javayant
1020Antonio J CampainFrance2024-03-29Rangoni Of Florence NEW91Ivan Magalhaes
1021Isabel G KuskoBrazil2024-04-13Chapman, Ross E Esq QUALIFIED7Ivan Magalhaes
1022Juan P MaletGermany2024-04-06Benton, John B Jr UNQUALIFIED23Onyama Limba
1023Darci Q TollnerFrance2024-04-14Chanay, Jeffrey A Esq QUALIFIED24Asiya Javayant
1024Sinclair I IturbideArgentina2024-04-26Feiner Bros UNQUALIFIED12Stephen Shaw
1025Greenwood S VenereSpain2024-03-29Chanay, Jeffrey A Esq UNQUALIFIED10Ivan Magalhaes
1026Johnson P MaletArgentina2024-04-10Chapman, Ross E Esq PROPOSAL36Bernardo Dominic
1027Nicolas V ButtJapan2024-04-12Benton, John B Jr PROPOSAL12Asiya Javayant
1028Faith C GarufiSpain2024-04-27Feiner Bros NEW70Xuxue Feng
1029Jeanfrancois S DoeSpain2024-04-07Rousseaux, Michael Esq RENEWAL34Amy Elsner
1030Misaki N BologniaItaly2024-04-09Morlong Associates NEGOTIATION19Bernardo Dominic
1031Clifford H CaldareraJapan2024-04-27Truhlar And Truhlar Attys NEGOTIATION29Ioni Bowcher
1032Mujtaba I InouyeAustralia2024-04-03Buckley Miller Wright UNQUALIFIED81Bernardo Dominic
1033Jefferson U BologniaAustralia2024-04-06Buckley Miller Wright NEGOTIATION89Anna Fali
1034Adams L ShinkoSpain2024-04-01Feltz Printing Service PROPOSAL84Ioni Bowcher
1035Smith X SlusarskiFrance2024-04-27Buckley Miller Wright NEGOTIATION19Onyama Limba
1036Adams J PoquetteJapan2024-04-27Chanay, Jeffrey A Esq RENEWAL11Bernardo Dominic
1037Francesco E AlbaresGermany2024-04-06Benton, John B Jr UNQUALIFIED85Elwin Sharvill
1038Munro B CampainBrazil2024-04-26Truhlar And Truhlar Attys QUALIFIED28Stephen Shaw
1039Kaitlin I StensethSpain2024-04-27Truhlar And Truhlar Attys UNQUALIFIED41Anna Fali
1040Mayumi X OldroydArgentina2024-04-20Chapman, Ross E Esq NEW21Asiya Javayant
1041Rodrigues O KuskoBrazil2024-04-21Rousseaux, Michael Esq NEGOTIATION68Asiya Javayant
1042Chavez B RoysterGermany2024-03-29King, Christopher A Esq PROPOSAL64Bernardo Dominic
1043Francesco F NickaJapan2024-04-18Truhlar And Truhlar Attys NEW91Ioni Bowcher
1044Juan E MaletAustralia2024-04-23Chemel, James L Cpa PROPOSAL48Onyama Limba
1045Alejandro T OstroskyAustralia2024-04-13Morlong Associates QUALIFIED38Bernardo Dominic
1046Antonio C GillianUnited Kingdom2024-04-08Buckley Miller Wright UNQUALIFIED47Asiya Javayant
1047Leon K IturbideUnited Kingdom2024-04-23Chanay, Jeffrey A Esq PROPOSAL94Asiya Javayant
1048Ashley B BriddickBrazil2024-04-07Chemel, James L Cpa PROPOSAL22Xuxue Feng
1049Nicolas F FollerCanada2024-04-09Feiner Bros NEGOTIATION67Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Munro F MaletFranceAsiya Javayant RENEWAL
Misaki Z InouyeIndiaAmy Elsner NEGOTIATION
Cody S BowleyItalyBernardo Dominic NEGOTIATION
Juan L RoysterRussiaBernardo Dominic NEGOTIATION
Mujtaba N InouyeJapanXuxue Feng RENEWAL
Greenwood V TollnerArgentinaBernardo Dominic QUALIFIED
Kaitlin R PerinGermanyIoni Bowcher QUALIFIED
Salvatore D GillianCanadaIoni Bowcher UNQUALIFIED
Salvatore D WaycottSpainBernardo Dominic QUALIFIED
Greenwood I ChuiRussiaElwin Sharvill NEGOTIATION
Stacey L FerenczIndiaBernardo Dominic NEGOTIATION
Arvin N BologniaCanadaXuxue Feng NEGOTIATION
Jones U ButtIndiaStephen Shaw UNQUALIFIED
Ivar Z GillianSpainAsiya Javayant NEW
Aruna N CampainBrazilIvan Magalhaes NEW
Stacey H MaletSpainAnna Fali RENEWAL
Ivar C VocelkaCanadaAsiya Javayant NEW
Murillo B MaletRussiaElwin Sharvill QUALIFIED
Aruna U NickaBrazilBernardo Dominic PROPOSAL
Stacey E FerenczIndiaAmy Elsner RENEWAL
Rodrigues B BologniaIndiaAnna Fali QUALIFIED
Aika E DoeUnited KingdomAmy Elsner NEW
Juan L SaylorsSpainIvan Magalhaes NEW
Alejandro S NestleRussiaAsiya Javayant PROPOSAL
Maria Q InouyeItalyIvan Magalhaes RENEWAL
Munro L GarufiBrazilIoni Bowcher NEW
Claire Q StockhamRussiaOnyama Limba QUALIFIED
David N SergiSpainAnna Fali NEGOTIATION
Mujtaba N GlickSpainAsiya Javayant PROPOSAL
Misaki L SergiRussiaElwin Sharvill UNQUALIFIED
Jeanfrancois G BriddickGermanyBernardo Dominic QUALIFIED
Ashley L WieserGermanyOnyama Limba QUALIFIED
Maisha K MacleadAustraliaElwin Sharvill NEW
Johnson K OldroydGermanyElwin Sharvill QUALIFIED
Claire F WieserJapanOnyama Limba NEW
Ricardo Y CampainSpainIoni Bowcher NEGOTIATION
Aruna P MarrierGermanyXuxue Feng NEW
Kadeem H SlusarskiIndiaXuxue Feng UNQUALIFIED
Nicolas R WieserArgentinaAnna Fali PROPOSAL
Mujtaba B MorascaUnited KingdomXuxue Feng QUALIFIED
Costa L CaudyFranceAsiya Javayant RENEWAL
Maria B MorascaJapanAsiya Javayant UNQUALIFIED
Nicolas Z SlusarskiSpainIvan Magalhaes RENEWAL
David J MacleadRussiaStephen Shaw RENEWAL
Maisha N DilliardUnited KingdomBernardo Dominic UNQUALIFIED
Ivar N WieserJapanOnyama Limba NEW
Arvin Q TollnerRussiaXuxue Feng PROPOSAL
Julie A BowleyJapanAnna Fali UNQUALIFIED
Mayumi U SaylorsItalyIoni Bowcher NEW
Chavez L WaycottArgentinaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Silvio P Stenseth
Jeanfrancois Q Ruta
Ivar L Slusarski
Clifford O Ferencz
Maria N Gillian
Cody U Caudy
Leja Z Doe
Morrow Q Rulapaugh
Aruna L Dilliard
Francesco G Malet
Leja D Rim
Rodrigues U Inouye
Nicolas G Iturbide
James T Oldroyd
Claire H Royster
Mujtaba F Sergi
Isabel Q Wieser
Smith W Ferencz
Maisha N Tollner
Sinclair W Amigon
Antonio I Malet
Antonio L Kolmetz
Octavia V Whobrey
Jefferson Q Iturbide
Costa E Dilliard
Jones U Vocelka
Misaki I Morasca
Alejandro W Malet
Aruna I Chui
Silvio E Gaucho
Mayumi U Ostrosky
Darci H Inouye
David V Stockham
Murillo H Albares
Rodrigues C Darakjy
Juan E Rulapaugh
Izzy B Dilliard
Jefferson A Malet
Ashley T Marrier
Munro V Gillian
Leja J Sergi
Jeanfrancois W Bolognia
Mujtaba N Darakjy
Cody F Saylors
Smith V Doe
Nicolas C Waycott
Johnson O Maclead
Kaitlin U Doe
Jeanfrancois V Chui
Costa N Garufi
IdCountryDate
1000India2024-04-05
1001Brazil2024-04-01
1002Germany2024-04-24
1003Russia2024-04-01
1004Japan2024-03-31
1005Australia2024-04-15
1006United Kingdom2024-04-07
1007Argentina2024-03-29
1008United Kingdom2024-04-15
1009Canada2024-04-18
1010France2024-04-13
1011Argentina2024-04-11
1012France2024-04-10
1013Japan2024-04-25
1014France2024-04-26
1015Russia2024-04-04
1016Germany2024-04-02
1017Brazil2024-04-25
1018Japan2024-04-02
1019Italy2024-04-03
1020Germany2024-04-26
1021France2024-04-26
1022Australia2024-04-14
1023Argentina2024-04-02
1024Italy2024-03-29
1025India2024-04-18
1026Canada2024-04-21
1027United Kingdom2024-04-23
1028Canada2024-04-04
1029France2024-04-15
1030United Kingdom2024-03-29
1031Argentina2024-04-18
1032Germany2024-04-01
1033Spain2024-04-23
1034Germany2024-04-25
1035Canada2024-04-07
1036Italy2024-04-10
1037France2024-04-24
1038Brazil2024-04-05
1039Germany2024-04-09
1040Spain2024-04-27
1041United Kingdom2024-04-23
1042Russia2024-04-21
1043Japan2024-04-09
1044India2024-04-08
1045India2024-04-17
1046Brazil2024-04-03
1047Brazil2024-04-27
1048Argentina2024-04-23
1049United Kingdom2024-04-08

On-Demand Data

NameIdCountryDate
Francesco U Perin1000Australia2024-04-21
Jefferson Y Oldroyd1001Australia2024-04-10
Nicolas X Caldarera1002Spain2024-04-27
Johnson V Saylors1003Australia2024-04-24
David G Malet1004Italy2024-04-27
Ricardo L Vocelka1005Russia2024-04-10
Kaitlin R Bowley1006United Kingdom2024-04-24
Izzy A Campain1007Spain2024-04-01
Murillo X Ostrosky1008France2024-04-12
Salvatore V Sergi1009Japan2024-03-30
Murillo N Flosi1010India2024-04-15
Sinclair I Ruta1011Russia2024-03-29
Adams W Vocelka1012Canada2024-04-19
Sinclair S Ruta1013Germany2024-04-17
Tony P Poquette1014Brazil2024-04-10
Stacey R Marrier1015Argentina2024-04-22
Clifford T Perin1016Russia2024-04-15
Smith T Wieser1017Spain2024-04-07
Claire L Saylors1018Germany2024-04-06
Silvio C Dilliard1019Germany2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues X WhobreyRussiaAmy Elsner NEGOTIATION
Alejandro W VenereSpainXuxue Feng NEW
Ashley D RutaSpainElwin Sharvill PROPOSAL
Kadeem R MaletFranceIvan Magalhaes NEW
Emily F RutaSpainXuxue Feng UNQUALIFIED
Claire Q KolmetzRussiaOnyama Limba NEGOTIATION
Maria R MorascaBrazilBernardo Dominic UNQUALIFIED
Munro S CampainSpainAnna Fali NEW
Murillo U RulapaughItalyAsiya Javayant NEGOTIATION
Clifford N NestleBrazilBernardo Dominic NEW
James T WieserArgentinaAmy Elsner PROPOSAL
Ricardo O ButtRussiaStephen Shaw NEGOTIATION
Francesco S GlickAustraliaAsiya Javayant PROPOSAL
Isabel P SergiItalyBernardo Dominic NEGOTIATION
Francesco O BriddickIndiaIoni Bowcher UNQUALIFIED
Stacey Z SergiBrazilAsiya Javayant NEW
Maria C BriddickIndiaBernardo Dominic RENEWAL
Alejandro E FlosiAustraliaStephen Shaw PROPOSAL
Nicolas D AlbaresCanadaStephen Shaw NEW
Cody H FigeroaBrazilIvan Magalhaes RENEWAL
Aika F KolmetzItalyAnna Fali RENEWAL
Munro K BologniaJapanAsiya Javayant UNQUALIFIED
Jefferson U GillianFranceAnna Fali QUALIFIED
Wickens T NestleCanadaAsiya Javayant QUALIFIED
Claire G WieserAustraliaElwin Sharvill QUALIFIED
Izzy E TollnerItalyXuxue Feng NEW
Francesco C RutaItalyAsiya Javayant PROPOSAL
Costa B FlosiSpainBernardo Dominic RENEWAL
Jefferson U StensethIndiaAsiya Javayant PROPOSAL
Arvin S ChuiCanadaAmy Elsner PROPOSAL
Francesco Z GlickUnited KingdomIoni Bowcher PROPOSAL
Kadeem A PaprockiAustraliaIvan Magalhaes UNQUALIFIED
Aika E FigeroaArgentinaIoni Bowcher QUALIFIED
Leon I WhobreyUnited KingdomAmy Elsner PROPOSAL
Jennifer N MorascaGermanyAmy Elsner QUALIFIED
Sinclair G OstroskyJapanStephen Shaw UNQUALIFIED
Misaki W WaycottJapanElwin Sharvill NEW
Mujtaba H AmigonArgentinaXuxue Feng PROPOSAL
Ashley H MorascaRussiaXuxue Feng NEGOTIATION
Maisha W DilliardGermanyIoni Bowcher 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>