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
Rodrigues H StockhamUnited KingdomOnyama Limba QUALIFIED
Claire I NestleArgentinaIvan Magalhaes NEW
Jefferson S ChuiFranceOnyama Limba RENEWAL
Octavia B OstroskyCanadaOnyama Limba QUALIFIED
Izzy K DilliardGermanyIoni Bowcher NEGOTIATION
Salvatore M RimIndiaIoni Bowcher PROPOSAL
Wickens D SergiFranceAnna Fali UNQUALIFIED
Maria L VocelkaJapanAmy Elsner QUALIFIED
Claire B StockhamGermanyIoni Bowcher NEW
Johnson V CaudyUnited KingdomElwin Sharvill QUALIFIED
Morrow V BriddickIndiaOnyama Limba NEGOTIATION
Sinclair N FerenczJapanElwin Sharvill NEW
Arvin L MaletJapanOnyama Limba RENEWAL
Clifford V FerenczRussiaXuxue Feng QUALIFIED
Stacey A FlosiArgentinaBernardo Dominic PROPOSAL
Jeanfrancois D BowleyRussiaAnna Fali NEGOTIATION
Emily S TollnerFranceAnna Fali RENEWAL
Morrow U MorascaGermanyOnyama Limba QUALIFIED
Isabel B RoysterItalyBernardo Dominic UNQUALIFIED
Octavia Z RulapaughJapanElwin Sharvill RENEWAL
Salvatore T VenereAustraliaAmy Elsner UNQUALIFIED
Cody K KuskoIndiaStephen Shaw NEW
Jennifer R PaprockiArgentinaAmy Elsner NEW
James S ButtFranceOnyama Limba QUALIFIED
Jennifer R OstroskyGermanyIvan Magalhaes NEW
Alejandro I StensethGermanyOnyama Limba NEGOTIATION
Murillo E RoysterArgentinaAmy Elsner NEW
Faith H WhobreyBrazilBernardo Dominic QUALIFIED
Leja J IturbideAustraliaIoni Bowcher NEGOTIATION
Alejandro B RulapaughItalyIvan Magalhaes UNQUALIFIED
Claire A FigeroaGermanyAmy Elsner NEW
Octavia S WaycottJapanXuxue Feng UNQUALIFIED
Maria O FerenczRussiaOnyama Limba NEGOTIATION
Aika D BologniaArgentinaOnyama Limba PROPOSAL
Misaki T BriddickCanadaAsiya Javayant NEW
Cody E PerinRussiaIoni Bowcher NEW
Cody N BriddickGermanyStephen Shaw UNQUALIFIED
Leon U GarufiIndiaXuxue Feng RENEWAL
Morrow R NickaCanadaIvan Magalhaes NEW
Ivar J StockhamArgentinaAmy Elsner RENEWAL
Cody D DoeArgentinaIoni Bowcher NEW
Aruna W WaycottGermanyAmy Elsner UNQUALIFIED
Juan S AlbaresFranceAsiya Javayant PROPOSAL
Kaitlin P VocelkaBrazilAmy Elsner QUALIFIED
Deepesh A MaletIndiaAnna Fali NEGOTIATION
Cody E PerinFranceIvan Magalhaes PROPOSAL
Chavez E MaletSpainXuxue Feng NEW
Morrow W ButtJapanBernardo Dominic QUALIFIED
Kadeem B RulapaughFranceAsiya Javayant QUALIFIED
Isabel K OldroydItalyIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Leon S AlbaresAustraliaIvan Magalhaes NEW
Chavez D IturbideFranceXuxue Feng RENEWAL
Julie N BologniaUnited KingdomElwin Sharvill RENEWAL
Claire A PerinIndiaAmy Elsner RENEWAL
Aditya U CaudyCanadaXuxue Feng QUALIFIED
Faith Z BriddickJapanAnna Fali NEW
Sinclair C GauchoJapanAsiya Javayant PROPOSAL
Stacey C WhobreyFranceXuxue Feng NEGOTIATION
Francesco V PoquetteFranceXuxue Feng RENEWAL
Darci Y OstroskyJapanXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio Z GlickSpain2024-04-13Rangoni Of Florence UNQUALIFIED78Elwin Sharvill
1001Ricardo D FigeroaRussia2024-03-22Buckley Miller Wright NEGOTIATION97Anna Fali
1002Jones Z SlusarskiArgentina2024-04-03Benton, John B Jr UNQUALIFIED50Xuxue Feng
1003Sinclair T IturbideArgentina2024-04-03Morlong Associates NEGOTIATION41Bernardo Dominic
1004Mujtaba S PerinRussia2024-04-04Dorl, James J Esq QUALIFIED79Onyama Limba
1005Leon E ChuiAustralia2024-04-16Truhlar And Truhlar Attys PROPOSAL3Ivan Magalhaes
1006Claire M DoeAustralia2024-03-23Rangoni Of Florence PROPOSAL22Xuxue Feng
1007Leon K BriddickCanada2024-04-01Feltz Printing Service NEGOTIATION66Asiya Javayant
1008Alejandro B ShinkoItaly2024-04-09King, Christopher A Esq PROPOSAL78Onyama Limba
1009Mayumi G StensethIndia2024-04-04Benton, John B Jr QUALIFIED44Onyama Limba
1010Emily G WaycottAustralia2024-03-27Chapman, Ross E Esq UNQUALIFIED33Anna Fali
1011Adams R RimIndia2024-03-20Printing Dimensions UNQUALIFIED65Elwin Sharvill
1012Silvio B BowleyBrazil2024-03-29Truhlar And Truhlar Attys QUALIFIED20Asiya Javayant
1013Munro Y RutaBrazil2024-04-16Feltz Printing Service PROPOSAL33Elwin Sharvill
1014Leon U GauchoItaly2024-04-11Feiner Bros NEGOTIATION28Elwin Sharvill
1015Kadeem Z GlickSpain2024-04-09Buckley Miller Wright NEW97Asiya Javayant
1016Salvatore G SaylorsArgentina2024-03-20Dorl, James J Esq NEW14Stephen Shaw
1017Munro S AlbaresUnited Kingdom2024-04-12Chanay, Jeffrey A Esq RENEWAL25Ivan Magalhaes
1018Silvio O FollerIndia2024-04-04Chapman, Ross E Esq PROPOSAL25Stephen Shaw
1019Francesco Z WaycottFrance2024-04-15Truhlar And Truhlar Attys NEW50Ivan Magalhaes
1020Izzy A RutaSpain2024-04-11Buckley Miller Wright NEW29Xuxue Feng
1021Ricardo Z PerinArgentina2024-04-04Truhlar And Truhlar Attys QUALIFIED96Ivan Magalhaes
1022Greenwood H MaletCanada2024-03-29Buckley Miller Wright NEGOTIATION41Ioni Bowcher
1023Greenwood H BriddickAustralia2024-04-11Morlong Associates PROPOSAL73Bernardo Dominic
1024Kaitlin V GarufiCanada2024-04-18Truhlar And Truhlar Attys UNQUALIFIED47Asiya Javayant
1025Jeanfrancois E FlosiUnited Kingdom2024-03-22Rangoni Of Florence UNQUALIFIED70Onyama Limba
1026Johnson Q NestleArgentina2024-04-05Rousseaux, Michael Esq RENEWAL81Asiya Javayant
1027Isabel R IturbideFrance2024-04-11Dorl, James J Esq RENEWAL27Onyama Limba
1028Munro X PerinSpain2024-03-25Morlong Associates QUALIFIED63Asiya Javayant
1029Aika T FollerArgentina2024-03-27Dorl, James J Esq NEGOTIATION16Amy Elsner
1030Octavia O OstroskyGermany2024-03-21Feltz Printing Service PROPOSAL50Xuxue Feng
1031Maria Z KuskoIndia2024-04-06Dorl, James J Esq QUALIFIED28Anna Fali
1032Izzy D DilliardFrance2024-03-29Benton, John B Jr PROPOSAL0Ivan Magalhaes
1033Nicolas R DilliardItaly2024-04-07Chapman, Ross E Esq RENEWAL54Ioni Bowcher
1034Maisha D KuskoIndia2024-03-31Feiner Bros PROPOSAL68Asiya Javayant
1035Jennifer W WhobreyItaly2024-04-04Truhlar And Truhlar Attys UNQUALIFIED40Asiya Javayant
1036Ivar J CampainSpain2024-04-11Rangoni Of Florence NEGOTIATION86Ioni Bowcher
1037Mujtaba D NickaGermany2024-04-05Buckley Miller Wright UNQUALIFIED28Anna Fali
1038Rodrigues L AmigonSpain2024-03-27Buckley Miller Wright QUALIFIED24Xuxue Feng
1039Misaki Q BriddickRussia2024-03-23Morlong Associates RENEWAL83Anna Fali
1040Stacey T DarakjySpain2024-04-15Chemel, James L Cpa QUALIFIED67Ioni Bowcher
1041Jennifer H GillianItaly2024-03-23Commercial Press UNQUALIFIED96Anna Fali
1042Aditya J RimGermany2024-03-30Rangoni Of Florence QUALIFIED10Ioni Bowcher
1043Jones B ShinkoCanada2024-03-31Dorl, James J Esq RENEWAL0Onyama Limba
1044Izzy G FigeroaIndia2024-04-08Chemel, James L Cpa NEGOTIATION2Asiya Javayant
1045Munro H PoquetteFrance2024-04-11Commercial Press NEW27Bernardo Dominic
1046Jennifer V BowleyAustralia2024-03-23Printing Dimensions RENEWAL77Bernardo Dominic
1047Juan U StockhamJapan2024-04-06Feltz Printing Service PROPOSAL49Bernardo Dominic
1048Deepesh A GlickGermany2024-04-03Commercial Press PROPOSAL57Asiya Javayant
1049Murillo R NickaIndia2024-03-30Buckley Miller Wright PROPOSAL58Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Tony N SlusarskiGermanyXuxue Feng QUALIFIED
Chavez J BowleyRussiaAmy Elsner NEGOTIATION
Octavia W MaletSpainStephen Shaw NEW
Ricardo H GlickArgentinaAnna Fali UNQUALIFIED
Misaki T CaldareraGermanyXuxue Feng NEGOTIATION
Octavia Z PaprockiRussiaXuxue Feng NEW
Deepesh G VocelkaFranceOnyama Limba NEW
Mayumi Y SchemmerBrazilIoni Bowcher PROPOSAL
David Q DilliardItalyBernardo Dominic RENEWAL
Francesco M SaylorsUnited KingdomIvan Magalhaes PROPOSAL
Antonio Z RutaUnited KingdomIoni Bowcher RENEWAL
Silvio M RimSpainBernardo Dominic UNQUALIFIED
Isabel N AlbaresCanadaIoni Bowcher RENEWAL
Francesco J WieserBrazilElwin Sharvill PROPOSAL
Isabel Z BologniaGermanyAmy Elsner RENEWAL
Izzy E MaletArgentinaAnna Fali PROPOSAL
Smith N InouyeIndiaAsiya Javayant NEGOTIATION
Clifford S VenereJapanStephen Shaw PROPOSAL
James Q PoquetteCanadaElwin Sharvill UNQUALIFIED
Julie X KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Jefferson W FigeroaAustraliaXuxue Feng QUALIFIED
Arvin S ChuiRussiaBernardo Dominic PROPOSAL
Antonio P KuskoItalyIvan Magalhaes NEW
Sinclair F FollerSpainElwin Sharvill NEW
Leon K VocelkaAustraliaAsiya Javayant PROPOSAL
Antonio U ButtGermanyXuxue Feng UNQUALIFIED
Silvio M ShinkoFranceBernardo Dominic RENEWAL
Aruna N ShinkoArgentinaBernardo Dominic UNQUALIFIED
Leja B GlickUnited KingdomAmy Elsner UNQUALIFIED
Juan H CaudyBrazilIvan Magalhaes NEGOTIATION
Rodrigues W FollerAustraliaAsiya Javayant UNQUALIFIED
Aditya I FlosiJapanBernardo Dominic NEGOTIATION
Johnson U FigeroaArgentinaAsiya Javayant NEGOTIATION
David H CaldareraRussiaStephen Shaw QUALIFIED
Adams F ChuiCanadaBernardo Dominic RENEWAL
Maria J KuskoGermanyStephen Shaw NEGOTIATION
Alejandro G NickaAustraliaIoni Bowcher PROPOSAL
Munro P GarufiUnited KingdomAnna Fali RENEWAL
Stacey N SlusarskiBrazilAmy Elsner NEW
Antonio Y WaycottArgentinaBernardo Dominic NEW
Aika N GarufiGermanyAsiya Javayant QUALIFIED
Mujtaba X SlusarskiArgentinaStephen Shaw RENEWAL
Julie J DilliardJapanIvan Magalhaes RENEWAL
Morrow W CampainArgentinaOnyama Limba QUALIFIED
Costa O VocelkaBrazilStephen Shaw QUALIFIED
Kaitlin K NestleArgentinaAnna Fali QUALIFIED
Greenwood C OldroydAustraliaAsiya Javayant UNQUALIFIED
Izzy Z WieserFranceBernardo Dominic NEW
Ashley L SchemmerAustraliaBernardo Dominic QUALIFIED
Jefferson V VenereArgentinaAsiya Javayant RENEWAL
Frozen Columns
Name
Octavia L Wieser
Chavez Q Stenseth
Ricardo R Nicka
Arvin K Kolmetz
Misaki M Morasca
Clifford X Paprocki
James P Caldarera
Ricardo C Poquette
Aditya K Morasca
Faith I Marrier
Kaitlin O Flosi
Morrow J Briddick
Silvio H Briddick
Claire G Butt
Aditya N Inouye
Tony F Whobrey
Salvatore J Bowley
Greenwood H Glick
Emily F Tollner
Jennifer N Stenseth
Greenwood G Rulapaugh
Nicolas N Flosi
Jennifer A Figeroa
Johnson C Waycott
Costa U Malet
Murillo G Rim
Claire P Venere
Ricardo P Waycott
Munro Y Iturbide
Aruna E Marrier
Maisha R Darakjy
Jefferson I Shinko
Francesco Z Stockham
Rodrigues X Albares
Ashley E Albares
Maria K Sergi
Ricardo T Nicka
Salvatore M Saylors
Mayumi U Rim
Munro P Briddick
Juan H Gillian
Ashley P Ferencz
David S Darakjy
Leon W Gillian
Munro H Stockham
Silvio S Caldarera
Leon I Albares
Claire C Whobrey
Emily W Whobrey
Alejandro G Venere
IdCountryDate
1000Canada2024-03-25
1001Italy2024-04-18
1002Argentina2024-04-17
1003Brazil2024-04-18
1004Australia2024-03-21
1005Argentina2024-04-13
1006Japan2024-03-25
1007Australia2024-03-28
1008Brazil2024-04-13
1009Argentina2024-03-20
1010Argentina2024-03-26
1011Spain2024-04-10
1012Japan2024-04-07
1013India2024-04-05
1014France2024-04-04
1015Canada2024-03-21
1016Australia2024-03-31
1017France2024-04-02
1018Spain2024-03-22
1019Canada2024-04-11
1020Japan2024-04-13
1021Spain2024-04-06
1022India2024-03-29
1023Italy2024-04-07
1024Japan2024-03-23
1025France2024-04-14
1026Japan2024-04-03
1027Brazil2024-04-05
1028Brazil2024-03-30
1029Italy2024-04-01
1030Argentina2024-03-22
1031Canada2024-04-16
1032Japan2024-04-02
1033Japan2024-04-04
1034Germany2024-04-18
1035Spain2024-04-18
1036Japan2024-04-09
1037France2024-03-30
1038Russia2024-03-25
1039Australia2024-03-26
1040France2024-04-06
1041France2024-03-27
1042India2024-03-20
1043United Kingdom2024-04-14
1044Argentina2024-04-09
1045Australia2024-03-23
1046Italy2024-03-28
1047Italy2024-04-16
1048Germany2024-03-20
1049Russia2024-04-18

