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
David I BriddickGermanyOnyama Limba RENEWAL
Leja W GauchoFranceIoni Bowcher UNQUALIFIED
Maisha B FerenczJapanBernardo Dominic NEW
James U KolmetzFranceXuxue Feng RENEWAL
Ivar G MorascaIndiaOnyama Limba QUALIFIED
Leja C KolmetzArgentinaIvan Magalhaes QUALIFIED
Aruna M RutaArgentinaXuxue Feng UNQUALIFIED
Claire F InouyeBrazilAnna Fali PROPOSAL
Mayumi W GlickJapanAsiya Javayant PROPOSAL
Jefferson B SaylorsGermanyIvan Magalhaes QUALIFIED
Alejandro Z PoquetteCanadaXuxue Feng UNQUALIFIED
Aika R CampainRussiaAmy Elsner PROPOSAL
Chavez D KuskoRussiaAnna Fali NEGOTIATION
Jennifer Z WaycottRussiaXuxue Feng QUALIFIED
Leon J ButtUnited KingdomBernardo Dominic NEGOTIATION
Ricardo N StockhamUnited KingdomAmy Elsner QUALIFIED
Octavia D RimIndiaIvan Magalhaes UNQUALIFIED
Sinclair V TollnerGermanyElwin Sharvill NEW
Arvin C CaudyAustraliaStephen Shaw RENEWAL
Antonio I ButtJapanAnna Fali NEGOTIATION
Nicolas Y StensethRussiaAnna Fali NEW
Ivar X KolmetzJapanBernardo Dominic NEW
Mujtaba L GauchoRussiaStephen Shaw NEW
Antonio S NickaArgentinaStephen Shaw UNQUALIFIED
Tony J OldroydGermanyStephen Shaw NEW
Darci N PoquetteItalyOnyama Limba NEGOTIATION
Aruna T InouyeIndiaIoni Bowcher QUALIFIED
Murillo J SlusarskiRussiaBernardo Dominic NEW
Ricardo C RutaUnited KingdomAmy Elsner UNQUALIFIED
Stacey V StensethAustraliaIvan Magalhaes QUALIFIED
Greenwood Y DarakjySpainStephen Shaw PROPOSAL
Julie Y BowleyRussiaXuxue Feng QUALIFIED
Greenwood L NestleAustraliaAsiya Javayant UNQUALIFIED
Mayumi Y GillianBrazilBernardo Dominic NEW
Murillo D InouyeCanadaAsiya Javayant NEGOTIATION
Costa G SlusarskiBrazilBernardo Dominic QUALIFIED
Jefferson B SlusarskiArgentinaAmy Elsner NEW
Silvio K RimJapanAnna Fali QUALIFIED
Murillo G WieserBrazilOnyama Limba NEGOTIATION
David Y GillianIndiaIvan Magalhaes QUALIFIED
Izzy X ShinkoCanadaAnna Fali NEGOTIATION
Tony B CaldareraItalyIvan Magalhaes UNQUALIFIED
Rodrigues S OldroydFranceAnna Fali RENEWAL
Ricardo Z MarrierUnited KingdomElwin Sharvill PROPOSAL
Jefferson S RulapaughAustraliaIvan Magalhaes NEGOTIATION
Leja S InouyeFranceAsiya Javayant UNQUALIFIED
Tony I SchemmerJapanXuxue Feng PROPOSAL
Claire Q CaldareraAustraliaAsiya Javayant QUALIFIED
Kadeem C MaletFranceAnna Fali NEGOTIATION
Aruna F PerinUnited KingdomXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco Y DilliardItalyAsiya Javayant NEGOTIATION
Francesco O SergiUnited KingdomIoni Bowcher RENEWAL
Adams O RulapaughFranceIvan Magalhaes PROPOSAL
Antonio H PerinGermanyXuxue Feng NEW
Aika G IturbideJapanAsiya Javayant PROPOSAL
Murillo K WhobreyAustraliaAmy Elsner RENEWAL
Murillo P SlusarskiIndiaIvan Magalhaes RENEWAL
Jefferson V GlickAustraliaIvan Magalhaes UNQUALIFIED
Tony Z WieserBrazilAnna Fali NEW
Munro V NickaBrazilBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci V AmigonItaly2024-03-21Chemel, James L Cpa NEGOTIATION86Onyama Limba
1001Stacey Y KolmetzGermany2024-03-27Rangoni Of Florence PROPOSAL16Ivan Magalhaes
1002Jeanfrancois R TollnerAustralia2024-04-18Feltz Printing Service QUALIFIED70Elwin Sharvill
1003Jones M TollnerJapan2024-03-23King, Christopher A Esq NEGOTIATION77Anna Fali
1004Aditya Z DilliardSpain2024-03-28Commercial Press NEGOTIATION2Onyama Limba
1005Rodrigues A IturbideFrance2024-04-03Chemel, James L Cpa PROPOSAL65Ioni Bowcher
1006Kaitlin I PerinFrance2024-04-14Chemel, James L Cpa QUALIFIED36Ioni Bowcher
1007Smith Y TollnerRussia2024-03-23Morlong Associates QUALIFIED68Amy Elsner
1008Misaki V PoquetteAustralia2024-04-10Chapman, Ross E Esq RENEWAL23Anna Fali
1009Arvin X BriddickGermany2024-04-15Dorl, James J Esq NEW77Asiya Javayant
1010Arvin W OldroydJapan2024-04-18Buckley Miller Wright RENEWAL81Elwin Sharvill
1011Costa M RimArgentina2024-03-27Rousseaux, Michael Esq RENEWAL56Anna Fali
1012Arvin X RoysterCanada2024-04-07Truhlar And Truhlar Attys NEGOTIATION35Ioni Bowcher
1013Mujtaba N GillianUnited Kingdom2024-03-27Commercial Press NEGOTIATION43Ivan Magalhaes
1014Ricardo V GauchoAustralia2024-03-21King, Christopher A Esq NEGOTIATION75Xuxue Feng
1015Maisha I PaprockiArgentina2024-03-24Chapman, Ross E Esq UNQUALIFIED3Stephen Shaw
1016Darci S WaycottIndia2024-03-29Feltz Printing Service NEGOTIATION95Stephen Shaw
1017Jeanfrancois O MacleadUnited Kingdom2024-03-25Feiner Bros NEW28Bernardo Dominic
1018Darci D BologniaGermany2024-03-23Rousseaux, Michael Esq QUALIFIED66Ioni Bowcher
1019Kaitlin E AlbaresGermany2024-04-12King, Christopher A Esq NEGOTIATION94Ivan Magalhaes
1020Jones I FlosiBrazil2024-03-24Chanay, Jeffrey A Esq PROPOSAL8Anna Fali
1021Leon A ShinkoFrance2024-03-29Buckley Miller Wright NEGOTIATION31Ioni Bowcher
1022Wickens Y CampainFrance2024-03-28Chanay, Jeffrey A Esq QUALIFIED97Ioni Bowcher
1023Arvin D CampainFrance2024-04-12King, Christopher A Esq NEGOTIATION26Xuxue Feng
1024Smith V ChuiAustralia2024-03-28Morlong Associates UNQUALIFIED67Stephen Shaw
1025Maisha B AlbaresJapan2024-04-18Commercial Press NEW77Stephen Shaw
1026Greenwood S SaylorsFrance2024-04-10King, Christopher A Esq NEW14Xuxue Feng
1027David Q AlbaresAustralia2024-04-13Commercial Press NEW66Amy Elsner
1028Claire Q VocelkaIndia2024-04-13Truhlar And Truhlar Attys UNQUALIFIED20Ioni Bowcher
1029Wickens I StensethUnited Kingdom2024-03-28Chanay, Jeffrey A Esq UNQUALIFIED92Anna Fali
1030Ivar W FigeroaArgentina2024-03-27Rousseaux, Michael Esq NEGOTIATION3Ivan Magalhaes
1031Izzy A AmigonRussia2024-04-15Truhlar And Truhlar Attys NEGOTIATION37Amy Elsner
1032Morrow N OldroydBrazil2024-04-03Feltz Printing Service QUALIFIED4Anna Fali
1033Sinclair F DarakjyArgentina2024-03-27Chapman, Ross E Esq UNQUALIFIED85Stephen Shaw
1034Faith X IturbideItaly2024-04-10Rousseaux, Michael Esq QUALIFIED16Stephen Shaw
1035Greenwood S KuskoCanada2024-04-16Chanay, Jeffrey A Esq PROPOSAL40Onyama Limba
1036Jefferson S SchemmerAustralia2024-03-30Chemel, James L Cpa NEW75Xuxue Feng
1037Ashley A FigeroaIndia2024-04-02Rousseaux, Michael Esq UNQUALIFIED57Elwin Sharvill
1038Jefferson I TollnerCanada2024-04-18Chapman, Ross E Esq RENEWAL95Ioni Bowcher
1039Antonio V OstroskyItaly2024-03-29Rangoni Of Florence RENEWAL2Onyama Limba
1040James A RulapaughJapan2024-04-04Commercial Press RENEWAL27Anna Fali
1041Mujtaba C PoquetteGermany2024-04-13Printing Dimensions RENEWAL18Anna Fali
1042Jennifer X VocelkaBrazil2024-04-14Rousseaux, Michael Esq UNQUALIFIED75Bernardo Dominic
1043Claire D RoysterSpain2024-04-06Commercial Press RENEWAL90Stephen Shaw
1044Aditya M IturbideItaly2024-04-16Chemel, James L Cpa UNQUALIFIED12Asiya Javayant
1045Alejandro F PoquetteIndia2024-03-25Chanay, Jeffrey A Esq NEGOTIATION69Ivan Magalhaes
1046Emily Q CampainGermany2024-03-22Chapman, Ross E Esq RENEWAL13Ivan Magalhaes
1047Arvin P RoysterCanada2024-04-11Truhlar And Truhlar Attys PROPOSAL29Asiya Javayant
1048Nicolas K OstroskySpain2024-04-02Buckley Miller Wright UNQUALIFIED76Xuxue Feng
1049Johnson K DilliardBrazil2024-03-25Rangoni Of Florence RENEWAL16Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Clifford S NickaAustraliaElwin Sharvill RENEWAL
Aika L NickaArgentinaBernardo Dominic UNQUALIFIED
Ashley B DoeGermanyStephen Shaw UNQUALIFIED
Chavez T WhobreySpainAnna Fali PROPOSAL
Juan T GauchoBrazilIvan Magalhaes QUALIFIED
Wickens Q KolmetzUnited KingdomBernardo Dominic NEW
Sinclair E TollnerBrazilAnna Fali NEGOTIATION
Tony D IturbideGermanyStephen Shaw PROPOSAL
Morrow E ChuiGermanyAmy Elsner NEW
Deepesh P RulapaughGermanyBernardo Dominic QUALIFIED
Clifford U FollerItalyIvan Magalhaes NEGOTIATION
Stacey E NickaFranceAmy Elsner NEW
Mayumi A WieserRussiaStephen Shaw NEGOTIATION
Kaitlin N GarufiAustraliaOnyama Limba NEW
Johnson J CampainItalyAmy Elsner NEGOTIATION
Izzy C ChuiFranceAsiya Javayant NEW
Leja M PaprockiGermanyAsiya Javayant UNQUALIFIED
Ricardo B CaudyRussiaXuxue Feng NEGOTIATION
Misaki F VenereUnited KingdomIvan Magalhaes QUALIFIED
Jones B PoquetteArgentinaXuxue Feng RENEWAL
Greenwood S TollnerArgentinaXuxue Feng RENEWAL
Ricardo G FlosiIndiaBernardo Dominic NEGOTIATION
Ashley Q PoquetteFranceAmy Elsner RENEWAL
Kadeem Z BologniaArgentinaOnyama Limba UNQUALIFIED
Ricardo Q MaletGermanyElwin Sharvill QUALIFIED
Murillo F PoquetteJapanBernardo Dominic NEGOTIATION
Munro U FerenczRussiaAsiya Javayant NEGOTIATION
Julie K RoysterUnited KingdomAmy Elsner NEW
Jeanfrancois B NickaBrazilElwin Sharvill NEW
Johnson D PaprockiUnited KingdomAmy Elsner PROPOSAL
Tony F SchemmerItalyAmy Elsner QUALIFIED
Alejandro N RulapaughIndiaStephen Shaw NEGOTIATION
Tony V CaudyFranceAnna Fali PROPOSAL
Misaki O AmigonItalyXuxue Feng NEW
Aruna F KuskoGermanyStephen Shaw NEGOTIATION
Maria E AlbaresGermanyBernardo Dominic UNQUALIFIED
Faith H BriddickAustraliaAnna Fali PROPOSAL
Stacey H FerenczAustraliaAnna Fali NEGOTIATION
Emily F GarufiIndiaAmy Elsner NEGOTIATION
Darci J RimItalyAnna Fali UNQUALIFIED
James Q TollnerAustraliaOnyama Limba PROPOSAL
Misaki S FollerFranceXuxue Feng NEGOTIATION
Antonio Z RimCanadaAnna Fali RENEWAL
Aditya E CaudyRussiaXuxue Feng QUALIFIED
Misaki D MaletArgentinaAmy Elsner RENEWAL
Smith R GlickFranceAmy Elsner QUALIFIED
Kaitlin N StockhamAustraliaOnyama Limba PROPOSAL
Isabel X SchemmerUnited KingdomIoni Bowcher NEGOTIATION
Maria Z RoysterGermanyAmy Elsner NEW
Tony R ShinkoGermanyAnna Fali UNQUALIFIED
Frozen Columns
Name
Mayumi Q Glick
Munro R Bolognia
Leja Q Slusarski
David J Kolmetz
Chavez P Wieser
Aditya L Nicka
James H Tollner
Octavia G Amigon
Kaitlin I Vocelka
Costa H Perin
Maisha F Figeroa
Darci B Saylors
Cody V Shinko
Rodrigues V Rulapaugh
Ivar A Marrier
Cody F Kusko
Smith O Poquette
Alejandro T Amigon
James A Shinko
Ashley E Briddick
Murillo V Wieser
Kadeem H Glick
Rodrigues Q Dilliard
Izzy W Albares
Francesco Q Morasca
Ivar T Stenseth
Arvin E Kusko
Julie C Maclead
Tony L Garufi
Aruna D Wieser
Mujtaba L Bolognia
Julie Y Briddick
Jeanfrancois B Wieser
Kaitlin N Campain
Costa P Rulapaugh
Isabel G Briddick
Clifford D Gillian
Tony Y Stockham
Darci D Venere
Deepesh D Whobrey
Darci A Whobrey
Aruna Z Ferencz
Murillo P Bolognia
Murillo X Figeroa
Ivar V Figeroa
Leon R Caldarera
Juan F Butt
Johnson E Briddick
Clifford E Rulapaugh
Munro I Kolmetz
IdCountryDate
1000United Kingdom2024-04-07
1001India2024-03-21
1002Russia2024-03-31
1003France2024-04-12
1004France2024-03-29
1005United Kingdom2024-04-04
1006Brazil2024-04-12
1007Argentina2024-03-27
1008Italy2024-03-28
1009Germany2024-03-21
1010Japan2024-04-09
1011Italy2024-03-20
1012Spain2024-03-25
1013Spain2024-04-11
1014Brazil2024-04-14
1015Japan2024-03-26
1016United Kingdom2024-03-28
1017France2024-04-15
1018Argentina2024-04-14
1019France2024-03-27
1020Argentina2024-03-21
1021Brazil2024-03-23
1022Japan2024-04-09
1023Brazil2024-03-21
1024France2024-04-01
1025India2024-03-27
1026India2024-04-13
1027Spain2024-04-02
1028Spain2024-03-30
1029India2024-04-01
1030Brazil2024-04-05
1031India2024-04-07
1032Italy2024-03-30
1033France2024-04-10
1034Italy2024-04-12
1035Canada2024-04-14
1036France2024-04-01
1037Japan2024-03-24
1038Canada2024-03-29
1039France2024-03-29
1040Spain2024-04-17
1041India2024-04-09
1042Germany2024-03-20
1043Spain2024-04-09
1044Australia2024-04-13
1045Russia2024-04-03
1046Canada2024-04-01
1047Argentina2024-04-16
1048Brazil2024-04-08
1049Argentina2024-04-07

