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 Y KolmetzCanadaAmy Elsner PROPOSAL
Mayumi J NickaFranceOnyama Limba RENEWAL
Mayumi J MaletItalyAnna Fali PROPOSAL
Greenwood P GlickCanadaAnna Fali PROPOSAL
Wickens Q PoquetteIndiaIvan Magalhaes RENEWAL
David K VocelkaFranceAnna Fali RENEWAL
Silvio G PoquetteRussiaElwin Sharvill NEGOTIATION
Jennifer K FigeroaArgentinaIoni Bowcher QUALIFIED
Isabel Q WaycottItalyAnna Fali UNQUALIFIED
Nicolas X WaycottUnited KingdomXuxue Feng NEGOTIATION
Octavia S PoquetteUnited KingdomAmy Elsner QUALIFIED
Jeanfrancois I DarakjyBrazilBernardo Dominic QUALIFIED
Johnson Q StockhamRussiaOnyama Limba RENEWAL
Juan U MacleadAustraliaAsiya Javayant NEW
Ashley P SchemmerRussiaAnna Fali PROPOSAL
Leja A IturbideItalyIvan Magalhaes NEGOTIATION
Deepesh P TollnerItalyIvan Magalhaes RENEWAL
Leon M WaycottIndiaAnna Fali NEW
Ivar Q VenereIndiaIvan Magalhaes NEW
Darci O MorascaUnited KingdomOnyama Limba RENEWAL
Darci S DoeGermanyAnna Fali QUALIFIED
Kadeem O TollnerAustraliaElwin Sharvill PROPOSAL
Maisha C WieserFranceAnna Fali QUALIFIED
Chavez B GillianCanadaAmy Elsner RENEWAL
Rodrigues R GlickIndiaXuxue Feng QUALIFIED
Johnson L InouyeArgentinaOnyama Limba NEW
Mujtaba E StensethArgentinaOnyama Limba NEGOTIATION
Johnson S ShinkoSpainBernardo Dominic RENEWAL
Nicolas P FlosiFranceBernardo Dominic NEW
Octavia D PerinItalyOnyama Limba NEW
Smith L WhobreyFranceElwin Sharvill PROPOSAL
Izzy F WieserFranceOnyama Limba NEGOTIATION
Wickens S CaudyAustraliaAsiya Javayant NEGOTIATION
Alejandro T OldroydUnited KingdomIvan Magalhaes UNQUALIFIED
Munro J KuskoRussiaBernardo Dominic PROPOSAL
James B OstroskyCanadaAnna Fali QUALIFIED
Jefferson M RimSpainStephen Shaw QUALIFIED
David S NickaCanadaAmy Elsner RENEWAL
Mujtaba I NickaAustraliaXuxue Feng QUALIFIED
Faith R RimRussiaOnyama Limba PROPOSAL
David D GillianItalyStephen Shaw QUALIFIED
Jones R VocelkaFranceElwin Sharvill NEGOTIATION
Salvatore V IturbideIndiaIoni Bowcher QUALIFIED
Aika T CampainItalyStephen Shaw PROPOSAL
Greenwood J KuskoBrazilAmy Elsner QUALIFIED
Salvatore Y RimAustraliaXuxue Feng QUALIFIED
Antonio Y CaudyGermanyStephen Shaw QUALIFIED
Aditya P PaprockiIndiaBernardo Dominic RENEWAL
Ricardo Y WieserGermanyAmy Elsner NEGOTIATION
Julie C GauchoIndiaAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Sinclair F PaprockiGermanyStephen Shaw QUALIFIED
Claire G CampainIndiaOnyama Limba QUALIFIED
Ricardo C FerenczFranceXuxue Feng UNQUALIFIED
Jefferson G RulapaughSpainAsiya Javayant RENEWAL
Darci F KolmetzUnited KingdomIvan Magalhaes RENEWAL
Leon W InouyeBrazilIoni Bowcher PROPOSAL
Izzy G FerenczJapanAnna Fali QUALIFIED
Maria Z FlosiItalyStephen Shaw PROPOSAL
Ricardo O MarrierFranceIvan Magalhaes PROPOSAL
Chavez Q SaylorsGermanyAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi L DarakjyAustralia2024-04-06Chemel, James L Cpa QUALIFIED37Ivan Magalhaes
1001Ricardo Q FerenczIndia2024-04-11Rousseaux, Michael Esq NEGOTIATION32Anna Fali
1002Claire Z MarrierIndia2024-04-13Benton, John B Jr RENEWAL2Bernardo Dominic
1003Chavez I FigeroaItaly2024-04-26Dorl, James J Esq NEGOTIATION95Onyama Limba
1004Darci H MaletItaly2024-04-12Rousseaux, Michael Esq NEW77Elwin Sharvill
1005Kadeem G FlosiBrazil2024-04-03Rangoni Of Florence NEW76Amy Elsner
1006Nicolas X ChuiIndia2024-04-08Printing Dimensions QUALIFIED57Anna Fali
1007Wickens T WieserRussia2024-04-18Commercial Press NEGOTIATION93Onyama Limba
1008Jeanfrancois U StensethUnited Kingdom2024-04-18Truhlar And Truhlar Attys PROPOSAL62Anna Fali
1009Munro P MacleadJapan2024-04-22Truhlar And Truhlar Attys QUALIFIED89Anna Fali
1010Arvin F AlbaresGermany2024-04-25Feltz Printing Service UNQUALIFIED82Asiya Javayant
1011Ricardo Y PerinAustralia2024-04-20Benton, John B Jr RENEWAL37Onyama Limba
1012Antonio Z OldroydAustralia2024-04-21Feiner Bros UNQUALIFIED96Xuxue Feng
1013Misaki L AlbaresCanada2024-04-06Benton, John B Jr RENEWAL84Xuxue Feng
1014Mayumi H MacleadRussia2024-04-25Rangoni Of Florence RENEWAL25Xuxue Feng
1015Maria V GarufiSpain2024-03-30Truhlar And Truhlar Attys PROPOSAL52Asiya Javayant
1016Emily H MaletRussia2024-04-26Feltz Printing Service UNQUALIFIED66Xuxue Feng
1017Leja Y AmigonIndia2024-03-31Feltz Printing Service PROPOSAL50Anna Fali
1018Mujtaba R RulapaughSpain2024-04-07Feltz Printing Service NEW79Asiya Javayant
1019Juan Z RoysterCanada2024-03-31Dorl, James J Esq NEW67Elwin Sharvill
1020David U InouyeIndia2024-04-09Dorl, James J Esq QUALIFIED89Xuxue Feng
1021Cody D IturbideBrazil2024-03-29Dorl, James J Esq QUALIFIED27Ivan Magalhaes
1022Julie S CampainFrance2024-03-29Rousseaux, Michael Esq RENEWAL78Anna Fali
1023Leon U OstroskyGermany2024-04-14Truhlar And Truhlar Attys PROPOSAL3Amy Elsner
1024Tony J SaylorsBrazil2024-04-18Dorl, James J Esq NEGOTIATION9Asiya Javayant
1025James X DarakjyArgentina2024-03-30King, Christopher A Esq NEGOTIATION48Elwin Sharvill
1026Maria Y MaletSpain2024-04-01Dorl, James J Esq NEW17Ivan Magalhaes
1027Morrow G KuskoCanada2024-04-02Printing Dimensions NEGOTIATION68Ioni Bowcher
1028Jennifer K MaletUnited Kingdom2024-04-23Rangoni Of Florence NEGOTIATION42Onyama Limba
1029Claire J AmigonSpain2024-04-14Chemel, James L Cpa NEW60Ivan Magalhaes
1030Jones P WhobreyGermany2024-03-29Rousseaux, Michael Esq NEW0Anna Fali
1031Rodrigues W OstroskyUnited Kingdom2024-04-23Chapman, Ross E Esq QUALIFIED2Onyama Limba
1032Jones J IturbideSpain2024-03-29Chapman, Ross E Esq NEW32Onyama Limba
1033Arvin N VocelkaBrazil2024-04-21Truhlar And Truhlar Attys PROPOSAL91Asiya Javayant
1034Arvin K BologniaArgentina2024-04-12Rousseaux, Michael Esq UNQUALIFIED95Stephen Shaw
1035Aditya H WaycottJapan2024-04-26Benton, John B Jr QUALIFIED80Anna Fali
1036Antonio Q CaldareraCanada2024-03-31Chapman, Ross E Esq NEGOTIATION30Xuxue Feng
1037Aruna B AmigonBrazil2024-04-18Chapman, Ross E Esq RENEWAL64Ioni Bowcher
1038Julie J BowleyGermany2024-04-07Buckley Miller Wright NEGOTIATION81Onyama Limba
1039Stacey N GauchoCanada2024-04-04King, Christopher A Esq UNQUALIFIED28Bernardo Dominic
1040Leja Q SergiSpain2024-04-07Dorl, James J Esq NEGOTIATION85Ioni Bowcher
1041David E AmigonFrance2024-03-30King, Christopher A Esq QUALIFIED74Anna Fali
1042Leon T FlosiFrance2024-04-25Chapman, Ross E Esq RENEWAL43Asiya Javayant
1043Sinclair D GauchoJapan2024-04-16Printing Dimensions NEGOTIATION49Amy Elsner
1044Ashley K RulapaughJapan2024-04-21King, Christopher A Esq PROPOSAL87Anna Fali
1045Kadeem L FollerUnited Kingdom2024-04-22Chanay, Jeffrey A Esq RENEWAL38Xuxue Feng
1046Octavia O RoysterSpain2024-04-11Morlong Associates PROPOSAL2Onyama Limba
1047Kaitlin M SlusarskiCanada2024-04-03Chapman, Ross E Esq PROPOSAL2Ioni Bowcher
1048Cody L BowleyJapan2024-04-01Buckley Miller Wright QUALIFIED26Anna Fali
1049Rodrigues R SaylorsBrazil2024-04-11Chemel, James L Cpa PROPOSAL45Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Julie F FlosiCanadaElwin Sharvill NEW
Mujtaba R CaudyArgentinaIoni Bowcher NEW
Claire D CampainArgentinaBernardo Dominic QUALIFIED
Ricardo U FerenczBrazilBernardo Dominic UNQUALIFIED
Stacey Y PaprockiCanadaXuxue Feng NEGOTIATION
Emily Q RulapaughFranceXuxue Feng NEGOTIATION
Misaki T WieserArgentinaIvan Magalhaes NEGOTIATION
Kaitlin W SchemmerUnited KingdomAmy Elsner PROPOSAL
Mujtaba Q PerinIndiaAnna Fali RENEWAL
Stacey V SergiRussiaOnyama Limba PROPOSAL
Silvio I MaletBrazilAnna Fali NEW
David S ShinkoAustraliaElwin Sharvill RENEWAL
Claire W FlosiSpainAnna Fali PROPOSAL
Ricardo B DoeFranceBernardo Dominic RENEWAL
Leja G StensethIndiaElwin Sharvill PROPOSAL
Francesco Z WaycottBrazilAnna Fali RENEWAL
Ashley A VenereUnited KingdomIoni Bowcher NEGOTIATION
Sinclair D CaudyIndiaAsiya Javayant PROPOSAL
Greenwood F DarakjyFranceXuxue Feng PROPOSAL
Ricardo E VocelkaCanadaStephen Shaw QUALIFIED
Chavez U BologniaArgentinaIoni Bowcher RENEWAL
Greenwood H ChuiRussiaOnyama Limba QUALIFIED
Maria J WieserJapanAnna Fali PROPOSAL
Kaitlin E AlbaresIndiaIoni Bowcher NEW
Kaitlin H AmigonSpainBernardo Dominic NEGOTIATION
Sinclair Q KolmetzIndiaAmy Elsner NEW
Munro R RulapaughFranceAnna Fali PROPOSAL
Morrow K GarufiAustraliaStephen Shaw RENEWAL
Misaki M CaudyRussiaBernardo Dominic NEW
Antonio M AlbaresGermanyXuxue Feng RENEWAL
Johnson P FlosiJapanOnyama Limba QUALIFIED
Jeanfrancois S FlosiCanadaXuxue Feng NEGOTIATION
Izzy Q DoeAustraliaAmy Elsner NEW
David P MacleadRussiaAsiya Javayant UNQUALIFIED
Aika G RoysterUnited KingdomStephen Shaw NEW
Juan Y DarakjyJapanAmy Elsner UNQUALIFIED
Murillo M CampainGermanyStephen Shaw NEGOTIATION
Kaitlin M BriddickFranceAsiya Javayant QUALIFIED
Mayumi Q PoquetteItalyAmy Elsner NEGOTIATION
Emily G ShinkoUnited KingdomStephen Shaw PROPOSAL
Octavia I DilliardRussiaAsiya Javayant UNQUALIFIED
Sinclair B PerinArgentinaIvan Magalhaes PROPOSAL
Rodrigues R NestleCanadaIoni Bowcher RENEWAL
Octavia C GauchoSpainIvan Magalhaes UNQUALIFIED
Munro O StockhamAustraliaIoni Bowcher UNQUALIFIED
Chavez L GauchoIndiaBernardo Dominic PROPOSAL
Darci B VocelkaGermanyElwin Sharvill RENEWAL
Francesco R WhobreyFranceStephen Shaw QUALIFIED
Alejandro H BriddickIndiaIvan Magalhaes PROPOSAL
Aika M OldroydCanadaIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Jeanfrancois M Morasca
Mayumi O Kusko
Aruna S Caudy
Juan Q Flosi
Ashley G Malet
Stacey O Royster
Francesco O Maclead
Jefferson P Ruta
Clifford A Ruta
Leja R Inouye
Kaitlin N Ostrosky
David B Morasca
Costa Z Nicka
Chavez E Perin
Nicolas P Foller
Sinclair I Slusarski
Kadeem J Butt
Isabel H Chui
Maisha P Gaucho
Jeanfrancois G Bowley
Morrow D Perin
Costa J Briddick
Jeanfrancois T Glick
Kaitlin C Rim
Jennifer D Gaucho
Wickens Z Ruta
Wickens Y Malet
Izzy Z Waycott
Jefferson L Gaucho
Greenwood V Morasca
Misaki Q Campain
Nicolas W Flosi
Kaitlin W Paprocki
Greenwood X Bolognia
Deepesh I Ostrosky
Isabel F Nicka
Maisha X Waycott
David E Inouye
Stacey R Amigon
Antonio F Gillian
Chavez S Kolmetz
Johnson F Gaucho
Ricardo Z Dilliard
Adams G Nestle
Rodrigues D Shinko
Jennifer S Maclead
Arvin G Ruta
Aditya M Glick
Darci B Stenseth
Maisha D Stenseth
IdCountryDate
1000India2024-04-16
1001Germany2024-04-07
1002Argentina2024-04-25
1003United Kingdom2024-04-17
1004Argentina2024-04-14
1005France2024-04-03
1006Argentina2024-04-14
1007Germany2024-04-03
1008Canada2024-04-21
1009Brazil2024-04-25
1010France2024-04-10
1011United Kingdom2024-04-15
1012Italy2024-04-09
1013Canada2024-04-10
1014Russia2024-03-31
1015Canada2024-04-27
1016Spain2024-04-08
1017Russia2024-04-18
1018France2024-03-29
1019Brazil2024-04-07
1020Germany2024-04-24
1021Canada2024-04-10
1022Japan2024-04-16
1023Spain2024-04-27
1024United Kingdom2024-04-19
1025Spain2024-04-01
1026United Kingdom2024-03-30
1027India2024-04-04
1028Brazil2024-04-18
1029Russia2024-04-07
1030India2024-04-21
1031Japan2024-04-19
1032Germany2024-04-03
1033Spain2024-04-07
1034United Kingdom2024-04-25
1035Brazil2024-04-21
1036Russia2024-03-30
1037Spain2024-04-21
1038France2024-04-24
1039Brazil2024-04-05
1040Germany2024-04-21
1041Germany2024-04-03
1042India2024-04-19
1043Brazil2024-03-29
1044Spain2024-04-12
1045France2024-04-18
1046Australia2024-04-12
1047Germany2024-04-08
1048Italy2024-04-09
1049Italy2024-04-11

