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
Arvin E GarufiJapanIoni Bowcher PROPOSAL
Alejandro P WaycottUnited KingdomIvan Magalhaes NEGOTIATION
Kadeem N FollerAustraliaAnna Fali QUALIFIED
Juan Z VocelkaSpainIoni Bowcher QUALIFIED
Ricardo L TollnerBrazilStephen Shaw QUALIFIED
Isabel D CaudyBrazilOnyama Limba RENEWAL
Ivar G RimRussiaIoni Bowcher RENEWAL
Morrow C DilliardItalyIvan Magalhaes NEW
Emily Y GauchoFranceOnyama Limba UNQUALIFIED
Wickens Q RutaAustraliaXuxue Feng NEGOTIATION
Jennifer U IturbideIndiaStephen Shaw PROPOSAL
Tony I RutaFranceIvan Magalhaes QUALIFIED
Aditya O FigeroaUnited KingdomXuxue Feng UNQUALIFIED
Mayumi D AlbaresArgentinaIoni Bowcher UNQUALIFIED
Wickens A DoeArgentinaOnyama Limba QUALIFIED
Leja V BriddickBrazilAmy Elsner NEW
Johnson Q KolmetzRussiaAsiya Javayant NEGOTIATION
Francesco N StockhamFranceXuxue Feng NEW
Chavez S ChuiCanadaOnyama Limba UNQUALIFIED
Jennifer J MacleadSpainAnna Fali NEW
Izzy G GlickAustraliaAnna Fali UNQUALIFIED
Ivar V SergiArgentinaAnna Fali NEGOTIATION
Munro M GlickBrazilIvan Magalhaes UNQUALIFIED
Kaitlin Y SchemmerJapanAmy Elsner NEW
James F NickaItalyAnna Fali NEGOTIATION
Darci E MaletFranceOnyama Limba RENEWAL
Jefferson Q GarufiUnited KingdomIvan Magalhaes QUALIFIED
Antonio P BologniaBrazilIoni Bowcher RENEWAL
Jeanfrancois Y VocelkaGermanyAsiya Javayant UNQUALIFIED
Ashley F InouyeArgentinaAnna Fali RENEWAL
Juan M CaudyItalyOnyama Limba QUALIFIED
Juan Z KolmetzJapanElwin Sharvill QUALIFIED
Maria Q GarufiItalyIvan Magalhaes RENEWAL
Misaki C FigeroaRussiaIoni Bowcher QUALIFIED
Kaitlin L FerenczRussiaBernardo Dominic NEW
Faith V BriddickSpainAmy Elsner QUALIFIED
Aruna I CampainItalyOnyama Limba RENEWAL
Leja X NickaFranceElwin Sharvill NEGOTIATION
Misaki H PerinGermanyIoni Bowcher QUALIFIED
Kaitlin A MacleadIndiaAnna Fali NEGOTIATION
Emily G RulapaughRussiaIoni Bowcher RENEWAL
Ashley J MaletArgentinaIoni Bowcher RENEWAL
Kadeem N NestleUnited KingdomIoni Bowcher PROPOSAL
Ashley C GillianBrazilAmy Elsner QUALIFIED
Ivar C KolmetzAustraliaIoni Bowcher RENEWAL
Antonio O TollnerFranceElwin Sharvill NEW
Faith T RoysterFranceStephen Shaw NEW
Greenwood E AlbaresRussiaXuxue Feng QUALIFIED
Cody N RimUnited KingdomStephen Shaw NEW
Mujtaba Z PoquetteUnited KingdomAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois F DoeFranceIoni Bowcher RENEWAL
Chavez G DarakjyUnited KingdomAsiya Javayant NEGOTIATION
Sinclair Y MaletGermanyAmy Elsner PROPOSAL
Stacey N PoquetteRussiaOnyama Limba QUALIFIED
Leon D GlickUnited KingdomAnna Fali NEGOTIATION
Salvatore C BowleyUnited KingdomOnyama Limba NEGOTIATION
Johnson V DilliardSpainElwin Sharvill QUALIFIED
Julie A VocelkaGermanyElwin Sharvill NEGOTIATION
Chavez L InouyeJapanStephen Shaw PROPOSAL
Jones Q CaldareraBrazilOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair G GauchoArgentina2024-04-22Feltz Printing Service NEW47Anna Fali
1001Nicolas H SlusarskiAustralia2024-04-11Printing Dimensions PROPOSAL72Stephen Shaw
1002Francesco J KolmetzArgentina2024-04-11Rousseaux, Michael Esq UNQUALIFIED8Stephen Shaw
1003Stacey I WieserAustralia2024-04-15Benton, John B Jr PROPOSAL31Ioni Bowcher
1004Tony D MorascaFrance2024-04-12Benton, John B Jr NEW2Ioni Bowcher
1005Tony J GarufiBrazil2024-04-17Truhlar And Truhlar Attys QUALIFIED79Anna Fali
1006Leja F WieserRussia2024-04-13Feiner Bros NEW91Anna Fali
1007Francesco K GarufiIndia2024-04-22Truhlar And Truhlar Attys RENEWAL51Onyama Limba
1008Smith D BriddickFrance2024-04-08Feiner Bros PROPOSAL17Xuxue Feng
1009Darci N PoquetteGermany2024-04-08Morlong Associates QUALIFIED4Elwin Sharvill
1010Deepesh P MarrierCanada2024-04-10Printing Dimensions UNQUALIFIED98Anna Fali
1011Smith Z TollnerGermany2024-04-28Dorl, James J Esq UNQUALIFIED64Ioni Bowcher
1012Stacey C AlbaresCanada2024-04-17Truhlar And Truhlar Attys UNQUALIFIED24Bernardo Dominic
1013Jones P GauchoIndia2024-04-12Morlong Associates PROPOSAL95Asiya Javayant
1014Adams U PaprockiGermany2024-04-02Printing Dimensions RENEWAL73Ioni Bowcher
1015Smith P DoeItaly2024-04-03Printing Dimensions NEW80Asiya Javayant
1016Kadeem V MacleadFrance2024-04-12Chanay, Jeffrey A Esq QUALIFIED19Amy Elsner
1017Aditya Y RulapaughGermany2024-04-02Feltz Printing Service PROPOSAL30Amy Elsner
1018Chavez F FollerSpain2024-04-06Feiner Bros PROPOSAL45Anna Fali
1019Munro Z MaletJapan2024-04-02Benton, John B Jr UNQUALIFIED35Onyama Limba
1020Jeanfrancois A SchemmerSpain2024-04-28Dorl, James J Esq RENEWAL2Stephen Shaw
1021Mayumi A CaldareraFrance2024-04-10Rousseaux, Michael Esq NEW91Xuxue Feng
1022Silvio S BriddickAustralia2024-04-20Morlong Associates UNQUALIFIED80Bernardo Dominic
1023Deepesh U CaudyCanada2024-04-23Dorl, James J Esq RENEWAL52Ivan Magalhaes
1024Johnson P InouyeItaly2024-04-07Printing Dimensions RENEWAL57Stephen Shaw
1025Juan P GauchoRussia2024-04-05Truhlar And Truhlar Attys NEGOTIATION3Onyama Limba
1026Darci J SchemmerSpain2024-04-17Dorl, James J Esq PROPOSAL29Ioni Bowcher
1027Silvio S StockhamItaly2024-04-13Truhlar And Truhlar Attys PROPOSAL25Xuxue Feng
1028Ashley U DarakjyGermany2024-04-11Dorl, James J Esq QUALIFIED96Ioni Bowcher
1029Aruna G AlbaresUnited Kingdom2024-04-22Commercial Press QUALIFIED96Elwin Sharvill
1030Munro J WaycottFrance2024-04-16Feltz Printing Service QUALIFIED39Stephen Shaw
1031Silvio J KolmetzCanada2024-04-13Buckley Miller Wright UNQUALIFIED93Onyama Limba
1032Leon Z StockhamGermany2024-04-11Dorl, James J Esq UNQUALIFIED52Onyama Limba
1033Ashley S StockhamGermany2024-04-29Rousseaux, Michael Esq QUALIFIED13Bernardo Dominic
1034Munro Z IturbideJapan2024-04-13Morlong Associates UNQUALIFIED6Amy Elsner
1035Stacey T KuskoArgentina2024-04-10Chanay, Jeffrey A Esq RENEWAL68Elwin Sharvill
1036Chavez Y AmigonJapan2024-04-26Commercial Press PROPOSAL65Amy Elsner
1037Mayumi R NestleBrazil2024-04-15Buckley Miller Wright QUALIFIED68Elwin Sharvill
1038Aditya F CampainIndia2024-04-05Chemel, James L Cpa QUALIFIED27Amy Elsner
1039Isabel H DarakjyUnited Kingdom2024-04-19Dorl, James J Esq QUALIFIED6Bernardo Dominic
1040Aika S VenereAustralia2024-04-03King, Christopher A Esq NEW45Amy Elsner
1041Salvatore K ChuiIndia2024-04-21Truhlar And Truhlar Attys NEW56Elwin Sharvill
1042Maria R FigeroaIndia2024-04-02Rangoni Of Florence NEW73Ioni Bowcher
1043Jeanfrancois C WaycottIndia2024-04-21Printing Dimensions QUALIFIED37Amy Elsner
1044Leon Q MarrierBrazil2024-04-04Rousseaux, Michael Esq NEGOTIATION72Xuxue Feng
1045Ivar Y SergiSpain2024-04-26King, Christopher A Esq QUALIFIED95Asiya Javayant
1046Izzy B ButtFrance2024-04-29Rangoni Of Florence NEW56Ivan Magalhaes
1047Emily X AmigonGermany2024-04-09Chapman, Ross E Esq NEGOTIATION56Bernardo Dominic
1048Nicolas Y DilliardArgentina2024-04-10King, Christopher A Esq RENEWAL58Ivan Magalhaes
1049Isabel Y RimRussia2024-04-09Dorl, James J Esq NEW55Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Jennifer M BologniaArgentinaIvan Magalhaes UNQUALIFIED
Ricardo E ChuiRussiaXuxue Feng RENEWAL
Aruna Y ButtArgentinaIoni Bowcher RENEWAL
Mujtaba M RoysterUnited KingdomElwin Sharvill PROPOSAL
Jefferson R FigeroaBrazilStephen Shaw QUALIFIED
Leja H SchemmerCanadaAsiya Javayant RENEWAL
Johnson J MorascaItalyBernardo Dominic NEW
Maria L GarufiAustraliaOnyama Limba RENEWAL
Kaitlin C GarufiGermanyIvan Magalhaes UNQUALIFIED
Wickens A GlickGermanyElwin Sharvill RENEWAL
Sinclair G KuskoFranceElwin Sharvill NEW
Mujtaba Q InouyeBrazilXuxue Feng NEGOTIATION
Costa M FlosiBrazilAnna Fali QUALIFIED
Morrow A MacleadSpainOnyama Limba NEGOTIATION
Aika J VocelkaCanadaElwin Sharvill UNQUALIFIED
Kaitlin C DarakjyIndiaAmy Elsner QUALIFIED
Octavia Q ShinkoGermanyIvan Magalhaes NEW
Antonio I WieserSpainOnyama Limba QUALIFIED
Chavez A CaldareraFranceAmy Elsner NEW
Faith D FollerAustraliaStephen Shaw QUALIFIED
Leon Y DarakjyCanadaAnna Fali UNQUALIFIED
Aditya F SchemmerArgentinaXuxue Feng NEW
Emily N GarufiRussiaStephen Shaw PROPOSAL
Smith G RimItalyBernardo Dominic PROPOSAL
Jeanfrancois T GarufiIndiaBernardo Dominic NEGOTIATION
Emily M InouyeFranceXuxue Feng NEGOTIATION
Greenwood G AlbaresGermanyAnna Fali PROPOSAL
Ashley T BowleyCanadaAsiya Javayant NEGOTIATION
Rodrigues H NickaGermanyIvan Magalhaes RENEWAL
Johnson E KolmetzBrazilXuxue Feng UNQUALIFIED
Ricardo J VenereUnited KingdomIvan Magalhaes NEGOTIATION
Octavia A WieserFranceIvan Magalhaes PROPOSAL
Francesco P NestleBrazilBernardo Dominic QUALIFIED
Aruna K DarakjyRussiaElwin Sharvill QUALIFIED
Salvatore J PerinGermanyIoni Bowcher PROPOSAL
Arvin V OstroskyAustraliaBernardo Dominic NEGOTIATION
Ivar F SergiItalyIvan Magalhaes UNQUALIFIED
Clifford H VenereIndiaElwin Sharvill QUALIFIED
Aruna Q SchemmerIndiaXuxue Feng NEW
Maria Y MarrierIndiaStephen Shaw PROPOSAL
Salvatore E RulapaughIndiaElwin Sharvill PROPOSAL
Leja L OldroydArgentinaAmy Elsner RENEWAL
Misaki B MorascaSpainAmy Elsner UNQUALIFIED
Rodrigues M BriddickRussiaAnna Fali RENEWAL
Kadeem L PaprockiGermanyXuxue Feng QUALIFIED
Costa Q MaletUnited KingdomBernardo Dominic NEGOTIATION
Costa T AmigonCanadaIoni Bowcher UNQUALIFIED
Juan E IturbideIndiaAnna Fali NEW
Arvin H BologniaRussiaIvan Magalhaes RENEWAL
Faith Z WaycottArgentinaAmy Elsner PROPOSAL
Frozen Columns
Name
Ricardo A Slusarski
Stacey R Slusarski
Arvin K Campain
Tony F Rim
Salvatore V Sergi
Isabel U Caldarera
Octavia I Vocelka
Greenwood X Ruta
Sinclair Z Whobrey
Maisha X Bolognia
Smith D Iturbide
Maria F Ostrosky
Tony T Oldroyd
Aditya M Briddick
Francesco O Maclead
Kaitlin J Rulapaugh
Isabel F Ferencz
Sinclair H Amigon
Octavia N Perin
Wickens W Maclead
Chavez P Figeroa
Clifford K Marrier
Adams C Paprocki
Ricardo L Inouye
Octavia D Bowley
Maisha P Royster
Adams Q Venere
Leon B Vocelka
Smith B Whobrey
Claire B Oldroyd
Francesco S Inouye
Kadeem M Campain
Alejandro M Ferencz
Aditya K Sergi
Ricardo V Paprocki
Mayumi B Glick
Leja K Ruta
Costa T Marrier
Aika T Rulapaugh
Munro O Inouye
Costa A Butt
Murillo I Schemmer
Salvatore H Figeroa
Jefferson J Saylors
Jeanfrancois Z Paprocki
Faith W Malet
Misaki C Vocelka
Jennifer P Caudy
Ivar S Kusko
Faith C Campain
IdCountryDate
1000Australia2024-04-18
1001Germany2024-04-06
1002Italy2024-04-28
1003Germany2024-04-02
1004Canada2024-04-05
1005Canada2024-04-22
1006India2024-04-14
1007Japan2024-04-08
1008Japan2024-04-06
1009Brazil2024-04-04
1010Canada2024-04-22
1011Russia2024-04-15
1012Brazil2024-04-18
1013Argentina2024-04-11
1014France2024-04-21
1015Germany2024-04-01
1016India2024-04-20
1017France2024-04-11
1018Italy2024-04-29
1019Australia2024-04-13
1020Italy2024-04-16
1021Argentina2024-04-20
1022India2024-04-09
1023United Kingdom2024-03-31
1024Argentina2024-04-18
1025Germany2024-04-21
1026Germany2024-04-09
1027Japan2024-03-31
1028Argentina2024-04-05
1029India2024-04-17
1030Spain2024-04-14
1031Japan2024-04-23
1032Spain2024-04-02
1033Canada2024-04-14
1034Argentina2024-04-20
1035Argentina2024-04-06
1036Spain2024-04-12
1037Argentina2024-04-28
1038Spain2024-04-06
1039Australia2024-04-11
1040India2024-04-05
1041Brazil2024-04-05
1042Argentina2024-03-31
1043Japan2024-03-31
1044Germany2024-04-05
1045Italy2024-04-20
1046Italy2024-04-08
1047United Kingdom2024-04-12
1048Japan2024-04-13
1049Brazil2024-04-25

