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 A StockhamBrazilXuxue Feng PROPOSAL
Misaki P AmigonIndiaBernardo Dominic PROPOSAL
Adams U PerinJapanAnna Fali RENEWAL
Salvatore K RoysterGermanyStephen Shaw NEW
Sinclair Y PaprockiFranceIvan Magalhaes PROPOSAL
Costa C KolmetzCanadaOnyama Limba UNQUALIFIED
Darci X BowleyIndiaOnyama Limba NEW
Jones X CaldareraAustraliaAsiya Javayant NEGOTIATION
Costa F AlbaresJapanStephen Shaw NEW
Nicolas F GillianItalyAmy Elsner PROPOSAL
James C BologniaBrazilIvan Magalhaes UNQUALIFIED
Jeanfrancois K OldroydIndiaElwin Sharvill RENEWAL
Tony I MaletItalyXuxue Feng PROPOSAL
Aika P StensethAustraliaIvan Magalhaes UNQUALIFIED
Jones L PaprockiFranceOnyama Limba UNQUALIFIED
Nicolas X MaletItalyAmy Elsner NEGOTIATION
Sinclair A MorascaUnited KingdomOnyama Limba UNQUALIFIED
Darci W NickaUnited KingdomAnna Fali UNQUALIFIED
Clifford W GauchoJapanIvan Magalhaes RENEWAL
Alejandro U IturbideItalyOnyama Limba QUALIFIED
Costa L PaprockiItalyXuxue Feng UNQUALIFIED
Antonio Z GarufiUnited KingdomElwin Sharvill PROPOSAL
Deepesh C KuskoGermanyStephen Shaw QUALIFIED
James P VenereItalyAsiya Javayant NEGOTIATION
Chavez M AmigonFranceOnyama Limba NEW
Tony J KolmetzRussiaBernardo Dominic UNQUALIFIED
Antonio S PaprockiBrazilIvan Magalhaes RENEWAL
Cody G MarrierCanadaAnna Fali QUALIFIED
Leon V BologniaRussiaIvan Magalhaes UNQUALIFIED
Sinclair H NestleGermanyIvan Magalhaes PROPOSAL
Jones E SaylorsAustraliaIoni Bowcher RENEWAL
Greenwood M SchemmerJapanOnyama Limba NEW
Sinclair X BowleyGermanyOnyama Limba UNQUALIFIED
Clifford V InouyeItalyAnna Fali UNQUALIFIED
Jennifer A MaletBrazilOnyama Limba NEGOTIATION
Emily D MaletUnited KingdomOnyama Limba NEGOTIATION
Salvatore R DoeGermanyElwin Sharvill NEW
Aruna J ShinkoItalyIoni Bowcher NEGOTIATION
Misaki G PerinSpainElwin Sharvill PROPOSAL
Octavia U GlickAustraliaIvan Magalhaes NEW
Antonio Q FigeroaIndiaAmy Elsner PROPOSAL
Mayumi O KolmetzRussiaAnna Fali NEGOTIATION
Kaitlin H DarakjySpainBernardo Dominic NEGOTIATION
Johnson I CaldareraUnited KingdomBernardo Dominic PROPOSAL
Smith Q WieserBrazilXuxue Feng PROPOSAL
Jones A FollerUnited KingdomBernardo Dominic QUALIFIED
Aruna T WhobreyRussiaAnna Fali NEW
Leja V RulapaughJapanBernardo Dominic UNQUALIFIED
Jones L PerinRussiaOnyama Limba NEW
Leja S BologniaRussiaAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Cody F FerenczItalyAsiya Javayant PROPOSAL
Morrow K MacleadAustraliaIoni Bowcher NEW
Leon V MorascaIndiaBernardo Dominic UNQUALIFIED
Kadeem T TollnerFranceIoni Bowcher UNQUALIFIED
Juan Y KuskoRussiaIvan Magalhaes RENEWAL
Munro V RimRussiaIvan Magalhaes NEGOTIATION
Rodrigues N DoeFranceXuxue Feng PROPOSAL
Claire L RutaRussiaIoni Bowcher NEW
Maria A DilliardGermanyAsiya Javayant PROPOSAL
Ashley F PoquetteGermanyStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie G RutaBrazil2024-04-14Chemel, James L Cpa RENEWAL81Ivan Magalhaes
1001Silvio A FollerUnited Kingdom2024-04-05Dorl, James J Esq RENEWAL51Ivan Magalhaes
1002Aruna K VocelkaBrazil2024-04-07Dorl, James J Esq QUALIFIED11Anna Fali
1003Costa C RutaSpain2024-04-07King, Christopher A Esq QUALIFIED39Amy Elsner
1004Smith Q PerinAustralia2024-04-04Printing Dimensions NEW26Amy Elsner
1005Claire C SaylorsJapan2024-03-29Chemel, James L Cpa PROPOSAL20Onyama Limba
1006Munro Y SergiItaly2024-04-17Rousseaux, Michael Esq PROPOSAL17Xuxue Feng
1007Aditya B InouyeIndia2024-04-05Chemel, James L Cpa UNQUALIFIED74Anna Fali
1008Nicolas K SlusarskiSpain2024-03-27Truhlar And Truhlar Attys RENEWAL2Ivan Magalhaes
1009Aika C FlosiUnited Kingdom2024-04-05Feltz Printing Service RENEWAL48Ivan Magalhaes
1010Ivar H GarufiIndia2024-04-22King, Christopher A Esq NEGOTIATION53Ioni Bowcher
1011Chavez Q WaycottFrance2024-04-19Dorl, James J Esq PROPOSAL0Stephen Shaw
1012Salvatore W ButtIndia2024-04-15Rangoni Of Florence RENEWAL27Bernardo Dominic
1013Jeanfrancois J PaprockiCanada2024-04-18Truhlar And Truhlar Attys QUALIFIED72Amy Elsner
1014Francesco N OstroskyFrance2024-04-17Feiner Bros UNQUALIFIED99Elwin Sharvill
1015Jeanfrancois N GillianJapan2024-04-10Commercial Press NEW43Ioni Bowcher
1016Ricardo C ButtUnited Kingdom2024-04-10Chemel, James L Cpa UNQUALIFIED95Anna Fali
1017Chavez K GarufiSpain2024-03-27Chanay, Jeffrey A Esq PROPOSAL13Amy Elsner
1018Alejandro D KuskoAustralia2024-04-20Buckley Miller Wright NEGOTIATION81Amy Elsner
1019Deepesh N NestleCanada2024-04-09Rousseaux, Michael Esq UNQUALIFIED29Asiya Javayant
1020Johnson G StockhamJapan2024-04-06Chanay, Jeffrey A Esq QUALIFIED12Stephen Shaw
1021Aruna W ButtCanada2024-04-09Chemel, James L Cpa RENEWAL99Bernardo Dominic
1022Mayumi A ShinkoFrance2024-04-03Rangoni Of Florence NEW97Onyama Limba
1023Arvin N KolmetzSpain2024-04-03Truhlar And Truhlar Attys RENEWAL47Ivan Magalhaes
1024Aika R StensethIndia2024-04-13Benton, John B Jr RENEWAL62Asiya Javayant
1025Darci M RoysterUnited Kingdom2024-03-30Morlong Associates UNQUALIFIED29Xuxue Feng
1026Munro C CaudyGermany2024-04-19Chapman, Ross E Esq NEGOTIATION83Xuxue Feng
1027Chavez C VocelkaJapan2024-04-14Commercial Press NEW9Bernardo Dominic
1028Ashley D PerinAustralia2024-04-23Benton, John B Jr QUALIFIED26Xuxue Feng
1029Morrow V ShinkoAustralia2024-04-16Feiner Bros UNQUALIFIED17Ioni Bowcher
1030Izzy B FlosiGermany2024-03-29Feltz Printing Service QUALIFIED38Onyama Limba
1031Ashley E SaylorsCanada2024-04-04Feltz Printing Service RENEWAL0Elwin Sharvill
1032Greenwood J MarrierCanada2024-04-01Dorl, James J Esq QUALIFIED71Onyama Limba
1033Jeanfrancois Z GillianAustralia2024-04-02Dorl, James J Esq PROPOSAL9Anna Fali
1034Sinclair E CaldareraArgentina2024-04-21Chanay, Jeffrey A Esq NEW20Anna Fali
1035Nicolas T CaudyAustralia2024-04-05Dorl, James J Esq RENEWAL21Asiya Javayant
1036Wickens P OldroydCanada2024-03-27Rangoni Of Florence QUALIFIED26Anna Fali
1037Mujtaba N PoquetteArgentina2024-03-31Chemel, James L Cpa NEGOTIATION96Asiya Javayant
1038Johnson M WieserGermany2024-03-30Benton, John B Jr PROPOSAL64Ivan Magalhaes
1039Morrow U MaletGermany2024-04-15Printing Dimensions UNQUALIFIED87Onyama Limba
1040Adams O DoeBrazil2024-04-07Chanay, Jeffrey A Esq PROPOSAL15Elwin Sharvill
1041Maria V FlosiAustralia2024-04-02Dorl, James J Esq NEW20Amy Elsner
1042Darci I DoeItaly2024-04-24Commercial Press UNQUALIFIED90Onyama Limba
1043Alejandro P IturbideGermany2024-04-23Feiner Bros QUALIFIED42Amy Elsner
1044Munro T ButtIndia2024-04-21Chemel, James L Cpa QUALIFIED74Ioni Bowcher
1045Smith T RimUnited Kingdom2024-04-02Feiner Bros UNQUALIFIED57Bernardo Dominic
1046Morrow F DoeIndia2024-04-15Rousseaux, Michael Esq RENEWAL55Anna Fali
1047Misaki F MorascaSpain2024-04-22Feiner Bros QUALIFIED58Elwin Sharvill
1048Nicolas M BologniaUnited Kingdom2024-04-20Feiner Bros QUALIFIED69Anna Fali
1049Kadeem O PoquetteBrazil2024-04-16Benton, John B Jr NEW53Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
James M MaletFranceElwin Sharvill UNQUALIFIED
James V RulapaughRussiaElwin Sharvill QUALIFIED
Maria M CaldareraSpainOnyama Limba QUALIFIED
Francesco C WaycottJapanIvan Magalhaes UNQUALIFIED
Arvin Z PerinArgentinaOnyama Limba UNQUALIFIED
Jeanfrancois U RoysterIndiaIoni Bowcher PROPOSAL
Juan F MarrierGermanyOnyama Limba NEGOTIATION
Maisha G OldroydBrazilElwin Sharvill QUALIFIED
Morrow Z AlbaresArgentinaOnyama Limba UNQUALIFIED
Claire I MaletItalyOnyama Limba QUALIFIED
Jones V MaletRussiaStephen Shaw QUALIFIED
Aika J CaudyAustraliaElwin Sharvill QUALIFIED
Julie Q RoysterIndiaBernardo Dominic NEW
Deepesh K FigeroaCanadaElwin Sharvill NEGOTIATION
Alejandro T ChuiItalyStephen Shaw RENEWAL
Ashley N IturbideArgentinaXuxue Feng QUALIFIED
Nicolas G TollnerJapanIvan Magalhaes PROPOSAL
Ivar G RoysterSpainXuxue Feng QUALIFIED
Stacey C WhobreyIndiaXuxue Feng QUALIFIED
Juan J VocelkaCanadaOnyama Limba UNQUALIFIED
Leon T CampainAustraliaOnyama Limba RENEWAL
Sinclair Y BologniaFranceAsiya Javayant UNQUALIFIED
Francesco W FollerItalyBernardo Dominic PROPOSAL
Darci K FollerFranceStephen Shaw QUALIFIED
Leja O FigeroaJapanOnyama Limba NEGOTIATION
Alejandro H PaprockiItalyIoni Bowcher RENEWAL
Arvin U SchemmerUnited KingdomAnna Fali RENEWAL
Jones C FigeroaBrazilAnna Fali NEW
Ivar I RulapaughUnited KingdomXuxue Feng NEW
Francesco W InouyeUnited KingdomIvan Magalhaes RENEWAL
Adams O RutaUnited KingdomAsiya Javayant NEW
Kaitlin B GauchoItalyAmy Elsner NEW
Clifford F GillianArgentinaAmy Elsner UNQUALIFIED
Darci X DarakjyJapanStephen Shaw RENEWAL
Misaki C ShinkoGermanyAsiya Javayant NEW
Jones U ButtArgentinaStephen Shaw NEGOTIATION
Wickens W CaldareraFranceElwin Sharvill RENEWAL
Deepesh E ShinkoSpainBernardo Dominic NEGOTIATION
Ivar T RimUnited KingdomAsiya Javayant PROPOSAL
Silvio E OldroydItalyOnyama Limba RENEWAL
Adams I RulapaughSpainIoni Bowcher NEW
Silvio Y AmigonItalyElwin Sharvill QUALIFIED
Aditya V CaldareraCanadaStephen Shaw RENEWAL
Maria Q DarakjyArgentinaAsiya Javayant NEW
Rodrigues P StensethArgentinaIvan Magalhaes RENEWAL
Costa I GauchoIndiaBernardo Dominic RENEWAL
David K FlosiBrazilBernardo Dominic PROPOSAL
Claire X DilliardUnited KingdomStephen Shaw UNQUALIFIED
Johnson D PerinCanadaBernardo Dominic RENEWAL
Rodrigues V CaudyRussiaElwin Sharvill NEW
Frozen Columns
Name
Leja D Stockham
Chavez W Campain
Arvin M Glick
Misaki T Bowley
Francesco M Caldarera
Sinclair S Caldarera
Arvin I Albares
Misaki V Iturbide
Isabel I Ferencz
Julie P Slusarski
Jeanfrancois C Gaucho
Munro X Garufi
Greenwood M Stenseth
Kadeem W Darakjy
Juan V Malet
Julie B Nestle
Kadeem V Ostrosky
Jefferson O Figeroa
Smith Y Vocelka
Izzy W Inouye
Costa W Ostrosky
Izzy R Whobrey
Mujtaba I Figeroa
Adams Z Stockham
Rodrigues M Rulapaugh
David H Perin
Aditya V Figeroa
Deepesh K Shinko
Leja I Inouye
Aditya B Whobrey
Juan J Vocelka
Antonio E Oldroyd
Nicolas Q Campain
Darci K Stockham
Kadeem N Bowley
Claire Y Campain
Mayumi W Dilliard
Aditya X Marrier
Darci M Ruta
Ivar Y Gillian
Aruna O Briddick
Silvio N Nestle
Isabel Z Gillian
Sinclair V Kusko
Chavez T Slusarski
Ricardo J Campain
Clifford I Kolmetz
Salvatore P Bolognia
Rodrigues B Nicka
Jennifer H Figeroa
IdCountryDate
1000Argentina2024-03-29
1001Germany2024-04-02
1002Australia2024-03-28
1003Germany2024-04-14
1004Germany2024-04-21
1005Russia2024-04-20
1006Italy2024-04-15
1007Russia2024-04-02
1008France2024-04-09
1009Australia2024-03-31
1010Argentina2024-04-20
1011Japan2024-04-01
1012Russia2024-04-25
1013Japan2024-04-03
1014Spain2024-04-13
1015Canada2024-04-06
1016Spain2024-04-04
1017Argentina2024-04-10
1018United Kingdom2024-03-31
1019Spain2024-03-29
1020India2024-04-04
1021Russia2024-04-20
1022Australia2024-03-30
1023Canada2024-04-08
1024United Kingdom2024-03-28
1025Germany2024-04-05
1026Australia2024-04-16
1027Russia2024-04-06
1028Japan2024-04-22
1029France2024-04-13
1030Japan2024-04-07
1031Australia2024-04-03
1032India2024-03-29
1033Italy2024-04-19
1034Argentina2024-03-29
1035Argentina2024-03-28
1036Australia2024-04-06
1037Canada2024-04-12
1038Spain2024-04-09
1039France2024-04-15
1040Japan2024-04-01
1041India2024-04-20
1042Australia2024-04-10
1043Italy2024-03-28
1044Canada2024-04-24
1045India2024-04-06
1046Russia2024-03-31
1047United Kingdom2024-04-08
1048India2024-04-16
1049France2024-04-25

