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
Silvio N TollnerJapanOnyama Limba PROPOSAL
Aika F FlosiAustraliaOnyama Limba RENEWAL
Munro T SergiRussiaIoni Bowcher PROPOSAL
Aika F SchemmerBrazilIoni Bowcher QUALIFIED
Chavez D TollnerIndiaElwin Sharvill NEGOTIATION
Cody J MarrierIndiaIvan Magalhaes NEGOTIATION
Claire M SergiGermanyElwin Sharvill PROPOSAL
Claire O ChuiSpainElwin Sharvill NEW
Johnson Y PoquetteIndiaXuxue Feng QUALIFIED
Leon U CaudyJapanXuxue Feng UNQUALIFIED
Salvatore S SaylorsArgentinaIoni Bowcher NEW
Claire I StockhamAustraliaOnyama Limba RENEWAL
Kaitlin S DilliardItalyStephen Shaw PROPOSAL
Aruna I SaylorsRussiaAnna Fali UNQUALIFIED
Izzy D StockhamIndiaElwin Sharvill UNQUALIFIED
Ashley L WieserUnited KingdomElwin Sharvill PROPOSAL
Juan C TollnerArgentinaElwin Sharvill UNQUALIFIED
Ashley M StensethJapanIoni Bowcher NEW
Kadeem W ShinkoJapanXuxue Feng QUALIFIED
Rodrigues B NestleSpainElwin Sharvill PROPOSAL
Tony M IturbideJapanAnna Fali UNQUALIFIED
Cody I RoysterArgentinaXuxue Feng NEGOTIATION
Morrow E GauchoArgentinaElwin Sharvill QUALIFIED
Faith G GillianGermanyAnna Fali PROPOSAL
Emily X MaletArgentinaIvan Magalhaes PROPOSAL
Jennifer D PerinBrazilIoni Bowcher PROPOSAL
Isabel J BowleyAustraliaAsiya Javayant UNQUALIFIED
Murillo C OldroydFranceXuxue Feng QUALIFIED
Kadeem M DoeSpainAsiya Javayant NEW
Sinclair I NestleUnited KingdomIvan Magalhaes NEGOTIATION
Ashley I SchemmerJapanAnna Fali NEW
Cody H MarrierFranceXuxue Feng QUALIFIED
Emily M BriddickCanadaOnyama Limba UNQUALIFIED
Morrow Z DoeAustraliaAmy Elsner PROPOSAL
Emily J PaprockiGermanyIoni Bowcher UNQUALIFIED
Juan X PaprockiGermanyXuxue Feng NEW
Nicolas N MacleadGermanyElwin Sharvill NEGOTIATION
Cody W InouyeFranceXuxue Feng NEW
Francesco V MaletUnited KingdomIvan Magalhaes NEW
Mujtaba E NestleItalyStephen Shaw NEGOTIATION
Maria U StockhamJapanStephen Shaw UNQUALIFIED
Aditya A RoysterFranceAnna Fali NEGOTIATION
Ashley S MarrierJapanBernardo Dominic QUALIFIED
Maisha E AlbaresFranceAnna Fali NEGOTIATION
Arvin O SchemmerCanadaAsiya Javayant QUALIFIED
Aika S SlusarskiArgentinaElwin Sharvill PROPOSAL
James V FlosiIndiaAmy Elsner NEGOTIATION
Silvio K StensethUnited KingdomAmy Elsner NEW
Leja P WaycottRussiaIoni Bowcher QUALIFIED
Kadeem G AlbaresUnited KingdomOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Greenwood V KuskoFranceAnna Fali RENEWAL
Leon K IturbideRussiaAsiya Javayant QUALIFIED
Wickens G GlickSpainBernardo Dominic QUALIFIED
Izzy D SaylorsUnited KingdomAsiya Javayant PROPOSAL
Isabel M MorascaGermanyIvan Magalhaes UNQUALIFIED
Kaitlin U SergiArgentinaXuxue Feng QUALIFIED
Munro G MacleadGermanyAnna Fali QUALIFIED
Murillo V FerenczItalyAsiya Javayant UNQUALIFIED
Ivar R OstroskyGermanyOnyama Limba UNQUALIFIED
David X PerinJapanIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily R GlickFrance2024-04-25King, Christopher A Esq PROPOSAL84Bernardo Dominic
1001Maria A MarrierItaly2024-04-22Chemel, James L Cpa PROPOSAL30Onyama Limba
1002Alejandro V WieserJapan2024-04-12Feiner Bros NEGOTIATION45Xuxue Feng
1003Greenwood Q WaycottGermany2024-04-26Benton, John B Jr QUALIFIED46Asiya Javayant
1004Maisha W RutaSpain2024-04-02Buckley Miller Wright NEW76Anna Fali
1005Jones A CaudyFrance2024-04-26Dorl, James J Esq UNQUALIFIED38Ioni Bowcher
1006Antonio Q WaycottAustralia2024-04-09Benton, John B Jr QUALIFIED39Anna Fali
1007Mayumi V IturbideFrance2024-04-05Chanay, Jeffrey A Esq RENEWAL71Anna Fali
1008Aditya Y GauchoBrazil2024-04-01Chemel, James L Cpa QUALIFIED40Xuxue Feng
1009Francesco Q CaldareraFrance2024-04-04Feltz Printing Service QUALIFIED95Xuxue Feng
1010Leon C SlusarskiItaly2024-04-24Morlong Associates NEGOTIATION74Elwin Sharvill
1011Juan L PerinBrazil2024-04-07Feltz Printing Service UNQUALIFIED30Asiya Javayant
1012Ivar V StockhamItaly2024-04-23Printing Dimensions PROPOSAL99Stephen Shaw
1013Juan X NickaFrance2024-04-17Chapman, Ross E Esq NEW63Onyama Limba
1014Francesco T RulapaughItaly2024-04-08Truhlar And Truhlar Attys RENEWAL0Anna Fali
1015Ashley M StensethGermany2024-04-30Buckley Miller Wright QUALIFIED41Ivan Magalhaes
1016Johnson P CampainGermany2024-04-28Chemel, James L Cpa UNQUALIFIED34Onyama Limba
1017Jones I GauchoJapan2024-04-03Rousseaux, Michael Esq UNQUALIFIED55Anna Fali
1018Antonio X DoeUnited Kingdom2024-04-01Truhlar And Truhlar Attys UNQUALIFIED82Ioni Bowcher
1019Darci M InouyeItaly2024-04-16Dorl, James J Esq NEW40Bernardo Dominic
1020Ricardo S PerinIndia2024-04-09Chanay, Jeffrey A Esq NEW78Ivan Magalhaes
1021Salvatore M SaylorsIndia2024-04-26Chapman, Ross E Esq NEGOTIATION71Bernardo Dominic
1022Aditya K OldroydJapan2024-04-19Truhlar And Truhlar Attys UNQUALIFIED66Ioni Bowcher
1023Octavia Q CaudyIndia2024-04-12Feiner Bros QUALIFIED24Ioni Bowcher
1024Deepesh K PerinBrazil2024-04-08Chemel, James L Cpa NEW90Bernardo Dominic
1025Murillo Z GauchoFrance2024-04-28Benton, John B Jr UNQUALIFIED9Anna Fali
1026Leja Y MaletGermany2024-04-08Dorl, James J Esq UNQUALIFIED4Elwin Sharvill
1027Maria L VenereItaly2024-04-25Commercial Press UNQUALIFIED46Amy Elsner
1028Morrow R NestleArgentina2024-04-15Feltz Printing Service PROPOSAL51Ivan Magalhaes
1029Ashley C BriddickJapan2024-04-29Chapman, Ross E Esq NEW26Xuxue Feng
1030Ricardo U CaudyArgentina2024-04-16Morlong Associates UNQUALIFIED17Elwin Sharvill
1031Clifford Y MaletBrazil2024-04-16Chemel, James L Cpa NEGOTIATION33Bernardo Dominic
1032Sinclair E InouyeSpain2024-04-06Chanay, Jeffrey A Esq NEW33Ivan Magalhaes
1033Deepesh Q TollnerRussia2024-04-08Buckley Miller Wright UNQUALIFIED8Elwin Sharvill
1034Cody I GlickItaly2024-04-23Printing Dimensions UNQUALIFIED9Anna Fali
1035Morrow M PoquetteCanada2024-04-06Printing Dimensions NEGOTIATION15Xuxue Feng
1036Morrow K PaprockiCanada2024-04-18Chapman, Ross E Esq UNQUALIFIED42Onyama Limba
1037Wickens O RulapaughAustralia2024-04-06Chanay, Jeffrey A Esq NEGOTIATION88Anna Fali
1038Costa J AlbaresSpain2024-04-24King, Christopher A Esq QUALIFIED45Onyama Limba
1039Isabel P MaletFrance2024-04-05Benton, John B Jr UNQUALIFIED90Onyama Limba
1040Leon Y CaldareraAustralia2024-04-05Rangoni Of Florence RENEWAL90Bernardo Dominic
1041Antonio L PerinBrazil2024-04-07Feiner Bros RENEWAL77Elwin Sharvill
1042Chavez N GarufiItaly2024-04-20King, Christopher A Esq NEW22Amy Elsner
1043Murillo C BriddickUnited Kingdom2024-04-02King, Christopher A Esq NEW17Ivan Magalhaes
1044Claire J WieserJapan2024-04-11Commercial Press NEW56Xuxue Feng
1045James L CaudyRussia2024-04-05Rangoni Of Florence UNQUALIFIED87Amy Elsner
1046Aika V WieserArgentina2024-04-30Rousseaux, Michael Esq NEW76Elwin Sharvill
1047Wickens Q ButtItaly2024-04-19King, Christopher A Esq QUALIFIED6Asiya Javayant
1048Aruna W GarufiIndia2024-04-19Buckley Miller Wright PROPOSAL63Ivan Magalhaes
1049Alejandro Z AlbaresIndia2024-04-16Commercial Press QUALIFIED43Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire W BriddickCanadaIvan Magalhaes NEGOTIATION
Smith Q StensethUnited KingdomIoni Bowcher PROPOSAL
James Z RutaUnited KingdomXuxue Feng UNQUALIFIED
Mujtaba H NestleSpainIoni Bowcher RENEWAL
Chavez Y IturbideSpainStephen Shaw QUALIFIED
Arvin S SergiBrazilStephen Shaw RENEWAL
Alejandro K RutaGermanyIvan Magalhaes RENEWAL
Francesco V ButtItalyIvan Magalhaes PROPOSAL
Antonio Y GarufiItalyAsiya Javayant PROPOSAL
Leon H RoysterItalyBernardo Dominic NEW
Maria Z RimUnited KingdomOnyama Limba RENEWAL
Morrow K NestleIndiaAsiya Javayant RENEWAL
Antonio O PaprockiFranceAmy Elsner UNQUALIFIED
Rodrigues L RimCanadaIvan Magalhaes PROPOSAL
Johnson F CaldareraIndiaStephen Shaw NEW
Costa E CaudyUnited KingdomAsiya Javayant PROPOSAL
Jones Y WieserBrazilAnna Fali UNQUALIFIED
Silvio Z ShinkoArgentinaStephen Shaw RENEWAL
Ivar L WhobreyFranceXuxue Feng PROPOSAL
Cody N BriddickBrazilOnyama Limba NEGOTIATION
Jones A StensethIndiaXuxue Feng RENEWAL
Kaitlin D NestleFranceAmy Elsner NEGOTIATION
Tony J SchemmerGermanyOnyama Limba QUALIFIED
Johnson N OldroydRussiaElwin Sharvill UNQUALIFIED
Jennifer U PoquetteFranceAsiya Javayant UNQUALIFIED
Wickens K OldroydAustraliaStephen Shaw NEW
Greenwood O BriddickArgentinaIvan Magalhaes UNQUALIFIED
Rodrigues Q WaycottCanadaBernardo Dominic NEGOTIATION
Leja X SchemmerSpainAsiya Javayant NEGOTIATION
Stacey D GauchoSpainAnna Fali QUALIFIED
Kadeem O BowleyIndiaXuxue Feng NEW
Leja P RoysterIndiaElwin Sharvill PROPOSAL
Morrow J FollerUnited KingdomXuxue Feng QUALIFIED
Darci O GlickUnited KingdomAsiya Javayant PROPOSAL
Jeanfrancois U GarufiJapanXuxue Feng PROPOSAL
Alejandro V GlickBrazilIvan Magalhaes NEGOTIATION
Smith S OldroydUnited KingdomAsiya Javayant QUALIFIED
Deepesh G MorascaUnited KingdomStephen Shaw RENEWAL
Smith I NestleGermanyAnna Fali RENEWAL
Claire C NestleGermanyIvan Magalhaes UNQUALIFIED
Ivar U PerinRussiaAsiya Javayant PROPOSAL
Mayumi U DoeIndiaIoni Bowcher NEGOTIATION
Octavia P ShinkoBrazilAmy Elsner NEGOTIATION
Deepesh D PerinFranceAsiya Javayant NEW
Izzy I RoysterBrazilAsiya Javayant PROPOSAL
Ashley D PerinCanadaStephen Shaw QUALIFIED
Smith T AmigonSpainOnyama Limba RENEWAL
Clifford S ShinkoJapanIvan Magalhaes RENEWAL
Alejandro A MorascaJapanIvan Magalhaes NEW
Aditya E FollerIndiaBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Morrow V Morasca
Ashley R Maclead
Antonio G Rulapaugh
Munro U Nestle
Wickens E Royster
Aika I Chui
James E Doe
James B Foller
Aditya L Saylors
Costa L Foller
Stacey T Chui
James R Campain
Alejandro X Oldroyd
Deepesh C Royster
Jones U Ruta
Cody J Morasca
Rodrigues I Flosi
Chavez M Bowley
Maria V Chui
Leon S Iturbide
Darci L Campain
Ivar M Ruta
Costa V Glick
Rodrigues A Saylors
Juan L Amigon
Munro T Malet
Kadeem E Royster
Kadeem N Malet
Clifford G Ostrosky
Rodrigues Z Nestle
Ricardo X Whobrey
Darci K Malet
Claire W Poquette
Faith K Ruta
Maisha B Wieser
Salvatore T Caldarera
Kadeem S Shinko
Mayumi G Nestle
Francesco T Dilliard
Mayumi R Dilliard
James N Malet
Claire A Garufi
Leja E Foller
Silvio W Waycott
Johnson I Bowley
Adams E Venere
Morrow A Doe
Ivar M Royster
Ivar T Paprocki
Aika L Campain
IdCountryDate
1000Italy2024-04-13
1001United Kingdom2024-04-28
1002Spain2024-04-23
1003United Kingdom2024-04-30
1004Germany2024-04-10
1005Canada2024-04-29
1006Germany2024-04-02
1007Australia2024-04-22
1008Germany2024-04-17
1009France2024-04-29
1010United Kingdom2024-04-15
1011India2024-04-14
1012Argentina2024-04-22
1013Argentina2024-04-17
1014India2024-04-12
1015India2024-04-13
1016United Kingdom2024-04-02
1017Argentina2024-04-25
1018Argentina2024-04-04
1019Argentina2024-04-22
1020India2024-04-03
1021France2024-04-25
1022United Kingdom2024-04-29
1023Australia2024-04-27
1024Russia2024-04-06
1025Germany2024-04-19
1026India2024-04-07
1027Japan2024-04-27
1028Japan2024-04-06
1029India2024-04-22
1030Brazil2024-04-05
1031Argentina2024-04-25
1032United Kingdom2024-04-12
1033Argentina2024-04-22
1034Italy2024-04-07
1035Canada2024-04-01
1036France2024-04-10
1037Italy2024-04-30
1038Japan2024-04-27
1039Germany2024-04-24
1040Russia2024-04-01
1041Russia2024-04-08
1042Russia2024-04-01
1043Canada2024-04-19
1044Australia2024-04-20
1045Japan2024-04-26
1046Japan2024-04-12
1047India2024-04-22
1048Germany2024-04-15
1049Italy2024-04-21