On-Demand Data

NameIdCountryDate
Salvatore N Amigon1000Australia2024-03-27
Darci F Gaucho1001Canada2024-03-28
Mujtaba G Tollner1002United Kingdom2024-03-29
Costa Z Glick1003Japan2024-04-06
Costa T Paprocki1004Germany2024-03-28
Johnson Q Royster1005Australia2024-03-31
Jeanfrancois Y Saylors1006Germany2024-03-28
Mayumi D Bolognia1007United Kingdom2024-04-17
Greenwood O Venere1008Spain2024-04-09
Alejandro C Saylors1009Russia2024-03-23
Silvio L Gaucho1010Russia2024-03-30
Wickens D Malet1011Brazil2024-03-22
Jones B Amigon1012Germany2024-04-15
Tony X Venere1013Japan2024-03-26
Sinclair H Glick1014Brazil2024-03-24
Silvio R Ruta1015Spain2024-04-04
Nicolas M Albares1016Italy2024-04-17
Morrow K Vocelka1017Spain2024-03-25
Greenwood X Glick1018Russia2024-04-15
Cody I Paprocki1019Brazil2024-03-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci K OldroydBrazilAmy Elsner PROPOSAL
Tony I BriddickSpainStephen Shaw UNQUALIFIED
Cody R OstroskyFranceAnna Fali QUALIFIED
Juan U GillianGermanyBernardo Dominic NEW
Silvio R MarrierCanadaAsiya Javayant QUALIFIED
Aditya U PerinFranceAsiya Javayant NEGOTIATION
Francesco J CaldareraSpainElwin Sharvill UNQUALIFIED
Morrow U RimItalyStephen Shaw NEW
Aditya L KuskoArgentinaBernardo Dominic QUALIFIED
Jones X FlosiFranceIvan Magalhaes PROPOSAL
Rodrigues F InouyeItalyAmy Elsner NEGOTIATION
Jefferson S TollnerAustraliaIoni Bowcher PROPOSAL
David S GauchoItalyAsiya Javayant QUALIFIED
Emily K CaudyArgentinaAsiya Javayant PROPOSAL
Francesco U CampainJapanElwin Sharvill RENEWAL
Nicolas I PaprockiSpainOnyama Limba UNQUALIFIED
Salvatore P BriddickJapanOnyama Limba UNQUALIFIED
Antonio D RulapaughCanadaBernardo Dominic QUALIFIED
Aika N AmigonArgentinaAsiya Javayant NEW
Deepesh W StensethArgentinaOnyama Limba PROPOSAL
Ricardo E KuskoArgentinaAnna Fali NEW
Arvin G BriddickIndiaOnyama Limba QUALIFIED
David B NickaJapanElwin Sharvill QUALIFIED
Alejandro L RoysterBrazilBernardo Dominic NEGOTIATION
Izzy R VenereIndiaOnyama Limba NEW
Octavia A DarakjyRussiaAnna Fali PROPOSAL
Darci K FerenczFranceAsiya Javayant NEW
Maisha O WaycottArgentinaIoni Bowcher RENEWAL
Kaitlin M CaldareraIndiaIvan Magalhaes QUALIFIED
Leon B MorascaIndiaAnna Fali PROPOSAL
Deepesh Y AmigonCanadaAmy Elsner NEW
Aditya N StensethJapanElwin Sharvill QUALIFIED
Rodrigues E BowleyItalyStephen Shaw UNQUALIFIED
Adams D RimRussiaOnyama Limba NEW
Tony N GlickSpainStephen Shaw PROPOSAL
Wickens I FlosiCanadaIoni Bowcher UNQUALIFIED
Aditya K WaycottCanadaStephen Shaw NEW
Deepesh N DilliardSpainElwin Sharvill QUALIFIED
Emily F PaprockiJapanAmy Elsner RENEWAL
Juan P KuskoFranceAmy Elsner 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>