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
Octavia K AlbaresBrazilXuxue Feng PROPOSAL
Jefferson F OldroydArgentinaAmy Elsner NEGOTIATION
David T BowleyFranceOnyama Limba QUALIFIED
David P VocelkaArgentinaOnyama Limba PROPOSAL
Smith R OldroydIndiaBernardo Dominic UNQUALIFIED
Nicolas E BriddickSpainAmy Elsner QUALIFIED
Kaitlin L RulapaughCanadaElwin Sharvill RENEWAL
Stacey H MarrierCanadaAmy Elsner NEGOTIATION
Leon Z MorascaBrazilIvan Magalhaes UNQUALIFIED
Nicolas G DoeIndiaAsiya Javayant QUALIFIED
Antonio Z CaldareraJapanOnyama Limba NEW
Jennifer K DilliardAustraliaAsiya Javayant RENEWAL
Aruna O DarakjyJapanStephen Shaw QUALIFIED
Cody A SchemmerCanadaStephen Shaw RENEWAL
Cody L SergiUnited KingdomAmy Elsner NEGOTIATION
Julie G MaletJapanIoni Bowcher NEGOTIATION
Darci Q PerinCanadaIvan Magalhaes RENEWAL
Isabel E MacleadJapanOnyama Limba NEW
Francesco V WaycottBrazilAsiya Javayant RENEWAL
Leon M GarufiRussiaBernardo Dominic NEGOTIATION
Johnson K FlosiSpainElwin Sharvill UNQUALIFIED
Deepesh I IturbideCanadaXuxue Feng NEW
Julie M MacleadCanadaAnna Fali PROPOSAL
Rodrigues R PaprockiAustraliaElwin Sharvill PROPOSAL
Antonio X SchemmerArgentinaAnna Fali NEGOTIATION
Rodrigues W DoeItalyAmy Elsner NEGOTIATION
Kaitlin P FigeroaGermanyXuxue Feng NEW
Juan U ChuiArgentinaElwin Sharvill NEGOTIATION
Francesco M MacleadArgentinaXuxue Feng UNQUALIFIED
Mujtaba J PerinCanadaIoni Bowcher RENEWAL
Sinclair T SchemmerRussiaStephen Shaw NEGOTIATION
Antonio H StockhamSpainAsiya Javayant UNQUALIFIED
Chavez S OldroydRussiaOnyama Limba QUALIFIED
Misaki S KolmetzFranceIoni Bowcher QUALIFIED
Jefferson O IturbideJapanAnna Fali NEW
Emily W MaletSpainXuxue Feng PROPOSAL
Leja F RutaIndiaIoni Bowcher UNQUALIFIED
Adams A BologniaCanadaElwin Sharvill NEGOTIATION
Murillo D KolmetzIndiaIvan Magalhaes PROPOSAL
James K DarakjyFranceStephen Shaw NEGOTIATION
Salvatore M BriddickAustraliaBernardo Dominic UNQUALIFIED
Jeanfrancois R FollerAustraliaIoni Bowcher QUALIFIED
Smith U RimJapanXuxue Feng QUALIFIED
Silvio R TollnerFranceOnyama Limba PROPOSAL
Costa D DilliardArgentinaStephen Shaw NEGOTIATION
Sinclair N VenereSpainAsiya Javayant NEGOTIATION
Chavez L MarrierArgentinaIoni Bowcher RENEWAL
Aditya H VocelkaCanadaStephen Shaw NEGOTIATION
Tony S StensethItalyBernardo Dominic RENEWAL
Silvio A PerinAustraliaOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Salvatore T WieserAustraliaStephen Shaw RENEWAL
Tony W AmigonAustraliaXuxue Feng QUALIFIED
Wickens B FlosiIndiaAnna Fali PROPOSAL
David P VocelkaSpainElwin Sharvill NEW
Morrow R MarrierItalyIvan Magalhaes UNQUALIFIED
Francesco K RutaAustraliaAnna Fali PROPOSAL
Darci Y SergiSpainAmy Elsner RENEWAL
Salvatore F StockhamJapanAsiya Javayant RENEWAL
Ivar L BologniaGermanyBernardo Dominic RENEWAL
Kadeem T TollnerCanadaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro A SergiSpain2024-04-09Truhlar And Truhlar Attys NEGOTIATION35Bernardo Dominic
1001Kadeem C SaylorsIndia2024-04-13Benton, John B Jr UNQUALIFIED59Anna Fali
1002Isabel V VocelkaJapan2024-04-26Chapman, Ross E Esq RENEWAL61Bernardo Dominic
1003Clifford B VocelkaRussia2024-04-18Rangoni Of Florence NEGOTIATION74Anna Fali
1004Aika T PerinAustralia2024-04-30Truhlar And Truhlar Attys PROPOSAL47Elwin Sharvill
1005Maisha C TollnerCanada2024-04-10King, Christopher A Esq PROPOSAL17Ivan Magalhaes
1006Deepesh W IturbideBrazil2024-05-02Benton, John B Jr NEGOTIATION77Anna Fali
1007Antonio F InouyeBrazil2024-04-25Chanay, Jeffrey A Esq QUALIFIED37Anna Fali
1008Silvio D RulapaughUnited Kingdom2024-04-18Morlong Associates RENEWAL78Ioni Bowcher
1009Morrow W RutaItaly2024-04-10Chemel, James L Cpa RENEWAL76Bernardo Dominic
1010Stacey K RutaArgentina2024-04-10Feltz Printing Service RENEWAL38Anna Fali
1011Costa K PoquetteJapan2024-04-15Morlong Associates UNQUALIFIED71Ivan Magalhaes
1012Claire Q ShinkoFrance2024-04-28Morlong Associates NEGOTIATION15Elwin Sharvill
1013Leja Z VocelkaSpain2024-04-07Feiner Bros UNQUALIFIED83Amy Elsner
1014Jefferson Q ButtBrazil2024-05-06Buckley Miller Wright PROPOSAL15Stephen Shaw
1015James F MorascaItaly2024-04-14Chemel, James L Cpa NEGOTIATION87Xuxue Feng
1016Emily N WaycottFrance2024-04-18Buckley Miller Wright NEW13Asiya Javayant
1017Murillo Y FollerIndia2024-04-21Buckley Miller Wright QUALIFIED71Stephen Shaw
1018Munro B DarakjyFrance2024-04-30Benton, John B Jr PROPOSAL32Asiya Javayant
1019Francesco M RulapaughItaly2024-05-05Chapman, Ross E Esq QUALIFIED18Elwin Sharvill
1020James Y MaletBrazil2024-05-02Chapman, Ross E Esq UNQUALIFIED47Amy Elsner
1021Costa Y PaprockiItaly2024-05-03Rangoni Of Florence NEW1Asiya Javayant
1022Izzy C StensethSpain2024-04-17King, Christopher A Esq NEGOTIATION68Anna Fali
1023Mujtaba T StockhamArgentina2024-04-17Printing Dimensions UNQUALIFIED53Stephen Shaw
1024Isabel Q FollerCanada2024-04-21King, Christopher A Esq QUALIFIED34Elwin Sharvill
1025Tony E DilliardBrazil2024-04-20Chemel, James L Cpa NEGOTIATION5Onyama Limba
1026Rodrigues G OstroskyArgentina2024-04-13Rangoni Of Florence PROPOSAL9Asiya Javayant
1027Costa D DarakjyItaly2024-04-16Commercial Press PROPOSAL71Amy Elsner
1028Kadeem D InouyeGermany2024-05-02Dorl, James J Esq NEGOTIATION24Amy Elsner
1029Costa T MaletBrazil2024-04-11Chapman, Ross E Esq QUALIFIED12Onyama Limba
1030Deepesh B RutaUnited Kingdom2024-05-06Feltz Printing Service NEGOTIATION16Asiya Javayant
1031Misaki Y SchemmerRussia2024-04-11Chapman, Ross E Esq RENEWAL5Asiya Javayant
1032Ricardo B CaudyIndia2024-04-26Buckley Miller Wright NEGOTIATION99Elwin Sharvill
1033Silvio B DoeCanada2024-04-17Chemel, James L Cpa NEW65Bernardo Dominic
1034Aditya I WieserAustralia2024-05-05Morlong Associates NEW25Asiya Javayant
1035Rodrigues T PaprockiCanada2024-04-23Dorl, James J Esq QUALIFIED85Stephen Shaw
1036Julie X CaudyJapan2024-04-13Chanay, Jeffrey A Esq NEGOTIATION93Ivan Magalhaes
1037Adams Y FollerUnited Kingdom2024-04-14Rousseaux, Michael Esq RENEWAL76Amy Elsner
1038Faith Q ChuiGermany2024-04-30Commercial Press NEGOTIATION64Onyama Limba
1039Greenwood U StockhamIndia2024-04-18Chemel, James L Cpa PROPOSAL70Xuxue Feng
1040Alejandro X SchemmerBrazil2024-04-10Buckley Miller Wright UNQUALIFIED41Amy Elsner
1041Aruna R SchemmerArgentina2024-04-28King, Christopher A Esq NEW86Ivan Magalhaes
1042James N CaudyCanada2024-04-22Buckley Miller Wright PROPOSAL82Elwin Sharvill
1043Jones J DarakjyArgentina2024-04-08Buckley Miller Wright NEW93Ivan Magalhaes
1044Aruna M ShinkoCanada2024-04-25Rangoni Of Florence PROPOSAL47Anna Fali
1045Greenwood J MaletArgentina2024-04-10Commercial Press PROPOSAL70Bernardo Dominic
1046Costa Y PaprockiIndia2024-04-13Feltz Printing Service PROPOSAL59Elwin Sharvill
1047Misaki F CaldareraGermany2024-04-14King, Christopher A Esq UNQUALIFIED27Amy Elsner
1048Chavez L FollerIndia2024-04-24Chemel, James L Cpa RENEWAL22Ivan Magalhaes
1049Chavez F InouyeRussia2024-04-22Benton, John B Jr NEGOTIATION65Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Deepesh H DoeUnited KingdomIvan Magalhaes UNQUALIFIED
Deepesh F SchemmerSpainAsiya Javayant PROPOSAL
Costa G InouyeFranceAmy Elsner NEW
Clifford Y NickaBrazilAmy Elsner UNQUALIFIED
Rodrigues I SaylorsGermanyAsiya Javayant NEGOTIATION
Isabel O CaldareraItalyElwin Sharvill PROPOSAL
Octavia K PoquetteBrazilIvan Magalhaes PROPOSAL
Murillo E BologniaFranceAnna Fali QUALIFIED
Costa I IturbideAustraliaElwin Sharvill UNQUALIFIED
Faith R DarakjyRussiaElwin Sharvill PROPOSAL
Stacey G PerinJapanBernardo Dominic QUALIFIED
Stacey N BowleyCanadaStephen Shaw QUALIFIED
Morrow Z FollerJapanIoni Bowcher RENEWAL
Maria E SlusarskiFranceElwin Sharvill PROPOSAL
Jones M DoeCanadaOnyama Limba UNQUALIFIED
Octavia C BriddickAustraliaIvan Magalhaes RENEWAL
Aruna U ShinkoUnited KingdomAmy Elsner NEGOTIATION
James E BowleyGermanyAmy Elsner NEW
Deepesh H MacleadItalyStephen Shaw QUALIFIED
Juan E MorascaIndiaBernardo Dominic QUALIFIED
Morrow G OldroydBrazilIvan Magalhaes RENEWAL
Aditya Q StockhamSpainIoni Bowcher PROPOSAL
Johnson X MarrierGermanyElwin Sharvill UNQUALIFIED
Leon B RulapaughArgentinaBernardo Dominic QUALIFIED
Wickens V CaudyUnited KingdomAsiya Javayant NEGOTIATION
Mujtaba P TollnerGermanyElwin Sharvill RENEWAL
Izzy F KolmetzBrazilAnna Fali UNQUALIFIED
Arvin K GlickSpainAmy Elsner QUALIFIED
Julie T DilliardAustraliaElwin Sharvill PROPOSAL
Munro S PaprockiFranceStephen Shaw PROPOSAL
Ivar V NestleSpainXuxue Feng UNQUALIFIED
Maisha R SchemmerBrazilAmy Elsner UNQUALIFIED
Greenwood V GlickUnited KingdomAsiya Javayant UNQUALIFIED
Izzy Y GauchoFranceAsiya Javayant UNQUALIFIED
Deepesh U RutaFranceAsiya Javayant NEGOTIATION
Silvio F AmigonAustraliaElwin Sharvill PROPOSAL
Stacey Z NickaRussiaIvan Magalhaes RENEWAL
Claire U VocelkaCanadaStephen Shaw QUALIFIED
Aruna U PoquetteCanadaAsiya Javayant NEW
Morrow A MacleadItalyAmy Elsner NEW
Cody M CaldareraFranceBernardo Dominic UNQUALIFIED
Deepesh D RulapaughGermanyStephen Shaw NEW
Arvin Y MarrierIndiaBernardo Dominic PROPOSAL
Jeanfrancois J SaylorsUnited KingdomBernardo Dominic PROPOSAL
Isabel G KuskoBrazilStephen Shaw RENEWAL
Claire I FollerCanadaAmy Elsner UNQUALIFIED
Cody Z PaprockiArgentinaIoni Bowcher UNQUALIFIED
Jefferson S VocelkaIndiaAnna Fali NEGOTIATION
Tony X NickaCanadaAsiya Javayant NEGOTIATION
Cody X PaprockiSpainIvan Magalhaes RENEWAL
Frozen Columns
Name
Ashley E Caldarera
Darci C Malet
Claire B Doe
Munro G Kolmetz
Mujtaba S Saylors
Leon K Caldarera
Costa G Malet
Alejandro V Briddick
Munro H Glick
Sinclair B Doe
Smith I Figeroa
Wickens R Iturbide
Kaitlin W Gaucho
Adams Q Foller
Juan N Campain
Maisha T Rim
Chavez B Oldroyd
Wickens G Schemmer
Misaki T Albares
Misaki Y Rim
Mayumi Q Kusko
Adams O Chui
Aruna E Dilliard
Jones B Glick
Deepesh H Vocelka
Juan E Figeroa
Sinclair T Ferencz
Wickens M Butt
Smith G Nestle
Jones G Tollner
Tony O Saylors
James A Bolognia
Munro S Wieser
Costa J Nestle
Misaki Y Tollner
Maria T Stenseth
Mayumi V Foller
Deepesh H Flosi
Julie Q Waycott
Alejandro K Waycott
Antonio I Slusarski
Costa N Ferencz
Salvatore V Doe
Julie N Figeroa
Leja S Caldarera
Jeanfrancois F Albares
Jones U Nestle
David T Oldroyd
Jefferson T Rim
Adams F Campain
IdCountryDate
1000Germany2024-04-18
1001Australia2024-05-01
1002United Kingdom2024-04-28
1003France2024-04-14
1004Italy2024-04-30
1005Japan2024-05-06
1006Brazil2024-05-01
1007Russia2024-04-24
1008Brazil2024-04-30
1009Argentina2024-04-22
1010Germany2024-05-03
1011Japan2024-04-11
1012Spain2024-04-26
1013Germany2024-04-25
1014Germany2024-04-28
1015Canada2024-04-30
1016Russia2024-04-30
1017Spain2024-05-02
1018France2024-04-27
1019Argentina2024-05-06
1020India2024-04-19
1021Russia2024-04-13
1022Canada2024-05-04
1023Brazil2024-04-21
1024Italy2024-04-25
1025Russia2024-04-25
1026India2024-05-03
1027Canada2024-04-12
1028Argentina2024-04-20
1029France2024-05-03
1030Australia2024-04-26
1031Japan2024-04-30
1032Canada2024-04-17
1033Spain2024-04-14
1034Argentina2024-04-14
1035Russia2024-04-25
1036Argentina2024-04-08
1037Russia2024-04-09
1038Australia2024-05-01
1039Brazil2024-04-24
1040Russia2024-04-18
1041Australia2024-04-16
1042Japan2024-04-29
1043Australia2024-04-21
1044India2024-05-03
1045Brazil2024-04-29
1046Spain2024-04-11
1047Spain2024-04-23
1048Japan2024-04-30
1049Canada2024-05-01

