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
Maisha J ShinkoArgentinaXuxue Feng RENEWAL
Izzy P PerinFranceOnyama Limba QUALIFIED
Mayumi Q NestleFranceAsiya Javayant NEGOTIATION
Leon X BriddickAustraliaIoni Bowcher NEGOTIATION
Claire E WieserIndiaAnna Fali RENEWAL
Silvio D PerinItalyXuxue Feng NEW
Jefferson M NickaItalyIvan Magalhaes NEGOTIATION
Chavez L BriddickJapanAsiya Javayant UNQUALIFIED
James S WaycottItalyStephen Shaw PROPOSAL
Chavez O MaletJapanAmy Elsner PROPOSAL
Silvio J FigeroaArgentinaBernardo Dominic UNQUALIFIED
Aruna O BriddickRussiaXuxue Feng QUALIFIED
Costa R ShinkoJapanOnyama Limba QUALIFIED
Mujtaba O GauchoCanadaXuxue Feng NEW
Greenwood E ChuiSpainXuxue Feng NEGOTIATION
Antonio H MarrierBrazilIoni Bowcher RENEWAL
Aika T RulapaughRussiaElwin Sharvill NEW
Greenwood N MacleadGermanyOnyama Limba NEW
Deepesh D MaletGermanyOnyama Limba NEW
Faith O MaletItalyAnna Fali NEGOTIATION
Salvatore T PerinAustraliaOnyama Limba UNQUALIFIED
Maisha M SaylorsGermanyXuxue Feng QUALIFIED
Emily W RimIndiaXuxue Feng UNQUALIFIED
Faith M SlusarskiIndiaAsiya Javayant UNQUALIFIED
Ivar J GlickArgentinaXuxue Feng NEGOTIATION
Johnson D VocelkaBrazilStephen Shaw QUALIFIED
Mujtaba P MacleadJapanStephen Shaw RENEWAL
Misaki D CampainFranceAnna Fali QUALIFIED
Misaki C WhobreyGermanyElwin Sharvill PROPOSAL
Jeanfrancois A PaprockiBrazilIvan Magalhaes NEGOTIATION
Francesco C ChuiSpainOnyama Limba QUALIFIED
Ricardo I CaudySpainBernardo Dominic RENEWAL
Cody L BowleyAustraliaIoni Bowcher NEGOTIATION
Aika K OldroydSpainAmy Elsner NEGOTIATION
Johnson Q RimItalyOnyama Limba QUALIFIED
Izzy Y ButtUnited KingdomAmy Elsner PROPOSAL
Cody O GarufiAustraliaAnna Fali RENEWAL
Arvin Q DoeSpainStephen Shaw QUALIFIED
Leon M MaletCanadaOnyama Limba NEGOTIATION
Francesco E RutaAustraliaStephen Shaw QUALIFIED
Jennifer A StensethGermanyIoni Bowcher UNQUALIFIED
Darci U WaycottFranceXuxue Feng NEW
Kadeem J MorascaCanadaAmy Elsner RENEWAL
Aditya I DilliardRussiaBernardo Dominic NEGOTIATION
Emily I GlickBrazilBernardo Dominic NEGOTIATION
James K CampainArgentinaBernardo Dominic PROPOSAL
Ashley V ShinkoUnited KingdomOnyama Limba NEGOTIATION
Kaitlin Z StockhamUnited KingdomBernardo Dominic QUALIFIED
Misaki J ButtFranceAsiya Javayant NEGOTIATION
Jefferson L KuskoRussiaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Johnson P WaycottUnited KingdomAnna Fali NEW
Kaitlin T CampainSpainIoni Bowcher PROPOSAL
Kadeem K DoeCanadaAnna Fali RENEWAL
Mujtaba O RimSpainAnna Fali UNQUALIFIED
Sinclair S NestleCanadaXuxue Feng NEW
Mujtaba D DoeFranceIoni Bowcher NEGOTIATION
Kadeem Y MaletUnited KingdomIoni Bowcher NEGOTIATION
Tony S RulapaughBrazilXuxue Feng NEW
Juan B MaletAustraliaAnna Fali PROPOSAL
Jeanfrancois X CaldareraIndiaAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith P FlosiRussia2024-04-15Chanay, Jeffrey A Esq UNQUALIFIED72Amy Elsner
1001Julie E ShinkoIndia2024-04-08Commercial Press UNQUALIFIED88Ioni Bowcher
1002Costa I MaletArgentina2024-04-08Feltz Printing Service RENEWAL42Ivan Magalhaes
1003Darci L CampainAustralia2024-03-21King, Christopher A Esq RENEWAL81Stephen Shaw
1004Tony X MacleadRussia2024-03-24Rousseaux, Michael Esq PROPOSAL28Asiya Javayant
1005Murillo F InouyeFrance2024-04-10Feltz Printing Service NEW99Ivan Magalhaes
1006Izzy H MaletAustralia2024-04-11Benton, John B Jr NEGOTIATION49Onyama Limba
1007Leja E GarufiItaly2024-04-01Morlong Associates RENEWAL81Asiya Javayant
1008Clifford K RimArgentina2024-03-19King, Christopher A Esq NEGOTIATION39Elwin Sharvill
1009Chavez B BowleyCanada2024-04-02Chemel, James L Cpa QUALIFIED24Stephen Shaw
1010Ivar M IturbideIndia2024-03-30Chapman, Ross E Esq UNQUALIFIED62Ioni Bowcher
1011Kadeem N MaletIndia2024-03-27Chapman, Ross E Esq QUALIFIED10Xuxue Feng
1012Emily Q StockhamArgentina2024-03-18Chanay, Jeffrey A Esq NEW85Amy Elsner
1013Rodrigues O AmigonArgentina2024-03-23Buckley Miller Wright UNQUALIFIED15Onyama Limba
1014Mayumi H VocelkaFrance2024-03-18King, Christopher A Esq NEGOTIATION80Asiya Javayant
1015Wickens L VenereUnited Kingdom2024-04-07Feiner Bros NEW62Bernardo Dominic
1016Costa M FerenczGermany2024-03-29Chapman, Ross E Esq NEGOTIATION33Amy Elsner
1017Aruna R WieserRussia2024-03-24King, Christopher A Esq PROPOSAL43Bernardo Dominic
1018Ivar S AlbaresSpain2024-04-10Chemel, James L Cpa NEW41Onyama Limba
1019Costa F DarakjyGermany2024-04-15Chemel, James L Cpa NEGOTIATION12Asiya Javayant
1020Kaitlin R WhobreyIndia2024-04-15King, Christopher A Esq NEGOTIATION44Onyama Limba
1021Claire F ButtFrance2024-04-03Dorl, James J Esq RENEWAL63Ioni Bowcher
1022Costa H MaletArgentina2024-04-03Truhlar And Truhlar Attys NEGOTIATION5Xuxue Feng
1023Clifford H SergiItaly2024-04-01Commercial Press UNQUALIFIED97Stephen Shaw
1024Chavez E SlusarskiGermany2024-04-05Rousseaux, Michael Esq NEGOTIATION71Xuxue Feng
1025Jones H MaletGermany2024-04-09Feiner Bros RENEWAL71Ivan Magalhaes
1026Claire L CaudyArgentina2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED77Ivan Magalhaes
1027Julie Z PaprockiAustralia2024-03-24Rousseaux, Michael Esq QUALIFIED32Stephen Shaw
1028Nicolas O MaletRussia2024-03-22Truhlar And Truhlar Attys NEW9Anna Fali
1029Jeanfrancois V DoeItaly2024-03-23Dorl, James J Esq QUALIFIED76Anna Fali
1030Aditya S CaudySpain2024-04-11Chapman, Ross E Esq QUALIFIED35Ioni Bowcher
1031Faith Z CaudyUnited Kingdom2024-03-21Dorl, James J Esq QUALIFIED84Ioni Bowcher
1032Nicolas D MaletFrance2024-04-13Dorl, James J Esq PROPOSAL82Ivan Magalhaes
1033Kadeem N SchemmerBrazil2024-04-02Chapman, Ross E Esq NEW30Anna Fali
1034Greenwood I InouyeAustralia2024-03-17King, Christopher A Esq NEW6Bernardo Dominic
1035Silvio V DoeGermany2024-04-15Chanay, Jeffrey A Esq NEW20Ioni Bowcher
1036Alejandro H FerenczArgentina2024-03-23Dorl, James J Esq RENEWAL62Anna Fali
1037Leja P MacleadGermany2024-04-05Dorl, James J Esq RENEWAL19Stephen Shaw
1038Nicolas Y MaletSpain2024-04-09Buckley Miller Wright RENEWAL25Elwin Sharvill
1039Jefferson D CampainFrance2024-04-04King, Christopher A Esq RENEWAL23Ivan Magalhaes
1040Octavia I WieserCanada2024-04-11Feltz Printing Service NEGOTIATION22Ivan Magalhaes
1041Salvatore O SchemmerCanada2024-04-06Chapman, Ross E Esq PROPOSAL61Anna Fali
1042Leon J SaylorsArgentina2024-04-14Chapman, Ross E Esq UNQUALIFIED35Bernardo Dominic
1043Alejandro Y NickaJapan2024-04-02Rousseaux, Michael Esq UNQUALIFIED1Stephen Shaw
1044Mayumi U GillianRussia2024-04-04Rangoni Of Florence UNQUALIFIED0Amy Elsner
1045Rodrigues K PaprockiJapan2024-04-10Buckley Miller Wright RENEWAL98Elwin Sharvill
1046Izzy I OldroydAustralia2024-03-30Feltz Printing Service RENEWAL32Anna Fali
1047Maisha V RoysterArgentina2024-04-01Commercial Press QUALIFIED7Ioni Bowcher
1048Kadeem T OstroskyRussia2024-03-26Benton, John B Jr NEW67Elwin Sharvill
1049Smith W GauchoSpain2024-03-29Commercial Press PROPOSAL95Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Ivar M SlusarskiIndiaElwin Sharvill RENEWAL
Sinclair O ChuiUnited KingdomAsiya Javayant UNQUALIFIED
Silvio E CampainIndiaAnna Fali PROPOSAL
Francesco J ShinkoArgentinaAnna Fali PROPOSAL
Mujtaba J WhobreyBrazilAmy Elsner NEW
Ashley E StensethGermanyElwin Sharvill RENEWAL
Jeanfrancois L BologniaGermanyIvan Magalhaes NEGOTIATION
David I DilliardIndiaElwin Sharvill QUALIFIED
Ivar O BriddickFranceAsiya Javayant NEGOTIATION
Wickens E RoysterUnited KingdomStephen Shaw QUALIFIED
Juan W KolmetzSpainXuxue Feng NEW
Faith M SlusarskiRussiaIvan Magalhaes QUALIFIED
Aika F MorascaItalyStephen Shaw PROPOSAL
Munro D SergiUnited KingdomElwin Sharvill RENEWAL
Johnson M GarufiRussiaStephen Shaw QUALIFIED
Adams Z GauchoArgentinaAsiya Javayant UNQUALIFIED
Faith P GlickArgentinaIoni Bowcher RENEWAL
Tony Y ButtCanadaXuxue Feng PROPOSAL
Tony P InouyeUnited KingdomIoni Bowcher NEW
Izzy W KolmetzUnited KingdomAmy Elsner QUALIFIED
Deepesh M PerinIndiaAsiya Javayant RENEWAL
Kaitlin A FerenczBrazilBernardo Dominic UNQUALIFIED
Leja G GlickArgentinaXuxue Feng PROPOSAL
Tony U CaudyCanadaAsiya Javayant NEW
Adams V KolmetzAustraliaStephen Shaw NEGOTIATION
David Z GlickRussiaBernardo Dominic RENEWAL
Adams S VenereRussiaIoni Bowcher RENEWAL
Wickens X StockhamAustraliaOnyama Limba PROPOSAL
Emily E RimArgentinaXuxue Feng NEGOTIATION
Maisha H SergiJapanAnna Fali RENEWAL
Leja V CaldareraArgentinaElwin Sharvill RENEWAL
Arvin I MacleadAustraliaBernardo Dominic RENEWAL
Aika J PerinAustraliaAnna Fali NEGOTIATION
Adams M MacleadUnited KingdomIoni Bowcher QUALIFIED
Ashley C ChuiFranceIvan Magalhaes UNQUALIFIED
Francesco K ShinkoGermanyIvan Magalhaes NEGOTIATION
Rodrigues G KolmetzGermanyXuxue Feng NEGOTIATION
Chavez I RoysterFranceAnna Fali UNQUALIFIED
Adams M GauchoIndiaIvan Magalhaes UNQUALIFIED
Stacey J WieserGermanyOnyama Limba RENEWAL
Wickens F FigeroaBrazilXuxue Feng UNQUALIFIED
Maisha M AlbaresItalyElwin Sharvill RENEWAL
Sinclair M AmigonAustraliaAmy Elsner QUALIFIED
Claire B StensethArgentinaBernardo Dominic UNQUALIFIED
Octavia D GauchoJapanStephen Shaw RENEWAL
Rodrigues R PaprockiRussiaOnyama Limba UNQUALIFIED
Tony Z GarufiFranceOnyama Limba UNQUALIFIED
Claire Q RimIndiaStephen Shaw RENEWAL
Wickens O ShinkoBrazilStephen Shaw RENEWAL
Cody S FerenczAustraliaElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Rodrigues C Waycott
Nicolas Q Bolognia
Clifford J Nestle
Izzy V Vocelka
Mayumi W Tollner
Johnson C Sergi
Jeanfrancois V Stockham
Ivar S Rim
Jeanfrancois J Oldroyd
Maisha B Gillian
Ricardo I Waycott
Clifford W Maclead
Francesco V Inouye
Octavia J Butt
Cody K Tollner
Costa U Ferencz
Arvin M Tollner
Leja S Bowley
Juan N Waycott
Nicolas P Stenseth
Mujtaba W Saylors
Wickens B Iturbide
Ivar M Bowley
Maisha H Rulapaugh
Johnson D Nicka
Nicolas F Ostrosky
Mujtaba B Stockham
Ricardo A Inouye
Aruna U Flosi
Johnson V Bowley
Darci X Inouye
Murillo Q Venere
Emily G Dilliard
David M Whobrey
Ivar I Wieser
Salvatore N Amigon
Nicolas X Saylors
Stacey H Perin
Darci O Perin
Faith T Marrier
James H Wieser
Nicolas L Oldroyd
Johnson N Paprocki
Jennifer H Kusko
Munro M Briddick
Octavia P Gaucho
Octavia X Royster
Aika E Royster
Maria R Venere
Morrow X Marrier
IdCountryDate
1000Canada2024-04-01
1001Russia2024-03-25
1002Argentina2024-03-27
1003Italy2024-03-27
1004Japan2024-03-23
1005Japan2024-03-23
1006Germany2024-03-25
1007Russia2024-03-31
1008Italy2024-04-09
1009Argentina2024-04-04
1010Brazil2024-04-07
1011France2024-04-05
1012Japan2024-03-30
1013Argentina2024-04-02
1014Russia2024-03-19
1015Japan2024-03-21
1016United Kingdom2024-03-21
1017India2024-04-11
1018Germany2024-04-11
1019Canada2024-03-27
1020Argentina2024-04-02
1021Japan2024-03-27
1022Germany2024-04-03
1023Japan2024-04-14
1024Italy2024-03-19
1025Japan2024-03-27
1026Germany2024-03-29
1027United Kingdom2024-04-02
1028France2024-03-22
1029United Kingdom2024-04-10
1030Italy2024-04-06
1031Australia2024-03-30
1032Argentina2024-03-27
1033France2024-04-08
1034India2024-03-19
1035France2024-03-26
1036India2024-04-08
1037Argentina2024-04-12
1038Argentina2024-04-08
1039France2024-04-12
1040United Kingdom2024-04-10
1041Australia2024-04-03
1042France2024-03-17
1043Canada2024-04-14
1044Argentina2024-03-18
1045Argentina2024-04-06
1046Argentina2024-04-02
1047Australia2024-04-10
1048United Kingdom2024-04-07
1049Brazil2024-03-25

