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
Misaki D SergiFranceOnyama Limba QUALIFIED
Ricardo U MaletCanadaAnna Fali UNQUALIFIED
Julie L GauchoBrazilAsiya Javayant NEGOTIATION
Arvin W FollerSpainOnyama Limba NEW
Jefferson H CaldareraGermanyIvan Magalhaes UNQUALIFIED
Julie F PerinCanadaAsiya Javayant QUALIFIED
Octavia U RutaUnited KingdomAmy Elsner UNQUALIFIED
Greenwood I FigeroaUnited KingdomAsiya Javayant NEGOTIATION
Maria Q InouyeSpainBernardo Dominic NEW
Kaitlin J WhobreyItalyAsiya Javayant RENEWAL
James E SlusarskiSpainAmy Elsner NEGOTIATION
Jeanfrancois C GlickGermanyElwin Sharvill NEW
Smith N WhobreyUnited KingdomAmy Elsner UNQUALIFIED
Faith B BowleyItalyAmy Elsner RENEWAL
Deepesh D SaylorsIndiaIoni Bowcher UNQUALIFIED
Francesco K OldroydArgentinaIoni Bowcher NEGOTIATION
Kadeem U NestleGermanyBernardo Dominic NEW
Leja C PerinIndiaIvan Magalhaes PROPOSAL
Salvatore U GlickItalyAnna Fali UNQUALIFIED
Aika W TollnerCanadaXuxue Feng RENEWAL
Maisha Q AmigonItalyIoni Bowcher PROPOSAL
David N FlosiJapanOnyama Limba NEW
Leon B OldroydBrazilElwin Sharvill RENEWAL
Adams G SchemmerFranceAmy Elsner NEGOTIATION
Misaki U CaudyUnited KingdomStephen Shaw RENEWAL
James B FerenczIndiaIoni Bowcher UNQUALIFIED
Antonio E MacleadBrazilBernardo Dominic UNQUALIFIED
Octavia S NickaCanadaAsiya Javayant NEGOTIATION
Maisha B GarufiUnited KingdomAnna Fali NEGOTIATION
Stacey A NickaCanadaIoni Bowcher NEGOTIATION
Mujtaba V CaldareraIndiaIvan Magalhaes QUALIFIED
Leja Z GauchoRussiaStephen Shaw RENEWAL
Emily Z CampainBrazilAsiya Javayant NEW
Julie U SchemmerArgentinaStephen Shaw UNQUALIFIED
Jeanfrancois E CampainRussiaAsiya Javayant RENEWAL
Kaitlin X MarrierIndiaOnyama Limba NEW
Aruna G CaldareraItalyOnyama Limba PROPOSAL
Darci J InouyeFranceOnyama Limba RENEWAL
Aruna C RoysterRussiaAnna Fali NEGOTIATION
Misaki U MorascaSpainOnyama Limba NEW
Isabel S SchemmerJapanAsiya Javayant NEGOTIATION
Leon D GlickUnited KingdomOnyama Limba QUALIFIED
Johnson S AlbaresSpainXuxue Feng NEW
Ashley E PerinFranceAnna Fali UNQUALIFIED
Ashley G GlickBrazilAnna Fali NEGOTIATION
Silvio H BriddickJapanElwin Sharvill NEW
Maisha W CaldareraSpainIvan Magalhaes RENEWAL
Maria F PoquetteSpainAmy Elsner NEGOTIATION
Sinclair E CaldareraCanadaAsiya Javayant RENEWAL
Chavez O InouyeFranceAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Leja F OldroydBrazilElwin Sharvill NEGOTIATION
Tony Y FerenczSpainBernardo Dominic UNQUALIFIED
Darci K MaletCanadaIvan Magalhaes PROPOSAL
Smith J InouyeBrazilStephen Shaw RENEWAL
Greenwood Q SchemmerGermanyStephen Shaw RENEWAL
Aruna A FerenczJapanAmy Elsner NEGOTIATION
Francesco Z InouyeJapanStephen Shaw UNQUALIFIED
Mujtaba M MarrierItalyAmy Elsner NEGOTIATION
Morrow N RimUnited KingdomOnyama Limba QUALIFIED
Maisha R ButtJapanAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem L BowleyJapan2024-04-25Rousseaux, Michael Esq RENEWAL21Amy Elsner
1001Mujtaba S WaycottItaly2024-04-24Commercial Press PROPOSAL91Elwin Sharvill
1002Antonio P FigeroaFrance2024-04-07Truhlar And Truhlar Attys NEW58Anna Fali
1003Murillo J IturbideSpain2024-03-29Chapman, Ross E Esq PROPOSAL94Elwin Sharvill
1004Izzy A VenereArgentina2024-03-28Chapman, Ross E Esq QUALIFIED77Amy Elsner
1005Claire L MacleadIndia2024-04-05Truhlar And Truhlar Attys UNQUALIFIED69Stephen Shaw
1006James M SergiBrazil2024-04-07Feiner Bros UNQUALIFIED93Stephen Shaw
1007Aika Z GlickJapan2024-03-28Chemel, James L Cpa UNQUALIFIED9Ioni Bowcher
1008Antonio I RutaSpain2024-04-10Chemel, James L Cpa PROPOSAL82Onyama Limba
1009Kaitlin J PoquetteFrance2024-04-06Printing Dimensions RENEWAL62Stephen Shaw
1010Costa Z MaletRussia2024-04-13Buckley Miller Wright QUALIFIED98Stephen Shaw
1011Aika P AlbaresRussia2024-04-03Chanay, Jeffrey A Esq UNQUALIFIED27Ioni Bowcher
1012Jones A VenereItaly2024-03-31Chapman, Ross E Esq PROPOSAL61Asiya Javayant
1013Munro Y RimGermany2024-04-22Benton, John B Jr PROPOSAL12Ivan Magalhaes
1014Francesco O CampainUnited Kingdom2024-03-29Commercial Press NEGOTIATION96Anna Fali
1015Jones I ChuiItaly2024-04-06Buckley Miller Wright NEGOTIATION99Anna Fali
1016Rodrigues J MaletItaly2024-04-01Chapman, Ross E Esq UNQUALIFIED32Amy Elsner
1017Adams X DilliardBrazil2024-04-17Chapman, Ross E Esq UNQUALIFIED40Anna Fali
1018Jefferson M KolmetzRussia2024-03-29Commercial Press NEGOTIATION56Ioni Bowcher
1019Salvatore C BologniaIndia2024-04-17Commercial Press PROPOSAL33Amy Elsner
1020Julie K ButtArgentina2024-04-02Dorl, James J Esq QUALIFIED6Onyama Limba
1021Kaitlin R MaletIndia2024-04-18King, Christopher A Esq NEW44Bernardo Dominic
1022Leon A SergiUnited Kingdom2024-03-29Feltz Printing Service RENEWAL1Bernardo Dominic
1023Salvatore K DoeAustralia2024-04-22Feiner Bros NEW96Ioni Bowcher
1024Jennifer F InouyeSpain2024-04-15Rangoni Of Florence QUALIFIED17Onyama Limba
1025Jefferson R RimFrance2024-04-24Feiner Bros UNQUALIFIED26Bernardo Dominic
1026Isabel R BologniaJapan2024-04-10Chemel, James L Cpa NEW56Onyama Limba
1027Ivar H OstroskyJapan2024-04-15Buckley Miller Wright NEGOTIATION9Ioni Bowcher
1028Jennifer X FigeroaJapan2024-04-23Feltz Printing Service PROPOSAL79Amy Elsner
1029Maisha K RulapaughGermany2024-03-31Commercial Press QUALIFIED14Stephen Shaw
1030Nicolas X RutaUnited Kingdom2024-04-10Buckley Miller Wright QUALIFIED27Elwin Sharvill
1031Chavez L WhobreyUnited Kingdom2024-04-04Morlong Associates PROPOSAL34Bernardo Dominic
1032Aditya T VenereSpain2024-04-08Buckley Miller Wright RENEWAL48Anna Fali
1033Darci X CaldareraUnited Kingdom2024-04-16Truhlar And Truhlar Attys UNQUALIFIED38Bernardo Dominic
1034Chavez S CaldareraGermany2024-04-03Dorl, James J Esq PROPOSAL52Bernardo Dominic
1035Izzy M GauchoAustralia2024-04-04Buckley Miller Wright PROPOSAL11Stephen Shaw
1036Mujtaba W SergiIndia2024-04-04Truhlar And Truhlar Attys PROPOSAL38Anna Fali
1037Leja E StockhamIndia2024-04-15Chemel, James L Cpa QUALIFIED59Bernardo Dominic
1038Aika F DarakjyCanada2024-04-16Dorl, James J Esq RENEWAL98Xuxue Feng
1039Francesco I InouyeCanada2024-04-24Rousseaux, Michael Esq PROPOSAL90Elwin Sharvill
1040Greenwood Q AmigonUnited Kingdom2024-04-13Buckley Miller Wright QUALIFIED58Amy Elsner
1041Leja P AmigonUnited Kingdom2024-04-07Feltz Printing Service UNQUALIFIED94Bernardo Dominic
1042Faith T BriddickFrance2024-04-21Truhlar And Truhlar Attys NEGOTIATION59Anna Fali
1043Leon Q AmigonGermany2024-04-19Truhlar And Truhlar Attys PROPOSAL27Ivan Magalhaes
1044Morrow J NickaGermany2024-04-01Dorl, James J Esq QUALIFIED97Stephen Shaw
1045Munro Q CaudyItaly2024-04-14Truhlar And Truhlar Attys NEGOTIATION12Ivan Magalhaes
1046Morrow Y SchemmerFrance2024-04-03Truhlar And Truhlar Attys QUALIFIED63Elwin Sharvill
1047Sinclair Q RoysterCanada2024-04-09Chapman, Ross E Esq PROPOSAL3Ivan Magalhaes
1048Misaki V FerenczGermany2024-04-23Buckley Miller Wright NEGOTIATION65Onyama Limba
1049Leon Y PerinBrazil2024-04-10King, Christopher A Esq UNQUALIFIED2Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ivar S CampainIndiaIoni Bowcher RENEWAL
Clifford M MaletRussiaOnyama Limba RENEWAL
Sinclair J MorascaFranceOnyama Limba NEW
Jeanfrancois Y OldroydJapanIvan Magalhaes UNQUALIFIED
Antonio S GarufiJapanAnna Fali QUALIFIED
Stacey G VocelkaCanadaIvan Magalhaes QUALIFIED
Deepesh P MaletCanadaIvan Magalhaes PROPOSAL
Kaitlin Q ShinkoGermanyAnna Fali NEGOTIATION
Jefferson C RutaGermanyAnna Fali QUALIFIED
Antonio W DoeJapanStephen Shaw UNQUALIFIED
Leja F ChuiUnited KingdomIvan Magalhaes UNQUALIFIED
Munro Q IturbideJapanXuxue Feng UNQUALIFIED
Octavia S AmigonGermanyAmy Elsner NEGOTIATION
Claire A ShinkoArgentinaAmy Elsner QUALIFIED
Juan V SergiJapanAsiya Javayant QUALIFIED
Darci G SergiRussiaElwin Sharvill RENEWAL
Maria Q SchemmerUnited KingdomOnyama Limba RENEWAL
Adams M AmigonArgentinaStephen Shaw NEGOTIATION
Salvatore K DilliardItalyXuxue Feng NEGOTIATION
Leon Y KolmetzJapanIoni Bowcher PROPOSAL
Ivar S SergiItalyElwin Sharvill NEGOTIATION
Leon S DilliardCanadaBernardo Dominic UNQUALIFIED
Salvatore E StensethItalyAsiya Javayant RENEWAL
Maisha X KuskoIndiaOnyama Limba PROPOSAL
Ivar N BowleyArgentinaBernardo Dominic NEW
Aruna K PerinUnited KingdomXuxue Feng NEW
Deepesh E WieserJapanStephen Shaw RENEWAL
Salvatore H MacleadItalyXuxue Feng NEGOTIATION
Aditya V GlickCanadaIoni Bowcher NEW
Johnson Z WhobreyAustraliaElwin Sharvill QUALIFIED
David L CampainSpainAmy Elsner PROPOSAL
Jefferson K PoquetteIndiaElwin Sharvill RENEWAL
Rodrigues U DarakjyFranceAnna Fali UNQUALIFIED
Murillo K MaletJapanStephen Shaw NEW
Ricardo X MacleadBrazilAmy Elsner PROPOSAL
Arvin L RoysterSpainAsiya Javayant NEGOTIATION
Johnson N FlosiArgentinaOnyama Limba NEW
Greenwood E TollnerCanadaAmy Elsner PROPOSAL
Darci T SchemmerFranceBernardo Dominic QUALIFIED
James Z FerenczRussiaAsiya Javayant QUALIFIED
Deepesh H IturbideCanadaAnna Fali QUALIFIED
Nicolas E NestleArgentinaXuxue Feng NEGOTIATION
Munro N RulapaughItalyIvan Magalhaes UNQUALIFIED
Deepesh L StensethCanadaStephen Shaw UNQUALIFIED
Maisha U GauchoBrazilAsiya Javayant RENEWAL
Ivar E DarakjyGermanyElwin Sharvill NEW
Chavez Y NickaJapanXuxue Feng UNQUALIFIED
Chavez K SaylorsGermanyStephen Shaw NEGOTIATION
Faith Q WhobreyGermanyBernardo Dominic RENEWAL
Munro G StockhamIndiaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Morrow T Marrier
Emily W Bolognia
Leja D Morasca
Faith H Campain
Isabel T Nestle
Izzy K Bolognia
Leon Y Royster
Alejandro K Albares
Morrow F Vocelka
Munro N Tollner
Clifford L Kolmetz
Kaitlin D Campain
Tony R Doe
Munro B Bolognia
Morrow A Poquette
Tony V Butt
Rodrigues I Figeroa
Julie W Butt
Julie F Darakjy
Octavia H Gaucho
Leon H Gaucho
Izzy O Bolognia
Octavia U Malet
Clifford U Stenseth
Clifford Y Paprocki
Octavia J Iturbide
Leon Q Rulapaugh
Chavez J Rim
Wickens P Caldarera
Nicolas M Caudy
Mayumi R Campain
Octavia F Rulapaugh
Ricardo Q Kusko
Aika Q Ruta
Jeanfrancois Z Venere
Stacey V Marrier
Wickens F Butt
Morrow F Stockham
Aika A Flosi
Chavez A Oldroyd
Francesco E Kusko
Mayumi N Gillian
Ashley C Tollner
Claire P Perin
Octavia H Schemmer
Munro G Sergi
Faith H Ruta
Emily M Bowley
Misaki P Waycott
Clifford Y Dilliard
IdCountryDate
1000Canada2024-04-21
1001Spain2024-04-12
1002Brazil2024-04-03
1003Italy2024-04-21
1004United Kingdom2024-04-06
1005Spain2024-04-16
1006India2024-03-28
1007Argentina2024-04-04
1008Japan2024-04-20
1009Italy2024-04-12
1010Spain2024-04-10
1011Brazil2024-04-25
1012Argentina2024-04-09
1013India2024-04-26
1014India2024-04-01
1015Canada2024-04-11
1016Australia2024-03-29
1017Brazil2024-04-15
1018Canada2024-04-17
1019Russia2024-04-04
1020Argentina2024-04-13
1021Germany2024-04-26
1022Australia2024-04-14
1023Brazil2024-03-30
1024Russia2024-04-03
1025Spain2024-04-21
1026United Kingdom2024-04-04
1027Germany2024-04-20
1028France2024-04-06
1029Australia2024-04-14
1030United Kingdom2024-04-01
1031Germany2024-03-30
1032India2024-04-09
1033Russia2024-04-14
1034Japan2024-04-08
1035United Kingdom2024-04-06
1036Brazil2024-04-13
1037Brazil2024-04-05
1038Argentina2024-04-06
1039Australia2024-04-09
1040Canada2024-03-29
1041Argentina2024-04-05
1042Australia2024-04-13
1043Argentina2024-04-23
1044Russia2024-04-11
1045Australia2024-04-19
1046Brazil2024-04-04
1047Germany2024-04-17
1048Argentina2024-04-17
1049Russia2024-04-08

