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
Maisha J MorascaJapanAsiya Javayant UNQUALIFIED
Jeanfrancois J MarrierSpainAnna Fali PROPOSAL
Francesco M PoquetteItalyIvan Magalhaes RENEWAL
Leon H SlusarskiGermanyBernardo Dominic QUALIFIED
Izzy I BowleyJapanOnyama Limba QUALIFIED
Morrow L CaldareraBrazilOnyama Limba RENEWAL
Faith O NestleAustraliaIvan Magalhaes NEGOTIATION
Rodrigues N CaudySpainElwin Sharvill UNQUALIFIED
Cody T PerinUnited KingdomOnyama Limba UNQUALIFIED
Chavez Z GarufiAustraliaOnyama Limba UNQUALIFIED
Aditya P AmigonItalyIvan Magalhaes NEGOTIATION
Julie H SchemmerArgentinaAsiya Javayant QUALIFIED
Nicolas F CaldareraRussiaAsiya Javayant NEW
Aruna U FigeroaIndiaOnyama Limba RENEWAL
Juan D StensethGermanyAnna Fali RENEWAL
Aruna W FigeroaUnited KingdomAmy Elsner QUALIFIED
Mayumi O CaudyItalyAmy Elsner NEGOTIATION
Arvin P OstroskyAustraliaBernardo Dominic PROPOSAL
Maisha Y KuskoUnited KingdomIoni Bowcher NEGOTIATION
Juan A DilliardIndiaIvan Magalhaes RENEWAL
Tony A FerenczSpainBernardo Dominic UNQUALIFIED
Misaki A NickaArgentinaAsiya Javayant RENEWAL
Johnson H FlosiSpainElwin Sharvill NEW
Costa R BologniaCanadaAnna Fali NEW
Darci E BriddickIndiaStephen Shaw NEGOTIATION
Misaki C NestleRussiaAmy Elsner RENEWAL
Aruna V PaprockiJapanStephen Shaw NEW
Rodrigues Z MorascaCanadaAnna Fali PROPOSAL
Julie R MarrierCanadaXuxue Feng QUALIFIED
Misaki C SaylorsSpainStephen Shaw NEW
Greenwood W CampainUnited KingdomIvan Magalhaes RENEWAL
Morrow Q InouyeIndiaIoni Bowcher UNQUALIFIED
Claire L BriddickGermanyIoni Bowcher NEGOTIATION
Ricardo F BologniaFranceElwin Sharvill NEW
Arvin O AmigonItalyIoni Bowcher PROPOSAL
Tony A RoysterAustraliaAsiya Javayant NEW
Alejandro Z BriddickSpainXuxue Feng PROPOSAL
Nicolas M PaprockiUnited KingdomAsiya Javayant PROPOSAL
Tony W ButtBrazilAsiya Javayant UNQUALIFIED
Morrow R SergiFranceAsiya Javayant NEW
Deepesh J ButtUnited KingdomXuxue Feng PROPOSAL
Misaki Q BologniaArgentinaAsiya Javayant RENEWAL
Juan U NestleJapanElwin Sharvill UNQUALIFIED
Julie H StensethRussiaIvan Magalhaes PROPOSAL
Emily A InouyeBrazilOnyama Limba RENEWAL
Aruna V OldroydUnited KingdomAsiya Javayant NEGOTIATION
Jefferson I GillianArgentinaAnna Fali UNQUALIFIED
Ivar M FerenczRussiaAmy Elsner NEW
Darci V InouyeAustraliaIoni Bowcher UNQUALIFIED
Maisha C PoquetteFranceAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Darci H PaprockiFranceOnyama Limba NEW
Cody W MarrierArgentinaAnna Fali UNQUALIFIED
David E WieserUnited KingdomAmy Elsner QUALIFIED
Antonio O MarrierJapanStephen Shaw RENEWAL
Darci M NestleArgentinaAnna Fali QUALIFIED
Octavia K MarrierCanadaAsiya Javayant UNQUALIFIED
Rodrigues L MarrierIndiaXuxue Feng NEW
David I KolmetzRussiaAsiya Javayant NEGOTIATION
Ivar C RutaJapanStephen Shaw UNQUALIFIED
Munro H FlosiCanadaBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya S VocelkaCanada2024-04-27Truhlar And Truhlar Attys UNQUALIFIED85Bernardo Dominic
1001Smith R BologniaIndia2024-04-23Chemel, James L Cpa RENEWAL47Ioni Bowcher
1002Francesco V DoeFrance2024-03-30Chanay, Jeffrey A Esq QUALIFIED90Ivan Magalhaes
1003Deepesh K RoysterJapan2024-03-29Truhlar And Truhlar Attys NEGOTIATION36Stephen Shaw
1004Izzy K StockhamGermany2024-04-26Chemel, James L Cpa NEGOTIATION39Ivan Magalhaes
1005Munro H CaudyGermany2024-04-23Chanay, Jeffrey A Esq NEW35Bernardo Dominic
1006Maisha F WaycottArgentina2024-03-30Dorl, James J Esq NEW2Asiya Javayant
1007Stacey R ChuiAustralia2024-04-19Truhlar And Truhlar Attys QUALIFIED45Anna Fali
1008Jennifer P VocelkaIndia2024-04-07Rangoni Of Florence NEGOTIATION90Onyama Limba
1009Wickens F ButtFrance2024-04-12Rangoni Of Florence NEW93Ivan Magalhaes
1010Jennifer G RutaIndia2024-03-29Morlong Associates NEGOTIATION73Stephen Shaw
1011Stacey K MaletJapan2024-04-03Chapman, Ross E Esq UNQUALIFIED97Xuxue Feng
1012James S DoeArgentina2024-04-16Chanay, Jeffrey A Esq PROPOSAL40Anna Fali
1013Murillo S StockhamBrazil2024-04-05Benton, John B Jr RENEWAL4Amy Elsner
1014Clifford L DarakjyRussia2024-03-30Rousseaux, Michael Esq RENEWAL77Asiya Javayant
1015Maria N BologniaGermany2024-04-02Commercial Press PROPOSAL42Stephen Shaw
1016Jones M CampainRussia2024-04-14Chanay, Jeffrey A Esq QUALIFIED51Ivan Magalhaes
1017Jefferson Z NestleFrance2024-04-14Benton, John B Jr NEW62Ioni Bowcher
1018Johnson J OstroskyIndia2024-04-22Chemel, James L Cpa NEW90Onyama Limba
1019Juan G CaudyAustralia2024-04-14Morlong Associates UNQUALIFIED97Elwin Sharvill
1020Johnson V WaycottItaly2024-04-27Chanay, Jeffrey A Esq QUALIFIED34Anna Fali
1021Salvatore Z InouyeUnited Kingdom2024-04-16Buckley Miller Wright QUALIFIED93Bernardo Dominic
1022Deepesh T BologniaSpain2024-03-29Chemel, James L Cpa QUALIFIED18Ioni Bowcher
1023Kaitlin I RulapaughCanada2024-04-10Dorl, James J Esq NEGOTIATION19Ivan Magalhaes
1024Munro R StensethFrance2024-04-16Chemel, James L Cpa RENEWAL35Stephen Shaw
1025Cody R GauchoUnited Kingdom2024-04-23King, Christopher A Esq RENEWAL31Xuxue Feng
1026Claire G MarrierUnited Kingdom2024-04-01Buckley Miller Wright PROPOSAL27Elwin Sharvill
1027David X AlbaresIndia2024-04-02Truhlar And Truhlar Attys RENEWAL29Asiya Javayant
1028Nicolas J IturbideUnited Kingdom2024-04-18Printing Dimensions NEGOTIATION32Elwin Sharvill
1029Stacey M BriddickIndia2024-04-25Buckley Miller Wright UNQUALIFIED88Asiya Javayant
1030Faith L NestleSpain2024-04-20Morlong Associates QUALIFIED39Amy Elsner
1031Kaitlin Y SchemmerFrance2024-04-09Chapman, Ross E Esq RENEWAL33Stephen Shaw
1032Jefferson B PerinCanada2024-04-27Truhlar And Truhlar Attys NEGOTIATION90Onyama Limba
1033Arvin X SchemmerGermany2024-04-19Rangoni Of Florence QUALIFIED45Bernardo Dominic
1034Jeanfrancois R GarufiRussia2024-04-08Buckley Miller Wright PROPOSAL41Ivan Magalhaes
1035Alejandro A NickaBrazil2024-04-17Chanay, Jeffrey A Esq RENEWAL84Amy Elsner
1036Clifford Z MarrierBrazil2024-04-08Commercial Press NEGOTIATION9Ivan Magalhaes
1037Aditya X GauchoRussia2024-04-09King, Christopher A Esq UNQUALIFIED57Anna Fali
1038Smith G MarrierUnited Kingdom2024-04-22Commercial Press NEW6Bernardo Dominic
1039Smith W NickaCanada2024-04-19Dorl, James J Esq NEW89Ioni Bowcher
1040Munro P DarakjyItaly2024-04-14Chapman, Ross E Esq RENEWAL26Stephen Shaw
1041James V OstroskyBrazil2024-04-26King, Christopher A Esq RENEWAL21Bernardo Dominic
1042Ricardo Z ChuiBrazil2024-04-23Chapman, Ross E Esq UNQUALIFIED19Bernardo Dominic
1043Nicolas G MorascaUnited Kingdom2024-04-07Buckley Miller Wright PROPOSAL30Bernardo Dominic
1044Stacey R MaletJapan2024-04-09Truhlar And Truhlar Attys UNQUALIFIED93Elwin Sharvill
1045Mayumi V RoysterSpain2024-04-23Truhlar And Truhlar Attys RENEWAL59Anna Fali
1046Stacey B NickaJapan2024-04-20Chanay, Jeffrey A Esq PROPOSAL70Onyama Limba
1047Jefferson L WaycottArgentina2024-04-21Rousseaux, Michael Esq QUALIFIED61Ioni Bowcher
1048Smith Q GarufiJapan2024-04-15Rangoni Of Florence PROPOSAL46Bernardo Dominic
1049Salvatore P BriddickAustralia2024-04-22Commercial Press PROPOSAL64Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Deepesh H RoysterUnited KingdomStephen Shaw UNQUALIFIED
Cody A CaldareraBrazilAnna Fali QUALIFIED
Antonio S SchemmerItalyAmy Elsner PROPOSAL
Leja H GlickFranceIoni Bowcher RENEWAL
David O WhobreyArgentinaStephen Shaw NEW
Stacey N NestleJapanAsiya Javayant QUALIFIED
Cody L PerinArgentinaStephen Shaw UNQUALIFIED
Maisha C RimUnited KingdomBernardo Dominic UNQUALIFIED
Sinclair T FerenczUnited KingdomIvan Magalhaes QUALIFIED
Darci Q OldroydJapanXuxue Feng NEW
Silvio G BowleyGermanyXuxue Feng RENEWAL
Octavia V BowleyArgentinaAsiya Javayant RENEWAL
Ivar A AlbaresUnited KingdomXuxue Feng UNQUALIFIED
Leon M RulapaughSpainAnna Fali QUALIFIED
Sinclair R CaudyCanadaIoni Bowcher RENEWAL
Leon R TollnerJapanBernardo Dominic QUALIFIED
Salvatore K MorascaItalyElwin Sharvill PROPOSAL
Munro A DarakjySpainIvan Magalhaes RENEWAL
Aditya J MaletRussiaStephen Shaw NEGOTIATION
Claire S StensethSpainElwin Sharvill UNQUALIFIED
Deepesh M FollerArgentinaXuxue Feng QUALIFIED
Rodrigues Q NestleRussiaAsiya Javayant NEW
Stacey U DilliardCanadaAsiya Javayant NEGOTIATION
Sinclair K SchemmerUnited KingdomStephen Shaw NEGOTIATION
Aruna M DarakjyJapanIoni Bowcher NEW
Claire J PoquetteRussiaAmy Elsner RENEWAL
Kadeem M VocelkaCanadaBernardo Dominic UNQUALIFIED
David M RimGermanyIvan Magalhaes PROPOSAL
Francesco G ButtFranceElwin Sharvill NEW
Kadeem O KuskoIndiaIoni Bowcher RENEWAL
Misaki L FerenczSpainOnyama Limba RENEWAL
Izzy V ChuiUnited KingdomStephen Shaw PROPOSAL
Antonio H CaudyArgentinaBernardo Dominic QUALIFIED
Leon D AlbaresCanadaIoni Bowcher NEGOTIATION
Aditya D GauchoFranceBernardo Dominic QUALIFIED
Chavez A CaldareraCanadaBernardo Dominic UNQUALIFIED
Munro D MaletCanadaIvan Magalhaes NEGOTIATION
Stacey G OstroskyRussiaIvan Magalhaes NEGOTIATION
Salvatore T SaylorsGermanyXuxue Feng NEW
Ashley B MacleadSpainAmy Elsner QUALIFIED
Nicolas N PerinBrazilStephen Shaw UNQUALIFIED
Mayumi J MacleadSpainIoni Bowcher QUALIFIED
Isabel C WaycottSpainAnna Fali NEGOTIATION
Sinclair L CaudySpainElwin Sharvill NEGOTIATION
Izzy M WhobreyItalyIoni Bowcher QUALIFIED
Octavia K MorascaUnited KingdomXuxue Feng UNQUALIFIED
Mayumi T AmigonIndiaAmy Elsner QUALIFIED
Claire L FigeroaJapanAsiya Javayant NEGOTIATION
Kaitlin B MaletGermanyAmy Elsner QUALIFIED
Emily C AlbaresRussiaAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Johnson S Darakjy
Arvin E Sergi
Juan U Kusko
Clifford O Butt
Kaitlin C Morasca
Jefferson R Rulapaugh
Sinclair T Bolognia
Munro U Inouye
Misaki O Paprocki
Juan O Tollner
Leon G Tollner
Silvio J Waycott
Jennifer K Oldroyd
Morrow G Kusko
Sinclair Q Darakjy
Darci D Rim
Octavia P Nicka
Leja G Saylors
Stacey Z Ruta
Claire O Whobrey
Aika T Stenseth
Chavez S Ruta
Claire S Morasca
Claire D Venere
Wickens B Gaucho
Jones I Garufi
Emily O Waycott
Jefferson P Stenseth
James M Nestle
Leon E Oldroyd
Julie Z Caudy
Costa N Venere
Mujtaba M Vocelka
Adams C Inouye
James U Vocelka
Mayumi Z Waycott
Adams Z Wieser
Claire S Malet
Silvio R Malet
Murillo H Oldroyd
Ashley A Figeroa
Salvatore M Amigon
Cody E Rim
Alejandro B Tollner
Leja D Iturbide
Octavia U Royster
Chavez G Sergi
Jones J Whobrey
Ivar L Bowley
Costa J Caldarera
IdCountryDate
1000Argentina2024-04-24
1001India2024-04-02
1002Canada2024-04-11
1003Spain2024-04-24
1004Argentina2024-04-22
1005Canada2024-04-17
1006Russia2024-04-17
1007Japan2024-03-30
1008United Kingdom2024-04-02
1009India2024-04-21
1010United Kingdom2024-03-31
1011Germany2024-03-30
1012Canada2024-04-21
1013Germany2024-03-30
1014Brazil2024-04-15
1015Canada2024-04-19
1016United Kingdom2024-04-14
1017Germany2024-04-11
1018Australia2024-03-30
1019Argentina2024-04-10
1020Italy2024-04-02
1021France2024-04-02
1022India2024-04-16
1023India2024-04-26
1024Brazil2024-04-24
1025Brazil2024-04-11
1026Spain2024-04-07
1027France2024-04-18
1028Canada2024-03-31
1029Russia2024-04-18
1030Argentina2024-04-06
1031Italy2024-04-07
1032India2024-04-27
1033Brazil2024-04-19
1034Argentina2024-04-17
1035India2024-04-12
1036Germany2024-04-21
1037France2024-04-06
1038Germany2024-04-03
1039Argentina2024-04-25
1040Japan2024-04-20
1041Japan2024-04-08
1042Australia2024-04-02
1043Brazil2024-03-31
1044Russia2024-04-14
1045Canada2024-03-30
1046Spain2024-04-15
1047Japan2024-04-19
1048Germany2024-04-17
1049Canada2024-04-20

