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
Morrow K ShinkoIndiaAsiya Javayant QUALIFIED
Adams D CaldareraCanadaStephen Shaw QUALIFIED
Ricardo K StensethFranceOnyama Limba PROPOSAL
Jones E GarufiCanadaStephen Shaw NEW
Darci G FerenczAustraliaElwin Sharvill PROPOSAL
Greenwood G IturbideSpainOnyama Limba UNQUALIFIED
Ricardo E CaudyFranceBernardo Dominic NEW
Mujtaba Y GlickRussiaXuxue Feng NEGOTIATION
Greenwood J StensethBrazilIoni Bowcher NEGOTIATION
Cody D VenereIndiaIoni Bowcher NEGOTIATION
Chavez W ChuiCanadaIoni Bowcher RENEWAL
Leja G ChuiItalyXuxue Feng NEGOTIATION
Sinclair R PaprockiItalyElwin Sharvill NEW
Rodrigues X MaletUnited KingdomStephen Shaw QUALIFIED
Kaitlin K StockhamArgentinaIvan Magalhaes NEGOTIATION
Juan I SchemmerSpainBernardo Dominic QUALIFIED
Leja I VocelkaJapanAmy Elsner QUALIFIED
Leja F RimSpainBernardo Dominic UNQUALIFIED
Mujtaba R AmigonAustraliaElwin Sharvill UNQUALIFIED
Faith T SaylorsItalyOnyama Limba QUALIFIED
Mujtaba T SlusarskiBrazilIvan Magalhaes RENEWAL
Maisha B IturbideJapanStephen Shaw PROPOSAL
James W BriddickItalyElwin Sharvill UNQUALIFIED
Wickens Z CaldareraJapanOnyama Limba UNQUALIFIED
Costa O KuskoGermanyIvan Magalhaes UNQUALIFIED
Stacey N DoeCanadaStephen Shaw NEGOTIATION
Mujtaba X SchemmerBrazilAsiya Javayant NEW
Adams W CaudyCanadaIoni Bowcher UNQUALIFIED
Aruna P GlickRussiaIoni Bowcher NEGOTIATION
Munro X NestleIndiaAsiya Javayant PROPOSAL
Kadeem L BowleyRussiaElwin Sharvill NEGOTIATION
Julie K CaldareraRussiaIoni Bowcher NEW
Leon I PaprockiFranceXuxue Feng PROPOSAL
Mujtaba I MorascaJapanBernardo Dominic RENEWAL
Munro V RutaUnited KingdomIoni Bowcher NEW
Jeanfrancois B ButtGermanyAsiya Javayant RENEWAL
Arvin B MarrierRussiaIvan Magalhaes RENEWAL
Greenwood P CaldareraUnited KingdomOnyama Limba NEW
Julie E MacleadGermanyBernardo Dominic QUALIFIED
Nicolas E GauchoGermanyAnna Fali NEGOTIATION
Isabel N GauchoSpainAsiya Javayant UNQUALIFIED
Ivar M GillianSpainOnyama Limba UNQUALIFIED
Kaitlin Y MacleadAustraliaXuxue Feng QUALIFIED
Kadeem F MorascaGermanyIvan Magalhaes QUALIFIED
Johnson Q CaudyRussiaAnna Fali UNQUALIFIED
Julie Z MacleadJapanStephen Shaw RENEWAL
James Z StockhamItalyAmy Elsner NEW
Nicolas T GlickUnited KingdomXuxue Feng QUALIFIED
Claire H AmigonSpainIvan Magalhaes QUALIFIED
Stacey N SchemmerItalyAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Maisha L TollnerCanadaIvan Magalhaes QUALIFIED
Mujtaba M SchemmerUnited KingdomXuxue Feng QUALIFIED
Isabel B RutaItalyXuxue Feng UNQUALIFIED
Octavia F BologniaJapanXuxue Feng QUALIFIED
Alejandro C DarakjyJapanBernardo Dominic RENEWAL
Julie B PerinCanadaXuxue Feng QUALIFIED
Aditya V FigeroaIndiaIoni Bowcher NEW
James I MorascaJapanIoni Bowcher QUALIFIED
Misaki Z VocelkaCanadaAsiya Javayant PROPOSAL
Isabel H OstroskyJapanStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones L TollnerRussia2024-04-08Dorl, James J Esq RENEWAL35Asiya Javayant
1001Smith O DoeFrance2024-04-05Chanay, Jeffrey A Esq PROPOSAL61Anna Fali
1002Adams L CampainGermany2024-04-13Benton, John B Jr RENEWAL79Amy Elsner
1003Clifford U GillianItaly2024-04-15Truhlar And Truhlar Attys RENEWAL97Ioni Bowcher
1004Costa F CampainBrazil2024-04-07Rousseaux, Michael Esq NEGOTIATION96Amy Elsner
1005Claire C AmigonFrance2024-04-02Rousseaux, Michael Esq RENEWAL57Anna Fali
1006Chavez T PerinAustralia2024-03-31Buckley Miller Wright RENEWAL52Amy Elsner
1007Jeanfrancois F PoquetteBrazil2024-03-29Rangoni Of Florence QUALIFIED86Anna Fali
1008Maria E PerinArgentina2024-03-31King, Christopher A Esq QUALIFIED97Onyama Limba
1009Chavez Z SchemmerAustralia2024-03-28Printing Dimensions RENEWAL28Ivan Magalhaes
1010Munro B MorascaRussia2024-03-27Feltz Printing Service RENEWAL29Xuxue Feng
1011Deepesh P GillianGermany2024-04-08Rousseaux, Michael Esq NEGOTIATION3Ioni Bowcher
1012Stacey Z WaycottItaly2024-04-12Rousseaux, Michael Esq UNQUALIFIED94Amy Elsner
1013Arvin P WhobreyAustralia2024-03-31Commercial Press RENEWAL5Asiya Javayant
1014Sinclair D MarrierBrazil2024-04-13Morlong Associates PROPOSAL42Stephen Shaw
1015Adams F SergiGermany2024-03-31Rousseaux, Michael Esq UNQUALIFIED98Ivan Magalhaes
1016Maisha C CaldareraCanada2024-03-27Truhlar And Truhlar Attys QUALIFIED33Xuxue Feng
1017Adams D ChuiCanada2024-04-25Chapman, Ross E Esq UNQUALIFIED85Asiya Javayant
1018Isabel A StensethCanada2024-03-27Chemel, James L Cpa PROPOSAL29Elwin Sharvill
1019Claire N FigeroaBrazil2024-04-02Commercial Press PROPOSAL0Onyama Limba
1020David W GarufiUnited Kingdom2024-04-17Benton, John B Jr QUALIFIED36Asiya Javayant
1021Leja P MorascaAustralia2024-04-23Morlong Associates PROPOSAL91Bernardo Dominic
1022Mujtaba K MaletBrazil2024-04-14Benton, John B Jr UNQUALIFIED77Xuxue Feng
1023Francesco W GillianCanada2024-04-14Commercial Press PROPOSAL29Xuxue Feng
1024Silvio O FlosiBrazil2024-04-06King, Christopher A Esq PROPOSAL32Amy Elsner
1025Cody B FerenczJapan2024-04-07Rousseaux, Michael Esq RENEWAL17Xuxue Feng
1026Mujtaba N OstroskyGermany2024-04-19Printing Dimensions PROPOSAL30Ioni Bowcher
1027Kadeem O CaudyFrance2024-04-13Morlong Associates QUALIFIED86Xuxue Feng
1028James T MaletSpain2024-04-01Chapman, Ross E Esq RENEWAL83Amy Elsner
1029Emily F TollnerArgentina2024-04-17Chemel, James L Cpa NEGOTIATION11Bernardo Dominic
1030Mayumi B FigeroaFrance2024-04-14Dorl, James J Esq NEGOTIATION47Ivan Magalhaes
1031Jeanfrancois P MarrierItaly2024-04-10Buckley Miller Wright QUALIFIED35Bernardo Dominic
1032Smith B InouyeSpain2024-04-08Feltz Printing Service UNQUALIFIED96Asiya Javayant
1033Juan H KuskoIndia2024-04-16Dorl, James J Esq RENEWAL19Elwin Sharvill
1034Clifford Y IturbideRussia2024-04-22King, Christopher A Esq NEW34Elwin Sharvill
1035Alejandro A BriddickBrazil2024-04-11Commercial Press QUALIFIED83Ivan Magalhaes
1036Antonio Y MacleadBrazil2024-04-05Chemel, James L Cpa NEGOTIATION6Amy Elsner
1037Ricardo V GlickCanada2024-04-01Feiner Bros NEW34Asiya Javayant
1038Johnson T CaudyUnited Kingdom2024-04-10Printing Dimensions RENEWAL10Anna Fali
1039Smith O MacleadCanada2024-04-10Feltz Printing Service PROPOSAL33Bernardo Dominic
1040Rodrigues E StensethIndia2024-04-17Rousseaux, Michael Esq RENEWAL86Bernardo Dominic
1041Jeanfrancois T OstroskyAustralia2024-04-15Feiner Bros RENEWAL84Elwin Sharvill
1042Kadeem N GillianBrazil2024-04-23Feiner Bros PROPOSAL62Asiya Javayant
1043Adams K NickaGermany2024-03-28King, Christopher A Esq UNQUALIFIED85Xuxue Feng
1044Cody Q AmigonItaly2024-04-09Printing Dimensions RENEWAL56Stephen Shaw
1045Deepesh N SaylorsArgentina2024-04-21Truhlar And Truhlar Attys NEW80Amy Elsner
1046Julie N PoquetteItaly2024-03-27Rousseaux, Michael Esq PROPOSAL41Anna Fali
1047Murillo K FollerJapan2024-04-17Printing Dimensions QUALIFIED82Onyama Limba
1048Misaki U TollnerArgentina2024-04-18Morlong Associates UNQUALIFIED24Anna Fali
1049Aruna E RimRussia2024-04-07Buckley Miller Wright RENEWAL11Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jennifer O MacleadRussiaAmy Elsner NEW
Nicolas K RulapaughSpainAsiya Javayant NEGOTIATION
Alejandro J RimArgentinaXuxue Feng QUALIFIED
Tony I KolmetzBrazilElwin Sharvill QUALIFIED
Adams H TollnerItalyAsiya Javayant PROPOSAL
Octavia F IturbideIndiaIoni Bowcher NEW
Maisha R CampainSpainIvan Magalhaes PROPOSAL
Leon T IturbideBrazilOnyama Limba UNQUALIFIED
Leon Y RimFranceXuxue Feng NEW
Silvio J MaletBrazilIoni Bowcher NEGOTIATION
Aruna W PaprockiIndiaIvan Magalhaes PROPOSAL
Jennifer B AlbaresGermanyXuxue Feng QUALIFIED
Sinclair D SergiBrazilAnna Fali NEW
Chavez H RulapaughJapanElwin Sharvill PROPOSAL
Sinclair S FigeroaGermanyStephen Shaw PROPOSAL
Faith T WhobreyBrazilAnna Fali UNQUALIFIED
Silvio V MorascaSpainOnyama Limba NEW
Ricardo D AlbaresJapanIvan Magalhaes UNQUALIFIED
Octavia U RimCanadaStephen Shaw RENEWAL
Munro Q RoysterFranceIvan Magalhaes QUALIFIED
Deepesh W CampainGermanyAsiya Javayant NEGOTIATION
Izzy Y MaletUnited KingdomAnna Fali RENEWAL
Jeanfrancois V WhobreyItalyOnyama Limba QUALIFIED
Faith M ButtItalyElwin Sharvill NEW
Jefferson G TollnerFranceAsiya Javayant NEGOTIATION
Antonio P FlosiArgentinaIvan Magalhaes PROPOSAL
Munro P RulapaughCanadaIoni Bowcher PROPOSAL
Faith L SchemmerArgentinaBernardo Dominic QUALIFIED
Julie J VocelkaJapanAnna Fali NEGOTIATION
Adams C BriddickArgentinaAnna Fali PROPOSAL
Isabel I ChuiItalyOnyama Limba QUALIFIED
Aruna C BowleyFranceStephen Shaw RENEWAL
Deepesh E MacleadItalyBernardo Dominic NEGOTIATION
Francesco L FlosiBrazilAmy Elsner NEGOTIATION
Octavia G MarrierCanadaOnyama Limba PROPOSAL
Leon C GauchoJapanOnyama Limba RENEWAL
Chavez Y CaldareraJapanAmy Elsner RENEWAL
Izzy S NickaGermanyAsiya Javayant UNQUALIFIED
David M MarrierCanadaBernardo Dominic RENEWAL
Jones J CaldareraSpainElwin Sharvill RENEWAL
Murillo R MaletUnited KingdomOnyama Limba PROPOSAL
Isabel Y OldroydIndiaIoni Bowcher RENEWAL
Silvio N SlusarskiIndiaStephen Shaw PROPOSAL
Ricardo B CaldareraRussiaIvan Magalhaes UNQUALIFIED
Mujtaba K KuskoUnited KingdomIvan Magalhaes QUALIFIED
Ashley W KuskoArgentinaStephen Shaw QUALIFIED
Kadeem P NestleUnited KingdomAsiya Javayant RENEWAL
Ivar B BowleyIndiaAnna Fali PROPOSAL
Aditya C ShinkoSpainAsiya Javayant QUALIFIED
Emily V MarrierBrazilAnna Fali UNQUALIFIED
Frozen Columns
Name
Cody W Marrier
Antonio H Slusarski
Ivar G Perin
Munro Q Shinko
Jefferson Q Bowley
Emily B Bolognia
Munro D Royster
Morrow H Stockham
Tony T Briddick
Mayumi S Caudy
Aika U Royster
Munro R Doe
Silvio O Tollner
Leon Z Gillian
Salvatore B Bolognia
Mayumi G Foller
Izzy I Garufi
Aruna Y Briddick
Misaki S Oldroyd
Mayumi B Paprocki
Emily T Figeroa
Rodrigues N Stockham
James R Whobrey
Wickens H Chui
Ashley E Maclead
Stacey X Briddick
Emily P Chui
Munro V Albares
Smith T Rim
Morrow Z Stenseth
Cody W Royster
Misaki V Glick
Wickens K Bowley
Alejandro S Kusko
Kaitlin W Doe
Smith H Butt
Leja Y Schemmer
Greenwood J Paprocki
Kadeem U Figeroa
Julie L Malet
Leja X Figeroa
Johnson Q Dilliard
Cody O Garufi
Izzy K Royster
Ivar J Marrier
Francesco Y Ruta
Juan G Gillian
Ashley H Nestle
Aditya Z Sergi
Emily L Chui
IdCountryDate
1000France2024-04-03
1001Japan2024-04-15
1002Argentina2024-04-23
1003Argentina2024-03-31
1004United Kingdom2024-04-01
1005Russia2024-04-03
1006Japan2024-03-27
1007Canada2024-04-18
1008Russia2024-04-13
1009Russia2024-03-31
1010India2024-04-18
1011France2024-04-06
1012United Kingdom2024-04-01
1013France2024-04-12
1014France2024-04-01
1015Argentina2024-03-30
1016Spain2024-04-05
1017Argentina2024-03-28
1018Russia2024-04-11
1019Germany2024-04-19
1020Russia2024-03-28
1021United Kingdom2024-04-19
1022Australia2024-04-07
1023Japan2024-04-02
1024Australia2024-03-28
1025France2024-04-04
1026India2024-04-20
1027Brazil2024-04-19
1028Australia2024-03-28
1029Australia2024-04-09
1030India2024-03-28
1031France2024-04-12
1032Brazil2024-03-28
1033Argentina2024-04-06
1034Italy2024-04-02
1035Argentina2024-04-18
1036Brazil2024-04-07
1037Canada2024-04-05
1038Spain2024-04-06
1039France2024-04-17
1040Canada2024-04-14
1041Canada2024-04-13
1042Brazil2024-04-14
1043Argentina2024-04-04
1044United Kingdom2024-03-27
1045Brazil2024-04-14
1046India2024-04-08
1047United Kingdom2024-04-17
1048France2024-04-22
1049India2024-04-08

