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
Nicolas P WaycottJapanStephen Shaw NEW
Ricardo L GarufiGermanyIoni Bowcher PROPOSAL
Leja I PoquetteUnited KingdomAmy Elsner UNQUALIFIED
Octavia N GillianAustraliaStephen Shaw PROPOSAL
Claire Z FerenczFranceElwin Sharvill QUALIFIED
Silvio R RoysterRussiaStephen Shaw NEW
Julie U FerenczGermanyStephen Shaw UNQUALIFIED
Wickens Y RulapaughJapanStephen Shaw NEW
Maria Y BriddickJapanAmy Elsner UNQUALIFIED
Kaitlin B BriddickFranceAsiya Javayant UNQUALIFIED
Antonio N GillianBrazilIoni Bowcher PROPOSAL
Silvio C MaletGermanyXuxue Feng NEW
Claire S AlbaresArgentinaIoni Bowcher PROPOSAL
Jeanfrancois B VenereItalyIvan Magalhaes QUALIFIED
Cody X OstroskyRussiaAnna Fali RENEWAL
Claire F CaldareraJapanAmy Elsner NEW
Kadeem W FerenczItalyIvan Magalhaes PROPOSAL
Rodrigues J DarakjyFranceAnna Fali UNQUALIFIED
Maisha L SchemmerCanadaBernardo Dominic QUALIFIED
Nicolas K CampainArgentinaAsiya Javayant PROPOSAL
Greenwood B DilliardUnited KingdomBernardo Dominic PROPOSAL
Emily P FollerJapanAsiya Javayant NEGOTIATION
Francesco N MorascaIndiaOnyama Limba UNQUALIFIED
Johnson R TollnerUnited KingdomBernardo Dominic PROPOSAL
Juan Y BriddickRussiaBernardo Dominic UNQUALIFIED
Tony X FigeroaBrazilAsiya Javayant QUALIFIED
David L CampainSpainOnyama Limba QUALIFIED
Rodrigues O ChuiCanadaAsiya Javayant UNQUALIFIED
Aditya Z BologniaUnited KingdomAnna Fali RENEWAL
David B RoysterUnited KingdomXuxue Feng RENEWAL
Tony M PoquetteBrazilAnna Fali NEGOTIATION
Morrow U SlusarskiRussiaAsiya Javayant NEGOTIATION
Antonio E PoquetteBrazilBernardo Dominic QUALIFIED
Salvatore L IturbideItalyAnna Fali NEGOTIATION
Chavez H IturbideIndiaIvan Magalhaes NEGOTIATION
Antonio B MaletArgentinaOnyama Limba UNQUALIFIED
Arvin U FigeroaRussiaAnna Fali UNQUALIFIED
Jones K GlickCanadaAsiya Javayant NEGOTIATION
Kadeem I ButtFranceOnyama Limba UNQUALIFIED
Kadeem Q PoquetteJapanBernardo Dominic NEGOTIATION
Adams C MaletItalyIoni Bowcher NEW
Deepesh O SchemmerSpainAmy Elsner NEW
Mujtaba P KuskoFranceAnna Fali QUALIFIED
Salvatore F GarufiBrazilOnyama Limba RENEWAL
Faith S MarrierRussiaIoni Bowcher UNQUALIFIED
Rodrigues V DarakjyBrazilAnna Fali NEW
Alejandro B AlbaresItalyIvan Magalhaes NEGOTIATION
Emily F GauchoBrazilStephen Shaw NEGOTIATION
Aruna V RoysterFranceXuxue Feng PROPOSAL
Adams Q PoquetteArgentinaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Smith R WaycottRussiaAnna Fali UNQUALIFIED
Izzy V IturbideBrazilElwin Sharvill UNQUALIFIED
Murillo O FerenczJapanOnyama Limba RENEWAL
Jeanfrancois O SaylorsSpainStephen Shaw RENEWAL
Ivar P WaycottGermanyBernardo Dominic UNQUALIFIED
Nicolas E OstroskyUnited KingdomAnna Fali PROPOSAL
Jefferson B OldroydCanadaXuxue Feng UNQUALIFIED
Mayumi I VenereIndiaAsiya Javayant NEW
Adams J VocelkaAustraliaXuxue Feng PROPOSAL
Clifford H KuskoSpainBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba I RutaGermany2024-04-24Morlong Associates RENEWAL34Asiya Javayant
1001Silvio O NestleRussia2024-04-15Commercial Press UNQUALIFIED25Onyama Limba
1002Maria H CampainBrazil2024-04-21King, Christopher A Esq NEW98Xuxue Feng
1003Stacey P SchemmerItaly2024-04-02Rangoni Of Florence NEW5Stephen Shaw
1004Silvio D BologniaGermany2024-04-21Rousseaux, Michael Esq NEW92Asiya Javayant
1005Munro D VenereJapan2024-04-14Dorl, James J Esq QUALIFIED20Amy Elsner
1006Kaitlin U NickaItaly2024-04-14Buckley Miller Wright NEGOTIATION2Amy Elsner
1007Isabel B PaprockiArgentina2024-04-06Morlong Associates NEW17Anna Fali
1008Francesco X StensethAustralia2024-04-03Chanay, Jeffrey A Esq NEGOTIATION82Stephen Shaw
1009Costa F CaudyItaly2024-04-09Printing Dimensions NEW6Anna Fali
1010Misaki I SergiRussia2024-04-10Feltz Printing Service PROPOSAL10Elwin Sharvill
1011Mayumi T BowleySpain2024-04-07Truhlar And Truhlar Attys NEGOTIATION88Ivan Magalhaes
1012Faith Z PaprockiArgentina2024-04-12Chemel, James L Cpa NEW78Stephen Shaw
1013Rodrigues N RulapaughCanada2024-04-09Printing Dimensions RENEWAL27Xuxue Feng
1014Cody G StensethFrance2024-04-17Feltz Printing Service UNQUALIFIED33Onyama Limba
1015Jones U IturbideGermany2024-04-14Feltz Printing Service UNQUALIFIED24Amy Elsner
1016Octavia Q FigeroaCanada2024-03-30Feltz Printing Service PROPOSAL59Xuxue Feng
1017Kadeem G DarakjyRussia2024-04-20Feiner Bros UNQUALIFIED41Onyama Limba
1018Leon V BowleyAustralia2024-04-22Chanay, Jeffrey A Esq PROPOSAL16Xuxue Feng
1019Misaki Y MacleadRussia2024-04-26Commercial Press PROPOSAL43Amy Elsner
1020Ivar Q KolmetzUnited Kingdom2024-03-29Morlong Associates NEW89Asiya Javayant
1021Deepesh V BowleyIndia2024-03-30Dorl, James J Esq PROPOSAL4Stephen Shaw
1022Ivar W BriddickGermany2024-04-04Chemel, James L Cpa NEGOTIATION49Asiya Javayant
1023Maria S InouyeRussia2024-04-07Rangoni Of Florence QUALIFIED46Ivan Magalhaes
1024Ashley T GarufiJapan2024-04-04Printing Dimensions RENEWAL82Xuxue Feng
1025Sinclair Q SaylorsJapan2024-04-06Chanay, Jeffrey A Esq NEW83Asiya Javayant
1026Alejandro M DoeJapan2024-04-16Commercial Press UNQUALIFIED17Bernardo Dominic
1027Emily Z BologniaJapan2024-04-22Dorl, James J Esq RENEWAL85Onyama Limba
1028Adams P DoeFrance2024-04-17Feiner Bros QUALIFIED61Stephen Shaw
1029Misaki Y GauchoBrazil2024-04-23Morlong Associates RENEWAL41Elwin Sharvill
1030Claire H KuskoAustralia2024-04-01Feltz Printing Service NEGOTIATION5Amy Elsner
1031David F CaldareraItaly2024-03-29Chanay, Jeffrey A Esq RENEWAL74Anna Fali
1032Ivar P GauchoArgentina2024-04-22Chapman, Ross E Esq QUALIFIED87Elwin Sharvill
1033Emily K MaletCanada2024-04-19Feltz Printing Service UNQUALIFIED37Bernardo Dominic
1034Rodrigues B TollnerAustralia2024-04-19Feltz Printing Service NEGOTIATION18Xuxue Feng
1035Juan O FlosiFrance2024-04-10Truhlar And Truhlar Attys UNQUALIFIED63Elwin Sharvill
1036Clifford P TollnerAustralia2024-04-06Chanay, Jeffrey A Esq PROPOSAL16Stephen Shaw
1037Claire E SaylorsFrance2024-04-05Benton, John B Jr PROPOSAL32Bernardo Dominic
1038Octavia R RutaGermany2024-04-04Rousseaux, Michael Esq UNQUALIFIED54Amy Elsner
1039Nicolas Q IturbideRussia2024-04-04Dorl, James J Esq NEGOTIATION66Ioni Bowcher
1040Jennifer W PerinJapan2024-04-03Truhlar And Truhlar Attys UNQUALIFIED18Stephen Shaw
1041Faith T StockhamSpain2024-04-26Rousseaux, Michael Esq PROPOSAL22Elwin Sharvill
1042Costa O FlosiItaly2024-03-31Truhlar And Truhlar Attys UNQUALIFIED33Onyama Limba
1043Maria J MaletCanada2024-04-14Chapman, Ross E Esq UNQUALIFIED65Xuxue Feng
1044Salvatore E RutaAustralia2024-04-19Chanay, Jeffrey A Esq QUALIFIED55Amy Elsner
1045Murillo C RoysterAustralia2024-04-08Benton, John B Jr UNQUALIFIED80Stephen Shaw
1046Mujtaba N CampainUnited Kingdom2024-03-30Chapman, Ross E Esq QUALIFIED13Onyama Limba
1047Nicolas Q SlusarskiFrance2024-04-05Dorl, James J Esq UNQUALIFIED11Onyama Limba
1048Maria K MarrierAustralia2024-04-02Dorl, James J Esq NEGOTIATION45Amy Elsner
1049Darci V CaudyCanada2024-04-06Chapman, Ross E Esq UNQUALIFIED17Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Wickens M RulapaughUnited KingdomBernardo Dominic RENEWAL
Antonio X MaletItalyAmy Elsner QUALIFIED
Misaki Z VenereItalyStephen Shaw QUALIFIED
Leon G RulapaughFranceIvan Magalhaes NEW
Smith P GarufiItalyAsiya Javayant RENEWAL
Kaitlin P CampainAustraliaIvan Magalhaes UNQUALIFIED
Kadeem O SlusarskiGermanyStephen Shaw QUALIFIED
Silvio K WieserFranceIoni Bowcher PROPOSAL
Wickens K OldroydFranceStephen Shaw UNQUALIFIED
Johnson S OldroydRussiaIoni Bowcher PROPOSAL
Chavez K WhobreyArgentinaAmy Elsner PROPOSAL
Clifford L ShinkoJapanAsiya Javayant NEGOTIATION
Greenwood B WhobreyAustraliaOnyama Limba NEGOTIATION
Maria S OstroskyFranceIvan Magalhaes RENEWAL
Smith P IturbideFranceElwin Sharvill UNQUALIFIED
Antonio W KolmetzRussiaBernardo Dominic RENEWAL
David M GlickCanadaStephen Shaw PROPOSAL
Morrow I MaletSpainIvan Magalhaes UNQUALIFIED
Octavia N AmigonSpainAsiya Javayant NEGOTIATION
Greenwood W CaldareraIndiaIoni Bowcher UNQUALIFIED
Cody C InouyeSpainIoni Bowcher PROPOSAL
Antonio U RoysterSpainAmy Elsner UNQUALIFIED
Maria O SergiGermanyOnyama Limba UNQUALIFIED
Izzy K BowleyItalyIvan Magalhaes PROPOSAL
Johnson F StockhamJapanStephen Shaw QUALIFIED
Stacey J PaprockiAustraliaElwin Sharvill RENEWAL
David Z FigeroaSpainXuxue Feng RENEWAL
Maria F StockhamSpainStephen Shaw NEGOTIATION
Rodrigues I FigeroaJapanIvan Magalhaes UNQUALIFIED
Greenwood B IturbideGermanyStephen Shaw QUALIFIED
Morrow C SergiAustraliaXuxue Feng NEGOTIATION
Aruna F KuskoCanadaAmy Elsner NEW
Octavia C FollerFranceAsiya Javayant PROPOSAL
Isabel V InouyeJapanAnna Fali PROPOSAL
Wickens N VenereIndiaAnna Fali UNQUALIFIED
Clifford R KuskoBrazilAnna Fali QUALIFIED
Kaitlin U MarrierFranceOnyama Limba UNQUALIFIED
Antonio M RimBrazilAsiya Javayant UNQUALIFIED
Cody X IturbideGermanyXuxue Feng NEGOTIATION
Jeanfrancois U PoquetteCanadaBernardo Dominic UNQUALIFIED
Rodrigues J InouyeUnited KingdomBernardo Dominic QUALIFIED
Antonio P FigeroaAustraliaIvan Magalhaes PROPOSAL
Greenwood D OldroydCanadaXuxue Feng QUALIFIED
Jeanfrancois K RimSpainAsiya Javayant PROPOSAL
Jennifer F SergiCanadaStephen Shaw NEGOTIATION
Antonio P SlusarskiArgentinaAmy Elsner NEGOTIATION
Juan V RimJapanAsiya Javayant RENEWAL
Aruna T NickaAustraliaXuxue Feng UNQUALIFIED
Greenwood Q KolmetzArgentinaAmy Elsner PROPOSAL
Ricardo N CaldareraItalyAmy Elsner NEGOTIATION
Frozen Columns
Name
Nicolas W Royster
Maria B Caldarera
Jennifer G Nicka
Julie X Marrier
Octavia R Ostrosky
Octavia O Vocelka
Johnson X Ferencz
Misaki R Sergi
Alejandro I Amigon
Faith P Gillian
Claire I Briddick
Clifford Q Wieser
Emily Q Flosi
Isabel L Wieser
Salvatore T Gaucho
Faith X Campain
Kaitlin M Nicka
Isabel U Chui
David U Nestle
James G Shinko
Francesco W Inouye
Adams L Rulapaugh
Octavia T Inouye
Murillo R Ruta
Francesco D Campain
Wickens O Morasca
Jeanfrancois V Amigon
Sinclair V Briddick
Stacey V Royster
Juan U Darakjy
Tony W Gaucho
Octavia S Schemmer
Ricardo K Venere
David G Royster
Julie L Ferencz
Stacey E Glick
Wickens H Figeroa
Jeanfrancois I Venere
Mayumi L Ruta
Ricardo T Foller
Aika Z Whobrey
Stacey W Schemmer
Nicolas N Shinko
Smith K Nestle
Deepesh I Waycott
Octavia G Tollner
Claire I Rim
Murillo C Paprocki
David E Nicka
Adams P Darakjy
IdCountryDate
1000Italy2024-04-03
1001France2024-04-14
1002Italy2024-04-23
1003Australia2024-04-14
1004Italy2024-04-16
1005Germany2024-04-25
1006Argentina2024-03-30
1007United Kingdom2024-04-13
1008France2024-04-24
1009Brazil2024-03-31
1010Canada2024-04-26
1011Australia2024-04-23
1012Italy2024-04-15
1013Russia2024-04-06
1014Brazil2024-04-17
1015India2024-03-31
1016Brazil2024-04-04
1017Brazil2024-04-21
1018Spain2024-04-08
1019Spain2024-04-05
1020Japan2024-04-01
1021France2024-04-13
1022Brazil2024-04-03
1023Russia2024-03-28
1024Argentina2024-04-02
1025France2024-04-01
1026Australia2024-04-22
1027Italy2024-04-08
1028Brazil2024-04-25
1029Brazil2024-04-08
1030Japan2024-04-09
1031Spain2024-04-11
1032Italy2024-04-14
1033Italy2024-04-18
1034France2024-04-01
1035Australia2024-04-25
1036Argentina2024-04-12
1037Japan2024-04-13
1038Spain2024-04-03
1039Spain2024-03-31
1040Italy2024-04-15
1041United Kingdom2024-03-31
1042Argentina2024-04-15
1043France2024-04-23
1044Canada2024-04-03
1045Spain2024-04-23
1046Germany2024-04-22
1047Canada2024-04-21
1048Russia2024-04-05
1049Russia2024-04-18

