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
Murillo C SaylorsJapanAnna Fali NEW
Ricardo H DarakjyFranceBernardo Dominic NEW
Kadeem Q RutaAustraliaStephen Shaw NEGOTIATION
Aditya F VenereCanadaAsiya Javayant PROPOSAL
Costa Y StensethJapanBernardo Dominic RENEWAL
Smith E GauchoRussiaIvan Magalhaes RENEWAL
Tony Y IturbideFranceStephen Shaw QUALIFIED
Adams V PoquetteItalyXuxue Feng QUALIFIED
Chavez T DarakjyAustraliaAnna Fali UNQUALIFIED
Izzy Q VocelkaAustraliaAmy Elsner NEGOTIATION
Clifford O MaletFranceElwin Sharvill UNQUALIFIED
Juan I VocelkaArgentinaStephen Shaw PROPOSAL
Kaitlin X KolmetzJapanAmy Elsner UNQUALIFIED
Leon N GillianItalyElwin Sharvill UNQUALIFIED
Ivar O RoysterFranceIvan Magalhaes NEGOTIATION
Ivar F AmigonSpainElwin Sharvill NEGOTIATION
Arvin O SaylorsIndiaOnyama Limba UNQUALIFIED
Sinclair M DoeRussiaIvan Magalhaes NEW
Jefferson K RulapaughArgentinaIvan Magalhaes QUALIFIED
Costa Y SlusarskiAustraliaAnna Fali QUALIFIED
Tony P MacleadUnited KingdomBernardo Dominic RENEWAL
Clifford N MarrierBrazilOnyama Limba RENEWAL
Maisha P OstroskyArgentinaElwin Sharvill QUALIFIED
Morrow E StockhamCanadaXuxue Feng NEW
Morrow L RulapaughCanadaIoni Bowcher PROPOSAL
Sinclair H WhobreyItalyAnna Fali QUALIFIED
Aruna A RutaGermanyAsiya Javayant NEW
Julie I GlickFranceOnyama Limba RENEWAL
Cody I RutaIndiaIoni Bowcher NEW
Emily T KuskoCanadaBernardo Dominic RENEWAL
Kadeem T KolmetzRussiaBernardo Dominic NEW
Mayumi G IturbideFranceIoni Bowcher UNQUALIFIED
Adams A PerinJapanXuxue Feng NEW
Maisha B GillianCanadaIoni Bowcher NEW
Jeanfrancois G RoysterGermanyIvan Magalhaes RENEWAL
Leja Q SaylorsGermanyAnna Fali UNQUALIFIED
Johnson A RutaJapanAnna Fali QUALIFIED
Munro G PaprockiArgentinaXuxue Feng UNQUALIFIED
Alejandro A TollnerCanadaIvan Magalhaes RENEWAL
Arvin B DilliardAustraliaIoni Bowcher QUALIFIED
Aika P SaylorsItalyElwin Sharvill QUALIFIED
Silvio I PaprockiSpainXuxue Feng PROPOSAL
Ashley X NickaItalyIvan Magalhaes RENEWAL
Francesco B DarakjyJapanOnyama Limba UNQUALIFIED
Deepesh R IturbideIndiaAnna Fali NEW
Jennifer K PaprockiCanadaIvan Magalhaes QUALIFIED
Deepesh A DarakjyItalyElwin Sharvill UNQUALIFIED
Nicolas F OstroskySpainIvan Magalhaes NEGOTIATION
James J NestleJapanAsiya Javayant PROPOSAL
Maria C GlickUnited KingdomAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Tony J GillianIndiaBernardo Dominic PROPOSAL
Jeanfrancois C ChuiBrazilIoni Bowcher UNQUALIFIED
Salvatore O GlickArgentinaXuxue Feng NEW
Maria S WieserCanadaXuxue Feng NEGOTIATION
Leon A CampainJapanAmy Elsner NEW
Morrow X PaprockiAustraliaAnna Fali UNQUALIFIED
Kaitlin T NickaItalyOnyama Limba NEGOTIATION
Kadeem G PerinArgentinaXuxue Feng QUALIFIED
Munro B BowleyAustraliaIvan Magalhaes UNQUALIFIED
Mujtaba W TollnerJapanAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley T MaletJapan2024-04-18Rangoni Of Florence NEW70Bernardo Dominic
1001Misaki B FollerArgentina2024-04-03Feiner Bros QUALIFIED1Bernardo Dominic
1002James S CaldareraBrazil2024-04-07King, Christopher A Esq NEGOTIATION58Stephen Shaw
1003Jeanfrancois L ShinkoSpain2024-04-19Chemel, James L Cpa RENEWAL28Asiya Javayant
1004Emily A ButtAustralia2024-04-21Morlong Associates NEW79Amy Elsner
1005Kadeem B KuskoUnited Kingdom2024-04-04Truhlar And Truhlar Attys NEGOTIATION66Stephen Shaw
1006Silvio E SlusarskiItaly2024-04-05Chapman, Ross E Esq RENEWAL70Ioni Bowcher
1007Sinclair V AmigonBrazil2024-04-13Chemel, James L Cpa PROPOSAL11Asiya Javayant
1008Jeanfrancois X WieserGermany2024-04-12King, Christopher A Esq NEW24Amy Elsner
1009Deepesh K FigeroaBrazil2024-03-30Morlong Associates NEGOTIATION61Anna Fali
1010James X MaletCanada2024-03-28Chemel, James L Cpa NEW85Ioni Bowcher
1011Ashley O DilliardRussia2024-04-26Printing Dimensions NEGOTIATION74Elwin Sharvill
1012Jennifer Y OstroskyGermany2024-04-12Rangoni Of Florence QUALIFIED99Elwin Sharvill
1013Arvin M ShinkoArgentina2024-04-24Dorl, James J Esq RENEWAL46Amy Elsner
1014Leon K BriddickRussia2024-04-09Printing Dimensions RENEWAL10Onyama Limba
1015Morrow X IturbideGermany2024-04-12Chemel, James L Cpa NEGOTIATION67Amy Elsner
1016Maisha S BologniaCanada2024-04-21Dorl, James J Esq NEGOTIATION75Onyama Limba
1017Kadeem X KuskoCanada2024-04-09Benton, John B Jr QUALIFIED15Xuxue Feng
1018Kadeem H MarrierUnited Kingdom2024-04-02Feiner Bros RENEWAL69Onyama Limba
1019Murillo W PaprockiIndia2024-03-29Dorl, James J Esq UNQUALIFIED48Bernardo Dominic
1020Francesco O SchemmerCanada2024-04-11Chemel, James L Cpa NEGOTIATION45Onyama Limba
1021Greenwood Q GauchoItaly2024-04-01Dorl, James J Esq PROPOSAL38Ivan Magalhaes
1022Murillo M KolmetzRussia2024-04-22Benton, John B Jr UNQUALIFIED77Bernardo Dominic
1023Isabel J VenereUnited Kingdom2024-03-29Printing Dimensions PROPOSAL48Ivan Magalhaes
1024Silvio F ShinkoSpain2024-04-13Chemel, James L Cpa UNQUALIFIED42Elwin Sharvill
1025Jeanfrancois S OstroskyUnited Kingdom2024-04-20Chanay, Jeffrey A Esq RENEWAL50Ioni Bowcher
1026Adams F MorascaGermany2024-04-03Commercial Press QUALIFIED53Bernardo Dominic
1027Misaki T OstroskyFrance2024-04-26Chemel, James L Cpa PROPOSAL76Xuxue Feng
1028Mujtaba B VocelkaCanada2024-04-13Feiner Bros QUALIFIED4Bernardo Dominic
1029Jefferson M KuskoJapan2024-04-14Rangoni Of Florence PROPOSAL6Asiya Javayant
1030Jones D RutaIndia2024-04-15Feiner Bros QUALIFIED98Ivan Magalhaes
1031Jennifer N SchemmerCanada2024-03-29Printing Dimensions UNQUALIFIED49Ioni Bowcher
1032Aruna X RulapaughGermany2024-04-16Feiner Bros QUALIFIED99Ioni Bowcher
1033Ashley J CaldareraCanada2024-04-10King, Christopher A Esq QUALIFIED31Anna Fali
1034Arvin Z SaylorsSpain2024-04-24Feiner Bros QUALIFIED16Anna Fali
1035Emily C ShinkoUnited Kingdom2024-04-05King, Christopher A Esq NEW50Ivan Magalhaes
1036Costa L ButtGermany2024-04-09Truhlar And Truhlar Attys NEGOTIATION72Asiya Javayant
1037Clifford R PoquetteIndia2024-04-16Chemel, James L Cpa RENEWAL4Stephen Shaw
1038Juan B ChuiSpain2024-04-20King, Christopher A Esq UNQUALIFIED87Ivan Magalhaes
1039Darci Q InouyeCanada2024-04-12Chanay, Jeffrey A Esq RENEWAL31Onyama Limba
1040Morrow D PoquetteGermany2024-04-08Feiner Bros RENEWAL66Asiya Javayant
1041Kadeem O MaletRussia2024-04-14Chanay, Jeffrey A Esq PROPOSAL60Amy Elsner
1042Greenwood K PaprockiItaly2024-04-14Truhlar And Truhlar Attys PROPOSAL23Amy Elsner
1043Isabel V InouyeAustralia2024-04-08Chemel, James L Cpa NEW54Xuxue Feng
1044Deepesh C VocelkaFrance2024-04-15Feltz Printing Service NEW99Ioni Bowcher
1045Rodrigues N BowleyFrance2024-04-07Feltz Printing Service UNQUALIFIED11Xuxue Feng
1046Smith Y MarrierSpain2024-04-22Buckley Miller Wright NEW55Asiya Javayant
1047Chavez I OstroskyFrance2024-04-15Commercial Press NEGOTIATION63Anna Fali
1048Ivar U StensethJapan2024-04-14Chanay, Jeffrey A Esq NEW57Stephen Shaw
1049Morrow Y PaprockiAustralia2024-04-09Rangoni Of Florence QUALIFIED43Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Adams J DarakjyFranceAnna Fali QUALIFIED
Greenwood I IturbideUnited KingdomBernardo Dominic NEW
Clifford H VocelkaIndiaIoni Bowcher QUALIFIED
Deepesh S RoysterGermanyIoni Bowcher NEGOTIATION
Juan A VocelkaRussiaElwin Sharvill QUALIFIED
Aruna A StensethGermanyAsiya Javayant UNQUALIFIED
Ricardo K CaudyFranceIvan Magalhaes PROPOSAL
Cody F DarakjyItalyElwin Sharvill NEW
Salvatore N DilliardRussiaAmy Elsner NEGOTIATION
Wickens R FlosiUnited KingdomIvan Magalhaes NEGOTIATION
Mayumi B TollnerSpainBernardo Dominic QUALIFIED
Tony F RoysterBrazilBernardo Dominic NEGOTIATION
Aika G MarrierBrazilXuxue Feng RENEWAL
Alejandro C OstroskyJapanXuxue Feng PROPOSAL
Aditya X VocelkaItalyIvan Magalhaes PROPOSAL
Francesco J RutaFranceOnyama Limba NEW
Munro H ShinkoGermanyIoni Bowcher NEGOTIATION
Isabel I AmigonBrazilStephen Shaw UNQUALIFIED
Alejandro R TollnerSpainIoni Bowcher NEGOTIATION
Adams R ButtBrazilElwin Sharvill UNQUALIFIED
Ashley G DilliardItalyAmy Elsner PROPOSAL
Jefferson G RulapaughArgentinaXuxue Feng PROPOSAL
Deepesh A ShinkoRussiaIoni Bowcher UNQUALIFIED
Clifford R SergiAustraliaAnna Fali QUALIFIED
Juan C SchemmerSpainIoni Bowcher PROPOSAL
Darci N OldroydFranceXuxue Feng UNQUALIFIED
Leja I RulapaughGermanyXuxue Feng UNQUALIFIED
Salvatore H GillianRussiaAsiya Javayant UNQUALIFIED
Leja H KolmetzAustraliaAsiya Javayant PROPOSAL
Izzy Z FigeroaJapanStephen Shaw NEW
Deepesh Q OldroydBrazilStephen Shaw NEW
Costa S AmigonRussiaBernardo Dominic QUALIFIED
Claire A IturbideArgentinaXuxue Feng QUALIFIED
Kadeem Z GarufiSpainStephen Shaw PROPOSAL
Chavez A FlosiCanadaStephen Shaw NEW
Ivar V RutaUnited KingdomIoni Bowcher RENEWAL
Faith V BologniaAustraliaAmy Elsner PROPOSAL
Ricardo F SlusarskiFranceBernardo Dominic PROPOSAL
Clifford C DarakjySpainBernardo Dominic NEGOTIATION
Claire Q PoquetteItalyIvan Magalhaes RENEWAL
Sinclair G ShinkoRussiaXuxue Feng UNQUALIFIED
Chavez K BriddickArgentinaAmy Elsner PROPOSAL
Salvatore N NestleArgentinaAmy Elsner RENEWAL
Munro E InouyeCanadaOnyama Limba RENEWAL
Francesco X DarakjyIndiaAmy Elsner QUALIFIED
James F WaycottSpainIoni Bowcher RENEWAL
Adams H RulapaughCanadaAmy Elsner QUALIFIED
Murillo L FlosiRussiaIoni Bowcher NEGOTIATION
Clifford U GillianItalyAmy Elsner NEGOTIATION
Aditya P StensethAustraliaOnyama Limba PROPOSAL
Frozen Columns
Name
Smith P Oldroyd
Nicolas S Gaucho
Kaitlin S Rulapaugh
Ashley R Venere
Costa A Amigon
Claire F Waycott
James Y Sergi
Juan I Perin
Izzy M Ferencz
Costa M Inouye
Francesco T Bowley
David Q Tollner
Isabel V Morasca
Francesco T Inouye
Kaitlin O Albares
Wickens F Nicka
Chavez J Glick
Maria L Amigon
Emily B Chui
Isabel S Bowley
Morrow H Royster
Kaitlin C Gillian
Greenwood A Royster
Izzy Q Kolmetz
Nicolas J Ferencz
Aditya L Oldroyd
Darci J Slusarski
Octavia W Flosi
Julie V Vocelka
Stacey J Nestle
Morrow A Nestle
Mayumi W Oldroyd
Greenwood N Tollner
Juan I Sergi
Izzy D Nicka
Adams I Gillian
Isabel X Gillian
Emily S Royster
Stacey C Vocelka
David G Chui
Ricardo G Stockham
Izzy N Butt
Deepesh W Flosi
Nicolas Y Gillian
Misaki A Ruta
Claire Q Saylors
Morrow A Doe
Darci X Ruta
Deepesh Q Inouye
Munro K Nestle
IdCountryDate
1000Japan2024-04-05
1001Spain2024-04-06
1002France2024-04-10
1003Argentina2024-04-01
1004Argentina2024-04-01
1005Japan2024-04-23
1006Canada2024-04-03
1007France2024-04-02
1008Argentina2024-04-20
1009France2024-04-06
1010Japan2024-04-01
1011Japan2024-04-06
1012Spain2024-04-20
1013United Kingdom2024-04-19
1014Germany2024-03-31
1015Brazil2024-04-18
1016India2024-04-19
1017Germany2024-04-23
1018Brazil2024-03-31
1019Germany2024-04-11
1020Argentina2024-04-14
1021France2024-04-07
1022Germany2024-04-15
1023Brazil2024-04-18
1024France2024-04-03
1025Russia2024-04-19
1026Japan2024-04-25
1027Italy2024-04-01
1028United Kingdom2024-04-14
1029Brazil2024-04-07
1030Spain2024-04-12
1031Spain2024-04-02
1032Argentina2024-04-05
1033France2024-04-16
1034Japan2024-04-23
1035Japan2024-04-03
1036Brazil2024-04-11
1037United Kingdom2024-04-04
1038France2024-04-09
1039Australia2024-04-11
1040Japan2024-04-13
1041Italy2024-04-08
1042Canada2024-04-26
1043Russia2024-04-05
1044Germany2024-04-09
1045Italy2024-04-09
1046India2024-04-08
1047France2024-04-14
1048Japan2024-04-15
1049Japan2024-03-31

