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
Jefferson K GlickUnited KingdomElwin Sharvill NEW
Nicolas F NickaRussiaAsiya Javayant NEGOTIATION
Jennifer V RoysterItalyStephen Shaw PROPOSAL
Murillo O SaylorsGermanyElwin Sharvill RENEWAL
Julie K PoquetteRussiaOnyama Limba NEGOTIATION
Salvatore R OldroydBrazilAmy Elsner UNQUALIFIED
Julie A ShinkoRussiaAsiya Javayant NEW
Octavia S WieserRussiaIoni Bowcher NEGOTIATION
Leon H SchemmerJapanBernardo Dominic RENEWAL
Greenwood V TollnerItalyXuxue Feng QUALIFIED
James H FlosiArgentinaAsiya Javayant NEW
Stacey C StensethGermanyBernardo Dominic NEW
Tony E RoysterArgentinaStephen Shaw RENEWAL
David B MaletSpainXuxue Feng RENEWAL
Smith R MaletCanadaStephen Shaw PROPOSAL
Antonio S StensethBrazilIoni Bowcher QUALIFIED
Adams A PerinItalyElwin Sharvill QUALIFIED
Ivar M GillianIndiaIvan Magalhaes NEGOTIATION
Murillo Q DoeJapanAmy Elsner NEW
Greenwood X CampainJapanBernardo Dominic RENEWAL
Leon H MorascaUnited KingdomAmy Elsner NEW
Jones M FlosiCanadaXuxue Feng UNQUALIFIED
Smith H GarufiIndiaIoni Bowcher PROPOSAL
Maisha E KolmetzArgentinaStephen Shaw RENEWAL
Leon T WieserAustraliaBernardo Dominic NEGOTIATION
Darci S CaldareraBrazilAmy Elsner UNQUALIFIED
Greenwood Z InouyeRussiaElwin Sharvill RENEWAL
Darci F DarakjyFranceIoni Bowcher PROPOSAL
Maisha R WhobreyCanadaStephen Shaw UNQUALIFIED
Maria C MorascaArgentinaAmy Elsner PROPOSAL
Arvin W CaldareraSpainIoni Bowcher RENEWAL
Munro V ChuiIndiaStephen Shaw NEW
Maria R DoeArgentinaStephen Shaw UNQUALIFIED
Morrow Z RutaBrazilBernardo Dominic PROPOSAL
Adams S TollnerArgentinaStephen Shaw NEW
Alejandro X StockhamUnited KingdomOnyama Limba PROPOSAL
Ashley M MaletIndiaAmy Elsner PROPOSAL
Stacey K SchemmerGermanyBernardo Dominic RENEWAL
Aika P OldroydUnited KingdomAnna Fali NEGOTIATION
Mujtaba G GlickIndiaAmy Elsner PROPOSAL
Wickens Y ShinkoIndiaElwin Sharvill QUALIFIED
Octavia Z RimUnited KingdomStephen Shaw NEGOTIATION
James X PaprockiArgentinaOnyama Limba PROPOSAL
Claire E BriddickRussiaAnna Fali PROPOSAL
Chavez M BowleyRussiaXuxue Feng QUALIFIED
Darci A BologniaItalyBernardo Dominic NEGOTIATION
Smith D BologniaArgentinaIoni Bowcher UNQUALIFIED
Aruna U GillianFranceIvan Magalhaes PROPOSAL
Nicolas F GlickArgentinaIoni Bowcher NEGOTIATION
Deepesh D TollnerUnited KingdomAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Sinclair L InouyeGermanyXuxue Feng PROPOSAL
Claire S NestleIndiaXuxue Feng RENEWAL
Maria N AlbaresArgentinaAmy Elsner PROPOSAL
Antonio S SlusarskiFranceIoni Bowcher NEGOTIATION
Jefferson Z PoquetteCanadaOnyama Limba NEW
Sinclair M GauchoArgentinaIvan Magalhaes NEGOTIATION
Leon A BologniaArgentinaStephen Shaw QUALIFIED
Isabel O FerenczRussiaStephen Shaw PROPOSAL
Arvin B OstroskyUnited KingdomAmy Elsner NEGOTIATION
Francesco N MaletIndiaStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore G DoeFrance2024-03-28Benton, John B Jr NEGOTIATION45Ioni Bowcher
1001Faith Z CaldareraFrance2024-04-01Rousseaux, Michael Esq NEW96Asiya Javayant
1002Nicolas B MaletItaly2024-04-02Chapman, Ross E Esq NEW2Anna Fali
1003Chavez B DoeFrance2024-04-21Feltz Printing Service QUALIFIED56Asiya Javayant
1004Emily K SergiUnited Kingdom2024-04-05Morlong Associates PROPOSAL61Elwin Sharvill
1005Jennifer B PoquetteFrance2024-04-05Feiner Bros NEGOTIATION5Asiya Javayant
1006Leon E SaylorsArgentina2024-03-31Rousseaux, Michael Esq NEW2Amy Elsner
1007Ricardo G SaylorsIndia2024-03-25King, Christopher A Esq RENEWAL70Bernardo Dominic
1008Antonio Y SlusarskiSpain2024-04-01Truhlar And Truhlar Attys QUALIFIED70Anna Fali
1009Aditya V DoeAustralia2024-04-01Truhlar And Truhlar Attys PROPOSAL72Anna Fali
1010Jefferson S DilliardJapan2024-04-13Rousseaux, Michael Esq UNQUALIFIED74Amy Elsner
1011Chavez O MarrierItaly2024-04-20Chapman, Ross E Esq UNQUALIFIED8Anna Fali
1012Sinclair I FlosiArgentina2024-04-03Dorl, James J Esq UNQUALIFIED76Ioni Bowcher
1013Alejandro Q GillianUnited Kingdom2024-04-21King, Christopher A Esq UNQUALIFIED2Stephen Shaw
1014Ivar T PerinJapan2024-03-27Commercial Press NEW62Stephen Shaw
1015Clifford D AmigonSpain2024-03-27Chapman, Ross E Esq PROPOSAL98Bernardo Dominic
1016James J SlusarskiJapan2024-04-21Commercial Press NEW37Ioni Bowcher
1017Ashley Z BologniaGermany2024-04-13Rousseaux, Michael Esq QUALIFIED64Ivan Magalhaes
1018Leja P AmigonItaly2024-04-11Buckley Miller Wright UNQUALIFIED31Xuxue Feng
1019Faith S SaylorsIndia2024-04-11Rousseaux, Michael Esq QUALIFIED34Elwin Sharvill
1020Silvio P FlosiFrance2024-03-25Benton, John B Jr NEGOTIATION75Amy Elsner
1021Mayumi X NickaItaly2024-04-03Chanay, Jeffrey A Esq PROPOSAL47Elwin Sharvill
1022Wickens N RoysterAustralia2024-04-06Commercial Press UNQUALIFIED16Ivan Magalhaes
1023Claire T KolmetzRussia2024-03-25Rangoni Of Florence NEGOTIATION69Ioni Bowcher
1024Alejandro U OstroskyGermany2024-04-18Chanay, Jeffrey A Esq NEGOTIATION4Onyama Limba
1025Izzy Q RoysterItaly2024-04-20Rousseaux, Michael Esq NEGOTIATION11Bernardo Dominic
1026Leja T GillianArgentina2024-04-12Rangoni Of Florence NEGOTIATION84Xuxue Feng
1027Murillo L OstroskyAustralia2024-04-11Buckley Miller Wright QUALIFIED54Elwin Sharvill
1028Juan O MacleadFrance2024-04-05Chemel, James L Cpa PROPOSAL85Amy Elsner
1029Jeanfrancois V FollerIndia2024-03-25Rangoni Of Florence RENEWAL50Xuxue Feng
1030Adams D DilliardJapan2024-04-01Dorl, James J Esq NEGOTIATION2Asiya Javayant
1031Aruna K RoysterJapan2024-04-05Dorl, James J Esq NEW11Ioni Bowcher
1032Emily H WieserCanada2024-03-25Rangoni Of Florence UNQUALIFIED53Amy Elsner
1033Aika R KuskoAustralia2024-03-26Chanay, Jeffrey A Esq QUALIFIED35Bernardo Dominic
1034Clifford Q WieserCanada2024-04-04Benton, John B Jr NEGOTIATION75Amy Elsner
1035Smith S VocelkaGermany2024-04-11Chemel, James L Cpa NEW34Ioni Bowcher
1036Julie N FlosiUnited Kingdom2024-03-29Chemel, James L Cpa RENEWAL6Onyama Limba
1037Darci V WieserArgentina2024-04-12Feiner Bros UNQUALIFIED43Stephen Shaw
1038Murillo I GillianCanada2024-04-16Rousseaux, Michael Esq UNQUALIFIED23Onyama Limba
1039Julie I RutaFrance2024-04-10King, Christopher A Esq UNQUALIFIED40Elwin Sharvill
1040Jeanfrancois J PoquetteArgentina2024-03-30Dorl, James J Esq RENEWAL58Xuxue Feng
1041Kaitlin S GillianIndia2024-04-03Feiner Bros RENEWAL69Ivan Magalhaes
1042Isabel A KolmetzUnited Kingdom2024-04-01Rangoni Of Florence PROPOSAL45Onyama Limba
1043Jefferson B PerinGermany2024-04-10Chemel, James L Cpa NEGOTIATION32Elwin Sharvill
1044Izzy M CaudyUnited Kingdom2024-03-29Feiner Bros NEGOTIATION16Xuxue Feng
1045Ricardo B OstroskyBrazil2024-03-26Feiner Bros PROPOSAL95Anna Fali
1046Octavia S AlbaresJapan2024-04-03Commercial Press NEGOTIATION76Amy Elsner
1047Ivar C MacleadUnited Kingdom2024-04-04Feltz Printing Service NEGOTIATION31Amy Elsner
1048Nicolas F OldroydSpain2024-04-20Rousseaux, Michael Esq PROPOSAL74Bernardo Dominic
1049Clifford C CampainBrazil2024-03-25Buckley Miller Wright PROPOSAL62Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Aika G SaylorsFranceAnna Fali UNQUALIFIED
Chavez S SaylorsRussiaBernardo Dominic NEGOTIATION
Ricardo B MaletRussiaIvan Magalhaes UNQUALIFIED
Costa Z BowleyJapanAnna Fali RENEWAL
Morrow V GarufiItalyAnna Fali PROPOSAL
Alejandro T MacleadGermanyOnyama Limba NEGOTIATION
Mujtaba H GillianCanadaIvan Magalhaes NEW
Leja Z CaudyUnited KingdomIoni Bowcher NEW
Juan V PoquetteJapanBernardo Dominic RENEWAL
Antonio J KuskoSpainStephen Shaw PROPOSAL
Alejandro F CampainCanadaIvan Magalhaes QUALIFIED
Ashley K KuskoFranceBernardo Dominic NEW
Deepesh N MorascaRussiaElwin Sharvill RENEWAL
Morrow C DoeFranceAsiya Javayant NEGOTIATION
Wickens A PaprockiCanadaAsiya Javayant UNQUALIFIED
Kadeem E WieserJapanIoni Bowcher QUALIFIED
Clifford M MacleadGermanyIvan Magalhaes PROPOSAL
Octavia D MaletItalyXuxue Feng PROPOSAL
Sinclair C CaldareraSpainAsiya Javayant NEGOTIATION
Juan T ChuiGermanyStephen Shaw QUALIFIED
Rodrigues R BologniaArgentinaAnna Fali PROPOSAL
Kaitlin H NickaGermanyXuxue Feng QUALIFIED
Maisha U OldroydJapanElwin Sharvill NEW
Deepesh K KolmetzItalyBernardo Dominic RENEWAL
Antonio I InouyeUnited KingdomOnyama Limba NEW
Tony L NestleArgentinaAnna Fali RENEWAL
Jones R GarufiBrazilBernardo Dominic PROPOSAL
Stacey H NestleCanadaIvan Magalhaes UNQUALIFIED
Clifford T NestleArgentinaElwin Sharvill NEW
Ricardo G SchemmerItalyStephen Shaw UNQUALIFIED
Kadeem B StockhamBrazilAnna Fali QUALIFIED
Chavez B WieserUnited KingdomStephen Shaw RENEWAL
Silvio E RutaItalyXuxue Feng NEW
Antonio C MorascaSpainIoni Bowcher NEGOTIATION
Murillo N WaycottSpainIvan Magalhaes UNQUALIFIED
Jefferson E AmigonFranceAnna Fali NEW
Leon S MaletAustraliaIoni Bowcher NEGOTIATION
Aditya Q OstroskyAustraliaIvan Magalhaes NEW
Ivar E BriddickItalyBernardo Dominic QUALIFIED
Ashley N ButtArgentinaStephen Shaw UNQUALIFIED
Wickens F MarrierAustraliaOnyama Limba NEW
Ivar J WaycottGermanyIoni Bowcher QUALIFIED
Maria R MacleadUnited KingdomStephen Shaw NEGOTIATION
Izzy F MaletCanadaIoni Bowcher QUALIFIED
Isabel A InouyeBrazilIoni Bowcher NEW
Claire G CampainArgentinaStephen Shaw UNQUALIFIED
David X RutaArgentinaXuxue Feng RENEWAL
Arvin X NickaUnited KingdomStephen Shaw RENEWAL
Morrow K FerenczUnited KingdomXuxue Feng UNQUALIFIED
Clifford J RulapaughItalyAmy Elsner QUALIFIED
Frozen Columns
Name
Silvio A Morasca
Leon C Sergi
Salvatore K Malet
Stacey U Ostrosky
Mayumi U Flosi
Misaki N Royster
Jennifer H Royster
Faith H Schemmer
Munro M Flosi
Francesco M Gaucho
Jones D Chui
Antonio G Bowley
Emily Q Schemmer
Deepesh L Saylors
Isabel F Chui
Greenwood L Campain
Munro C Dilliard
Maisha U Glick
Chavez K Slusarski
Julie R Slusarski
Aditya K Ruta
Ashley H Iturbide
Munro T Kusko
Octavia S Marrier
Kadeem L Inouye
Ricardo D Gillian
Ivar M Nestle
Maisha C Gaucho
Jeanfrancois K Sergi
Morrow N Kusko
Kadeem O Butt
Leon P Amigon
Smith U Slusarski
Costa S Gillian
Stacey O Wieser
Deepesh S Foller
Kaitlin S Nestle
Izzy Y Gillian
Mujtaba Y Figeroa
Silvio O Maclead
Jennifer R Tollner
Murillo C Glick
Stacey S Ferencz
Faith N Inouye
Ricardo T Rulapaugh
Izzy W Caldarera
Smith U Foller
Cody G Slusarski
Kaitlin K Foller
Murillo B Saylors
IdCountryDate
1000Brazil2024-04-15
1001Germany2024-04-17
1002India2024-04-10
1003India2024-03-31
1004Spain2024-04-10
1005Argentina2024-04-16
1006India2024-04-14
1007Italy2024-04-17
1008Germany2024-03-24
1009Brazil2024-03-25
1010Spain2024-03-27
1011Spain2024-04-01
1012France2024-04-12
1013Australia2024-04-02
1014Canada2024-04-16
1015Spain2024-04-11
1016Canada2024-03-27
1017Argentina2024-04-11
1018Spain2024-04-18
1019Japan2024-04-11
1020Japan2024-03-27
1021Germany2024-03-25
1022Russia2024-04-13
1023France2024-03-24
1024Italy2024-04-19
1025India2024-04-12
1026United Kingdom2024-03-30
1027Brazil2024-03-28
1028Spain2024-03-28
1029United Kingdom2024-04-16
1030Spain2024-04-13
1031Russia2024-04-02
1032Spain2024-04-05
1033Australia2024-04-10
1034Australia2024-04-10
1035France2024-04-06
1036India2024-04-16
1037Spain2024-04-10
1038Australia2024-04-20
1039Spain2024-04-03
1040Russia2024-04-14
1041Germany2024-04-03
1042Canada2024-03-27
1043Australia2024-04-09
1044United Kingdom2024-04-19
1045United Kingdom2024-03-31
1046Russia2024-04-05
1047Germany2024-04-01
1048India2024-04-10
1049Canada2024-04-13

