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
Wickens R SlusarskiUnited KingdomAnna Fali NEW
Jeanfrancois Y MaletFranceXuxue Feng QUALIFIED
Leon Q KuskoUnited KingdomAnna Fali UNQUALIFIED
Ivar T MaletArgentinaAmy Elsner PROPOSAL
Stacey U MorascaIndiaAnna Fali NEW
Aditya W SaylorsFranceAsiya Javayant NEGOTIATION
Smith I VocelkaCanadaXuxue Feng PROPOSAL
Jeanfrancois I MaletFranceElwin Sharvill PROPOSAL
Jeanfrancois F PoquetteRussiaXuxue Feng UNQUALIFIED
Salvatore X OldroydCanadaBernardo Dominic UNQUALIFIED
Chavez U NickaUnited KingdomAmy Elsner UNQUALIFIED
Ivar C CaudyJapanAnna Fali RENEWAL
Julie Z VenereBrazilXuxue Feng PROPOSAL
Murillo V PaprockiSpainOnyama Limba UNQUALIFIED
Maria M GarufiCanadaAnna Fali QUALIFIED
Sinclair B InouyeGermanyIoni Bowcher NEGOTIATION
Munro L VocelkaRussiaAnna Fali QUALIFIED
David W IturbideUnited KingdomStephen Shaw NEW
Cody J ShinkoGermanyAmy Elsner NEGOTIATION
Ashley Y AlbaresJapanAsiya Javayant RENEWAL
Ivar A ChuiJapanAnna Fali NEGOTIATION
Greenwood U VocelkaUnited KingdomXuxue Feng NEW
Leon Q IturbideGermanyIoni Bowcher UNQUALIFIED
Cody Z KuskoJapanXuxue Feng NEGOTIATION
Juan D MacleadCanadaBernardo Dominic RENEWAL
Kaitlin A OldroydAustraliaIvan Magalhaes NEW
Morrow S CampainCanadaBernardo Dominic PROPOSAL
Faith Z ChuiCanadaIoni Bowcher UNQUALIFIED
Faith Z PerinBrazilIoni Bowcher NEGOTIATION
Maria T RulapaughIndiaAnna Fali QUALIFIED
Salvatore H MarrierBrazilStephen Shaw NEGOTIATION
Tony G FigeroaIndiaIvan Magalhaes QUALIFIED
Deepesh N RutaCanadaBernardo Dominic PROPOSAL
Munro B MaletFranceIvan Magalhaes NEW
Leja K CampainFranceXuxue Feng QUALIFIED
Rodrigues C ChuiArgentinaIoni Bowcher UNQUALIFIED
Morrow H DilliardItalyAmy Elsner NEGOTIATION
Nicolas Z VenereAustraliaOnyama Limba NEGOTIATION
Johnson V StockhamArgentinaXuxue Feng RENEWAL
Alejandro D OstroskyAustraliaAsiya Javayant QUALIFIED
Jeanfrancois Z RulapaughBrazilStephen Shaw NEGOTIATION
Silvio U GauchoSpainIvan Magalhaes PROPOSAL
Salvatore V NickaAustraliaAnna Fali PROPOSAL
Aditya U MorascaItalyAsiya Javayant QUALIFIED
Leon Z NestleFranceOnyama Limba RENEWAL
Emily N SchemmerBrazilBernardo Dominic PROPOSAL
Maria C InouyeFranceIoni Bowcher PROPOSAL
Claire M GlickFranceStephen Shaw QUALIFIED
Jones W WhobreyCanadaAmy Elsner PROPOSAL
Munro Q NestleAustraliaIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
David P SergiArgentinaIvan Magalhaes RENEWAL
Chavez I AlbaresArgentinaElwin Sharvill PROPOSAL
Darci F MorascaUnited KingdomAmy Elsner QUALIFIED
James K DoeItalyAnna Fali PROPOSAL
Clifford Q VenereItalyIoni Bowcher QUALIFIED
Munro Y OldroydAustraliaIoni Bowcher NEGOTIATION
Claire F OldroydJapanAnna Fali NEW
Jefferson H ShinkoAustraliaStephen Shaw RENEWAL
Wickens B SlusarskiIndiaAsiya Javayant QUALIFIED
Arvin U TollnerIndiaElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony A CampainGermany2024-04-14King, Christopher A Esq NEGOTIATION66Stephen Shaw
1001Deepesh A FollerFrance2024-05-02Dorl, James J Esq RENEWAL40Bernardo Dominic
1002Jefferson C CaldareraIndia2024-05-01Rangoni Of Florence UNQUALIFIED34Stephen Shaw
1003Silvio M SergiIndia2024-04-17Rousseaux, Michael Esq RENEWAL17Ioni Bowcher
1004Izzy U FollerItaly2024-04-16Buckley Miller Wright NEGOTIATION35Xuxue Feng
1005David X VenereGermany2024-04-17Feiner Bros UNQUALIFIED80Onyama Limba
1006Maisha R CaudyCanada2024-04-06Benton, John B Jr QUALIFIED28Xuxue Feng
1007Murillo T WieserSpain2024-04-20Morlong Associates NEW27Bernardo Dominic
1008Julie Q BologniaUnited Kingdom2024-04-17Feltz Printing Service PROPOSAL67Onyama Limba
1009Aika X ShinkoFrance2024-04-21Buckley Miller Wright PROPOSAL79Xuxue Feng
1010Smith H WaycottGermany2024-04-18Chapman, Ross E Esq QUALIFIED3Ivan Magalhaes
1011Izzy B RimUnited Kingdom2024-04-19Feiner Bros QUALIFIED37Onyama Limba
1012Sinclair U GauchoCanada2024-04-22Chapman, Ross E Esq PROPOSAL82Ioni Bowcher
1013Leon J OldroydGermany2024-04-06Commercial Press NEGOTIATION26Asiya Javayant
1014Aika R MaletFrance2024-04-14Feiner Bros NEW82Stephen Shaw
1015Izzy S WhobreyRussia2024-04-21Chanay, Jeffrey A Esq PROPOSAL8Ivan Magalhaes
1016Silvio Z VocelkaGermany2024-04-19Rousseaux, Michael Esq NEGOTIATION35Elwin Sharvill
1017David I WaycottRussia2024-04-14Truhlar And Truhlar Attys PROPOSAL10Onyama Limba
1018Johnson U MacleadGermany2024-04-18Rangoni Of Florence RENEWAL62Asiya Javayant
1019Antonio S TollnerFrance2024-05-03Commercial Press UNQUALIFIED84Ioni Bowcher
1020Jefferson G GlickItaly2024-04-17Feiner Bros NEGOTIATION79Amy Elsner
1021Adams W KolmetzGermany2024-04-05Buckley Miller Wright PROPOSAL55Asiya Javayant
1022Costa V WhobreyUnited Kingdom2024-05-03Dorl, James J Esq UNQUALIFIED31Elwin Sharvill
1023Tony P GauchoJapan2024-05-01Rangoni Of Florence NEW84Anna Fali
1024Leja V OstroskyBrazil2024-04-10Chapman, Ross E Esq UNQUALIFIED48Bernardo Dominic
1025Mujtaba Z StockhamCanada2024-04-15Chanay, Jeffrey A Esq QUALIFIED85Ivan Magalhaes
1026Maria Z DarakjyRussia2024-04-11Chanay, Jeffrey A Esq NEW96Onyama Limba
1027Chavez J SergiArgentina2024-04-18Benton, John B Jr UNQUALIFIED2Ioni Bowcher
1028Aditya W MaletSpain2024-04-19Feiner Bros NEGOTIATION8Ivan Magalhaes
1029Ivar F RimGermany2024-04-19Chapman, Ross E Esq UNQUALIFIED49Anna Fali
1030Adams U OldroydJapan2024-04-30Dorl, James J Esq PROPOSAL34Elwin Sharvill
1031Misaki H StockhamUnited Kingdom2024-05-01Chapman, Ross E Esq UNQUALIFIED18Onyama Limba
1032Morrow F OldroydRussia2024-04-19Commercial Press PROPOSAL8Asiya Javayant
1033Izzy B InouyeCanada2024-04-13Benton, John B Jr NEW67Amy Elsner
1034Ashley Q GarufiFrance2024-04-29Chanay, Jeffrey A Esq QUALIFIED49Stephen Shaw
1035Isabel M GauchoGermany2024-04-23Morlong Associates PROPOSAL71Bernardo Dominic
1036Adams O BriddickSpain2024-04-21Truhlar And Truhlar Attys RENEWAL55Onyama Limba
1037Adams U RoysterAustralia2024-04-11Printing Dimensions UNQUALIFIED77Onyama Limba
1038Munro U TollnerUnited Kingdom2024-04-18Buckley Miller Wright PROPOSAL83Stephen Shaw
1039Leon R RutaAustralia2024-04-07Benton, John B Jr NEGOTIATION14Stephen Shaw
1040Alejandro Z SaylorsUnited Kingdom2024-04-18Dorl, James J Esq PROPOSAL38Amy Elsner
1041Faith J VocelkaGermany2024-04-15Benton, John B Jr NEW90Elwin Sharvill
1042Aruna B RoysterItaly2024-04-30Rousseaux, Michael Esq RENEWAL80Xuxue Feng
1043Munro U SchemmerCanada2024-04-23Benton, John B Jr RENEWAL23Xuxue Feng
1044Claire S RulapaughSpain2024-04-07Chanay, Jeffrey A Esq UNQUALIFIED10Xuxue Feng
1045Francesco D BologniaFrance2024-04-26Feltz Printing Service PROPOSAL24Onyama Limba
1046Kadeem V FigeroaAustralia2024-04-30Feltz Printing Service QUALIFIED37Ioni Bowcher
1047James C SaylorsRussia2024-04-06Chapman, Ross E Esq NEGOTIATION9Ivan Magalhaes
1048Emily Q ChuiIndia2024-05-03Truhlar And Truhlar Attys PROPOSAL32Stephen Shaw
1049Munro I StensethGermany2024-04-09Feltz Printing Service NEW43Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Johnson Q ChuiJapanXuxue Feng PROPOSAL
Stacey N BowleyGermanyIoni Bowcher NEGOTIATION
Wickens I MaletArgentinaAsiya Javayant UNQUALIFIED
Kadeem C FlosiCanadaElwin Sharvill QUALIFIED
Aika K MaletRussiaStephen Shaw QUALIFIED
Aruna C NestleJapanIvan Magalhaes PROPOSAL
Murillo Z MaletRussiaElwin Sharvill NEW
Silvio X FigeroaRussiaIoni Bowcher NEGOTIATION
Clifford E MacleadBrazilAmy Elsner PROPOSAL
Claire V PaprockiRussiaAmy Elsner UNQUALIFIED
Johnson H DilliardSpainAsiya Javayant PROPOSAL
Murillo V OldroydCanadaAsiya Javayant NEGOTIATION
Kaitlin B FerenczRussiaAmy Elsner QUALIFIED
Aruna G BriddickIndiaStephen Shaw UNQUALIFIED
Faith P RulapaughArgentinaElwin Sharvill UNQUALIFIED
Stacey N RoysterAustraliaStephen Shaw NEGOTIATION
Emily F PoquetteBrazilAmy Elsner NEGOTIATION
Arvin U KolmetzIndiaElwin Sharvill PROPOSAL
Kadeem B BologniaSpainElwin Sharvill PROPOSAL
Jones T StensethBrazilBernardo Dominic QUALIFIED
Antonio G FigeroaIndiaOnyama Limba RENEWAL
Maria N OldroydItalyIvan Magalhaes NEGOTIATION
Ashley D OstroskyUnited KingdomBernardo Dominic UNQUALIFIED
Tony M DilliardCanadaXuxue Feng NEW
Silvio O StockhamItalyIoni Bowcher PROPOSAL
Kadeem J TollnerAustraliaAnna Fali RENEWAL
Morrow Y GarufiRussiaElwin Sharvill RENEWAL
Isabel Q GlickAustraliaAnna Fali RENEWAL
Aruna U KolmetzRussiaAmy Elsner NEW
Stacey X ChuiCanadaXuxue Feng NEW
Jeanfrancois T ButtRussiaElwin Sharvill QUALIFIED
Maria P ButtIndiaAnna Fali UNQUALIFIED
Juan D MacleadIndiaIoni Bowcher NEGOTIATION
Aditya Z SergiRussiaStephen Shaw NEW
Kaitlin H MacleadUnited KingdomStephen Shaw PROPOSAL
Francesco J ButtArgentinaIoni Bowcher NEGOTIATION
Adams F SchemmerRussiaIvan Magalhaes QUALIFIED
Salvatore W WaycottArgentinaAsiya Javayant NEGOTIATION
Aruna G GauchoCanadaAsiya Javayant UNQUALIFIED
Ashley Z MorascaSpainAsiya Javayant NEW
Aruna I MacleadBrazilAsiya Javayant NEGOTIATION
Julie U InouyeArgentinaIvan Magalhaes NEGOTIATION
Nicolas T GarufiRussiaXuxue Feng UNQUALIFIED
Clifford S ChuiArgentinaElwin Sharvill QUALIFIED
Adams V GillianGermanyOnyama Limba PROPOSAL
Kaitlin M GauchoFranceAmy Elsner RENEWAL
Octavia A FlosiGermanyIoni Bowcher UNQUALIFIED
Ashley B NickaFranceOnyama Limba PROPOSAL
Johnson E BowleyUnited KingdomIvan Magalhaes NEGOTIATION
Darci A FerenczRussiaAnna Fali QUALIFIED
Frozen Columns
Name
Rodrigues H Rulapaugh
Maisha R Ostrosky
Faith Z Caldarera
Johnson Q Stenseth
Faith D Figeroa
Arvin G Gillian
Mayumi A Whobrey
Maria A Marrier
Salvatore A Dilliard
Clifford J Doe
Aruna Q Campain
Francesco F Tollner
Ivar P Albares
Jeanfrancois Y Nestle
Alejandro Y Caudy
Leja M Tollner
Francesco J Stockham
Izzy H Foller
Nicolas L Schemmer
David D Slusarski
Kaitlin X Butt
Jefferson G Butt
Aruna E Schemmer
Izzy K Stenseth
Alejandro Q Venere
Adams J Foller
Munro X Darakjy
Ashley V Gillian
Smith K Bowley
James N Caldarera
Jennifer W Inouye
Izzy D Flosi
Sinclair F Bowley
Aditya U Waycott
Darci M Malet
Smith X Shinko
Morrow K Bowley
Leja E Wieser
Clifford P Albares
Stacey B Flosi
Ashley Z Bolognia
Jeanfrancois X Venere
Mayumi G Paprocki
Wickens U Briddick
David A Inouye
Murillo A Figeroa
Leon D Venere
Wickens N Butt
Silvio R Stenseth
Greenwood U Venere
IdCountryDate
1000Japan2024-04-09
1001Spain2024-04-19
1002United Kingdom2024-05-04
1003United Kingdom2024-04-25
1004Italy2024-04-27
1005Spain2024-04-13
1006France2024-05-02
1007Germany2024-04-11
1008Italy2024-04-24
1009France2024-04-08
1010Canada2024-04-16
1011Brazil2024-05-04
1012Germany2024-04-05
1013Spain2024-04-23
1014Argentina2024-04-18
1015Australia2024-04-12
1016Brazil2024-04-21
1017Germany2024-04-23
1018Argentina2024-04-12
1019United Kingdom2024-04-27
1020Australia2024-04-30
1021Germany2024-04-15
1022Australia2024-04-30
1023France2024-05-02
1024Russia2024-04-25
1025Germany2024-04-30
1026Australia2024-04-23
1027Australia2024-05-01
1028India2024-04-05
1029United Kingdom2024-04-20
1030Russia2024-04-20
1031Spain2024-04-25
1032Australia2024-04-08
1033Canada2024-04-10
1034France2024-04-23
1035Italy2024-04-21
1036Russia2024-04-09
1037Spain2024-04-22
1038Spain2024-04-09
1039Canada2024-04-19
1040Canada2024-05-04
1041Spain2024-04-30
1042Japan2024-04-06
1043Germany2024-04-21
1044India2024-04-25
1045United Kingdom2024-04-15
1046France2024-05-01
1047India2024-04-11
1048Russia2024-04-15
1049Canada2024-04-14

