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
Leja O PoquetteRussiaAnna Fali PROPOSAL
Morrow C ChuiBrazilBernardo Dominic RENEWAL
Francesco W VenereGermanyStephen Shaw NEW
Chavez X CaldareraFranceXuxue Feng RENEWAL
Ivar O IturbideGermanyIvan Magalhaes UNQUALIFIED
Jefferson M OldroydBrazilBernardo Dominic NEW
Chavez R FollerBrazilBernardo Dominic PROPOSAL
Deepesh T KuskoRussiaOnyama Limba NEW
Faith N StensethSpainElwin Sharvill QUALIFIED
Adams V StockhamIndiaAsiya Javayant NEW
Misaki F WieserRussiaAnna Fali QUALIFIED
Costa M ChuiCanadaIoni Bowcher UNQUALIFIED
Isabel K DilliardGermanyAmy Elsner NEW
Antonio R MaletSpainOnyama Limba UNQUALIFIED
Nicolas X MaletBrazilAnna Fali PROPOSAL
Jennifer C MarrierFranceIoni Bowcher UNQUALIFIED
Maisha R SergiAustraliaIoni Bowcher NEW
Leja L VenereBrazilStephen Shaw QUALIFIED
Kaitlin I RutaGermanyIoni Bowcher NEW
Aruna A BowleyCanadaAmy Elsner QUALIFIED
Leja B AmigonRussiaXuxue Feng QUALIFIED
Leja A DilliardCanadaOnyama Limba NEW
Kaitlin F BologniaItalyXuxue Feng NEW
Francesco N MaletFranceOnyama Limba NEGOTIATION
Jefferson Y ButtCanadaStephen Shaw QUALIFIED
Maria K RutaItalyBernardo Dominic QUALIFIED
Murillo V MaletSpainXuxue Feng NEGOTIATION
Nicolas U MacleadItalyBernardo Dominic UNQUALIFIED
Jones V DoeAustraliaStephen Shaw RENEWAL
Leja S MarrierArgentinaIoni Bowcher QUALIFIED
Smith E MacleadGermanyOnyama Limba PROPOSAL
David L VocelkaBrazilAnna Fali UNQUALIFIED
Maria T OstroskyJapanElwin Sharvill PROPOSAL
Deepesh O WaycottItalyXuxue Feng QUALIFIED
Antonio L OstroskyItalyStephen Shaw UNQUALIFIED
Aruna K GarufiUnited KingdomAmy Elsner QUALIFIED
Chavez C StockhamIndiaStephen Shaw RENEWAL
Tony Z MorascaArgentinaBernardo Dominic NEGOTIATION
Darci H SergiItalyStephen Shaw NEW
Claire M NickaGermanyElwin Sharvill UNQUALIFIED
Mujtaba I RutaFranceAmy Elsner NEW
Mujtaba O SergiRussiaIvan Magalhaes PROPOSAL
Aika S SaylorsArgentinaStephen Shaw PROPOSAL
Mujtaba K WhobreyFranceOnyama Limba RENEWAL
David X CaudyBrazilIoni Bowcher PROPOSAL
Aruna E PoquetteGermanyIvan Magalhaes PROPOSAL
James Q RoysterFranceAmy Elsner NEGOTIATION
Ricardo C SlusarskiSpainAmy Elsner RENEWAL
Juan M RoysterJapanAsiya Javayant RENEWAL
Octavia Q GlickGermanyAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Tony C RulapaughBrazilIoni Bowcher QUALIFIED
Juan Q RoysterRussiaIoni Bowcher RENEWAL
Aika B BriddickGermanyBernardo Dominic PROPOSAL
Wickens T WieserRussiaIoni Bowcher QUALIFIED
Julie O DoeSpainIvan Magalhaes QUALIFIED
Stacey B PaprockiAustraliaAmy Elsner NEW
Silvio Z DilliardSpainXuxue Feng RENEWAL
Mujtaba H ShinkoUnited KingdomAnna Fali NEW
Aika J MaletArgentinaBernardo Dominic NEGOTIATION
Ashley D AlbaresAustraliaBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens X InouyeFrance2024-04-18Chemel, James L Cpa RENEWAL64Amy Elsner
1001Costa M FlosiFrance2024-04-13King, Christopher A Esq PROPOSAL7Stephen Shaw
1002Silvio Q VocelkaJapan2024-04-02Chanay, Jeffrey A Esq QUALIFIED61Amy Elsner
1003Mayumi R SaylorsIndia2024-04-09Buckley Miller Wright UNQUALIFIED49Anna Fali
1004Jennifer E StockhamAustralia2024-04-23Benton, John B Jr NEGOTIATION71Onyama Limba
1005Sinclair B NickaRussia2024-04-05Feiner Bros UNQUALIFIED30Onyama Limba
1006Kadeem H IturbideIndia2024-04-20Truhlar And Truhlar Attys UNQUALIFIED70Stephen Shaw
1007Leon R MacleadBrazil2024-04-05Morlong Associates NEGOTIATION89Xuxue Feng
1008Jeanfrancois T VenereItaly2024-04-05Chapman, Ross E Esq PROPOSAL63Anna Fali
1009Antonio T MorascaItaly2024-04-21Chanay, Jeffrey A Esq NEW78Elwin Sharvill
1010Mujtaba E DarakjyIndia2024-04-27Commercial Press QUALIFIED46Asiya Javayant
1011Kaitlin F DoeAustralia2024-04-08Rousseaux, Michael Esq NEW31Onyama Limba
1012Cody P ShinkoAustralia2024-04-25Commercial Press QUALIFIED45Asiya Javayant
1013Darci H SaylorsJapan2024-04-22Chanay, Jeffrey A Esq UNQUALIFIED9Bernardo Dominic
1014Izzy J MaletGermany2024-04-13Buckley Miller Wright QUALIFIED2Stephen Shaw
1015Chavez X AmigonArgentina2024-04-02Feiner Bros NEGOTIATION92Amy Elsner
1016Arvin X GillianFrance2024-03-30Morlong Associates UNQUALIFIED46Asiya Javayant
1017James V ChuiSpain2024-03-31Rangoni Of Florence RENEWAL73Ioni Bowcher
1018Johnson J FlosiItaly2024-04-13King, Christopher A Esq UNQUALIFIED36Ivan Magalhaes
1019Stacey M StockhamBrazil2024-04-19Feiner Bros QUALIFIED69Stephen Shaw
1020Leon U OstroskyBrazil2024-04-22Morlong Associates RENEWAL80Asiya Javayant
1021Salvatore U AmigonAustralia2024-04-13Rousseaux, Michael Esq QUALIFIED96Stephen Shaw
1022Rodrigues I GlickJapan2024-04-27Feiner Bros UNQUALIFIED30Amy Elsner
1023Silvio T FollerUnited Kingdom2024-04-16Feltz Printing Service QUALIFIED84Bernardo Dominic
1024Adams H InouyeUnited Kingdom2024-04-01Rangoni Of Florence NEGOTIATION48Bernardo Dominic
1025Cody U OldroydGermany2024-04-10Feltz Printing Service RENEWAL42Elwin Sharvill
1026Silvio H BologniaGermany2024-03-29Printing Dimensions NEGOTIATION62Anna Fali
1027Claire P OldroydItaly2024-04-07Buckley Miller Wright UNQUALIFIED48Asiya Javayant
1028Munro O MorascaAustralia2024-04-22Rangoni Of Florence NEW78Ivan Magalhaes
1029Jennifer K ShinkoRussia2024-04-24Chapman, Ross E Esq UNQUALIFIED19Xuxue Feng
1030Maisha W MaletJapan2024-04-26Benton, John B Jr NEGOTIATION55Bernardo Dominic
1031Julie R VenereGermany2024-04-05Chanay, Jeffrey A Esq UNQUALIFIED79Anna Fali
1032Murillo U ShinkoJapan2024-04-16Chanay, Jeffrey A Esq PROPOSAL37Anna Fali
1033Cody Z GlickUnited Kingdom2024-04-20Rousseaux, Michael Esq QUALIFIED42Anna Fali
1034Juan X TollnerFrance2024-04-03Rousseaux, Michael Esq RENEWAL60Stephen Shaw
1035Leja A ShinkoAustralia2024-03-29Buckley Miller Wright QUALIFIED50Ioni Bowcher
1036Emily I BriddickSpain2024-04-20Chemel, James L Cpa PROPOSAL55Bernardo Dominic
1037Greenwood R ChuiAustralia2024-04-04Rousseaux, Michael Esq PROPOSAL82Onyama Limba
1038Juan O CampainArgentina2024-04-19Buckley Miller Wright NEGOTIATION64Xuxue Feng
1039Francesco C AmigonRussia2024-03-29Dorl, James J Esq UNQUALIFIED78Xuxue Feng
1040Jennifer X MorascaUnited Kingdom2024-03-29Rangoni Of Florence QUALIFIED47Elwin Sharvill
1041Antonio E MaletIndia2024-04-18Chemel, James L Cpa RENEWAL2Elwin Sharvill
1042Leon A PerinSpain2024-04-14Truhlar And Truhlar Attys RENEWAL21Onyama Limba
1043Octavia B MaletAustralia2024-04-16Chemel, James L Cpa QUALIFIED66Ivan Magalhaes
1044Silvio O PoquetteJapan2024-04-24Feltz Printing Service RENEWAL94Elwin Sharvill
1045Emily I PaprockiCanada2024-04-17Benton, John B Jr RENEWAL87Xuxue Feng
1046Kadeem A IturbideArgentina2024-04-21Feltz Printing Service RENEWAL71Bernardo Dominic
1047Octavia J TollnerBrazil2024-03-29Truhlar And Truhlar Attys QUALIFIED3Asiya Javayant
1048Mujtaba I TollnerIndia2024-04-20Chanay, Jeffrey A Esq NEW99Onyama Limba
1049Emily Z FlosiItaly2024-03-31King, Christopher A Esq PROPOSAL30Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Greenwood J MacleadUnited KingdomXuxue Feng QUALIFIED
Izzy D CampainSpainXuxue Feng RENEWAL
Juan R KuskoRussiaIoni Bowcher UNQUALIFIED
Maisha M OldroydRussiaAsiya Javayant QUALIFIED
Faith W FerenczFranceXuxue Feng NEGOTIATION
Tony N OldroydArgentinaOnyama Limba NEGOTIATION
Emily O AmigonGermanyIoni Bowcher QUALIFIED
Murillo C NestleItalyXuxue Feng NEW
Jeanfrancois Q FerenczUnited KingdomIvan Magalhaes NEW
Kaitlin H FigeroaJapanAnna Fali NEGOTIATION
Salvatore F SlusarskiRussiaIvan Magalhaes NEGOTIATION
Ricardo W StockhamAustraliaBernardo Dominic QUALIFIED
Jones E TollnerBrazilAsiya Javayant UNQUALIFIED
Adams N RulapaughCanadaAnna Fali NEW
Francesco Z OldroydFranceAnna Fali UNQUALIFIED
Jennifer R DoeArgentinaElwin Sharvill PROPOSAL
Mayumi L DarakjyItalyAnna Fali RENEWAL
Octavia E KolmetzFranceStephen Shaw UNQUALIFIED
Kaitlin H PoquetteUnited KingdomIoni Bowcher NEGOTIATION
Kadeem M MorascaBrazilIoni Bowcher RENEWAL
Smith V CaudyFranceAsiya Javayant NEW
Rodrigues X DoeSpainAmy Elsner UNQUALIFIED
Salvatore Z VocelkaRussiaXuxue Feng NEW
Emily U PerinJapanStephen Shaw PROPOSAL
Mayumi O VocelkaSpainElwin Sharvill PROPOSAL
Jones O BowleyJapanElwin Sharvill RENEWAL
Antonio J GillianFranceBernardo Dominic PROPOSAL
Isabel E VocelkaCanadaElwin Sharvill RENEWAL
Antonio R TollnerIndiaElwin Sharvill PROPOSAL
Murillo B SlusarskiJapanStephen Shaw RENEWAL
Murillo G TollnerArgentinaBernardo Dominic NEGOTIATION
Aika A FlosiCanadaIvan Magalhaes NEGOTIATION
Murillo Y RoysterBrazilBernardo Dominic UNQUALIFIED
Maisha D VocelkaFranceOnyama Limba QUALIFIED
Misaki G AlbaresJapanIoni Bowcher NEW
Nicolas G StockhamRussiaBernardo Dominic QUALIFIED
Silvio Q KuskoSpainBernardo Dominic PROPOSAL
Silvio L BowleyGermanyXuxue Feng NEGOTIATION
Ashley N SergiAustraliaIoni Bowcher NEGOTIATION
Chavez N OstroskyAustraliaOnyama Limba RENEWAL
Leon S VenereSpainIoni Bowcher QUALIFIED
Claire R DoeSpainElwin Sharvill PROPOSAL
Mujtaba W GarufiFranceOnyama Limba NEGOTIATION
Maria R SlusarskiGermanyAmy Elsner NEGOTIATION
Wickens K RulapaughJapanIoni Bowcher NEW
Mayumi D StensethFranceAnna Fali UNQUALIFIED
Tony C MorascaRussiaXuxue Feng NEGOTIATION
Claire C StensethBrazilBernardo Dominic RENEWAL
Silvio K NestleFranceIoni Bowcher NEGOTIATION
Sinclair S InouyeRussiaOnyama Limba QUALIFIED
Frozen Columns
Name
James J Flosi
Faith F Figeroa
Adams O Inouye
Jones B Sergi
Stacey H Nicka
Ricardo C Venere
James K Albares
Sinclair N Bolognia
Silvio J Doe
Wickens B Chui
Aditya F Bolognia
Francesco S Poquette
Maria P Garufi
Arvin H Chui
Arvin X Chui
Julie W Albares
Jefferson I Garufi
Smith X Stockham
Izzy C Slusarski
Rodrigues Z Perin
David J Stenseth
Ivar H Marrier
Aditya F Flosi
Izzy I Figeroa
Aditya M Iturbide
Kadeem D Venere
Claire V Nicka
Sinclair N Stockham
Isabel F Briddick
David J Inouye
Ricardo R Morasca
Ashley N Kolmetz
Maisha G Perin
James V Caudy
Misaki E Venere
Ricardo A Campain
David Q Rim
Silvio D Kusko
Mujtaba U Kusko
Juan Z Maclead
Greenwood S Iturbide
Arvin E Dilliard
Adams R Kusko
Aruna J Briddick
Aika A Stockham
Ricardo Y Doe
Octavia Y Nestle
Jeanfrancois B Dilliard
Jefferson W Foller
Julie Q Malet
IdCountryDate
1000Spain2024-04-18
1001Brazil2024-04-07
1002Brazil2024-04-09
1003United Kingdom2024-04-26
1004Germany2024-04-07
1005France2024-04-19
1006Russia2024-04-03
1007Italy2024-04-27
1008Italy2024-04-21
1009Brazil2024-04-13
1010Brazil2024-04-12
1011Australia2024-04-18
1012United Kingdom2024-04-05
1013Canada2024-04-03
1014Spain2024-04-27
1015Canada2024-04-14
1016France2024-03-29
1017Italy2024-04-22
1018Japan2024-04-27
1019United Kingdom2024-04-12
1020India2024-04-02
1021Italy2024-04-13
1022Italy2024-03-30
1023Spain2024-04-07
1024United Kingdom2024-03-29
1025India2024-04-21
1026Japan2024-04-14
1027Italy2024-04-22
1028France2024-03-30
1029Canada2024-04-21
1030Germany2024-03-31
1031Germany2024-04-12
1032Australia2024-04-07
1033India2024-04-23
1034Canada2024-04-03
1035India2024-04-06
1036Italy2024-04-09
1037India2024-04-09
1038France2024-04-14
1039France2024-04-04
1040France2024-04-10
1041France2024-04-02
1042France2024-04-12
1043Spain2024-04-01
1044Japan2024-04-01
1045Australia2024-04-18
1046United Kingdom2024-04-05
1047Australia2024-04-04
1048Russia2024-04-18
1049Brazil2024-04-05