On-Demand Data

NameIdCountryDate
Aditya H Morasca1000Spain2024-04-20
Deepesh L Garufi1001Argentina2024-04-05
Johnson X Caudy1002India2024-04-17
Cody V Caldarera1003Italy2024-04-23
Jeanfrancois G Figeroa1004Russia2024-04-17
Juan P Inouye1005France2024-04-02
Murillo X Campain1006France2024-04-19
Claire B Glick1007Germany2024-04-02
Ivar K Inouye1008Japan2024-04-05
Sinclair B Campain1009Italy2024-04-28
Isabel H Sergi1010Germany2024-04-11
Deepesh E Campain1011Japan2024-04-14
Alejandro I Oldroyd1012Russia2024-04-18
Ashley X Albares1013France2024-04-01
Maria G Royster1014Australia2024-04-10
Tony A Stenseth1015Argentina2024-04-13
David U Inouye1016Germany2024-04-03
Aruna Q Kolmetz1017Germany2024-04-06
Rodrigues K Bolognia1018India2024-04-07
Arvin S Doe1019Japan2024-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan T RoysterJapanXuxue Feng UNQUALIFIED
Jefferson N StensethArgentinaAmy Elsner UNQUALIFIED
Arvin H GillianGermanyStephen Shaw UNQUALIFIED
Julie K RoysterArgentinaXuxue Feng PROPOSAL
Kadeem X FollerFranceOnyama Limba RENEWAL
Jones S DarakjySpainStephen Shaw PROPOSAL
Faith R VenereAustraliaElwin Sharvill PROPOSAL
Jeanfrancois W SaylorsArgentinaIvan Magalhaes PROPOSAL
Stacey M RulapaughAustraliaElwin Sharvill UNQUALIFIED
Ashley F SchemmerFranceElwin Sharvill UNQUALIFIED
Jeanfrancois O WieserRussiaAnna Fali QUALIFIED
Kadeem M RimFranceBernardo Dominic NEGOTIATION
Juan L WhobreyFranceBernardo Dominic QUALIFIED
James J BriddickAustraliaIoni Bowcher UNQUALIFIED
Claire C ChuiFranceOnyama Limba NEW
Rodrigues O StockhamUnited KingdomAnna Fali NEW
Aruna W KuskoBrazilAmy Elsner NEGOTIATION
Murillo L RulapaughBrazilStephen Shaw UNQUALIFIED
Ricardo X KuskoBrazilAnna Fali PROPOSAL
Cody S RutaCanadaStephen Shaw NEGOTIATION
Isabel N DarakjyCanadaOnyama Limba UNQUALIFIED
Isabel I SlusarskiIndiaBernardo Dominic PROPOSAL
Maria V SchemmerAustraliaIvan Magalhaes UNQUALIFIED
Jones T MacleadIndiaAmy Elsner NEGOTIATION
Chavez F KuskoIndiaAnna Fali RENEWAL
Ricardo G RulapaughSpainXuxue Feng NEW
Izzy W GlickBrazilOnyama Limba RENEWAL
Emily O AlbaresUnited KingdomAmy Elsner UNQUALIFIED
Jennifer H MacleadItalyIvan Magalhaes QUALIFIED
Deepesh E SaylorsRussiaElwin Sharvill QUALIFIED
Octavia H MacleadRussiaIvan Magalhaes RENEWAL
Chavez M OldroydItalyIvan Magalhaes NEGOTIATION
Kadeem K KolmetzBrazilAnna Fali RENEWAL
Jones J SchemmerAustraliaXuxue Feng UNQUALIFIED
Sinclair M RoysterItalyAnna Fali NEW
Salvatore X BowleyAustraliaOnyama Limba QUALIFIED
Misaki D NestleUnited KingdomIvan Magalhaes PROPOSAL
Ricardo U VocelkaFranceOnyama Limba PROPOSAL
Antonio H FerenczSpainAmy Elsner NEW
Antonio H MorascaFranceAmy Elsner QUALIFIED

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