On-Demand Data

NameIdCountryDate
James U Darakjy1000Japan2024-04-18
Julie X Garufi1001Spain2024-05-04
Kadeem Z Gaucho1002India2024-04-30
Maria K Darakjy1003Russia2024-04-26
Ashley M Rulapaugh1004Germany2024-04-24
Clifford G Morasca1005Canada2024-05-02
Claire S Marrier1006Canada2024-04-08
Ricardo F Gaucho1007France2024-05-06
Tony W Royster1008Italy2024-04-28
Mujtaba W Malet1009Italy2024-04-08
Aruna F Malet1010Spain2024-04-29
Jeanfrancois V Briddick1011Australia2024-04-10
Adams P Malet1012United Kingdom2024-04-19
Francesco L Paprocki1013Japan2024-04-16
Wickens P Schemmer1014United Kingdom2024-04-20
Adams M Malet1015Canada2024-05-01
Emily U Whobrey1016India2024-04-23
Francesco X Schemmer1017Japan2024-04-30
Greenwood J Ostrosky1018Brazil2024-04-14
Clifford M Gillian1019India2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro S OstroskySpainElwin Sharvill RENEWAL
Julie H CaldareraItalyIvan Magalhaes QUALIFIED
Izzy M ShinkoArgentinaAnna Fali RENEWAL
Alejandro T SchemmerRussiaElwin Sharvill QUALIFIED
Wickens G GauchoSpainAnna Fali PROPOSAL
Aditya O SlusarskiGermanyIvan Magalhaes PROPOSAL
Rodrigues C CampainUnited KingdomXuxue Feng RENEWAL
Adams T SaylorsRussiaStephen Shaw UNQUALIFIED
Jennifer A KolmetzJapanOnyama Limba NEGOTIATION
Maisha F PoquetteIndiaIoni Bowcher QUALIFIED
Arvin W KolmetzJapanIoni Bowcher QUALIFIED
Salvatore L MacleadArgentinaAmy Elsner PROPOSAL
Wickens E BologniaGermanyAnna Fali QUALIFIED
Nicolas E MarrierBrazilIvan Magalhaes NEW
Munro U OstroskyItalyStephen Shaw NEGOTIATION
Aruna H WieserRussiaIoni Bowcher NEW
Stacey P BologniaArgentinaXuxue Feng NEGOTIATION
Julie Y PerinUnited KingdomAmy Elsner RENEWAL
Tony B OstroskySpainElwin Sharvill NEGOTIATION
James P FollerItalyElwin Sharvill UNQUALIFIED
Nicolas T ShinkoBrazilAsiya Javayant NEGOTIATION
Chavez Z OstroskyRussiaElwin Sharvill RENEWAL
Jones S SergiRussiaAmy Elsner UNQUALIFIED
Arvin U TollnerGermanyAnna Fali UNQUALIFIED
Francesco Z CaldareraCanadaAsiya Javayant QUALIFIED
Mayumi O DarakjyAustraliaIvan Magalhaes RENEWAL
James O FollerCanadaElwin Sharvill NEW
Jefferson K InouyeArgentinaStephen Shaw UNQUALIFIED
Maisha J RimItalyElwin Sharvill NEGOTIATION
Munro V WieserArgentinaIoni Bowcher PROPOSAL
Izzy F FerenczRussiaIoni Bowcher NEGOTIATION
Jennifer J MacleadFranceOnyama Limba QUALIFIED
Chavez U MaletUnited KingdomBernardo Dominic QUALIFIED
Darci U StockhamRussiaBernardo Dominic NEGOTIATION
Ashley B OstroskySpainIvan Magalhaes QUALIFIED
James G DilliardBrazilIvan Magalhaes UNQUALIFIED
Emily X SchemmerAustraliaXuxue Feng PROPOSAL
Wickens U GillianArgentinaOnyama Limba PROPOSAL
Aruna I PerinUnited KingdomStephen Shaw QUALIFIED
Johnson S PerinJapanOnyama Limba UNQUALIFIED

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