On-Demand Data

NameIdCountryDate
James Y Bolognia1000Argentina2024-04-14
Deepesh O Ferencz1001Canada2024-04-04
Maria Z Bowley1002Argentina2024-03-30
Mujtaba A Dilliard1003Australia2024-04-12
Nicolas W Whobrey1004Australia2024-04-13
Francesco U Schemmer1005France2024-04-24
Chavez X Glick1006France2024-04-21
Leon J Dilliard1007United Kingdom2024-04-17
Antonio C Slusarski1008Russia2024-04-19
Juan B Rulapaugh1009Russia2024-04-12
Rodrigues N Morasca1010Argentina2024-04-22
Murillo O Venere1011France2024-04-10
Jefferson P Nestle1012Spain2024-04-06
Francesco I Waycott1013France2024-04-26
Francesco S Gillian1014India2024-04-23
Nicolas B Saylors1015Spain2024-04-05
Juan U Caudy1016Canada2024-04-16
Chavez Q Ostrosky1017Argentina2024-04-07
Jennifer J Waycott1018Argentina2024-04-12
Ashley J Flosi1019Germany2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem J KolmetzSpainAmy Elsner PROPOSAL
Aditya D GillianCanadaAnna Fali NEW
Leja J RimBrazilXuxue Feng RENEWAL
James P SergiRussiaBernardo Dominic NEGOTIATION
Costa N FerenczArgentinaAnna Fali NEW
Nicolas I SchemmerBrazilOnyama Limba NEGOTIATION
Rodrigues Z GlickRussiaStephen Shaw NEW
Silvio B MaletItalyXuxue Feng NEW
Nicolas W IturbideGermanyXuxue Feng NEGOTIATION
Greenwood T IturbideRussiaElwin Sharvill NEW
Kaitlin X FigeroaJapanOnyama Limba UNQUALIFIED
Aika T WieserGermanyOnyama Limba NEGOTIATION
Mujtaba Y NickaBrazilIvan Magalhaes QUALIFIED
Ivar R RimRussiaStephen Shaw PROPOSAL
Jennifer T WhobreyAustraliaIoni Bowcher PROPOSAL
Jeanfrancois Y CaldareraBrazilOnyama Limba UNQUALIFIED
Wickens I WaycottGermanyIvan Magalhaes PROPOSAL
Leon R FollerFranceAmy Elsner NEGOTIATION
Aika N KolmetzIndiaIoni Bowcher NEGOTIATION
Ashley L BologniaCanadaElwin Sharvill PROPOSAL
Faith A SaylorsBrazilAmy Elsner NEW
Isabel X RoysterUnited KingdomOnyama Limba NEGOTIATION
Nicolas N RulapaughUnited KingdomElwin Sharvill PROPOSAL
Octavia G StensethFranceAnna Fali NEW
Rodrigues S ShinkoBrazilStephen Shaw QUALIFIED
Kadeem S SlusarskiRussiaAsiya Javayant RENEWAL
Francesco Z AlbaresIndiaBernardo Dominic PROPOSAL
Misaki K KuskoGermanyBernardo Dominic NEW
Claire L PaprockiJapanElwin Sharvill RENEWAL
James V TollnerGermanyIoni Bowcher UNQUALIFIED
James L GillianJapanOnyama Limba NEGOTIATION
Jeanfrancois P GillianFranceIoni Bowcher QUALIFIED
Aika D TollnerGermanyIvan Magalhaes NEGOTIATION
Arvin L NestleIndiaStephen Shaw UNQUALIFIED
Emily G MacleadUnited KingdomXuxue Feng QUALIFIED
Ricardo H FlosiUnited KingdomAmy Elsner UNQUALIFIED
Chavez Y SlusarskiIndiaStephen Shaw QUALIFIED
Faith M DilliardCanadaStephen Shaw RENEWAL
Costa M OstroskyIndiaAmy Elsner UNQUALIFIED
Chavez I RutaArgentinaOnyama Limba QUALIFIED

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