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
Francesco S SaylorsAustraliaAsiya Javayant RENEWAL
Clifford V MaletSpainIvan Magalhaes NEGOTIATION
Nicolas C StockhamSpainAmy Elsner NEW
Mayumi U ChuiSpainBernardo Dominic UNQUALIFIED
Ricardo E BowleyRussiaAnna Fali QUALIFIED
Rodrigues D PaprockiBrazilAnna Fali UNQUALIFIED
Cody I VenereGermanyOnyama Limba PROPOSAL
Chavez B DarakjyFranceAsiya Javayant RENEWAL
Ricardo F ShinkoCanadaIoni Bowcher RENEWAL
Emily Z IturbideCanadaElwin Sharvill RENEWAL
Leja M SergiBrazilBernardo Dominic RENEWAL
Juan A AmigonSpainAsiya Javayant PROPOSAL
Arvin E MacleadSpainXuxue Feng NEGOTIATION
Sinclair N CampainUnited KingdomXuxue Feng UNQUALIFIED
Silvio N DoeRussiaXuxue Feng PROPOSAL
Aruna B BriddickArgentinaIvan Magalhaes UNQUALIFIED
Julie V KuskoBrazilXuxue Feng PROPOSAL
Claire V CampainUnited KingdomIvan Magalhaes NEW
Smith N CaldareraJapanBernardo Dominic UNQUALIFIED
Cody K WieserSpainElwin Sharvill PROPOSAL
Salvatore E StockhamIndiaStephen Shaw RENEWAL
Murillo Q AmigonFranceStephen Shaw UNQUALIFIED
Rodrigues F MaletIndiaIvan Magalhaes RENEWAL
Alejandro X MaletArgentinaElwin Sharvill NEGOTIATION
Francesco O InouyeCanadaStephen Shaw NEW
Nicolas B PoquetteFranceAnna Fali NEGOTIATION
Jefferson Q SchemmerItalyBernardo Dominic NEGOTIATION
Ashley Z DarakjyBrazilElwin Sharvill QUALIFIED
Antonio E KolmetzSpainAnna Fali QUALIFIED
Wickens B MaletAustraliaXuxue Feng NEW
Johnson A DarakjyRussiaOnyama Limba PROPOSAL
Salvatore Q MacleadSpainIoni Bowcher NEGOTIATION
Isabel R StensethRussiaXuxue Feng NEGOTIATION
Rodrigues J VenereAustraliaElwin Sharvill NEGOTIATION
Cody V BowleyGermanyIvan Magalhaes NEW
Francesco A CaldareraAustraliaIvan Magalhaes UNQUALIFIED
Misaki B SaylorsCanadaIoni Bowcher NEW
Costa L MaletCanadaElwin Sharvill PROPOSAL
Wickens B TollnerGermanyXuxue Feng NEGOTIATION
Salvatore C ShinkoIndiaAmy Elsner UNQUALIFIED
Leja D StockhamFranceBernardo Dominic UNQUALIFIED
Maria D ButtJapanIvan Magalhaes QUALIFIED
Izzy E RimJapanIvan Magalhaes QUALIFIED
Jefferson U BowleyIndiaAnna Fali QUALIFIED
Wickens N PaprockiRussiaIoni Bowcher QUALIFIED
Misaki R OstroskyJapanElwin Sharvill RENEWAL
Kaitlin B StensethItalyBernardo Dominic UNQUALIFIED
Arvin I IturbideArgentinaXuxue Feng NEGOTIATION
Misaki U NickaAustraliaStephen Shaw RENEWAL
David S RulapaughGermanyBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Adams Z DarakjyAustraliaAmy Elsner RENEWAL
Aditya F DilliardBrazilStephen Shaw QUALIFIED
Jones H WhobreySpainStephen Shaw NEGOTIATION
Arvin F MaletFranceAsiya Javayant QUALIFIED
Cody M IturbideIndiaAmy Elsner UNQUALIFIED
Francesco R NickaBrazilAmy Elsner NEW
Wickens O ButtIndiaBernardo Dominic UNQUALIFIED
Rodrigues Y CaudyGermanyAmy Elsner RENEWAL
Aditya G PaprockiJapanAsiya Javayant QUALIFIED
Antonio N VocelkaItalyXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem Q SlusarskiBrazil2024-04-05Chanay, Jeffrey A Esq NEW45Asiya Javayant
1001Kaitlin C ChuiAustralia2024-04-17Dorl, James J Esq PROPOSAL3Stephen Shaw
1002Jefferson N GauchoJapan2024-04-03Rousseaux, Michael Esq UNQUALIFIED95Elwin Sharvill
1003Munro Z InouyeArgentina2024-04-02Chanay, Jeffrey A Esq NEW69Amy Elsner
1004David F RoysterCanada2024-04-26Dorl, James J Esq UNQUALIFIED91Anna Fali
1005Cody L IturbideItaly2024-04-10Rangoni Of Florence QUALIFIED60Asiya Javayant
1006Jeanfrancois G CaldareraJapan2024-04-22Chemel, James L Cpa NEGOTIATION92Xuxue Feng
1007Antonio E BriddickAustralia2024-04-01King, Christopher A Esq NEGOTIATION28Onyama Limba
1008Sinclair H RulapaughUnited Kingdom2024-04-28Chemel, James L Cpa RENEWAL39Onyama Limba
1009Faith H SlusarskiRussia2024-04-06Chanay, Jeffrey A Esq RENEWAL69Xuxue Feng
1010Aika A SchemmerIndia2024-04-23Rousseaux, Michael Esq QUALIFIED93Asiya Javayant
1011Greenwood B GarufiRussia2024-04-24Chanay, Jeffrey A Esq RENEWAL76Ivan Magalhaes
1012Leja P VenereArgentina2024-04-20Rangoni Of Florence RENEWAL72Amy Elsner
1013Ashley N MaletIndia2024-04-17Printing Dimensions UNQUALIFIED94Onyama Limba
1014Sinclair B WieserUnited Kingdom2024-04-21Rangoni Of Florence NEW73Amy Elsner
1015Chavez G OstroskyFrance2024-04-13Printing Dimensions NEGOTIATION60Bernardo Dominic
1016Nicolas Y BowleyFrance2024-04-28Buckley Miller Wright QUALIFIED97Elwin Sharvill
1017Deepesh T FollerRussia2024-04-17Printing Dimensions QUALIFIED87Amy Elsner
1018Leja H PaprockiAustralia2024-04-13Commercial Press PROPOSAL24Ivan Magalhaes
1019Sinclair R RimRussia2024-04-16Truhlar And Truhlar Attys PROPOSAL96Amy Elsner
1020Ricardo Y RimAustralia2024-04-17Chemel, James L Cpa PROPOSAL89Onyama Limba
1021Emily Q ButtRussia2024-04-04Rousseaux, Michael Esq UNQUALIFIED30Xuxue Feng
1022Juan N MaletJapan2024-04-16Dorl, James J Esq UNQUALIFIED7Asiya Javayant
1023Costa H CampainItaly2024-04-16Buckley Miller Wright UNQUALIFIED50Amy Elsner
1024Jeanfrancois B KolmetzSpain2024-04-15Benton, John B Jr PROPOSAL52Elwin Sharvill
1025Claire V MorascaSpain2024-04-09Benton, John B Jr PROPOSAL18Onyama Limba
1026Adams N PaprockiFrance2024-04-15King, Christopher A Esq UNQUALIFIED75Xuxue Feng
1027Salvatore G SergiGermany2024-04-08Dorl, James J Esq NEW42Onyama Limba
1028Morrow J VenereUnited Kingdom2024-04-23Feiner Bros RENEWAL51Anna Fali
1029Sinclair J SlusarskiSpain2024-04-06Buckley Miller Wright RENEWAL98Elwin Sharvill
1030Morrow J RoysterUnited Kingdom2024-04-26Commercial Press NEGOTIATION28Asiya Javayant
1031Salvatore O DoeBrazil2024-04-19Rousseaux, Michael Esq NEW39Bernardo Dominic
1032Clifford R WaycottItaly2024-04-24King, Christopher A Esq NEGOTIATION0Stephen Shaw
1033Leja O StockhamGermany2024-04-10Truhlar And Truhlar Attys RENEWAL47Asiya Javayant
1034Clifford B FerenczSpain2024-04-01Chapman, Ross E Esq NEGOTIATION4Bernardo Dominic
1035Jefferson C BologniaItaly2024-04-10Chanay, Jeffrey A Esq NEGOTIATION90Bernardo Dominic
1036Alejandro Y PoquetteSpain2024-04-27Chemel, James L Cpa NEW25Elwin Sharvill
1037Rodrigues G OstroskyArgentina2024-04-08Buckley Miller Wright QUALIFIED38Ivan Magalhaes
1038Aditya K InouyeBrazil2024-04-20Truhlar And Truhlar Attys NEGOTIATION12Anna Fali
1039Murillo A BowleyFrance2024-04-03Rangoni Of Florence NEGOTIATION83Ivan Magalhaes
1040Sinclair H CaldareraArgentina2024-04-13Chemel, James L Cpa UNQUALIFIED99Stephen Shaw
1041Smith B AlbaresBrazil2024-04-20Chapman, Ross E Esq NEGOTIATION16Stephen Shaw
1042Aditya X PaprockiCanada2024-04-06Rousseaux, Michael Esq NEW22Xuxue Feng
1043Maisha F KolmetzFrance2024-04-24Buckley Miller Wright PROPOSAL58Ivan Magalhaes
1044Julie U DoeBrazil2024-04-17Feiner Bros UNQUALIFIED27Bernardo Dominic
1045Johnson Q StockhamJapan2024-04-28Rangoni Of Florence NEW91Anna Fali
1046Francesco K PaprockiArgentina2024-04-07Feiner Bros QUALIFIED99Anna Fali
1047Isabel M PerinIndia2024-04-25Feltz Printing Service UNQUALIFIED13Stephen Shaw
1048Morrow Z MacleadCanada2024-04-17Rangoni Of Florence NEGOTIATION7Bernardo Dominic
1049Kaitlin P VenereGermany2024-04-12Benton, John B Jr UNQUALIFIED21Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Aditya O NestleSpainAmy Elsner NEW
Murillo C GlickAustraliaOnyama Limba NEW
Kaitlin J FlosiUnited KingdomXuxue Feng NEW
Silvio F OstroskyAustraliaBernardo Dominic RENEWAL
Arvin B CampainArgentinaIvan Magalhaes RENEWAL
Costa R MacleadRussiaStephen Shaw UNQUALIFIED
Leon K DoeIndiaIvan Magalhaes NEGOTIATION
Arvin Q KolmetzIndiaElwin Sharvill RENEWAL
Adams S RimIndiaIvan Magalhaes NEW
Misaki V DoeRussiaElwin Sharvill NEGOTIATION
Costa G CaldareraItalyOnyama Limba NEGOTIATION
Izzy I BologniaBrazilXuxue Feng PROPOSAL
Ivar X VocelkaIndiaIvan Magalhaes NEGOTIATION
Sinclair P MacleadBrazilIoni Bowcher PROPOSAL
Juan V OldroydFranceElwin Sharvill RENEWAL
Misaki F SaylorsUnited KingdomBernardo Dominic UNQUALIFIED
Salvatore X NestleAustraliaXuxue Feng UNQUALIFIED
Aika Y MorascaFranceAsiya Javayant NEGOTIATION
Silvio F DilliardItalyXuxue Feng RENEWAL
Tony U RoysterAustraliaIoni Bowcher UNQUALIFIED
Leja H VocelkaItalyXuxue Feng NEW
Aika W SlusarskiBrazilBernardo Dominic UNQUALIFIED
Faith V ShinkoUnited KingdomAnna Fali QUALIFIED
Johnson E MorascaJapanStephen Shaw QUALIFIED
Juan V FerenczUnited KingdomBernardo Dominic PROPOSAL
Silvio S KuskoArgentinaOnyama Limba QUALIFIED
Kadeem K BowleyArgentinaOnyama Limba RENEWAL
Emily W AlbaresBrazilIvan Magalhaes RENEWAL
Silvio N WhobreyIndiaXuxue Feng NEW
Rodrigues E StensethCanadaAsiya Javayant NEW
Arvin J TollnerBrazilXuxue Feng PROPOSAL
Clifford E OldroydCanadaIvan Magalhaes UNQUALIFIED
Tony H VenereRussiaIvan Magalhaes NEW
Juan A FerenczRussiaStephen Shaw QUALIFIED
Francesco P GauchoIndiaAnna Fali RENEWAL
Chavez T MorascaRussiaAnna Fali NEGOTIATION
Silvio R WhobreyGermanyOnyama Limba NEW
Jefferson G MaletCanadaBernardo Dominic NEGOTIATION
Jones K FigeroaGermanyElwin Sharvill PROPOSAL
Chavez Y RimBrazilElwin Sharvill RENEWAL
Jones D SlusarskiBrazilAmy Elsner NEW
Antonio F PerinSpainXuxue Feng PROPOSAL
Misaki T PerinFranceAsiya Javayant NEGOTIATION
David G FigeroaFranceBernardo Dominic QUALIFIED
Kadeem S InouyeBrazilBernardo Dominic QUALIFIED
David E RutaUnited KingdomXuxue Feng NEGOTIATION
Julie P CampainBrazilIvan Magalhaes UNQUALIFIED
Izzy R MarrierFranceIoni Bowcher NEW
Maisha G ShinkoJapanAmy Elsner NEGOTIATION
Darci J RoysterFranceAmy Elsner NEW
Frozen Columns
Name
Ivar T Gaucho
David A Figeroa
Jennifer O Doe
Emily C Inouye
Jennifer D Ruta
Jeanfrancois K Paprocki
Alejandro F Waycott
Ricardo X Malet
Claire X Rim
Ricardo E Perin
Morrow U Briddick
Costa Z Darakjy
Darci R Waycott
David T Marrier
Tony H Wieser
James X Royster
Deepesh Z Kusko
Cody U Figeroa
Kadeem H Whobrey
Greenwood A Paprocki
Isabel P Whobrey
Aditya Y Nestle
Jennifer E Ferencz
Greenwood A Caudy
Izzy Z Inouye
Arvin B Dilliard
Clifford E Rim
Ivar M Sergi
Maria H Caldarera
Aruna T Rulapaugh
Francesco J Nicka
Octavia I Garufi
Salvatore D Caudy
Mayumi W Marrier
Clifford J Dilliard
Wickens I Stenseth
Tony K Stockham
Stacey Q Iturbide
Stacey O Venere
Juan S Tollner
Jones S Bowley
Emily I Kolmetz
Aruna H Rim
Jefferson S Stenseth
Deepesh O Butt
Rodrigues T Malet
Salvatore V Royster
Juan B Poquette
Munro G Gillian
Faith U Royster
IdCountryDate
1000Canada2024-04-17
1001Australia2024-04-02
1002Japan2024-04-01
1003Australia2024-04-13
1004Germany2024-04-10
1005Canada2024-04-07
1006Argentina2024-04-24
1007Japan2024-04-02
1008United Kingdom2024-04-17
1009Italy2024-04-14
1010Japan2024-04-27
1011Canada2024-04-26
1012Italy2024-04-27
1013Argentina2024-04-13
1014Australia2024-04-27
1015Japan2024-03-30
1016United Kingdom2024-04-11
1017United Kingdom2024-04-05
1018Brazil2024-03-31
1019Italy2024-04-07
1020Argentina2024-04-01
1021Japan2024-04-06
1022Australia2024-04-14
1023Australia2024-04-11
1024Russia2024-03-31
1025Italy2024-04-19
1026Canada2024-04-13
1027Italy2024-04-17
1028Argentina2024-04-26
1029Canada2024-04-10
1030France2024-04-08
1031Canada2024-04-02
1032Italy2024-04-14
1033France2024-04-25
1034Japan2024-04-08
1035Japan2024-04-08
1036Australia2024-04-11
1037India2024-04-20
1038Japan2024-04-20
1039France2024-04-03
1040Russia2024-04-20
1041Italy2024-04-15
1042Brazil2024-04-25
1043Australia2024-04-21
1044India2024-04-06
1045Spain2024-04-12
1046United Kingdom2024-04-05
1047France2024-04-06
1048Argentina2024-04-28
1049Canada2024-04-03