On-Demand Data

NameIdCountryDate
Adams I Malet1000Spain2024-04-09
Leja N Briddick1001Australia2024-04-01
Arvin J Maclead1002Canada2024-04-15
David Q Venere1003Canada2024-04-24
Greenwood Y Slusarski1004Brazil2024-04-13
Emily U Garufi1005Italy2024-03-30
Arvin H Gillian1006Italy2024-04-15
Nicolas U Chui1007Spain2024-04-19
Cody H Ostrosky1008Brazil2024-04-09
Leon J Slusarski1009Brazil2024-04-20
Chavez B Ruta1010Canada2024-04-04
Francesco K Garufi1011Japan2024-04-13
Kadeem L Briddick1012Argentina2024-04-08
Stacey T Ruta1013United Kingdom2024-04-25
Ricardo B Iturbide1014Australia2024-04-18
Darci S Wieser1015Canada2024-04-25
Kadeem D Dilliard1016Japan2024-03-31
Ashley G Oldroyd1017India2024-04-25
Clifford R Saylors1018Canada2024-04-22
Morrow U Chui1019Germany2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair D VenereGermanyIoni Bowcher UNQUALIFIED
Arvin U RimItalyAmy Elsner NEW
Ricardo L AmigonArgentinaBernardo Dominic PROPOSAL
Claire U GlickAustraliaOnyama Limba PROPOSAL
Ricardo H GlickGermanyXuxue Feng UNQUALIFIED
Aika I FerenczAustraliaBernardo Dominic RENEWAL
Morrow A MacleadRussiaBernardo Dominic NEW
Munro U BriddickGermanyBernardo Dominic QUALIFIED
Jones V ChuiGermanyElwin Sharvill RENEWAL
Jeanfrancois L RulapaughGermanyIoni Bowcher NEGOTIATION
Aditya Z StensethGermanyAmy Elsner NEGOTIATION
Morrow Z WieserArgentinaOnyama Limba QUALIFIED
Sinclair K CampainRussiaIoni Bowcher NEW
Silvio P ButtSpainAsiya Javayant PROPOSAL
Juan P CaudyItalyOnyama Limba QUALIFIED
Costa W MacleadSpainXuxue Feng PROPOSAL
Jeanfrancois K CaudyGermanyBernardo Dominic NEGOTIATION
Kadeem Y FollerBrazilBernardo Dominic RENEWAL
Sinclair Q RutaFranceOnyama Limba NEW
Leja N DoeFranceAnna Fali NEGOTIATION
Silvio N ShinkoIndiaIoni Bowcher NEW
Juan G BriddickRussiaAsiya Javayant NEW
Maria V InouyeCanadaAsiya Javayant RENEWAL
Kadeem A SchemmerJapanAsiya Javayant QUALIFIED
Darci I PoquetteItalyStephen Shaw NEW
Julie Z RutaBrazilAmy Elsner QUALIFIED
Darci N DoeFranceOnyama Limba RENEWAL
Munro W GlickCanadaBernardo Dominic RENEWAL
Mayumi E MarrierJapanXuxue Feng UNQUALIFIED
Aika R ButtBrazilBernardo Dominic NEGOTIATION
Clifford R GauchoBrazilIoni Bowcher PROPOSAL
Jeanfrancois V AmigonAustraliaStephen Shaw RENEWAL
Ricardo L VenereJapanIvan Magalhaes PROPOSAL
Mayumi S PerinGermanyOnyama Limba UNQUALIFIED
Johnson L DoeFranceXuxue Feng QUALIFIED
Jennifer U IturbideGermanyAnna Fali PROPOSAL
Cody M DilliardBrazilIvan Magalhaes QUALIFIED
Arvin M RutaGermanyAsiya Javayant QUALIFIED
David K WaycottJapanAnna Fali NEW
Stacey X SaylorsSpainAmy 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>