On-Demand Data

NameIdCountryDate
Aruna F Inouye1000Spain2024-04-05
Faith F Briddick1001Germany2024-04-20
Deepesh H Garufi1002Russia2024-03-30
Johnson N Caldarera1003Germany2024-04-14
Leon Z Campain1004Japan2024-04-05
Faith N Royster1005Australia2024-04-11
Alejandro K Perin1006Russia2024-03-29
Greenwood Z Marrier1007Germany2024-04-25
Maria C Inouye1008Brazil2024-04-08
Claire P Oldroyd1009France2024-04-18
Cody Q Oldroyd1010Italy2024-04-19
Jeanfrancois R Rulapaugh1011Italy2024-04-20
Jefferson Y Iturbide1012Argentina2024-04-24
Stacey I Tollner1013Spain2024-04-20
Murillo T Tollner1014Brazil2024-04-22
Greenwood O Albares1015India2024-03-29
Stacey V Bowley1016Brazil2024-03-30
Morrow Y Perin1017Brazil2024-04-24
Darci M Maclead1018Argentina2024-04-03
Jennifer D Ferencz1019Canada2024-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood S WhobreySpainXuxue Feng NEW
Antonio L PoquetteGermanyOnyama Limba NEGOTIATION
Johnson Z CaldareraIndiaAsiya Javayant UNQUALIFIED
Izzy M NestleItalyAnna Fali QUALIFIED
Costa J CampainFranceAmy Elsner PROPOSAL
Smith O BriddickGermanyIoni Bowcher QUALIFIED
David R MarrierRussiaXuxue Feng RENEWAL
Octavia E MaletBrazilAnna Fali UNQUALIFIED
Leja A BriddickArgentinaAsiya Javayant NEGOTIATION
Adams A FerenczGermanyAnna Fali QUALIFIED
Costa W OstroskyBrazilOnyama Limba NEW
Tony A AlbaresIndiaStephen Shaw NEW
Aika F OldroydIndiaOnyama Limba RENEWAL
Costa B NickaRussiaAmy Elsner NEGOTIATION
Johnson B SergiCanadaIoni Bowcher NEGOTIATION
Rodrigues V KuskoArgentinaIvan Magalhaes NEW
Ivar V PerinUnited KingdomAsiya Javayant UNQUALIFIED
Murillo U DoeBrazilIvan Magalhaes PROPOSAL
Francesco G RoysterFranceAmy Elsner NEW
Salvatore B PerinRussiaBernardo Dominic NEW
Sinclair Y GillianBrazilIvan Magalhaes RENEWAL
Juan K CampainJapanStephen Shaw UNQUALIFIED
Jefferson R AmigonCanadaOnyama Limba NEW
Darci K RimSpainIvan Magalhaes UNQUALIFIED
Leon F NestleSpainOnyama Limba NEGOTIATION
Johnson T AmigonBrazilAsiya Javayant NEGOTIATION
Jones Q WaycottUnited KingdomAnna Fali UNQUALIFIED
Nicolas Q GauchoRussiaAmy Elsner RENEWAL
Ivar Z VenereCanadaOnyama Limba NEW
Kaitlin F CaldareraBrazilAmy Elsner UNQUALIFIED
Ashley Z RimFranceElwin Sharvill NEGOTIATION
Antonio K DilliardGermanyAsiya Javayant PROPOSAL
Claire D MacleadUnited KingdomIoni Bowcher NEGOTIATION
Jeanfrancois O RimFranceElwin Sharvill QUALIFIED
Arvin G FlosiItalyAmy Elsner NEW
Adams P MaletJapanXuxue Feng NEW
Maria P InouyeJapanAsiya Javayant NEGOTIATION
James M GillianGermanyIoni Bowcher QUALIFIED
Kaitlin R DilliardUnited KingdomAnna Fali RENEWAL
Maisha V RutaAustraliaOnyama Limba PROPOSAL

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