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
Silvio O VocelkaRussiaIvan Magalhaes UNQUALIFIED
Emily R InouyeCanadaOnyama Limba UNQUALIFIED
Claire F StensethCanadaBernardo Dominic NEGOTIATION
Octavia Z CaldareraRussiaXuxue Feng NEGOTIATION
Emily J MarrierSpainXuxue Feng NEW
Aditya G SaylorsBrazilOnyama Limba UNQUALIFIED
Ricardo I KolmetzSpainIvan Magalhaes PROPOSAL
Morrow S TollnerUnited KingdomAsiya Javayant UNQUALIFIED
Leja L PaprockiFranceOnyama Limba NEW
Francesco E GillianArgentinaAnna Fali NEGOTIATION
Mujtaba X GarufiUnited KingdomStephen Shaw NEGOTIATION
Ashley Y WhobreyGermanyXuxue Feng NEW
Mayumi J CaldareraSpainXuxue Feng UNQUALIFIED
Isabel N MaletGermanyElwin Sharvill NEGOTIATION
Jones L GillianFranceIvan Magalhaes PROPOSAL
Julie B SaylorsBrazilBernardo Dominic UNQUALIFIED
Salvatore B KuskoAustraliaElwin Sharvill QUALIFIED
Jefferson M BowleyGermanyBernardo Dominic NEGOTIATION
James J MarrierFranceIoni Bowcher NEW
Chavez K ShinkoArgentinaBernardo Dominic QUALIFIED
Murillo T GillianArgentinaStephen Shaw NEW
Leja W VocelkaCanadaIvan Magalhaes NEW
Kaitlin Y CampainIndiaAsiya Javayant PROPOSAL
Alejandro Y DilliardIndiaIvan Magalhaes QUALIFIED
Julie W MaletSpainIvan Magalhaes NEW
Costa Q BologniaRussiaStephen Shaw QUALIFIED
Kaitlin J GlickSpainIvan Magalhaes UNQUALIFIED
Ivar W DoeUnited KingdomOnyama Limba NEW
James P PoquetteArgentinaIoni Bowcher NEGOTIATION
Nicolas U VocelkaUnited KingdomIoni Bowcher UNQUALIFIED
Juan A ButtFranceStephen Shaw PROPOSAL
Claire H PaprockiGermanyXuxue Feng RENEWAL
Jennifer T VocelkaAustraliaXuxue Feng PROPOSAL
Stacey D WaycottUnited KingdomXuxue Feng UNQUALIFIED
Clifford M MaletGermanyStephen Shaw PROPOSAL
Alejandro B AmigonJapanIoni Bowcher UNQUALIFIED
Tony V AmigonUnited KingdomIvan Magalhaes NEGOTIATION
Morrow H VocelkaArgentinaBernardo Dominic QUALIFIED
Chavez A FigeroaCanadaAmy Elsner RENEWAL
Sinclair T MacleadGermanyBernardo Dominic UNQUALIFIED
Salvatore M WaycottUnited KingdomIoni Bowcher RENEWAL
Jefferson W DilliardIndiaElwin Sharvill UNQUALIFIED
Tony E BowleyBrazilAmy Elsner PROPOSAL
Antonio C FerenczBrazilStephen Shaw RENEWAL
Chavez B RoysterBrazilIoni Bowcher PROPOSAL
Francesco G PaprockiCanadaOnyama Limba NEGOTIATION
Misaki G FigeroaGermanyElwin Sharvill QUALIFIED
Leon R StockhamIndiaIoni Bowcher NEW
Adams K ButtFranceAnna Fali UNQUALIFIED
Clifford S OstroskyCanadaIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mujtaba C BriddickJapanXuxue Feng QUALIFIED
Claire W WhobreyJapanOnyama Limba UNQUALIFIED
Leja K DarakjyGermanyIvan Magalhaes RENEWAL
Kaitlin E BriddickArgentinaAsiya Javayant NEW
Maisha Z DilliardSpainIvan Magalhaes QUALIFIED
Maria Z ButtArgentinaIoni Bowcher PROPOSAL
Julie D PerinUnited KingdomElwin Sharvill QUALIFIED
Johnson U NickaFranceBernardo Dominic UNQUALIFIED
Francesco X PerinUnited KingdomElwin Sharvill PROPOSAL
Aika T MaletIndiaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues N FigeroaAustralia2024-04-28Truhlar And Truhlar Attys PROPOSAL53Asiya Javayant
1001Emily W FerenczAustralia2024-04-16Rousseaux, Michael Esq RENEWAL65Asiya Javayant
1002Clifford F DoeAustralia2024-04-11Chanay, Jeffrey A Esq QUALIFIED72Ivan Magalhaes
1003Mayumi R FerenczUnited Kingdom2024-04-09Rangoni Of Florence NEW9Ivan Magalhaes
1004Claire E RulapaughAustralia2024-04-11Benton, John B Jr UNQUALIFIED19Asiya Javayant
1005Smith S StockhamUnited Kingdom2024-04-07Commercial Press NEGOTIATION38Anna Fali
1006Claire L SaylorsItaly2024-04-09Chapman, Ross E Esq PROPOSAL31Anna Fali
1007Kaitlin E FigeroaCanada2024-03-30Printing Dimensions UNQUALIFIED10Asiya Javayant
1008Izzy G InouyeUnited Kingdom2024-04-26Chanay, Jeffrey A Esq UNQUALIFIED5Anna Fali
1009Mayumi N DilliardArgentina2024-04-28Dorl, James J Esq NEGOTIATION27Asiya Javayant
1010Wickens D BowleySpain2024-04-09Chemel, James L Cpa PROPOSAL31Bernardo Dominic
1011Aika C CaudyRussia2024-04-07Chemel, James L Cpa NEGOTIATION97Asiya Javayant
1012Claire W AmigonArgentina2024-03-30Chemel, James L Cpa NEW17Stephen Shaw
1013Morrow X ChuiRussia2024-04-28Morlong Associates RENEWAL60Elwin Sharvill
1014James A ChuiIndia2024-04-01Rousseaux, Michael Esq RENEWAL2Amy Elsner
1015Julie L WieserIndia2024-04-20Benton, John B Jr RENEWAL7Onyama Limba
1016Jones P StensethJapan2024-04-19Feiner Bros NEW6Ivan Magalhaes
1017Juan Z SlusarskiUnited Kingdom2024-04-19Printing Dimensions NEW21Anna Fali
1018Tony A CampainAustralia2024-04-11Commercial Press RENEWAL47Anna Fali
1019Ashley Q BowleyFrance2024-04-14Feiner Bros UNQUALIFIED40Asiya Javayant
1020Costa K KolmetzIndia2024-04-08Feltz Printing Service RENEWAL19Xuxue Feng
1021Isabel W NestleRussia2024-04-22Chapman, Ross E Esq NEW69Amy Elsner
1022Misaki G RimGermany2024-04-26Buckley Miller Wright NEGOTIATION70Xuxue Feng
1023Costa P MaletBrazil2024-04-10Benton, John B Jr UNQUALIFIED71Asiya Javayant
1024Ivar M DilliardBrazil2024-04-02Buckley Miller Wright NEW48Stephen Shaw
1025Arvin I KuskoFrance2024-04-16Truhlar And Truhlar Attys NEGOTIATION13Onyama Limba
1026Mayumi I SlusarskiUnited Kingdom2024-04-08Rousseaux, Michael Esq UNQUALIFIED9Stephen Shaw
1027Greenwood S KuskoRussia2024-04-05Printing Dimensions UNQUALIFIED15Amy Elsner
1028Kaitlin P SaylorsCanada2024-04-26Buckley Miller Wright UNQUALIFIED49Ivan Magalhaes
1029Johnson B GarufiUnited Kingdom2024-04-25Chapman, Ross E Esq NEW92Onyama Limba
1030Cody G SergiFrance2024-04-23Feiner Bros RENEWAL71Anna Fali
1031Ivar N OldroydUnited Kingdom2024-04-28Printing Dimensions UNQUALIFIED33Xuxue Feng
1032Leon R KolmetzItaly2024-04-04Commercial Press QUALIFIED65Elwin Sharvill
1033Ivar B GillianSpain2024-04-13Printing Dimensions NEGOTIATION5Ioni Bowcher
1034Francesco K NestleAustralia2024-04-23Dorl, James J Esq QUALIFIED78Bernardo Dominic
1035Greenwood I MorascaUnited Kingdom2024-04-28Printing Dimensions NEGOTIATION47Elwin Sharvill
1036Jeanfrancois P RimArgentina2024-04-11Chapman, Ross E Esq UNQUALIFIED9Xuxue Feng
1037James S WaycottBrazil2024-03-30Chapman, Ross E Esq NEW99Amy Elsner
1038Aruna J CaldareraArgentina2024-04-12Rangoni Of Florence UNQUALIFIED54Xuxue Feng
1039Chavez U VocelkaJapan2024-04-23Printing Dimensions RENEWAL82Onyama Limba
1040Mujtaba D CaudyArgentina2024-04-17Chapman, Ross E Esq QUALIFIED72Stephen Shaw
1041Johnson P BologniaUnited Kingdom2024-04-03Rousseaux, Michael Esq PROPOSAL56Anna Fali
1042Mayumi H IturbideSpain2024-04-11Chemel, James L Cpa PROPOSAL60Onyama Limba
1043Deepesh G WieserArgentina2024-04-28Buckley Miller Wright UNQUALIFIED0Ioni Bowcher
1044Rodrigues J IturbideJapan2024-04-25Feiner Bros PROPOSAL35Stephen Shaw
1045Kaitlin S DarakjyAustralia2024-04-15Morlong Associates QUALIFIED85Ivan Magalhaes
1046Arvin Y DoeCanada2024-04-05Rangoni Of Florence NEW29Asiya Javayant
1047Rodrigues Q GauchoGermany2024-04-10Dorl, James J Esq NEGOTIATION39Bernardo Dominic
1048Julie J NestleIndia2024-03-31Chanay, Jeffrey A Esq UNQUALIFIED94Onyama Limba
1049Aruna H FollerArgentina2024-04-18Feltz Printing Service PROPOSAL48Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Faith V PoquetteRussiaIoni Bowcher NEGOTIATION
Jennifer U GlickSpainXuxue Feng NEGOTIATION
Greenwood J MorascaSpainOnyama Limba RENEWAL
Deepesh I BowleyItalyOnyama Limba NEW
Antonio C IturbideArgentinaOnyama Limba RENEWAL
Ricardo V FlosiIndiaAmy Elsner PROPOSAL
Ivar A DoeArgentinaXuxue Feng UNQUALIFIED
Kaitlin C DoeFranceOnyama Limba PROPOSAL
Alejandro M SlusarskiBrazilBernardo Dominic UNQUALIFIED
Silvio G VenereSpainOnyama Limba RENEWAL
Smith V WhobreyGermanyElwin Sharvill QUALIFIED
Francesco L GarufiCanadaIoni Bowcher PROPOSAL
Octavia E MaletRussiaAnna Fali NEGOTIATION
Octavia L PoquetteArgentinaAmy Elsner UNQUALIFIED
Smith N SaylorsAustraliaAsiya Javayant UNQUALIFIED
Jeanfrancois P FollerItalyAnna Fali PROPOSAL
Kaitlin H RoysterIndiaXuxue Feng QUALIFIED
Chavez L MaletBrazilAmy Elsner RENEWAL
Antonio F GillianIndiaIoni Bowcher PROPOSAL
Faith S CaldareraArgentinaAnna Fali QUALIFIED
Jennifer H MaletAustraliaAnna Fali RENEWAL
Deepesh Q AmigonRussiaXuxue Feng NEW
Darci P TollnerUnited KingdomAmy Elsner NEGOTIATION
Francesco M WhobreyBrazilBernardo Dominic QUALIFIED
Adams Q ButtFranceAnna Fali PROPOSAL
Morrow P WaycottUnited KingdomIoni Bowcher RENEWAL
Chavez I MaletUnited KingdomBernardo Dominic NEW
Costa S AmigonUnited KingdomIvan Magalhaes RENEWAL
Rodrigues G MaletAustraliaBernardo Dominic PROPOSAL
Juan R WhobreyRussiaIvan Magalhaes PROPOSAL
Adams G MaletJapanStephen Shaw NEW
Antonio W VocelkaJapanOnyama Limba NEW
Faith C StensethArgentinaAnna Fali RENEWAL
Kaitlin N PerinArgentinaAmy Elsner NEW
Salvatore D RoysterItalyElwin Sharvill UNQUALIFIED
Octavia M GarufiSpainBernardo Dominic PROPOSAL
Mayumi C BologniaRussiaStephen Shaw QUALIFIED
Kadeem N WhobreyCanadaAsiya Javayant UNQUALIFIED
Leja J WhobreyItalyElwin Sharvill UNQUALIFIED
Johnson S ShinkoAustraliaIoni Bowcher QUALIFIED
Arvin O DarakjyIndiaXuxue Feng PROPOSAL
Arvin O DoeAustraliaElwin Sharvill NEW
Francesco C WieserItalyStephen Shaw NEGOTIATION
Jones Q SlusarskiUnited KingdomIoni Bowcher PROPOSAL
Jeanfrancois M CampainRussiaStephen Shaw PROPOSAL
Kaitlin M KuskoAustraliaStephen Shaw QUALIFIED
Aditya U SlusarskiIndiaStephen Shaw NEW
Chavez Q FerenczAustraliaBernardo Dominic UNQUALIFIED
Maisha Q FlosiJapanAsiya Javayant NEGOTIATION
Adams A MorascaItalyStephen Shaw PROPOSAL
Frozen Columns
Name
Clifford H Maclead
Izzy T Shinko
Francesco T Schemmer
Jeanfrancois E Rulapaugh
Antonio R Ferencz
Tony M Bowley
Kaitlin B Foller
Jefferson G Malet
Ashley S Wieser
Isabel M Saylors
Aika Y Morasca
Morrow V Maclead
Jones I Inouye
Arvin E Tollner
Maria I Bowley
Rodrigues V Chui
Ashley J Rulapaugh
Antonio U Kusko
Misaki M Chui
Leja Q Vocelka
Clifford Q Poquette
Costa S Rulapaugh
Izzy Y Iturbide
Silvio X Inouye
Arvin T Butt
Emily M Caldarera
Aika E Figeroa
Kadeem U Schemmer
Faith J Amigon
Aruna N Rulapaugh
Deepesh S Ferencz
Izzy W Bolognia
Juan I Glick
Julie E Albares
Octavia U Bolognia
Aika M Amigon
Leja E Bolognia
Alejandro S Saylors
Sinclair P Tollner
Mayumi F Rulapaugh
Kaitlin C Rim
Murillo Q Stenseth
Stacey B Figeroa
Cody U Darakjy
Mujtaba L Schemmer
Ashley V Malet
Aditya X Ferencz
Mayumi W Caldarera
Johnson W Wieser
Kaitlin R Kolmetz
IdCountryDate
1000United Kingdom2024-04-08
1001Spain2024-04-25
1002Brazil2024-04-03
1003United Kingdom2024-04-17
1004Germany2024-04-20
1005United Kingdom2024-03-31
1006France2024-04-11
1007France2024-04-02
1008Spain2024-04-17
1009Russia2024-04-14
1010Germany2024-04-24
1011Spain2024-04-19
1012Italy2024-04-17
1013Spain2024-03-31
1014Argentina2024-04-18
1015Canada2024-04-28
1016Brazil2024-04-05
1017Italy2024-04-02
1018Argentina2024-04-08
1019United Kingdom2024-04-24
1020Argentina2024-04-18
1021India2024-04-18
1022Germany2024-04-23
1023France2024-04-16
1024United Kingdom2024-04-26
1025Japan2024-04-10
1026India2024-04-09
1027Canada2024-04-12
1028United Kingdom2024-04-06
1029Argentina2024-04-07
1030Russia2024-04-21
1031Brazil2024-04-19
1032Brazil2024-04-19
1033Japan2024-04-10
1034Spain2024-04-08
1035Italy2024-04-10
1036France2024-04-21
1037United Kingdom2024-04-18
1038Italy2024-04-08
1039United Kingdom2024-04-24
1040India2024-04-25
1041Brazil2024-03-31
1042Russia2024-04-02
1043Italy2024-04-13
1044Japan2024-04-05
1045Germany2024-04-08
1046Germany2024-04-02
1047Spain2024-04-13
1048France2024-04-05
1049Argentina2024-04-28