On-Demand Data

NameIdCountryDate
Jones M Inouye1000Argentina2024-04-15
Jones Z Gaucho1001United Kingdom2024-04-05
Adams T Briddick1002Brazil2024-03-30
Adams G Oldroyd1003Argentina2024-04-14
Adams M Vocelka1004Australia2024-04-24
Aruna V Iturbide1005Germany2024-04-04
Aika A Nicka1006India2024-04-09
Octavia Z Caldarera1007Brazil2024-03-27
Aruna Z Nicka1008Russia2024-04-01
Mujtaba D Malet1009Argentina2024-04-15
Misaki O Nestle1010India2024-04-24
Maria G Glick1011Spain2024-04-07
Jennifer I Ostrosky1012Argentina2024-04-17
Wickens E Caldarera1013Italy2024-04-13
Jeanfrancois F Bowley1014Italy2024-04-06
Claire E Nicka1015Japan2024-04-22
Tony L Ostrosky1016Germany2024-04-05
Jeanfrancois V Ferencz1017Argentina2024-04-17
Adams N Darakjy1018France2024-03-31
Munro F Garufi1019Germany2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues J SergiAustraliaAnna Fali QUALIFIED
Ricardo K KuskoJapanElwin Sharvill PROPOSAL
Juan Q WaycottArgentinaElwin Sharvill NEW
Faith T SlusarskiBrazilAnna Fali RENEWAL
Maisha K WieserIndiaOnyama Limba QUALIFIED
Ricardo Q MaletItalyOnyama Limba NEGOTIATION
Claire E OstroskyRussiaOnyama Limba NEW
Mujtaba K AmigonSpainIoni Bowcher RENEWAL
Misaki F NestleIndiaOnyama Limba UNQUALIFIED
Jennifer Q MarrierFranceElwin Sharvill NEW
Ricardo E KolmetzBrazilIvan Magalhaes QUALIFIED
Emily H WhobreyArgentinaAsiya Javayant NEGOTIATION
Murillo G CaldareraIndiaIoni Bowcher PROPOSAL
Jones U RutaIndiaIoni Bowcher QUALIFIED
Kadeem D IturbideRussiaOnyama Limba QUALIFIED
Sinclair N ButtFranceXuxue Feng NEW
Ivar T SlusarskiRussiaIvan Magalhaes PROPOSAL
Antonio Q MaletRussiaIvan Magalhaes UNQUALIFIED
Octavia O MacleadIndiaBernardo Dominic RENEWAL
Greenwood D DoeItalyIvan Magalhaes NEW
Aika H OstroskySpainBernardo Dominic QUALIFIED
Aditya Y MaletArgentinaAsiya Javayant UNQUALIFIED
Juan J PaprockiGermanyBernardo Dominic RENEWAL
Claire R WaycottAustraliaBernardo Dominic RENEWAL
Smith A SlusarskiItalyElwin Sharvill NEW
Izzy J CaldareraAustraliaOnyama Limba RENEWAL
Ivar B FigeroaAustraliaAnna Fali PROPOSAL
Mayumi Q VocelkaItalyBernardo Dominic UNQUALIFIED
Arvin I TollnerAustraliaAmy Elsner RENEWAL
Jefferson K KolmetzJapanIoni Bowcher RENEWAL
Julie V SaylorsFranceAsiya Javayant NEGOTIATION
Jeanfrancois H RutaUnited KingdomIvan Magalhaes NEW
James V NickaBrazilBernardo Dominic PROPOSAL
Mujtaba A VocelkaFranceIvan Magalhaes NEGOTIATION
Smith T MaletJapanAsiya Javayant QUALIFIED
Chavez A SchemmerItalyAmy Elsner QUALIFIED
Greenwood E WhobreyItalyOnyama Limba NEW
Morrow W PerinBrazilAsiya Javayant PROPOSAL
Kadeem C InouyeAustraliaStephen Shaw PROPOSAL
James T MaletCanadaAnna Fali RENEWAL

<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>