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
Smith D WieserIndiaXuxue Feng NEGOTIATION
Antonio O OstroskyUnited KingdomElwin Sharvill NEW
Izzy Y AlbaresBrazilAmy Elsner QUALIFIED
Antonio K GauchoBrazilAnna Fali RENEWAL
Claire A RutaAustraliaStephen Shaw NEGOTIATION
Claire B VocelkaAustraliaXuxue Feng UNQUALIFIED
David T FerenczFranceStephen Shaw UNQUALIFIED
Sinclair T CampainFranceAnna Fali NEW
Maria D BriddickBrazilIvan Magalhaes UNQUALIFIED
Juan U CampainRussiaAmy Elsner RENEWAL
Maisha N GlickRussiaXuxue Feng RENEWAL
Ricardo H WieserFranceIvan Magalhaes QUALIFIED
Costa X GarufiItalyIoni Bowcher NEW
David U KolmetzBrazilAsiya Javayant NEGOTIATION
Costa C CaudySpainXuxue Feng QUALIFIED
Aika X FlosiAustraliaAnna Fali NEGOTIATION
Adams X TollnerFranceAmy Elsner NEGOTIATION
Smith B StockhamSpainAnna Fali RENEWAL
Misaki B DoeFranceIoni Bowcher QUALIFIED
Darci K BowleyCanadaAnna Fali RENEWAL
Murillo S InouyeIndiaOnyama Limba UNQUALIFIED
Johnson U WieserFranceBernardo Dominic NEGOTIATION
Costa M DilliardUnited KingdomIoni Bowcher QUALIFIED
Claire K PerinCanadaXuxue Feng UNQUALIFIED
Mujtaba U CampainJapanAmy Elsner NEGOTIATION
Leja J NestleUnited KingdomAmy Elsner NEGOTIATION
Rodrigues Y PerinFranceAsiya Javayant QUALIFIED
Maria Q MaletArgentinaIoni Bowcher NEGOTIATION
Jennifer Z OldroydUnited KingdomIvan Magalhaes RENEWAL
Adams Y DoeAustraliaOnyama Limba NEGOTIATION
Cody Y RoysterRussiaIoni Bowcher NEW
Rodrigues O PaprockiItalyOnyama Limba UNQUALIFIED
Murillo T RutaUnited KingdomOnyama Limba NEW
Rodrigues G CaudyUnited KingdomXuxue Feng RENEWAL
Clifford Q TollnerItalyIoni Bowcher UNQUALIFIED
Kaitlin D MacleadIndiaElwin Sharvill NEGOTIATION
Cody S PerinUnited KingdomAsiya Javayant UNQUALIFIED
Aruna A PaprockiRussiaStephen Shaw RENEWAL
Munro G OstroskyAustraliaIvan Magalhaes RENEWAL
Murillo G SchemmerFranceIoni Bowcher NEW
Stacey U RoysterJapanIvan Magalhaes PROPOSAL
Jeanfrancois Z MarrierUnited KingdomIoni Bowcher PROPOSAL
Misaki Y DilliardGermanyXuxue Feng RENEWAL
Morrow M RulapaughUnited KingdomIvan Magalhaes RENEWAL
Wickens D DilliardAustraliaElwin Sharvill RENEWAL
Stacey O SergiArgentinaIvan Magalhaes NEW
Sinclair E FollerSpainAsiya Javayant NEGOTIATION
Aditya K AlbaresAustraliaAmy Elsner NEGOTIATION
Tony U InouyeCanadaIvan Magalhaes QUALIFIED
Isabel K WhobreySpainElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Leja O StensethJapanBernardo Dominic UNQUALIFIED
Ivar S OldroydUnited KingdomElwin Sharvill NEGOTIATION
Maisha A MorascaIndiaXuxue Feng NEW
Maisha Q StockhamItalyOnyama Limba NEW
Salvatore D PerinFranceStephen Shaw PROPOSAL
Mayumi Z NickaAustraliaAnna Fali RENEWAL
Mayumi Q MaletUnited KingdomIvan Magalhaes NEW
James S RimFranceElwin Sharvill NEGOTIATION
Ricardo E PerinJapanIvan Magalhaes RENEWAL
Kadeem F BologniaGermanyIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna U InouyeArgentina2024-04-04Benton, John B Jr RENEWAL44Onyama Limba
1001Isabel Z FollerAustralia2024-04-13Rangoni Of Florence RENEWAL36Ioni Bowcher
1002Arvin R NestleSpain2024-03-28King, Christopher A Esq QUALIFIED21Stephen Shaw
1003Antonio R RulapaughGermany2024-03-31Dorl, James J Esq RENEWAL41Elwin Sharvill
1004Jennifer O ChuiUnited Kingdom2024-03-31Dorl, James J Esq NEW24Amy Elsner
1005Julie P DoeArgentina2024-04-06Feiner Bros QUALIFIED65Ioni Bowcher
1006Costa X NestleRussia2024-04-11Dorl, James J Esq RENEWAL35Ioni Bowcher
1007Costa D VocelkaFrance2024-04-15Buckley Miller Wright NEGOTIATION79Stephen Shaw
1008Emily Z ButtGermany2024-04-18Truhlar And Truhlar Attys NEW56Amy Elsner
1009Antonio E AmigonFrance2024-04-02Feltz Printing Service QUALIFIED27Xuxue Feng
1010Murillo A CaldareraGermany2024-04-09King, Christopher A Esq UNQUALIFIED78Onyama Limba
1011Mujtaba V WieserJapan2024-04-14Buckley Miller Wright UNQUALIFIED50Onyama Limba
1012Morrow X WaycottSpain2024-04-14Buckley Miller Wright NEGOTIATION1Onyama Limba
1013Emily M PerinUnited Kingdom2024-04-01Feiner Bros RENEWAL49Xuxue Feng
1014Aika I IturbideFrance2024-04-17Truhlar And Truhlar Attys RENEWAL26Ivan Magalhaes
1015Wickens E StockhamAustralia2024-04-15Commercial Press NEW6Bernardo Dominic
1016Cody B RimGermany2024-04-09Chemel, James L Cpa PROPOSAL73Xuxue Feng
1017Ivar Y OstroskyCanada2024-04-07Rangoni Of Florence NEW39Onyama Limba
1018James R SaylorsItaly2024-04-20Printing Dimensions PROPOSAL91Elwin Sharvill
1019Jennifer U CaudyIndia2024-04-25Commercial Press PROPOSAL47Elwin Sharvill
1020Misaki Y BowleyIndia2024-04-01Rangoni Of Florence PROPOSAL44Amy Elsner
1021Johnson Q RulapaughSpain2024-03-31Printing Dimensions UNQUALIFIED3Ivan Magalhaes
1022Mayumi L StockhamAustralia2024-04-10Rangoni Of Florence PROPOSAL61Xuxue Feng
1023Deepesh D PerinAustralia2024-04-14Printing Dimensions QUALIFIED78Ioni Bowcher
1024Emily M KuskoArgentina2024-04-21Commercial Press QUALIFIED4Anna Fali
1025Costa T NickaIndia2024-04-05Feltz Printing Service UNQUALIFIED37Onyama Limba
1026Aditya B KolmetzAustralia2024-04-04Dorl, James J Esq QUALIFIED44Anna Fali
1027Aruna V StockhamCanada2024-04-22Commercial Press NEW57Amy Elsner
1028Adams A FigeroaRussia2024-04-09Feiner Bros QUALIFIED9Onyama Limba
1029Chavez I BologniaItaly2024-04-06Chanay, Jeffrey A Esq NEGOTIATION22Elwin Sharvill
1030Maria Z MacleadArgentina2024-04-18King, Christopher A Esq NEW5Amy Elsner
1031Murillo B InouyeSpain2024-04-08Truhlar And Truhlar Attys RENEWAL29Amy Elsner
1032Wickens F DilliardCanada2024-04-16Chapman, Ross E Esq QUALIFIED98Bernardo Dominic
1033Nicolas Y ChuiArgentina2024-04-08Chemel, James L Cpa NEW59Elwin Sharvill
1034Silvio L GlickSpain2024-04-10Rousseaux, Michael Esq NEW57Elwin Sharvill
1035Antonio Q GauchoJapan2024-04-17Truhlar And Truhlar Attys NEW65Onyama Limba
1036Antonio P TollnerFrance2024-04-26Chanay, Jeffrey A Esq PROPOSAL72Amy Elsner
1037Octavia M AlbaresBrazil2024-04-05Dorl, James J Esq QUALIFIED9Ioni Bowcher
1038Julie H MaletFrance2024-04-08Dorl, James J Esq QUALIFIED39Onyama Limba
1039Ashley I GauchoGermany2024-04-23Truhlar And Truhlar Attys QUALIFIED36Onyama Limba
1040Aika R WhobreyArgentina2024-04-08Chanay, Jeffrey A Esq QUALIFIED58Ivan Magalhaes
1041Isabel O BologniaIndia2024-04-10Commercial Press PROPOSAL41Anna Fali
1042Misaki Z TollnerAustralia2024-04-10Buckley Miller Wright NEGOTIATION63Anna Fali
1043Octavia K StockhamGermany2024-04-05Feiner Bros PROPOSAL10Anna Fali
1044Octavia K FerenczUnited Kingdom2024-04-06Rousseaux, Michael Esq PROPOSAL89Ivan Magalhaes
1045Silvio P NickaItaly2024-04-02Chemel, James L Cpa UNQUALIFIED47Xuxue Feng
1046Silvio L ShinkoJapan2024-04-18Chanay, Jeffrey A Esq RENEWAL66Stephen Shaw
1047Faith F TollnerArgentina2024-04-03Printing Dimensions UNQUALIFIED91Ioni Bowcher
1048Jones G WieserItaly2024-04-07Chanay, Jeffrey A Esq NEW65Bernardo Dominic
1049Johnson X AlbaresJapan2024-04-08Commercial Press UNQUALIFIED43Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Adams M PoquetteFranceXuxue Feng NEW
Aruna F RimArgentinaStephen Shaw PROPOSAL
Leja R FerenczIndiaAsiya Javayant NEGOTIATION
Antonio H WieserArgentinaXuxue Feng QUALIFIED
Johnson F MacleadItalyIoni Bowcher NEW
Darci C RulapaughBrazilOnyama Limba NEW
Izzy A MorascaBrazilIoni Bowcher RENEWAL
Aika T DilliardGermanyStephen Shaw UNQUALIFIED
Smith G FigeroaIndiaIoni Bowcher PROPOSAL
Maisha D BologniaFranceElwin Sharvill QUALIFIED
Stacey W DilliardUnited KingdomAmy Elsner PROPOSAL
Kadeem A PaprockiCanadaIoni Bowcher NEGOTIATION
Silvio K StockhamUnited KingdomStephen Shaw RENEWAL
Jennifer Q TollnerRussiaXuxue Feng NEW
David Q GlickUnited KingdomIoni Bowcher UNQUALIFIED
Tony W FigeroaRussiaBernardo Dominic QUALIFIED
Nicolas H AlbaresJapanBernardo Dominic QUALIFIED
Maisha J GlickRussiaAnna Fali QUALIFIED
Jones U PaprockiBrazilAmy Elsner NEGOTIATION
Adams Z AmigonBrazilBernardo Dominic QUALIFIED
Arvin W MorascaItalyAnna Fali QUALIFIED
Aika Q RulapaughBrazilAmy Elsner RENEWAL
Tony D FigeroaFranceStephen Shaw QUALIFIED
Ashley I WieserRussiaAmy Elsner RENEWAL
Aika P MacleadSpainIvan Magalhaes PROPOSAL
Johnson G MarrierIndiaIvan Magalhaes QUALIFIED
Salvatore Y ShinkoSpainElwin Sharvill NEW
Maisha F GarufiUnited KingdomAsiya Javayant RENEWAL
Kaitlin C BowleyBrazilStephen Shaw QUALIFIED
Salvatore D MacleadAustraliaStephen Shaw RENEWAL
Arvin T DoeBrazilIvan Magalhaes RENEWAL
Jones O RimUnited KingdomAmy Elsner RENEWAL
Ivar D RimCanadaIoni Bowcher UNQUALIFIED
Costa I SaylorsBrazilIvan Magalhaes NEW
Ivar L GillianUnited KingdomAsiya Javayant NEW
Deepesh Y StensethJapanIoni Bowcher UNQUALIFIED
Silvio Y MarrierArgentinaIvan Magalhaes QUALIFIED
Deepesh Q MorascaJapanXuxue Feng QUALIFIED
Stacey F AmigonCanadaOnyama Limba NEW
Murillo J PerinBrazilBernardo Dominic RENEWAL
Tony P StensethFranceAmy Elsner QUALIFIED
Juan W ShinkoItalyAmy Elsner PROPOSAL
Francesco U OldroydRussiaAsiya Javayant NEGOTIATION
Kadeem O SchemmerArgentinaIoni Bowcher NEW
Maria J CaldareraJapanAsiya Javayant QUALIFIED
Smith G MacleadGermanyIvan Magalhaes PROPOSAL
Ashley K DilliardItalyAnna Fali PROPOSAL
Johnson M BowleyGermanyXuxue Feng QUALIFIED
Isabel C OstroskyGermanyElwin Sharvill QUALIFIED
Misaki B DarakjyRussiaAsiya Javayant QUALIFIED
Frozen Columns
Name
Maria T Stockham
Kaitlin N Nestle
Izzy O Oldroyd
Ricardo R Royster
Kaitlin G Paprocki
Leja S Campain
Jennifer T Rulapaugh
Izzy P Oldroyd
Johnson B Schemmer
Jones T Royster
Izzy L Sergi
Morrow V Rim
Emily S Ruta
Silvio J Nicka
Greenwood C Caudy
Ricardo H Paprocki
Antonio R Stenseth
Jeanfrancois Q Waycott
Jennifer F Bolognia
Stacey M Waycott
Cody P Tollner
Munro G Bolognia
Aika S Wieser
Mayumi E Inouye
Aditya D Oldroyd
Faith W Poquette
Stacey H Rim
Morrow X Morasca
Smith M Flosi
Antonio O Ostrosky
Mujtaba S Albares
Jones P Whobrey
Ricardo F Waycott
Salvatore G Nestle
Maria I Shinko
Maria Z Garufi
Maria T Slusarski
Jones D Morasca
Salvatore Q Shinko
Morrow J Chui
Wickens E Morasca
Ricardo B Vocelka
Leon A Wieser
Kadeem K Malet
Ivar I Ferencz
Greenwood M Waycott
Ashley K Nestle
Ashley H Waycott
Kadeem S Bolognia
Salvatore F Chui
IdCountryDate
1000France2024-03-31
1001France2024-04-01
1002Spain2024-04-07
1003Brazil2024-04-26
1004Canada2024-04-10
1005Argentina2024-04-04
1006Brazil2024-04-21
1007Canada2024-04-17
1008United Kingdom2024-04-09
1009United Kingdom2024-04-03
1010Japan2024-04-05
1011Brazil2024-04-22
1012Japan2024-04-12
1013Germany2024-04-15
1014Spain2024-04-18
1015India2024-04-07
1016France2024-04-06
1017Argentina2024-04-25
1018Spain2024-04-20
1019Germany2024-03-31
1020Brazil2024-04-10
1021Japan2024-04-14
1022Canada2024-04-01
1023Italy2024-03-31
1024Australia2024-03-28
1025Canada2024-04-05
1026United Kingdom2024-03-28
1027France2024-04-21
1028Russia2024-04-20
1029Spain2024-04-26
1030Brazil2024-04-03
1031Russia2024-04-07
1032United Kingdom2024-04-05
1033Argentina2024-03-31
1034India2024-03-29
1035France2024-04-01
1036Canada2024-04-02
1037Japan2024-04-18
1038Russia2024-04-01
1039Spain2024-03-31
1040Japan2024-04-11
1041Brazil2024-04-26
1042Russia2024-04-22
1043Germany2024-04-15
1044France2024-03-28
1045Spain2024-04-04
1046Japan2024-04-23
1047India2024-04-09
1048Japan2024-04-10
1049Spain2024-04-08