On-Demand Data

NameIdCountryDate
Salvatore P Venere1000Brazil2024-04-17
Silvio G Dilliard1001France2024-03-30
Ivar C Caldarera1002Argentina2024-04-01
Wickens J Glick1003Australia2024-04-18
Darci D Darakjy1004Brazil2024-04-19
Salvatore W Ferencz1005Germany2024-04-01
Maria U Venere1006Brazil2024-04-23
Jeanfrancois O Gaucho1007France2024-04-11
Juan A Kolmetz1008India2024-04-16
Julie K Rim1009United Kingdom2024-04-10
Julie M Whobrey1010Japan2024-04-23
Isabel N Kusko1011Spain2024-04-09
Kaitlin Q Malet1012United Kingdom2024-04-10
Aditya Q Kolmetz1013Australia2024-04-05
Leja C Kusko1014Spain2024-03-28
Kaitlin M Schemmer1015Australia2024-04-07
Juan W Whobrey1016Germany2024-03-28
Tony B Shinko1017Argentina2024-04-22
Salvatore X Malet1018Russia2024-04-14
Aditya I Ruta1019United Kingdom2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci V RoysterRussiaAsiya Javayant QUALIFIED
Morrow M AmigonUnited KingdomBernardo Dominic NEW
Wickens F BowleyCanadaAmy Elsner NEW
Juan C BowleyItalyStephen Shaw NEGOTIATION
Clifford A BriddickGermanyAmy Elsner NEW
Johnson N PoquetteRussiaAsiya Javayant NEGOTIATION
Isabel R CaudyCanadaOnyama Limba QUALIFIED
Mujtaba D StensethFranceStephen Shaw UNQUALIFIED
Stacey F MaletGermanyAsiya Javayant NEW
Aika G TollnerRussiaAmy Elsner UNQUALIFIED
Emily J MaletFranceXuxue Feng QUALIFIED
Claire K VocelkaSpainBernardo Dominic UNQUALIFIED
Francesco A SaylorsRussiaAmy Elsner QUALIFIED
Murillo J RulapaughArgentinaElwin Sharvill UNQUALIFIED
Emily Y FlosiGermanyAnna Fali NEW
Ashley K SchemmerJapanAnna Fali QUALIFIED
Ivar Q BriddickArgentinaElwin Sharvill UNQUALIFIED
Mujtaba Z DarakjyUnited KingdomAnna Fali PROPOSAL
Rodrigues L MorascaIndiaAnna Fali UNQUALIFIED
Morrow Y SaylorsAustraliaIvan Magalhaes NEW
Deepesh A GillianArgentinaIvan Magalhaes UNQUALIFIED
Maisha D KolmetzItalyIvan Magalhaes PROPOSAL
Antonio F WieserRussiaAmy Elsner NEGOTIATION
Julie Y RoysterGermanyStephen Shaw UNQUALIFIED
Morrow C RoysterItalyAnna Fali UNQUALIFIED
Ivar M OstroskyAustraliaIoni Bowcher PROPOSAL
Johnson E RoysterSpainElwin Sharvill UNQUALIFIED
Juan B RutaFranceAnna Fali NEGOTIATION
Juan E SchemmerCanadaXuxue Feng UNQUALIFIED
Smith F MacleadGermanyBernardo Dominic NEW
James E FigeroaAustraliaAmy Elsner QUALIFIED
Murillo R RutaBrazilStephen Shaw NEW
Leja L MarrierBrazilBernardo Dominic UNQUALIFIED
Aika X MaletFranceOnyama Limba NEW
Juan Q DarakjyUnited KingdomAmy Elsner UNQUALIFIED
Jones O SchemmerCanadaAsiya Javayant NEW
Aika D OstroskyFranceXuxue Feng PROPOSAL
Silvio L IturbideAustraliaOnyama Limba NEW
Silvio M OldroydJapanAnna Fali RENEWAL
Isabel Q WieserCanadaXuxue Feng NEGOTIATION

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