On-Demand Data

NameIdCountryDate
Jones V Gaucho1000Argentina2024-03-26
Arvin V Foller1001India2024-04-02
Darci D Stockham1002Argentina2024-04-07
Leja W Inouye1003France2024-03-26
Faith Y Gillian1004Australia2024-04-10
Jennifer M Kusko1005Spain2024-04-09
Jefferson Q Bolognia1006Australia2024-04-06
Adams O Marrier1007Germany2024-03-26
James Y Bolognia1008United Kingdom2024-03-21
Clifford R Garufi1009Argentina2024-04-18
Deepesh L Iturbide1010Spain2024-04-08
Kaitlin R Albares1011Germany2024-04-12
Izzy K Albares1012Italy2024-04-05
Isabel L Stenseth1013Germany2024-04-09
Mayumi R Slusarski1014France2024-04-15
Claire G Nicka1015United Kingdom2024-03-20
Wickens U Bowley1016Japan2024-04-15
Mayumi Q Iturbide1017Australia2024-03-20
Chavez F Foller1018Italy2024-04-17
Nicolas G Royster1019France2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon C WhobreyFranceElwin Sharvill NEW
Isabel W StockhamCanadaAsiya Javayant UNQUALIFIED
Maisha S GauchoRussiaIoni Bowcher UNQUALIFIED
Munro M OldroydBrazilStephen Shaw UNQUALIFIED
Kadeem R SlusarskiUnited KingdomXuxue Feng NEGOTIATION
Jefferson Z KuskoCanadaIvan Magalhaes RENEWAL
Maria A NestleAustraliaAnna Fali NEGOTIATION
Jefferson Q BriddickRussiaElwin Sharvill NEW
Alejandro Z GillianGermanyAmy Elsner UNQUALIFIED
Jeanfrancois F StockhamArgentinaAsiya Javayant NEW
Isabel Z FollerItalyStephen Shaw RENEWAL
Claire A SaylorsAustraliaAmy Elsner QUALIFIED
Kaitlin G BriddickItalyOnyama Limba PROPOSAL
Murillo U MarrierAustraliaIvan Magalhaes PROPOSAL
Ricardo J IturbideAustraliaIoni Bowcher PROPOSAL
James S KolmetzArgentinaStephen Shaw NEGOTIATION
Smith X SchemmerFranceBernardo Dominic NEGOTIATION
David M ShinkoRussiaIoni Bowcher NEGOTIATION
Jones O OldroydIndiaOnyama Limba PROPOSAL
Rodrigues X FerenczFranceOnyama Limba QUALIFIED
Smith Z DilliardSpainElwin Sharvill PROPOSAL
Jeanfrancois M SaylorsArgentinaElwin Sharvill NEW
Claire E MacleadArgentinaOnyama Limba RENEWAL
Faith I BriddickFranceIoni Bowcher QUALIFIED
Rodrigues N KuskoGermanyBernardo Dominic NEW
Munro J BowleyItalyStephen Shaw UNQUALIFIED
Juan W TollnerJapanIoni Bowcher NEW
Jones F RulapaughItalyAnna Fali PROPOSAL
Darci H NickaBrazilIoni Bowcher PROPOSAL
Aika D PaprockiFranceBernardo Dominic PROPOSAL
Darci F CaldareraJapanIoni Bowcher NEW
Leon R GlickItalyAsiya Javayant UNQUALIFIED
Claire Q StensethBrazilOnyama Limba PROPOSAL
Juan E BowleyRussiaBernardo Dominic QUALIFIED
Ashley K PoquetteJapanStephen Shaw QUALIFIED
Salvatore H PaprockiCanadaElwin Sharvill UNQUALIFIED
James T SaylorsUnited KingdomAnna Fali NEW
Jennifer W WaycottItalyOnyama Limba PROPOSAL
Morrow I FollerRussiaAsiya Javayant UNQUALIFIED
Francesco U FigeroaRussiaAnna Fali 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>