On-Demand Data

NameIdCountryDate
David V Marrier1000Russia2024-04-18
Jefferson J Vocelka1001Japan2024-04-08
Sinclair H Marrier1002United Kingdom2024-04-09
Ricardo D Shinko1003France2024-04-09
Aruna K Darakjy1004United Kingdom2024-04-01
Deepesh T Caldarera1005Australia2024-04-11
Morrow N Ferencz1006Japan2024-04-17
Jennifer R Royster1007Italy2024-04-19
Claire C Flosi1008France2024-04-03
Aditya W Bowley1009India2024-03-27
Mayumi I Albares1010Argentina2024-03-28
Misaki A Caudy1011United Kingdom2024-04-14
Jeanfrancois Z Wieser1012Brazil2024-03-29
Ivar A Briddick1013Russia2024-04-03
Arvin P Morasca1014Italy2024-04-16
Kadeem R Stockham1015Germany2024-03-29
Rodrigues O Nestle1016Russia2024-04-07
Salvatore Q Vocelka1017Argentina2024-04-11
Ivar M Chui1018Argentina2024-04-19
Tony U Sergi1019Russia2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson A MorascaIndiaIvan Magalhaes UNQUALIFIED
Francesco D KuskoBrazilStephen Shaw RENEWAL
Alejandro F RulapaughArgentinaElwin Sharvill QUALIFIED
Kaitlin A ChuiFranceStephen Shaw NEW
Misaki K PerinGermanyElwin Sharvill NEW
Jones E KolmetzCanadaBernardo Dominic NEGOTIATION
Jones E RoysterSpainBernardo Dominic NEGOTIATION
Mujtaba H OldroydItalyElwin Sharvill RENEWAL
Ashley L RulapaughGermanyAsiya Javayant RENEWAL
Salvatore B CaldareraUnited KingdomOnyama Limba QUALIFIED
Morrow A IturbideIndiaIoni Bowcher NEGOTIATION
Costa K PoquetteSpainBernardo Dominic NEGOTIATION
Costa H StockhamRussiaXuxue Feng UNQUALIFIED
Aruna U FlosiFranceOnyama Limba PROPOSAL
Silvio L MorascaUnited KingdomOnyama Limba NEGOTIATION
Jeanfrancois S PerinRussiaBernardo Dominic QUALIFIED
Chavez K MacleadSpainIvan Magalhaes QUALIFIED
Misaki T OldroydRussiaStephen Shaw RENEWAL
Maisha L NestleBrazilIoni Bowcher NEGOTIATION
James G MaletArgentinaOnyama Limba PROPOSAL
Cody S SergiItalyAmy Elsner PROPOSAL
Jones L DoeGermanyElwin Sharvill NEW
Aika I RutaBrazilAsiya Javayant NEW
Aditya L GarufiBrazilAsiya Javayant QUALIFIED
Munro R GillianCanadaIoni Bowcher PROPOSAL
James D BologniaItalyXuxue Feng NEW
Maisha M CaudyAustraliaXuxue Feng PROPOSAL
James V SchemmerJapanAsiya Javayant QUALIFIED
Costa I SergiJapanAnna Fali NEGOTIATION
Mujtaba Q DilliardJapanElwin Sharvill UNQUALIFIED
Leon C FerenczAustraliaAnna Fali QUALIFIED
Clifford U ButtUnited KingdomOnyama Limba RENEWAL
Emily Z ButtRussiaElwin Sharvill PROPOSAL
Mayumi V DoeArgentinaOnyama Limba PROPOSAL
Kadeem W WieserIndiaOnyama Limba NEGOTIATION
Wickens B DarakjyFranceElwin Sharvill RENEWAL
Adams P BriddickAustraliaBernardo Dominic NEGOTIATION
Ivar W SchemmerBrazilAnna Fali NEGOTIATION
Maria M BologniaIndiaXuxue Feng RENEWAL
Octavia I MarrierArgentinaIoni 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>