On-Demand Data

NameIdCountryDate
Leon R Waycott1000France2024-04-27
Maria A Iturbide1001India2024-04-28
Antonio X Malet1002Spain2024-04-24
Munro Q Stockham1003Spain2024-04-19
Octavia T Albares1004Russia2024-04-04
Ivar U Rim1005Brazil2024-04-16
Morrow R Gillian1006Argentina2024-04-24
Greenwood F Nicka1007Australia2024-04-06
Nicolas Q Ferencz1008Australia2024-04-11
Leon G Tollner1009India2024-04-17
Clifford B Bowley1010Germany2024-04-28
Francesco U Nicka1011India2024-04-12
Kadeem G Slusarski1012France2024-04-20
Alejandro Z Kolmetz1013India2024-04-04
Ivar P Shinko1014Italy2024-04-11
Silvio F Caldarera1015France2024-04-04
Faith A Rulapaugh1016Japan2024-04-06
Juan G Marrier1017India2024-04-08
Adams E Darakjy1018France2024-04-01
Mujtaba Q Saylors1019Italy2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin M GauchoCanadaOnyama Limba RENEWAL
Antonio W MorascaCanadaIvan Magalhaes NEW
Emily N FlosiItalyOnyama Limba UNQUALIFIED
Leja D ButtArgentinaIoni Bowcher NEW
Silvio J PaprockiItalyXuxue Feng UNQUALIFIED
Arvin Z ButtBrazilBernardo Dominic NEGOTIATION
Rodrigues R MaletUnited KingdomAnna Fali PROPOSAL
Costa J BowleyUnited KingdomOnyama Limba PROPOSAL
Nicolas L NestleUnited KingdomIvan Magalhaes NEGOTIATION
Leon K FollerSpainAsiya Javayant UNQUALIFIED
Aruna K GillianArgentinaAmy Elsner QUALIFIED
Cody V GarufiBrazilElwin Sharvill UNQUALIFIED
Costa I WieserRussiaAsiya Javayant NEW
Jennifer H FerenczIndiaIvan Magalhaes PROPOSAL
Deepesh J FlosiUnited KingdomAsiya Javayant UNQUALIFIED
Stacey Y SchemmerRussiaIoni Bowcher PROPOSAL
Rodrigues S TollnerRussiaAsiya Javayant UNQUALIFIED
Leja R InouyeFranceXuxue Feng PROPOSAL
Nicolas Z KuskoGermanyStephen Shaw PROPOSAL
Mujtaba F AlbaresCanadaOnyama Limba QUALIFIED
Kadeem R CaudyAustraliaStephen Shaw RENEWAL
Munro T ButtRussiaIoni Bowcher NEGOTIATION
Kaitlin O DilliardGermanyElwin Sharvill QUALIFIED
Wickens I IturbideRussiaStephen Shaw QUALIFIED
Isabel T VocelkaJapanIoni Bowcher QUALIFIED
Salvatore D StensethRussiaElwin Sharvill UNQUALIFIED
Leja D IturbideGermanyIvan Magalhaes PROPOSAL
Nicolas Q MaletJapanBernardo Dominic QUALIFIED
Francesco J ChuiCanadaAsiya Javayant NEW
Rodrigues W MaletBrazilIoni Bowcher NEW
Ivar C AmigonAustraliaAnna Fali RENEWAL
Leja W ButtJapanElwin Sharvill NEW
Jefferson Q CaudyBrazilOnyama Limba RENEWAL
Darci F VenereUnited KingdomAmy Elsner UNQUALIFIED
Murillo R AmigonItalyStephen Shaw RENEWAL
Maria U WhobreyBrazilIvan Magalhaes NEGOTIATION
Mayumi M GarufiSpainElwin Sharvill UNQUALIFIED
Mujtaba K ButtSpainOnyama Limba NEGOTIATION
Arvin M StensethIndiaAnna Fali NEGOTIATION
Francesco X OldroydArgentinaOnyama Limba 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>