On-Demand Data

NameIdCountryDate
Antonio J Venere1000Russia2024-03-30
Greenwood R Shinko1001Japan2024-03-25
Aditya T Tollner1002France2024-03-27
Jennifer Y Slusarski1003Japan2024-03-25
Kadeem W Iturbide1004Argentina2024-03-24
Antonio J Tollner1005Spain2024-04-05
Deepesh N Caldarera1006Russia2024-03-20
Ricardo C Sergi1007India2024-04-01
Ivar T Oldroyd1008Italy2024-04-05
Ivar M Marrier1009Japan2024-04-14
Jones P Bowley1010Spain2024-03-31
Antonio Z Amigon1011United Kingdom2024-04-02
Ricardo H Perin1012Russia2024-04-02
Emily O Albares1013Australia2024-04-01
Stacey Y Ferencz1014Spain2024-04-11
Silvio X Butt1015Japan2024-04-04
Adams B Sergi1016France2024-03-24
Leja A Nestle1017United Kingdom2024-03-24
Darci X Garufi1018Italy2024-04-03
Murillo I Bowley1019Australia2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio L DilliardIndiaBernardo Dominic NEGOTIATION
Chavez M RulapaughJapanIoni Bowcher PROPOSAL
Mayumi Z FerenczSpainAmy Elsner NEGOTIATION
Izzy M FerenczSpainStephen Shaw PROPOSAL
Alejandro P CaudyBrazilIoni Bowcher NEGOTIATION
Kadeem A BologniaAustraliaIoni Bowcher PROPOSAL
Octavia O PaprockiItalyAnna Fali RENEWAL
Smith C AlbaresFranceIvan Magalhaes NEW
Smith G DilliardAustraliaAsiya Javayant UNQUALIFIED
Murillo G PoquetteFranceOnyama Limba QUALIFIED
Maisha K FerenczUnited KingdomElwin Sharvill QUALIFIED
Ivar Y DarakjyIndiaAsiya Javayant QUALIFIED
Francesco H AlbaresRussiaElwin Sharvill RENEWAL
Aruna M MaletGermanyStephen Shaw RENEWAL
Sinclair O KolmetzBrazilXuxue Feng NEGOTIATION
Arvin F MorascaBrazilAsiya Javayant NEGOTIATION
Antonio Q MaletBrazilIvan Magalhaes UNQUALIFIED
Clifford R DilliardCanadaStephen Shaw PROPOSAL
Aditya C RulapaughUnited KingdomAsiya Javayant QUALIFIED
Morrow C DarakjyUnited KingdomAmy Elsner RENEWAL
Tony W FigeroaRussiaXuxue Feng UNQUALIFIED
Leon S SaylorsArgentinaIoni Bowcher PROPOSAL
Julie Q FigeroaItalyElwin Sharvill PROPOSAL
Deepesh U ChuiSpainIvan Magalhaes NEGOTIATION
Francesco B OstroskyJapanAsiya Javayant PROPOSAL
Izzy U VenereCanadaXuxue Feng RENEWAL
Smith Y MaletAustraliaBernardo Dominic PROPOSAL
Ashley P RutaArgentinaElwin Sharvill PROPOSAL
Maisha Z WaycottFranceOnyama Limba QUALIFIED
Maisha R MorascaCanadaAmy Elsner RENEWAL
Julie C BowleyJapanXuxue Feng PROPOSAL
Aruna Y SchemmerFranceIvan Magalhaes PROPOSAL
Clifford R GillianFranceOnyama Limba QUALIFIED
Jennifer P DarakjyIndiaBernardo Dominic PROPOSAL
Murillo S FlosiItalyBernardo Dominic NEGOTIATION
Mujtaba Y KolmetzArgentinaIvan Magalhaes QUALIFIED
Wickens N IturbideGermanyAnna Fali PROPOSAL
Jefferson N MarrierGermanyIoni Bowcher UNQUALIFIED
Misaki M KolmetzJapanBernardo Dominic QUALIFIED
Chavez F CaudyJapanXuxue 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>