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 R WieserRussiaAnna Fali QUALIFIED
Aditya X BowleyCanadaXuxue Feng RENEWAL
Isabel I SaylorsCanadaIvan Magalhaes NEW
Emily T AlbaresGermanyStephen Shaw UNQUALIFIED
Aika H SergiRussiaElwin Sharvill RENEWAL
Aditya X TollnerArgentinaXuxue Feng QUALIFIED
Leon T NestleFranceXuxue Feng PROPOSAL
Darci Y RulapaughAustraliaAmy Elsner RENEWAL
David L RutaIndiaIvan Magalhaes QUALIFIED
Darci B MarrierCanadaStephen Shaw RENEWAL
Morrow D MacleadGermanyIoni Bowcher NEW
Antonio F PaprockiArgentinaOnyama Limba PROPOSAL
David O TollnerUnited KingdomXuxue Feng PROPOSAL
Mayumi C AmigonUnited KingdomBernardo Dominic UNQUALIFIED
Clifford H PoquetteSpainAmy Elsner QUALIFIED
Morrow N VenereAustraliaAmy Elsner PROPOSAL
Silvio N IturbideCanadaElwin Sharvill UNQUALIFIED
Jennifer Z NickaSpainIvan Magalhaes QUALIFIED
Sinclair F InouyeAustraliaXuxue Feng PROPOSAL
Silvio F SchemmerItalyStephen Shaw NEGOTIATION
Ivar Z SergiIndiaIoni Bowcher RENEWAL
Francesco A DilliardAustraliaStephen Shaw PROPOSAL
Smith X WieserFranceElwin Sharvill PROPOSAL
Isabel K ChuiGermanyIvan Magalhaes UNQUALIFIED
Costa U MaletAustraliaAsiya Javayant RENEWAL
Ashley R CampainJapanElwin Sharvill RENEWAL
Isabel K RimArgentinaIvan Magalhaes RENEWAL
Clifford Q PerinUnited KingdomElwin Sharvill NEW
Jeanfrancois D StockhamRussiaXuxue Feng UNQUALIFIED
Ivar B MarrierFranceIoni Bowcher NEGOTIATION
Emily H MaletBrazilAnna Fali NEW
Juan I MaletUnited KingdomAmy Elsner UNQUALIFIED
Darci F RimJapanElwin Sharvill PROPOSAL
Costa F GarufiItalyStephen Shaw NEGOTIATION
Chavez V NickaCanadaXuxue Feng UNQUALIFIED
Nicolas W AlbaresBrazilBernardo Dominic NEW
Ashley M WaycottAustraliaElwin Sharvill NEGOTIATION
Octavia H PoquetteIndiaOnyama Limba NEGOTIATION
Alejandro S MacleadSpainOnyama Limba NEW
Izzy A SergiItalyAsiya Javayant NEGOTIATION
David U AlbaresJapanBernardo Dominic UNQUALIFIED
Aika Z PaprockiIndiaIoni Bowcher UNQUALIFIED
Arvin L ButtItalyBernardo Dominic NEW
Leon A NestleSpainStephen Shaw QUALIFIED
Clifford V MorascaCanadaAnna Fali NEW
Stacey L MaletRussiaAnna Fali UNQUALIFIED
Adams B PaprockiBrazilAnna Fali RENEWAL
Sinclair U PoquetteBrazilElwin Sharvill RENEWAL
Cody A RimCanadaBernardo Dominic PROPOSAL
Maisha N StensethRussiaAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Jennifer D SergiIndiaAnna Fali NEW
Juan J MaletArgentinaIoni Bowcher NEGOTIATION
Jeanfrancois J VocelkaJapanAnna Fali PROPOSAL
Izzy T IturbideCanadaOnyama Limba NEGOTIATION
Leon G OldroydUnited KingdomXuxue Feng NEGOTIATION
Antonio Z FlosiRussiaAsiya Javayant UNQUALIFIED
Antonio D NestleAustraliaAnna Fali NEW
Jefferson G IturbideUnited KingdomIvan Magalhaes QUALIFIED
Faith N AmigonSpainBernardo Dominic NEGOTIATION
James M MaletAustraliaOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie I CaudyArgentina2024-04-12Chapman, Ross E Esq PROPOSAL36Xuxue Feng
1001Octavia R KuskoAustralia2024-04-02Feltz Printing Service UNQUALIFIED71Xuxue Feng
1002Murillo L DarakjyFrance2024-04-04Rousseaux, Michael Esq RENEWAL61Bernardo Dominic
1003Izzy X InouyeIndia2024-04-17King, Christopher A Esq NEGOTIATION19Amy Elsner
1004Stacey K SaylorsJapan2024-04-21Printing Dimensions NEGOTIATION72Ivan Magalhaes
1005Juan D VenereBrazil2024-04-07Chapman, Ross E Esq RENEWAL36Onyama Limba
1006Darci R RimCanada2024-04-30Truhlar And Truhlar Attys UNQUALIFIED62Amy Elsner
1007Julie A WhobreyCanada2024-04-13Dorl, James J Esq UNQUALIFIED71Bernardo Dominic
1008Ivar E InouyeItaly2024-04-25Feiner Bros NEW77Amy Elsner
1009Jennifer K GarufiRussia2024-04-07Chanay, Jeffrey A Esq PROPOSAL24Anna Fali
1010Octavia A ChuiBrazil2024-04-04Dorl, James J Esq UNQUALIFIED65Amy Elsner
1011Faith S ShinkoAustralia2024-04-19Chapman, Ross E Esq QUALIFIED99Onyama Limba
1012Tony G TollnerAustralia2024-04-09Feltz Printing Service NEW53Stephen Shaw
1013Murillo B SlusarskiAustralia2024-04-03Rousseaux, Michael Esq NEW51Anna Fali
1014Darci T FerenczItaly2024-04-20Feiner Bros UNQUALIFIED21Elwin Sharvill
1015Maisha E MorascaFrance2024-04-12Chemel, James L Cpa RENEWAL65Elwin Sharvill
1016Silvio A NickaJapan2024-04-04Feiner Bros UNQUALIFIED59Bernardo Dominic
1017Ashley A SchemmerGermany2024-04-29Chapman, Ross E Esq QUALIFIED64Xuxue Feng
1018Leja O NickaGermany2024-04-15Rangoni Of Florence QUALIFIED13Elwin Sharvill
1019Jefferson L VenereJapan2024-04-30Commercial Press UNQUALIFIED63Xuxue Feng
1020Jennifer J RutaGermany2024-04-23Morlong Associates PROPOSAL23Xuxue Feng
1021James S GillianCanada2024-04-04Commercial Press UNQUALIFIED67Ioni Bowcher
1022Mayumi Q VocelkaGermany2024-04-19Morlong Associates PROPOSAL17Asiya Javayant
1023James J RutaSpain2024-04-09King, Christopher A Esq NEGOTIATION22Asiya Javayant
1024Kaitlin U BologniaGermany2024-04-26Dorl, James J Esq UNQUALIFIED36Bernardo Dominic
1025Jones X VocelkaGermany2024-04-02Buckley Miller Wright RENEWAL7Onyama Limba
1026Mayumi W CaudyRussia2024-04-08Feiner Bros QUALIFIED1Elwin Sharvill
1027Nicolas Y WaycottJapan2024-04-27Commercial Press QUALIFIED80Onyama Limba
1028Faith J VenereItaly2024-04-02King, Christopher A Esq NEGOTIATION86Ivan Magalhaes
1029Juan O KolmetzBrazil2024-04-14Truhlar And Truhlar Attys QUALIFIED18Onyama Limba
1030Stacey E NestleUnited Kingdom2024-04-26Morlong Associates QUALIFIED37Elwin Sharvill
1031Leon B SlusarskiFrance2024-04-22Truhlar And Truhlar Attys PROPOSAL64Ioni Bowcher
1032Silvio Y BriddickAustralia2024-04-28Morlong Associates NEGOTIATION91Anna Fali
1033Johnson N FigeroaJapan2024-04-30Printing Dimensions QUALIFIED17Elwin Sharvill
1034Cody G MarrierSpain2024-04-05Morlong Associates UNQUALIFIED69Onyama Limba
1035James P StensethCanada2024-04-05Dorl, James J Esq PROPOSAL57Asiya Javayant
1036Morrow D OldroydRussia2024-04-17Chapman, Ross E Esq RENEWAL12Stephen Shaw
1037Kaitlin X BologniaBrazil2024-04-14Rangoni Of Florence RENEWAL1Ivan Magalhaes
1038Misaki U MaletAustralia2024-04-12Buckley Miller Wright QUALIFIED71Ioni Bowcher
1039Aditya R CaudyAustralia2024-04-29Chanay, Jeffrey A Esq NEW11Bernardo Dominic
1040Mujtaba R FerenczIndia2024-04-16Buckley Miller Wright UNQUALIFIED0Stephen Shaw
1041Octavia K RimFrance2024-04-14Chapman, Ross E Esq QUALIFIED51Xuxue Feng
1042Clifford O VenereCanada2024-04-15Morlong Associates PROPOSAL13Ivan Magalhaes
1043David S DilliardGermany2024-04-16Rousseaux, Michael Esq NEW68Stephen Shaw
1044Jennifer J WieserFrance2024-04-21King, Christopher A Esq NEW71Asiya Javayant
1045Aika J FigeroaUnited Kingdom2024-04-04Chemel, James L Cpa PROPOSAL3Elwin Sharvill
1046Emily K VenereBrazil2024-04-18Printing Dimensions RENEWAL99Amy Elsner
1047Emily I OldroydRussia2024-04-27Benton, John B Jr NEGOTIATION60Elwin Sharvill
1048Deepesh F BowleySpain2024-04-04Truhlar And Truhlar Attys NEW23Elwin Sharvill
1049Ashley W DarakjyItaly2024-04-23Printing Dimensions UNQUALIFIED87Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Misaki G RulapaughRussiaStephen Shaw NEW
Francesco Z MaletSpainAnna Fali RENEWAL
Chavez I DarakjyArgentinaAnna Fali QUALIFIED
Leja V ShinkoRussiaXuxue Feng UNQUALIFIED
Mayumi T BologniaGermanyStephen Shaw UNQUALIFIED
Julie D RulapaughGermanyAsiya Javayant UNQUALIFIED
Misaki S BriddickBrazilAmy Elsner QUALIFIED
Morrow F NestleGermanyAnna Fali UNQUALIFIED
Ashley H GlickIndiaIoni Bowcher RENEWAL
James T FlosiFranceElwin Sharvill QUALIFIED
Darci S StensethCanadaOnyama Limba QUALIFIED
Clifford P AlbaresSpainElwin Sharvill UNQUALIFIED
Jeanfrancois T GlickItalyElwin Sharvill UNQUALIFIED
Leon Z MorascaArgentinaXuxue Feng RENEWAL
Kaitlin P GarufiArgentinaAsiya Javayant NEW
Stacey E OstroskyRussiaXuxue Feng NEW
Julie J GillianJapanElwin Sharvill UNQUALIFIED
Aika B WieserBrazilOnyama Limba UNQUALIFIED
Cody X ButtGermanyBernardo Dominic QUALIFIED
Alejandro V InouyeRussiaBernardo Dominic NEW
Francesco W MaletSpainStephen Shaw NEW
Aika D GlickAustraliaOnyama Limba NEGOTIATION
Leja C MarrierAustraliaIvan Magalhaes NEGOTIATION
Rodrigues S BriddickFranceElwin Sharvill RENEWAL
Munro F RoysterGermanyXuxue Feng UNQUALIFIED
Faith B OstroskyUnited KingdomBernardo Dominic NEW
Francesco M StockhamAustraliaElwin Sharvill QUALIFIED
Rodrigues M SaylorsIndiaIvan Magalhaes PROPOSAL
Julie T BriddickItalyElwin Sharvill NEGOTIATION
Morrow R ShinkoCanadaOnyama Limba NEW
Adams E NestleIndiaElwin Sharvill NEGOTIATION
James S FollerRussiaElwin Sharvill NEGOTIATION
Tony T MaletItalyStephen Shaw RENEWAL
Aika S VenereRussiaBernardo Dominic NEGOTIATION
Aditya C ChuiUnited KingdomIoni Bowcher RENEWAL
Smith Q OstroskyRussiaIoni Bowcher UNQUALIFIED
Deepesh U WaycottFranceIvan Magalhaes PROPOSAL
Stacey J BriddickUnited KingdomIoni Bowcher RENEWAL
Juan F SlusarskiBrazilXuxue Feng UNQUALIFIED
Jefferson A DarakjySpainAnna Fali QUALIFIED
Isabel T AmigonRussiaAsiya Javayant QUALIFIED
Jones S KolmetzJapanStephen Shaw QUALIFIED
Alejandro M SergiJapanIoni Bowcher NEW
Francesco W MaletArgentinaIvan Magalhaes RENEWAL
Johnson K GillianJapanAsiya Javayant UNQUALIFIED
Emily Y MacleadRussiaAsiya Javayant NEW
Mujtaba P PaprockiGermanyAsiya Javayant UNQUALIFIED
Maisha T KolmetzArgentinaStephen Shaw PROPOSAL
Jennifer X BowleyRussiaIvan Magalhaes UNQUALIFIED
Maria Z FollerAustraliaAmy Elsner RENEWAL
Frozen Columns
Name
Salvatore O Caudy
Antonio O Kusko
Munro M Stockham
Munro Z Chui
Kaitlin V Malet
Julie R Maclead
Adams N Stockham
Nicolas Y Ruta
James G Nestle
Munro O Stenseth
Adams C Perin
Octavia F Maclead
Isabel L Glick
Ricardo Q Maclead
Octavia D Chui
Maisha V Marrier
Deepesh H Maclead
Jeanfrancois A Whobrey
Johnson W Royster
Murillo H Bolognia
Jones C Vocelka
Greenwood Y Flosi
Aditya D Nestle
Greenwood W Venere
Mayumi L Stenseth
Izzy W Kolmetz
Maisha K Marrier
Greenwood E Inouye
Isabel Q Royster
Julie Q Tollner
Julie X Stenseth
Aika V Waycott
Wickens D Foller
Juan Q Nestle
Leon Z Kusko
Costa X Bolognia
Octavia H Rulapaugh
Emily N Caldarera
Alejandro U Venere
Cody T Ruta
Jones D Maclead
Tony B Rim
Aika Q Ruta
Aditya E Bolognia
Julie T Amigon
Aditya H Albares
Cody G Figeroa
Munro P Ruta
Leon J Gaucho
Jefferson E Slusarski
IdCountryDate
1000United Kingdom2024-04-05
1001India2024-04-11
1002Canada2024-04-09
1003Brazil2024-04-03
1004United Kingdom2024-04-14
1005India2024-04-07
1006Argentina2024-04-12
1007Argentina2024-04-10
1008Italy2024-04-01
1009Germany2024-04-20
1010Germany2024-04-29
1011India2024-04-13
1012Australia2024-04-12
1013Italy2024-04-28
1014Germany2024-04-03
1015Germany2024-04-04
1016Germany2024-04-07
1017Russia2024-04-15
1018Japan2024-04-23
1019Brazil2024-04-01
1020Australia2024-04-18
1021Japan2024-04-19
1022Italy2024-04-24
1023Russia2024-04-28
1024India2024-04-23
1025Spain2024-04-08
1026France2024-04-07
1027France2024-04-21
1028Brazil2024-04-16
1029India2024-04-26
1030Argentina2024-04-16
1031Spain2024-04-19
1032Brazil2024-04-22
1033Brazil2024-04-14
1034Spain2024-04-18
1035United Kingdom2024-04-15
1036Spain2024-04-08
1037Italy2024-04-26
1038Spain2024-04-30
1039United Kingdom2024-04-19
1040Australia2024-04-14
1041Germany2024-04-06
1042Russia2024-04-29
1043Russia2024-04-29
1044India2024-04-08
1045Brazil2024-04-01
1046Brazil2024-04-24
1047Canada2024-04-18
1048Russia2024-04-05
1049Russia2024-04-23