On-Demand Data

NameIdCountryDate
Aditya J Ferencz1000Japan2024-04-02
Jefferson J Kolmetz1001United Kingdom2024-04-10
Kadeem M Garufi1002Russia2024-04-08
Silvio V Doe1003Australia2024-04-26
Adams Y Waycott1004France2024-04-28
Mujtaba A Sergi1005Germany2024-04-22
Maria M Tollner1006Russia2024-04-20
Juan L Caudy1007Japan2024-04-08
Francesco A Flosi1008Germany2024-04-08
Juan B Garufi1009Brazil2024-04-10
Wickens V Ostrosky1010Argentina2024-04-08
Maisha V Darakjy1011Argentina2024-04-14
Nicolas Z Briddick1012Brazil2024-04-07
Rodrigues M Tollner1013India2024-04-11
Maria Q Amigon1014Russia2024-04-12
Munro M Nicka1015Russia2024-04-16
Greenwood D Marrier1016Italy2024-04-28
Juan S Malet1017Argentina2024-04-12
Kaitlin G Amigon1018Spain2024-04-14
Munro Y Caudy1019Russia2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois C KolmetzItalyIvan Magalhaes UNQUALIFIED
Wickens J PoquetteIndiaIvan Magalhaes NEGOTIATION
Adams V KolmetzItalyXuxue Feng QUALIFIED
Ashley X GillianBrazilAnna Fali QUALIFIED
Salvatore E GlickArgentinaXuxue Feng QUALIFIED
Mujtaba H MacleadSpainOnyama Limba NEGOTIATION
Aditya L SlusarskiIndiaAmy Elsner PROPOSAL
Smith G SergiSpainBernardo Dominic NEGOTIATION
Maisha K StockhamAustraliaAsiya Javayant NEW
Maria J DarakjySpainOnyama Limba UNQUALIFIED
Aruna R MarrierGermanyBernardo Dominic UNQUALIFIED
Murillo P AlbaresRussiaAsiya Javayant NEGOTIATION
Sinclair J MarrierRussiaOnyama Limba QUALIFIED
Kaitlin S AmigonUnited KingdomElwin Sharvill NEW
Jennifer M RutaArgentinaAmy Elsner NEW
Sinclair J ShinkoGermanyAsiya Javayant UNQUALIFIED
Julie Q OstroskySpainAsiya Javayant PROPOSAL
Silvio Z BowleyCanadaIoni Bowcher QUALIFIED
Cody E SaylorsIndiaElwin Sharvill NEW
Salvatore E RimGermanyBernardo Dominic RENEWAL
Morrow F GarufiCanadaIoni Bowcher PROPOSAL
Maria H OstroskyUnited KingdomAnna Fali PROPOSAL
Salvatore L DarakjyUnited KingdomOnyama Limba PROPOSAL
Jones Q KuskoAustraliaIoni Bowcher NEGOTIATION
Julie R BriddickIndiaIoni Bowcher UNQUALIFIED
Juan D InouyeIndiaXuxue Feng PROPOSAL
Ricardo I WhobreySpainElwin Sharvill NEGOTIATION
Salvatore J BologniaJapanBernardo Dominic UNQUALIFIED
Morrow N RulapaughSpainBernardo Dominic QUALIFIED
Faith R NestleJapanBernardo Dominic UNQUALIFIED
Izzy K StensethAustraliaElwin Sharvill PROPOSAL
Jefferson K NestleBrazilStephen Shaw NEW
Wickens F BologniaSpainElwin Sharvill UNQUALIFIED
James E MacleadJapanAnna Fali NEGOTIATION
Greenwood A ShinkoIndiaIoni Bowcher PROPOSAL
Leon J RutaRussiaIoni Bowcher UNQUALIFIED
Kaitlin U InouyeIndiaAmy Elsner PROPOSAL
Jennifer I WaycottIndiaIvan Magalhaes PROPOSAL
David P PaprockiBrazilXuxue Feng QUALIFIED
Sinclair T FollerJapanIoni Bowcher 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>