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
Leja E InouyeItalyAnna Fali RENEWAL
Ricardo G GarufiCanadaAsiya Javayant NEW
Izzy F StockhamFranceBernardo Dominic NEGOTIATION
Isabel G CampainJapanAsiya Javayant RENEWAL
Ashley Y StockhamFranceBernardo Dominic PROPOSAL
Jones S AmigonBrazilAmy Elsner RENEWAL
Alejandro M PaprockiItalyIvan Magalhaes NEW
Munro T FlosiIndiaStephen Shaw UNQUALIFIED
Jeanfrancois B ChuiCanadaAmy Elsner QUALIFIED
Silvio Y SlusarskiRussiaBernardo Dominic NEW
Mayumi P StensethJapanAmy Elsner QUALIFIED
Aruna Y OstroskyAustraliaXuxue Feng UNQUALIFIED
James S VocelkaArgentinaBernardo Dominic RENEWAL
Arvin L VenereIndiaOnyama Limba NEW
Johnson M WhobreyJapanBernardo Dominic QUALIFIED
Kadeem F PaprockiCanadaIoni Bowcher NEGOTIATION
Clifford O MorascaItalyIvan Magalhaes NEW
Jones X MarrierArgentinaXuxue Feng NEW
Johnson E OldroydBrazilIoni Bowcher RENEWAL
Ivar G GillianIndiaIvan Magalhaes PROPOSAL
Alejandro F FollerSpainBernardo Dominic NEGOTIATION
Mujtaba X FerenczArgentinaIvan Magalhaes NEW
Misaki E IturbideJapanAmy Elsner QUALIFIED
Maria O GlickUnited KingdomBernardo Dominic QUALIFIED
Rodrigues H ChuiFranceBernardo Dominic NEW
Francesco V CaldareraCanadaAmy Elsner RENEWAL
Ricardo E BriddickItalyStephen Shaw NEW
Jeanfrancois C ButtUnited KingdomBernardo Dominic PROPOSAL
Jeanfrancois Z AmigonSpainAnna Fali NEGOTIATION
Isabel J SergiJapanOnyama Limba NEGOTIATION
Isabel T CampainJapanBernardo Dominic NEW
Rodrigues N TollnerArgentinaIvan Magalhaes NEGOTIATION
Aika S InouyeJapanElwin Sharvill UNQUALIFIED
Sinclair V GillianIndiaElwin Sharvill NEGOTIATION
Sinclair P NestleJapanStephen Shaw RENEWAL
Smith D BowleyBrazilAmy Elsner RENEWAL
Francesco U CaldareraFranceXuxue Feng RENEWAL
Murillo S FlosiSpainXuxue Feng RENEWAL
Arvin K VenereAustraliaIvan Magalhaes QUALIFIED
Kaitlin I DoeArgentinaAsiya Javayant UNQUALIFIED
Antonio U SaylorsBrazilAmy Elsner PROPOSAL
Izzy M FlosiGermanyIoni Bowcher NEGOTIATION
Jefferson Q MorascaGermanyAmy Elsner NEW
James K MarrierGermanyIvan Magalhaes RENEWAL
Jones H GarufiRussiaIoni Bowcher QUALIFIED
Costa C SchemmerJapanAnna Fali NEW
Francesco X OstroskyItalyAnna Fali UNQUALIFIED
Izzy Q RulapaughArgentinaOnyama Limba PROPOSAL
Silvio J WhobreyJapanAmy Elsner PROPOSAL
Octavia V FerenczSpainElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mayumi A AmigonGermanyOnyama Limba NEGOTIATION
Antonio L BriddickRussiaXuxue Feng NEGOTIATION
Julie B PoquetteJapanIvan Magalhaes RENEWAL
Misaki M DoeIndiaStephen Shaw UNQUALIFIED
Mujtaba M FlosiIndiaElwin Sharvill QUALIFIED
Misaki D SergiJapanXuxue Feng UNQUALIFIED
Mayumi B TollnerItalyOnyama Limba QUALIFIED
Julie A InouyeJapanOnyama Limba PROPOSAL
Alejandro B SlusarskiUnited KingdomAmy Elsner QUALIFIED
Julie Q VocelkaArgentinaStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey S ButtItaly2024-04-02Chapman, Ross E Esq NEGOTIATION3Amy Elsner
1001Deepesh S GauchoSpain2024-04-16Printing Dimensions NEGOTIATION79Amy Elsner
1002Rodrigues M RutaUnited Kingdom2024-04-23Chapman, Ross E Esq PROPOSAL80Asiya Javayant
1003Ricardo Z AmigonFrance2024-04-16Buckley Miller Wright NEGOTIATION68Elwin Sharvill
1004Francesco L GarufiRussia2024-04-18Buckley Miller Wright PROPOSAL16Amy Elsner
1005Adams Q RimAustralia2024-04-17Commercial Press PROPOSAL25Ioni Bowcher
1006Mayumi P FlosiUnited Kingdom2024-04-07Commercial Press RENEWAL66Elwin Sharvill
1007Arvin G SergiAustralia2024-04-06Rousseaux, Michael Esq NEGOTIATION37Xuxue Feng
1008Smith O PoquetteAustralia2024-04-18Feiner Bros QUALIFIED48Stephen Shaw
1009James S MarrierGermany2024-04-18Truhlar And Truhlar Attys UNQUALIFIED69Ioni Bowcher
1010Ashley M DarakjySpain2024-04-24Benton, John B Jr QUALIFIED33Ioni Bowcher
1011Kadeem T DoeItaly2024-04-10Feltz Printing Service RENEWAL14Anna Fali
1012Kadeem F RoysterArgentina2024-04-23Dorl, James J Esq NEGOTIATION64Onyama Limba
1013Silvio S AlbaresFrance2024-04-02Printing Dimensions PROPOSAL7Amy Elsner
1014Wickens K MacleadRussia2024-04-25Printing Dimensions NEW58Elwin Sharvill
1015Aika Q TollnerFrance2024-04-05Chemel, James L Cpa PROPOSAL60Onyama Limba
1016Adams I SergiFrance2024-04-24Feltz Printing Service NEGOTIATION95Onyama Limba
1017Costa M MaletBrazil2024-04-02Feiner Bros PROPOSAL21Xuxue Feng
1018Nicolas J MarrierUnited Kingdom2024-04-25Rousseaux, Michael Esq NEGOTIATION49Xuxue Feng
1019Deepesh L GlickUnited Kingdom2024-03-31Truhlar And Truhlar Attys UNQUALIFIED70Onyama Limba
1020Aditya M GauchoArgentina2024-04-09Rousseaux, Michael Esq NEGOTIATION39Ioni Bowcher
1021Silvio M TollnerFrance2024-04-24Feiner Bros QUALIFIED93Ioni Bowcher
1022Morrow O NestleUnited Kingdom2024-04-04Buckley Miller Wright UNQUALIFIED54Asiya Javayant
1023James L KolmetzGermany2024-04-21Dorl, James J Esq NEGOTIATION68Elwin Sharvill
1024Adams Z SchemmerBrazil2024-04-09Printing Dimensions UNQUALIFIED80Anna Fali
1025Kadeem X GarufiAustralia2024-04-03Chapman, Ross E Esq UNQUALIFIED40Xuxue Feng
1026Francesco M IturbideItaly2024-04-25Morlong Associates QUALIFIED48Anna Fali
1027Isabel T StensethSpain2024-04-13Commercial Press NEW55Elwin Sharvill
1028Octavia Y ChuiSpain2024-04-12Rousseaux, Michael Esq PROPOSAL52Xuxue Feng
1029Stacey C KolmetzAustralia2024-04-10Rangoni Of Florence UNQUALIFIED30Amy Elsner
1030Antonio O FlosiArgentina2024-04-02Feltz Printing Service RENEWAL79Anna Fali
1031Leon Z ButtBrazil2024-04-26Chapman, Ross E Esq PROPOSAL34Amy Elsner
1032Ivar P BriddickItaly2024-04-11Buckley Miller Wright NEGOTIATION17Amy Elsner
1033Murillo U FigeroaGermany2024-04-21Rousseaux, Michael Esq NEW29Amy Elsner
1034Jones M PoquetteSpain2024-04-20Feiner Bros NEW67Anna Fali
1035Rodrigues W OstroskyUnited Kingdom2024-04-23Dorl, James J Esq NEGOTIATION78Ioni Bowcher
1036Alejandro W TollnerGermany2024-04-21Dorl, James J Esq QUALIFIED53Amy Elsner
1037Greenwood Q KuskoAustralia2024-04-16Feltz Printing Service NEGOTIATION55Ioni Bowcher
1038Smith W FollerIndia2024-04-02Chanay, Jeffrey A Esq NEGOTIATION38Ioni Bowcher
1039David C PaprockiItaly2024-04-08Rangoni Of Florence QUALIFIED68Ivan Magalhaes
1040Juan W MaletJapan2024-04-05Benton, John B Jr NEW71Xuxue Feng
1041Morrow V GlickGermany2024-04-21Benton, John B Jr RENEWAL97Ivan Magalhaes
1042Mayumi E MarrierArgentina2024-04-16Chanay, Jeffrey A Esq PROPOSAL50Ioni Bowcher
1043Aruna Y GlickFrance2024-04-24Truhlar And Truhlar Attys QUALIFIED79Amy Elsner
1044Antonio C BriddickArgentina2024-04-19Commercial Press UNQUALIFIED55Ivan Magalhaes
1045Nicolas N FerenczFrance2024-04-18Rangoni Of Florence NEGOTIATION0Bernardo Dominic
1046Darci W FigeroaFrance2024-04-11Dorl, James J Esq QUALIFIED83Bernardo Dominic
1047Aditya A StensethCanada2024-04-16Dorl, James J Esq PROPOSAL2Ivan Magalhaes
1048Leja H ShinkoFrance2024-04-15Buckley Miller Wright NEGOTIATION61Elwin Sharvill
1049Stacey Y OstroskyUnited Kingdom2024-04-06King, Christopher A Esq NEW66Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Juan D ShinkoIndiaIvan Magalhaes QUALIFIED
Murillo I DilliardAustraliaStephen Shaw NEGOTIATION
Izzy O MaletIndiaElwin Sharvill RENEWAL
Ivar C OstroskyAustraliaAsiya Javayant PROPOSAL
James E BriddickItalyAnna Fali PROPOSAL
Cody P BowleyAustraliaStephen Shaw QUALIFIED
Jeanfrancois W SlusarskiRussiaAsiya Javayant QUALIFIED
Clifford H RutaIndiaElwin Sharvill NEGOTIATION
Faith V SaylorsArgentinaIoni Bowcher NEGOTIATION
Sinclair G KolmetzUnited KingdomAnna Fali NEW
Salvatore O NestleFranceOnyama Limba QUALIFIED
Morrow D MarrierIndiaIvan Magalhaes PROPOSAL
Alejandro A BowleyRussiaStephen Shaw RENEWAL
Adams O SchemmerSpainBernardo Dominic RENEWAL
Julie U WaycottGermanyAsiya Javayant NEW
Costa O IturbideBrazilIoni Bowcher UNQUALIFIED
Leja W PaprockiUnited KingdomIvan Magalhaes NEGOTIATION
Faith P CaldareraSpainIvan Magalhaes NEGOTIATION
Mujtaba V RoysterFranceIvan Magalhaes RENEWAL
Isabel J DoeItalyBernardo Dominic PROPOSAL
Rodrigues F BriddickArgentinaAmy Elsner UNQUALIFIED
Aika F VenereGermanyAsiya Javayant UNQUALIFIED
Juan C GauchoIndiaAnna Fali PROPOSAL
Ashley T GauchoJapanIvan Magalhaes NEW
Faith C CaldareraIndiaAnna Fali NEGOTIATION
Ricardo W CaldareraUnited KingdomElwin Sharvill NEGOTIATION
Francesco G KuskoArgentinaElwin Sharvill UNQUALIFIED
Alejandro E ButtRussiaXuxue Feng NEW
Jeanfrancois P MarrierBrazilIvan Magalhaes QUALIFIED
Kaitlin U TollnerSpainIoni Bowcher NEW
Jeanfrancois X MorascaRussiaAmy Elsner PROPOSAL
Jennifer X StensethItalyAnna Fali UNQUALIFIED
Emily K CampainUnited KingdomElwin Sharvill QUALIFIED
Ricardo B CaudyFranceAmy Elsner RENEWAL
Aruna F WhobreyUnited KingdomAnna Fali QUALIFIED
Adams T RutaItalyElwin Sharvill QUALIFIED
Ricardo G RutaGermanyStephen Shaw PROPOSAL
Darci N GarufiIndiaAnna Fali NEW
Aruna U DarakjyUnited KingdomIvan Magalhaes QUALIFIED
Silvio M SergiRussiaStephen Shaw NEGOTIATION
Kaitlin T IturbideAustraliaElwin Sharvill UNQUALIFIED
Kaitlin N ChuiCanadaIoni Bowcher PROPOSAL
Sinclair P SaylorsItalyIoni Bowcher NEW
Jennifer Q SchemmerCanadaStephen Shaw PROPOSAL
Maria E WhobreyUnited KingdomBernardo Dominic RENEWAL
Adams D MaletBrazilIvan Magalhaes PROPOSAL
Ashley L RulapaughAustraliaStephen Shaw NEW
Kaitlin O FigeroaArgentinaElwin Sharvill PROPOSAL
James S KuskoBrazilElwin Sharvill NEW
Jefferson W CaldareraJapanAsiya Javayant RENEWAL
Frozen Columns
Name
Alejandro Q Glick
Rodrigues G Perin
Adams I Oldroyd
Kaitlin M Wieser
Chavez Y Rulapaugh
Juan F Butt
David W Saylors
Ivar Y Morasca
Ashley J Sergi
James P Malet
Misaki G Whobrey
Munro Z Ruta
Aruna O Stockham
Julie R Perin
Kadeem L Morasca
Emily L Iturbide
Deepesh I Saylors
Sinclair O Wieser
Antonio T Briddick
Rodrigues P Oldroyd
Morrow X Caldarera
Leja M Tollner
Isabel P Rulapaugh
Adams E Schemmer
Jefferson F Morasca
Munro M Stockham
Wickens T Royster
Octavia U Chui
Cody M Kolmetz
Munro L Morasca
Faith I Poquette
Mujtaba I Paprocki
Morrow B Schemmer
Misaki P Slusarski
Nicolas N Darakjy
Silvio I Waycott
David H Slusarski
Maisha J Maclead
Alejandro Y Malet
Aditya E Perin
Costa M Bowley
Maisha U Perin
Chavez K Amigon
Mujtaba D Tollner
Tony W Rim
David X Flosi
Wickens X Doe
Deepesh E Malet
Salvatore T Vocelka
Emily D Vocelka
IdCountryDate
1000Australia2024-04-10
1001Spain2024-04-25
1002Canada2024-03-31
1003Russia2024-04-23
1004Spain2024-04-02
1005Australia2024-04-18
1006Brazil2024-04-01
1007France2024-03-30
1008Japan2024-04-21
1009Spain2024-04-08
1010Australia2024-03-30
1011Brazil2024-04-20
1012Argentina2024-04-20
1013Brazil2024-04-13
1014Russia2024-04-14
1015Russia2024-04-16
1016Germany2024-04-17
1017Japan2024-04-13
1018France2024-04-22
1019Argentina2024-04-12
1020Australia2024-04-23
1021Italy2024-04-21
1022Germany2024-03-28
1023Germany2024-04-23
1024Germany2024-04-12
1025Argentina2024-04-23
1026France2024-04-15
1027United Kingdom2024-04-22
1028Spain2024-04-02
1029Canada2024-04-06
1030Argentina2024-04-21
1031Russia2024-03-31
1032Italy2024-04-22
1033Canada2024-04-02
1034Canada2024-04-05
1035Japan2024-03-29
1036Italy2024-04-23
1037Italy2024-03-30
1038Italy2024-03-28
1039Canada2024-04-11
1040Australia2024-04-07
1041Argentina2024-04-22
1042United Kingdom2024-04-12
1043Russia2024-04-16
1044Canada2024-04-21
1045Brazil2024-04-20
1046Canada2024-04-17
1047Russia2024-04-05
1048United Kingdom2024-04-10
1049Russia2024-04-01