On-Demand Data

NameIdCountryDate
Darci G Nicka1000Germany2024-04-18
Ashley R Rim1001Italy2024-04-21
Deepesh G Stockham1002France2024-04-16
Aditya R Doe1003United Kingdom2024-04-19
Aruna E Saylors1004Spain2024-03-31
Ricardo E Maclead1005Argentina2024-04-09
Tony A Ferencz1006Germany2024-03-31
Ashley K Waycott1007Argentina2024-03-30
Salvatore M Foller1008Canada2024-03-25
Smith O Stockham1009Argentina2024-03-28
Jones Q Albares1010India2024-04-17
Francesco O Iturbide1011Germany2024-04-10
Aditya X Malet1012Russia2024-04-07
Izzy D Venere1013Brazil2024-04-21
Mujtaba O Saylors1014Australia2024-03-27
Maria S Saylors1015Italy2024-04-13
Leja W Poquette1016United Kingdom2024-03-26
Alejandro V Gillian1017India2024-04-10
Emily N Albares1018Russia2024-04-01
Aditya D Iturbide1019India2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo U BowleyBrazilOnyama Limba UNQUALIFIED
Alejandro Y CampainItalyElwin Sharvill PROPOSAL
Sinclair N GauchoRussiaStephen Shaw NEGOTIATION
Nicolas H PerinFranceAsiya Javayant PROPOSAL
Chavez O CampainRussiaBernardo Dominic RENEWAL
Clifford J MarrierSpainAsiya Javayant UNQUALIFIED
Mujtaba P ShinkoGermanyElwin Sharvill RENEWAL
Murillo T IturbideArgentinaBernardo Dominic NEW
Francesco V StensethCanadaElwin Sharvill PROPOSAL
Isabel U NickaCanadaBernardo Dominic UNQUALIFIED
Arvin Q SaylorsGermanyIvan Magalhaes UNQUALIFIED
Silvio Q DilliardRussiaIvan Magalhaes NEGOTIATION
Leja G DarakjyGermanyXuxue Feng RENEWAL
Isabel N WaycottIndiaXuxue Feng QUALIFIED
Leon C FlosiGermanyXuxue Feng UNQUALIFIED
Johnson F KuskoArgentinaIvan Magalhaes NEGOTIATION
Antonio C SergiSpainAsiya Javayant UNQUALIFIED
Tony P OldroydSpainOnyama Limba NEW
Silvio C PoquetteUnited KingdomBernardo Dominic QUALIFIED
Mayumi M DilliardUnited KingdomAsiya Javayant NEW
Mayumi W PaprockiCanadaIoni Bowcher UNQUALIFIED
Smith H BologniaJapanIvan Magalhaes NEGOTIATION
Maria T FlosiGermanyIoni Bowcher QUALIFIED
Maria F BologniaRussiaIvan Magalhaes UNQUALIFIED
Sinclair R InouyeArgentinaXuxue Feng NEW
Wickens O GauchoSpainIvan Magalhaes RENEWAL
Alejandro V FigeroaGermanyAsiya Javayant NEGOTIATION
Emily P DilliardIndiaOnyama Limba PROPOSAL
Aditya O InouyeItalyAsiya Javayant NEGOTIATION
Greenwood M BologniaUnited KingdomAsiya Javayant NEW
Kadeem S AmigonUnited KingdomStephen Shaw QUALIFIED
Aditya W MacleadBrazilAmy Elsner PROPOSAL
Deepesh T VocelkaBrazilOnyama Limba RENEWAL
Izzy Q NickaIndiaElwin Sharvill QUALIFIED
Ashley H StensethRussiaOnyama Limba UNQUALIFIED
Murillo Y BologniaJapanBernardo Dominic NEGOTIATION
Deepesh T ChuiSpainIvan Magalhaes PROPOSAL
Leon A VenereBrazilAsiya Javayant NEGOTIATION
Isabel X NestleBrazilAmy Elsner PROPOSAL
Ashley F MaletArgentinaIoni 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>