On-Demand Data

NameIdCountryDate
Izzy D Darakjy1000Australia2024-04-18
Murillo M Stenseth1001Argentina2024-04-16
Stacey F Bowley1002Australia2024-04-18
Rodrigues L Tollner1003Japan2024-04-03
Wickens R Albares1004Brazil2024-04-01
Rodrigues L Ferencz1005Argentina2024-04-26
Stacey D Stenseth1006Spain2024-04-22
Aruna J Foller1007United Kingdom2024-04-02
Isabel L Ruta1008Australia2024-04-05
Tony D Vocelka1009Canada2024-04-17
Murillo B Paprocki1010Spain2024-04-25
Jones L Albares1011Russia2024-04-02
David D Maclead1012Canada2024-04-03
Rodrigues H Ruta1013Russia2024-04-10
Adams P Oldroyd1014France2024-03-31
Maria I Gillian1015Spain2024-04-26
Francesco I Oldroyd1016India2024-04-05
Smith L Ferencz1017Canada2024-04-22
Julie K Ferencz1018United Kingdom2024-04-19
Antonio Z Flosi1019Spain2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba H OldroydIndiaBernardo Dominic NEGOTIATION
Misaki X DarakjySpainStephen Shaw NEW
Izzy J DoeIndiaAsiya Javayant QUALIFIED
Morrow R SergiCanadaXuxue Feng RENEWAL
Aruna L CaldareraBrazilAsiya Javayant PROPOSAL
Juan G SaylorsBrazilElwin Sharvill QUALIFIED
Mayumi H OldroydBrazilAsiya Javayant UNQUALIFIED
Faith K PaprockiIndiaIvan Magalhaes RENEWAL
Alejandro I GarufiArgentinaAmy Elsner NEGOTIATION
Alejandro V KolmetzArgentinaOnyama Limba RENEWAL
David J NestleUnited KingdomIoni Bowcher RENEWAL
Ivar F AmigonUnited KingdomBernardo Dominic UNQUALIFIED
Maria I BriddickItalyAmy Elsner QUALIFIED
Darci W PoquetteRussiaXuxue Feng PROPOSAL
Silvio P FollerGermanyAsiya Javayant NEGOTIATION
Antonio Q KuskoFranceAsiya Javayant QUALIFIED
Adams D CaudyFranceIoni Bowcher NEGOTIATION
Greenwood T FlosiRussiaIoni Bowcher NEGOTIATION
Arvin Y RimFranceIoni Bowcher QUALIFIED
Jennifer B NickaFranceIvan Magalhaes PROPOSAL
Jennifer T CampainSpainElwin Sharvill RENEWAL
Deepesh R WaycottRussiaOnyama Limba UNQUALIFIED
Stacey R StockhamBrazilOnyama Limba RENEWAL
Clifford G WaycottSpainOnyama Limba NEGOTIATION
Arvin R PoquetteUnited KingdomXuxue Feng NEGOTIATION
Salvatore M IturbideSpainXuxue Feng NEGOTIATION
Munro H MarrierUnited KingdomStephen Shaw RENEWAL
Morrow H CaldareraIndiaAmy Elsner NEW
Julie U MorascaArgentinaStephen Shaw NEW
James K VocelkaSpainIoni Bowcher RENEWAL
Darci J FigeroaUnited KingdomAmy Elsner PROPOSAL
Munro V SlusarskiAustraliaAnna Fali NEGOTIATION
Aditya X TollnerSpainBernardo Dominic NEGOTIATION
Francesco S RulapaughFranceXuxue Feng PROPOSAL
Cody Z StensethGermanyBernardo Dominic UNQUALIFIED
Alejandro L InouyeAustraliaAmy Elsner NEW
Julie P NickaIndiaStephen Shaw NEW
Rodrigues L FlosiIndiaIvan Magalhaes UNQUALIFIED
Costa F StockhamUnited KingdomElwin Sharvill UNQUALIFIED
Nicolas C WieserFranceAmy Elsner 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>