On-Demand Data

NameIdCountryDate
Izzy L Venere1000United Kingdom2024-04-08
David G Poquette1001Australia2024-04-03
Jefferson T Amigon1002Russia2024-04-23
Darci N Whobrey1003France2024-04-14
Maria F Stenseth1004Spain2024-04-11
Faith D Waycott1005France2024-04-20
Stacey D Perin1006Canada2024-04-19
Emily W Kusko1007France2024-03-29
Maria J Perin1008France2024-04-24
Greenwood K Kusko1009France2024-04-21
Aditya L Ferencz1010Spain2024-04-16
David A Saylors1011Canada2024-03-31
Emily V Kusko1012United Kingdom2024-04-23
Julie B Perin1013Australia2024-04-14
Aika G Royster1014Australia2024-04-25
Alejandro N Flosi1015Germany2024-04-18
Ashley F Figeroa1016Germany2024-04-11
Aruna P Briddick1017United Kingdom2024-04-02
Aruna G Kolmetz1018Japan2024-04-03
Leon D Iturbide1019Brazil2024-03-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna W FigeroaBrazilXuxue Feng RENEWAL
Chavez Y MorascaJapanXuxue Feng NEW
Morrow E SergiGermanyOnyama Limba RENEWAL
Ivar R BologniaJapanElwin Sharvill UNQUALIFIED
Aditya S VenereItalyIvan Magalhaes UNQUALIFIED
Morrow E VocelkaSpainIoni Bowcher RENEWAL
Antonio S DilliardCanadaIvan Magalhaes QUALIFIED
Wickens X RutaIndiaXuxue Feng UNQUALIFIED
Stacey K FlosiCanadaBernardo Dominic PROPOSAL
Silvio S FlosiFranceAnna Fali PROPOSAL
Johnson V MarrierCanadaStephen Shaw QUALIFIED
Tony O MaletIndiaAnna Fali NEGOTIATION
Johnson N SlusarskiItalyIvan Magalhaes NEGOTIATION
Ashley G StockhamAustraliaStephen Shaw NEGOTIATION
David V TollnerIndiaElwin Sharvill NEW
Greenwood U BriddickJapanAsiya Javayant UNQUALIFIED
Mayumi E OldroydGermanyAmy Elsner PROPOSAL
Julie C KolmetzArgentinaBernardo Dominic PROPOSAL
Ivar W SlusarskiAustraliaStephen Shaw QUALIFIED
Deepesh X StensethGermanyElwin Sharvill NEW
Claire N CaudyUnited KingdomBernardo Dominic NEGOTIATION
Jefferson L SlusarskiGermanyBernardo Dominic UNQUALIFIED
Izzy G DoeFranceXuxue Feng QUALIFIED
Rodrigues Z SergiAustraliaXuxue Feng QUALIFIED
Darci Y StensethCanadaAmy Elsner NEGOTIATION
Izzy D CaudyGermanyAnna Fali PROPOSAL
Ivar B DoeGermanyXuxue Feng UNQUALIFIED
Silvio S InouyeGermanyIvan Magalhaes PROPOSAL
Kadeem I NestleSpainAmy Elsner RENEWAL
Aika R OstroskyFranceStephen Shaw UNQUALIFIED
Jennifer E DarakjyUnited KingdomBernardo Dominic UNQUALIFIED
Arvin I GarufiRussiaAmy Elsner NEGOTIATION
Alejandro N SaylorsJapanAnna Fali PROPOSAL
Aditya J TollnerUnited KingdomAsiya Javayant PROPOSAL
Arvin W WhobreySpainStephen Shaw NEGOTIATION
Aditya R VocelkaSpainAmy Elsner RENEWAL
Jennifer S StockhamGermanyOnyama Limba UNQUALIFIED
Deepesh T DarakjyArgentinaIoni Bowcher PROPOSAL
Johnson F SchemmerCanadaOnyama Limba NEGOTIATION
Aditya L NestleIndiaOnyama Limba 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>