On-Demand Data

NameIdCountryDate
Maria H Doe1000India2024-04-22
Adams J Chui1001Australia2024-04-27
Ivar G Amigon1002Russia2024-04-12
Nicolas U Doe1003Russia2024-05-04
Tony S Gillian1004Germany2024-04-06
Jones O Ruta1005Brazil2024-04-07
Aika L Maclead1006India2024-05-03
David P Shinko1007Russia2024-04-09
Deepesh S Darakjy1008Brazil2024-04-27
James T Saylors1009Russia2024-04-24
Jones Q Albares1010Canada2024-05-01
Kaitlin Y Butt1011Germany2024-04-28
Munro C Butt1012France2024-04-05
Morrow X Tollner1013Canada2024-05-02
Leon V Nicka1014Brazil2024-04-23
Maisha L Tollner1015Japan2024-04-26
Antonio V Saylors1016India2024-04-23
Emily Z Marrier1017Australia2024-04-07
Stacey P Saylors1018Italy2024-04-10
Chavez L Garufi1019Germany2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow J MarrierJapanIvan Magalhaes PROPOSAL
Julie F GauchoAustraliaStephen Shaw QUALIFIED
Isabel D CaudyCanadaAnna Fali RENEWAL
Adams J NestleBrazilElwin Sharvill NEW
Alejandro O OldroydIndiaOnyama Limba NEGOTIATION
Isabel Y CampainIndiaStephen Shaw QUALIFIED
Antonio U RoysterIndiaIvan Magalhaes UNQUALIFIED
Octavia F OldroydItalyBernardo Dominic NEGOTIATION
Aika R AlbaresArgentinaElwin Sharvill PROPOSAL
Alejandro E ButtBrazilBernardo Dominic PROPOSAL
Deepesh Y RimItalyIvan Magalhaes PROPOSAL
Ivar W DarakjyGermanyStephen Shaw NEW
Darci O MarrierUnited KingdomIvan Magalhaes QUALIFIED
Wickens X FlosiItalyElwin Sharvill NEW
Octavia S PerinUnited KingdomAsiya Javayant UNQUALIFIED
Aika Q WhobreyArgentinaIvan Magalhaes PROPOSAL
Claire Q GlickJapanIvan Magalhaes NEW
Claire N GillianAustraliaIvan Magalhaes RENEWAL
Faith J RimUnited KingdomStephen Shaw RENEWAL
Aditya G InouyeJapanXuxue Feng PROPOSAL
Julie I MorascaIndiaIoni Bowcher NEW
Stacey K GarufiFranceXuxue Feng NEW
Tony G FlosiCanadaOnyama Limba QUALIFIED
Aruna L GillianCanadaBernardo Dominic NEGOTIATION
Francesco D KuskoFranceAnna Fali NEGOTIATION
Alejandro O GarufiArgentinaAsiya Javayant RENEWAL
Cody T AlbaresCanadaXuxue Feng UNQUALIFIED
Ivar B FerenczRussiaXuxue Feng PROPOSAL
Tony O StensethSpainBernardo Dominic UNQUALIFIED
Leon R InouyeGermanyStephen Shaw NEGOTIATION
Claire M BriddickItalyStephen Shaw NEW
Julie W MarrierArgentinaIoni Bowcher PROPOSAL
Murillo H WhobreySpainXuxue Feng QUALIFIED
Morrow P StensethFranceElwin Sharvill UNQUALIFIED
Johnson I WieserUnited KingdomIvan Magalhaes QUALIFIED
Silvio G SergiIndiaBernardo Dominic NEGOTIATION
Maria T BologniaRussiaBernardo Dominic RENEWAL
Sinclair Y NickaFranceOnyama Limba QUALIFIED
Mujtaba J StockhamArgentinaXuxue Feng PROPOSAL
Smith J KolmetzFranceXuxue Feng NEGOTIATION

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