On-Demand Data

NameIdCountryDate
Munro T Vocelka1000Italy2024-04-03
Emily B Vocelka1001Japan2024-04-15
Sinclair L Nicka1002Spain2024-04-25
Arvin S Bolognia1003Russia2024-04-16
Izzy A Stockham1004India2024-04-01
Chavez I Kusko1005Spain2024-04-07
Wickens C Stockham1006Russia2024-04-15
Leon D Sergi1007Australia2024-04-05
Nicolas I Wieser1008Russia2024-03-29
Antonio L Chui1009Brazil2024-04-08
Jefferson V Stockham1010Japan2024-04-10
Kadeem O Chui1011Argentina2024-04-15
Claire Y Figeroa1012Germany2024-04-27
Kaitlin A Caldarera1013Germany2024-04-01
David Y Poquette1014United Kingdom2024-04-06
Leja L Marrier1015Spain2024-04-06
Wickens R Ostrosky1016Brazil2024-04-19
Kaitlin G Bolognia1017Argentina2024-04-05
Leja W Paprocki1018Argentina2024-04-08
Smith G Whobrey1019France2024-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo M MacleadIndiaStephen Shaw RENEWAL
Aruna T PerinSpainIvan Magalhaes PROPOSAL
Leja P StensethUnited KingdomIvan Magalhaes NEGOTIATION
Leja A VenereJapanIvan Magalhaes PROPOSAL
Aruna W BowleySpainAnna Fali PROPOSAL
Claire W PoquetteCanadaBernardo Dominic QUALIFIED
Aika U InouyeItalyIvan Magalhaes NEGOTIATION
Morrow Y NestleItalyIvan Magalhaes UNQUALIFIED
Claire I SchemmerJapanBernardo Dominic RENEWAL
Chavez F KolmetzSpainAmy Elsner NEW
Misaki A BriddickItalyXuxue Feng UNQUALIFIED
Cody B ButtJapanStephen Shaw NEGOTIATION
James C ButtRussiaAsiya Javayant PROPOSAL
Francesco W RutaFranceAmy Elsner PROPOSAL
Izzy N InouyeAustraliaElwin Sharvill QUALIFIED
Clifford Z ButtUnited KingdomAmy Elsner UNQUALIFIED
Misaki C MarrierCanadaXuxue Feng QUALIFIED
Smith R MorascaJapanOnyama Limba UNQUALIFIED
Cody M GauchoRussiaIoni Bowcher RENEWAL
Deepesh D FlosiBrazilIvan Magalhaes QUALIFIED
Adams F PoquetteItalyElwin Sharvill PROPOSAL
Ricardo C GarufiItalyElwin Sharvill RENEWAL
Alejandro S KolmetzRussiaIoni Bowcher PROPOSAL
Juan J FerenczIndiaIvan Magalhaes UNQUALIFIED
Emily Q RutaGermanyIoni Bowcher QUALIFIED
Aika E DilliardFranceXuxue Feng UNQUALIFIED
Aditya W PerinCanadaAmy Elsner NEGOTIATION
Jones Z AmigonIndiaStephen Shaw RENEWAL
Clifford O DilliardFranceIoni Bowcher UNQUALIFIED
Murillo P StockhamBrazilOnyama Limba QUALIFIED
Clifford W BowleyRussiaXuxue Feng PROPOSAL
Jeanfrancois O RutaCanadaAmy Elsner RENEWAL
Kaitlin N KuskoGermanyIvan Magalhaes NEGOTIATION
Ricardo O CaudyArgentinaAsiya Javayant NEGOTIATION
Aruna A OstroskyAustraliaOnyama Limba NEW
Chavez L VocelkaIndiaOnyama Limba NEGOTIATION
Cody B GarufiItalyAsiya Javayant UNQUALIFIED
Salvatore F MarrierSpainAnna Fali RENEWAL
Silvio R MarrierBrazilIoni Bowcher NEGOTIATION
Deepesh Z DoeGermanyIoni Bowcher 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>