On-Demand Data

NameIdCountryDate
Rodrigues Y Inouye1000Brazil2024-04-07
Ricardo X Bowley1001Spain2024-04-15
Munro E Maclead1002Japan2024-04-19
Tony T Wieser1003Brazil2024-04-11
Jefferson K Morasca1004Spain2024-04-10
Jennifer E Morasca1005Spain2024-04-12
Jennifer N Stenseth1006Canada2024-04-29
Alejandro B Ferencz1007Japan2024-04-01
Johnson S Stenseth1008Brazil2024-04-19
Aditya G Poquette1009Italy2024-04-10
Adams T Royster1010Italy2024-04-13
Leon I Rulapaugh1011Canada2024-04-14
Rodrigues P Tollner1012Australia2024-04-18
Johnson F Royster1013Russia2024-04-05
Faith N Figeroa1014Italy2024-04-27
Smith A Schemmer1015United Kingdom2024-04-18
Adams L Campain1016Australia2024-04-06
Munro R Marrier1017Japan2024-04-14
Chavez I Schemmer1018Italy2024-04-01
Aika L Morasca1019Canada2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson D SaylorsGermanyElwin Sharvill UNQUALIFIED
Cody H FigeroaUnited KingdomElwin Sharvill NEW
David K BologniaGermanyAsiya Javayant UNQUALIFIED
Aditya P DilliardIndiaAnna Fali RENEWAL
Costa V StensethIndiaElwin Sharvill NEW
James X KuskoArgentinaStephen Shaw UNQUALIFIED
Maisha J OldroydAustraliaAsiya Javayant NEGOTIATION
Tony C DoeJapanAsiya Javayant NEW
Greenwood W WieserAustraliaIvan Magalhaes QUALIFIED
Kaitlin G DoeBrazilAnna Fali NEGOTIATION
Juan D MacleadRussiaElwin Sharvill NEGOTIATION
Mujtaba R CaldareraJapanAsiya Javayant RENEWAL
Jones Y BriddickJapanStephen Shaw PROPOSAL
Julie R GarufiFranceElwin Sharvill RENEWAL
Deepesh C ButtItalyOnyama Limba NEW
Costa M GarufiFranceAmy Elsner NEGOTIATION
Aditya L IturbideGermanyOnyama Limba PROPOSAL
Leon E FlosiRussiaStephen Shaw RENEWAL
Mayumi S GarufiJapanElwin Sharvill NEGOTIATION
Aditya H BologniaAustraliaXuxue Feng QUALIFIED
Emily X InouyeJapanStephen Shaw NEGOTIATION
Antonio L GarufiCanadaAsiya Javayant RENEWAL
Aditya N IturbideRussiaAmy Elsner QUALIFIED
Ashley B OstroskyBrazilAmy Elsner PROPOSAL
Morrow T BriddickAustraliaOnyama Limba NEGOTIATION
Smith V RulapaughRussiaOnyama Limba NEW
Jeanfrancois G ButtAustraliaAnna Fali UNQUALIFIED
Nicolas A MacleadItalyBernardo Dominic PROPOSAL
Arvin J VenereArgentinaAsiya Javayant NEW
Aditya X PerinItalyXuxue Feng RENEWAL
Aika B ButtJapanAnna Fali RENEWAL
Johnson K PerinGermanyAnna Fali NEGOTIATION
David W BowleyItalyXuxue Feng PROPOSAL
Kaitlin F FerenczFranceAnna Fali QUALIFIED
Ricardo W SchemmerJapanElwin Sharvill UNQUALIFIED
Cody J CaudyGermanyElwin Sharvill UNQUALIFIED
Tony A RoysterArgentinaBernardo Dominic NEGOTIATION
Arvin L NickaJapanIvan Magalhaes RENEWAL
James W AmigonAustraliaIvan Magalhaes UNQUALIFIED
Silvio B PerinCanadaBernardo Dominic 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>