On-Demand Data

NameIdCountryDate
Ivar L Saylors1000Australia2024-04-03
Cody P Rulapaugh1001Japan2024-04-04
Francesco R Chui1002Russia2024-04-08
Leon J Bolognia1003Brazil2024-04-12
Ivar D Amigon1004Germany2024-04-03
Silvio U Bowley1005Japan2024-04-21
Aditya W Royster1006Japan2024-04-01
Jefferson M Wieser1007India2024-04-16
Maria Z Darakjy1008Russia2024-04-20
Darci E Campain1009Italy2024-04-24
Mayumi H Amigon1010Italy2024-04-02
Mayumi T Stenseth1011France2024-04-05
Morrow Z Slusarski1012Brazil2024-04-11
Nicolas X Oldroyd1013Italy2024-04-28
Smith M Rim1014United Kingdom2024-04-13
Stacey Y Tollner1015Italy2024-03-30
Kaitlin C Waycott1016Italy2024-04-26
Kaitlin T Ferencz1017Argentina2024-04-24
Mujtaba O Iturbide1018Brazil2024-04-18
Darci Q Briddick1019Spain2024-03-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey N GarufiBrazilBernardo Dominic RENEWAL
Aruna K BowleyGermanyAmy Elsner UNQUALIFIED
Stacey A SaylorsJapanAsiya Javayant QUALIFIED
Ivar E IturbideCanadaElwin Sharvill PROPOSAL
Misaki O FerenczItalyAsiya Javayant PROPOSAL
Ashley Z WhobreyRussiaAnna Fali NEW
Mujtaba W VocelkaIndiaXuxue Feng QUALIFIED
Jones H MaletAustraliaOnyama Limba NEW
Antonio A OldroydSpainOnyama Limba PROPOSAL
Alejandro N BriddickUnited KingdomAnna Fali QUALIFIED
Octavia M ButtUnited KingdomBernardo Dominic NEW
Aruna B WhobreyGermanyStephen Shaw UNQUALIFIED
Silvio X DilliardJapanAmy Elsner UNQUALIFIED
Murillo I GillianItalyIvan Magalhaes QUALIFIED
Kaitlin T WaycottArgentinaIoni Bowcher NEGOTIATION
Murillo U RutaJapanElwin Sharvill PROPOSAL
Ashley D FollerItalyIvan Magalhaes PROPOSAL
Salvatore C MaletRussiaAsiya Javayant RENEWAL
Aditya H MorascaUnited KingdomStephen Shaw UNQUALIFIED
Clifford U NickaCanadaElwin Sharvill UNQUALIFIED
Maisha Q SchemmerCanadaAnna Fali NEGOTIATION
Darci V VenereGermanyIoni Bowcher UNQUALIFIED
Wickens K SchemmerCanadaAnna Fali RENEWAL
Salvatore L AlbaresIndiaBernardo Dominic NEW
David Y PerinSpainOnyama Limba UNQUALIFIED
Aruna U NickaIndiaStephen Shaw PROPOSAL
Claire Q CaudyRussiaElwin Sharvill PROPOSAL
Smith Z StockhamFranceXuxue Feng UNQUALIFIED
Faith W StensethBrazilAmy Elsner NEGOTIATION
Greenwood F MaletArgentinaIvan Magalhaes PROPOSAL
Costa K MaletUnited KingdomXuxue Feng QUALIFIED
Leja C InouyeItalyAnna Fali NEW
Salvatore L PerinRussiaStephen Shaw NEW
Izzy D GlickGermanyAnna Fali UNQUALIFIED
Darci B ChuiAustraliaXuxue Feng RENEWAL
Jeanfrancois B VenereGermanyIvan Magalhaes RENEWAL
Johnson A RutaRussiaBernardo Dominic NEGOTIATION
Ricardo O AlbaresUnited KingdomAnna Fali UNQUALIFIED
Jennifer H DarakjyRussiaXuxue Feng QUALIFIED
Jeanfrancois D GillianBrazilXuxue Feng 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>