On-Demand Data

NameIdCountryDate
Kaitlin C Bolognia1000Japan2024-04-26
Faith G Foller1001Canada2024-03-31
Izzy J Flosi1002Spain2024-04-10
Leon N Stockham1003France2024-04-18
Morrow Y Campain1004Japan2024-04-06
Claire N Nicka1005Russia2024-04-06
Francesco V Figeroa1006Brazil2024-04-14
Greenwood C Dilliard1007Spain2024-04-18
Morrow C Butt1008Canada2024-04-14
Tony L Glick1009Argentina2024-04-12
Ivar P Dilliard1010Brazil2024-04-01
Silvio R Darakjy1011United Kingdom2024-04-13
Jennifer I Stockham1012Russia2024-04-10
Sinclair F Slusarski1013Russia2024-04-25
Aika K Maclead1014Canada2024-04-12
Smith D Ruta1015France2024-04-25
Arvin A Maclead1016United Kingdom2024-04-15
Aika X Briddick1017Australia2024-04-13
Jennifer E Wieser1018Italy2024-04-20
Faith U Garufi1019Spain2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow C VocelkaUnited KingdomAnna Fali NEGOTIATION
Deepesh Q ButtJapanBernardo Dominic NEGOTIATION
Kaitlin U RoysterSpainAnna Fali PROPOSAL
Mujtaba W VenereIndiaIvan Magalhaes NEGOTIATION
Maisha D RimUnited KingdomIoni Bowcher NEGOTIATION
Greenwood T MacleadUnited KingdomBernardo Dominic UNQUALIFIED
Murillo W GillianSpainStephen Shaw UNQUALIFIED
Jefferson E NickaSpainAmy Elsner RENEWAL
Octavia L GillianSpainBernardo Dominic PROPOSAL
Morrow L OstroskyRussiaStephen Shaw RENEWAL
Deepesh F RutaUnited KingdomStephen Shaw QUALIFIED
Mujtaba B MorascaJapanBernardo Dominic UNQUALIFIED
Kadeem M PerinFranceAmy Elsner QUALIFIED
Greenwood F PerinCanadaStephen Shaw PROPOSAL
Mujtaba V MaletUnited KingdomAmy Elsner RENEWAL
James Q KuskoIndiaIvan Magalhaes NEW
Morrow P ChuiIndiaIvan Magalhaes RENEWAL
Julie M TollnerSpainOnyama Limba NEW
Ashley N FollerIndiaIvan Magalhaes RENEWAL
Maria Y IturbideAustraliaBernardo Dominic UNQUALIFIED
Aika A MacleadCanadaOnyama Limba NEW
Johnson W StockhamCanadaXuxue Feng QUALIFIED
Johnson N OstroskyJapanAnna Fali QUALIFIED
Kaitlin Y VocelkaIndiaIvan Magalhaes NEW
Kadeem G BriddickUnited KingdomAmy Elsner PROPOSAL
Munro V FollerArgentinaElwin Sharvill NEW
Arvin L WhobreyAustraliaElwin Sharvill NEW
Octavia Q MacleadUnited KingdomXuxue Feng RENEWAL
Emily C SaylorsSpainBernardo Dominic UNQUALIFIED
Jennifer X GauchoGermanyOnyama Limba RENEWAL
Stacey E KuskoSpainXuxue Feng NEW
Silvio Q TollnerAustraliaAmy Elsner NEW
Juan U GlickIndiaIvan Magalhaes RENEWAL
Costa O MaletItalyElwin Sharvill RENEWAL
Cody N BowleyGermanyStephen Shaw NEGOTIATION
Salvatore O WieserCanadaElwin Sharvill PROPOSAL
Silvio N MarrierGermanyAnna Fali UNQUALIFIED
Munro V BriddickArgentinaBernardo Dominic RENEWAL
Sinclair T SergiFranceBernardo Dominic PROPOSAL
Clifford L CaudyFranceOnyama Limba NEW

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