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
Aditya D AlbaresRussiaAsiya Javayant PROPOSAL
Jefferson C MacleadGermanyOnyama Limba QUALIFIED
Aruna J PaprockiGermanyStephen Shaw UNQUALIFIED
Misaki C BowleyItalyIvan Magalhaes NEW
Aditya G SchemmerItalyAmy Elsner RENEWAL
Tony W BologniaSpainAsiya Javayant NEGOTIATION
Arvin U VocelkaFranceIvan Magalhaes UNQUALIFIED
Leon R CaldareraJapanIvan Magalhaes UNQUALIFIED
Cody Q SchemmerJapanIoni Bowcher NEW
Darci S WieserBrazilAmy Elsner NEGOTIATION
Emily D RutaCanadaStephen Shaw UNQUALIFIED
Juan U RimGermanyAsiya Javayant QUALIFIED
Leja P NestleAustraliaAnna Fali PROPOSAL
Leja K GauchoSpainElwin Sharvill PROPOSAL
Tony V PerinSpainIvan Magalhaes NEW
Tony A MacleadAustraliaStephen Shaw QUALIFIED
Adams L AmigonGermanyStephen Shaw RENEWAL
Ricardo B VocelkaBrazilIvan Magalhaes NEW
Darci T CaudySpainStephen Shaw QUALIFIED
Izzy P CaldareraRussiaAsiya Javayant UNQUALIFIED
Silvio H VocelkaFranceBernardo Dominic NEGOTIATION
James P SaylorsItalyIoni Bowcher NEW
Ivar I GauchoUnited KingdomOnyama Limba RENEWAL
Francesco I TollnerArgentinaXuxue Feng QUALIFIED
Stacey C GlickSpainIvan Magalhaes NEGOTIATION
Aika J StockhamArgentinaAsiya Javayant NEGOTIATION
Jones O MarrierFranceAmy Elsner PROPOSAL
Emily H InouyeGermanyAnna Fali UNQUALIFIED
Antonio A CaldareraBrazilBernardo Dominic NEW
Rodrigues I OstroskyUnited KingdomIvan Magalhaes UNQUALIFIED
Julie E FlosiFranceXuxue Feng QUALIFIED
Mujtaba L FlosiJapanAsiya Javayant PROPOSAL
Clifford K KuskoItalyXuxue Feng UNQUALIFIED
Alejandro Z SlusarskiJapanElwin Sharvill NEW
Faith L BowleyUnited KingdomBernardo Dominic UNQUALIFIED
Julie M DoeJapanIoni Bowcher QUALIFIED
Smith N BowleyFranceOnyama Limba NEW
Mayumi A StockhamIndiaBernardo Dominic NEW
Adams K SaylorsGermanyXuxue Feng NEGOTIATION
Antonio F KuskoAustraliaAsiya Javayant QUALIFIED
Jefferson Z ChuiSpainXuxue Feng QUALIFIED
Leja T VocelkaUnited KingdomBernardo Dominic NEGOTIATION
Juan O OldroydItalyAmy Elsner PROPOSAL
Wickens B SchemmerSpainStephen Shaw QUALIFIED
Chavez X InouyeItalyOnyama Limba NEGOTIATION
Ashley A MorascaUnited KingdomXuxue Feng NEGOTIATION
David D MacleadIndiaElwin Sharvill RENEWAL
Ivar O VenereAustraliaAnna Fali NEGOTIATION
Deepesh I OstroskyJapanAmy Elsner UNQUALIFIED
Maisha I PerinItalyIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Murillo E RimIndiaIvan Magalhaes NEGOTIATION
Maisha S RimBrazilAnna Fali NEGOTIATION
Tony J FlosiIndiaIoni Bowcher RENEWAL
Rodrigues S ShinkoBrazilOnyama Limba RENEWAL
Aruna B PerinIndiaAmy Elsner RENEWAL
Arvin F MorascaUnited KingdomStephen Shaw NEGOTIATION
Clifford H SlusarskiIndiaElwin Sharvill RENEWAL
Faith K BologniaJapanIoni Bowcher UNQUALIFIED
Jennifer H FlosiCanadaOnyama Limba RENEWAL
Jefferson R SergiCanadaIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie F VocelkaAustralia2024-04-18Benton, John B Jr NEW24Xuxue Feng
1001Mujtaba T BologniaUnited Kingdom2024-04-20Feltz Printing Service NEGOTIATION36Elwin Sharvill
1002Maisha L SchemmerCanada2024-04-18King, Christopher A Esq NEW61Asiya Javayant
1003Ivar I RimBrazil2024-05-06Feltz Printing Service RENEWAL45Bernardo Dominic
1004Wickens V SergiGermany2024-04-30Buckley Miller Wright RENEWAL78Xuxue Feng
1005Silvio F AmigonBrazil2024-05-11Morlong Associates QUALIFIED69Ioni Bowcher
1006Octavia T VenereAustralia2024-05-06Buckley Miller Wright NEGOTIATION71Stephen Shaw
1007Alejandro W DoeJapan2024-05-12Chanay, Jeffrey A Esq QUALIFIED24Bernardo Dominic
1008David A TollnerUnited Kingdom2024-04-29Printing Dimensions NEGOTIATION97Anna Fali
1009Kaitlin Z OstroskyJapan2024-04-22Chanay, Jeffrey A Esq QUALIFIED65Onyama Limba
1010Alejandro R SlusarskiArgentina2024-05-03Chapman, Ross E Esq RENEWAL44Elwin Sharvill
1011Octavia Y PoquetteUnited Kingdom2024-04-19Morlong Associates RENEWAL37Ivan Magalhaes
1012Jennifer Y FigeroaCanada2024-04-30Buckley Miller Wright NEGOTIATION62Stephen Shaw
1013Tony W AlbaresGermany2024-04-19Chemel, James L Cpa NEGOTIATION73Ioni Bowcher
1014Alejandro Q KolmetzSpain2024-05-09King, Christopher A Esq UNQUALIFIED64Xuxue Feng
1015Antonio B RutaJapan2024-04-28Dorl, James J Esq NEGOTIATION17Elwin Sharvill
1016Jennifer A KolmetzFrance2024-04-14Printing Dimensions PROPOSAL29Anna Fali
1017Claire G MaletBrazil2024-04-19King, Christopher A Esq NEW53Ioni Bowcher
1018Ricardo J ButtBrazil2024-04-20Truhlar And Truhlar Attys NEGOTIATION48Stephen Shaw
1019Rodrigues C StensethUnited Kingdom2024-05-08Commercial Press PROPOSAL68Bernardo Dominic
1020Deepesh Z GillianCanada2024-04-19Chanay, Jeffrey A Esq NEGOTIATION77Bernardo Dominic
1021Claire A NickaUnited Kingdom2024-04-27Benton, John B Jr NEW30Stephen Shaw
1022Alejandro A VenereIndia2024-04-26Feiner Bros UNQUALIFIED42Ivan Magalhaes
1023Clifford M TollnerGermany2024-05-07Benton, John B Jr QUALIFIED18Stephen Shaw
1024Jones P AmigonGermany2024-05-05Benton, John B Jr PROPOSAL92Amy Elsner
1025Leon V PaprockiJapan2024-05-03Chapman, Ross E Esq QUALIFIED94Amy Elsner
1026Tony R GarufiAustralia2024-05-06Feiner Bros UNQUALIFIED7Onyama Limba
1027Cody Z MacleadArgentina2024-04-13Printing Dimensions RENEWAL67Anna Fali
1028Misaki O MacleadFrance2024-04-13Feltz Printing Service PROPOSAL82Ioni Bowcher
1029Adams L BowleyGermany2024-05-07Commercial Press QUALIFIED30Asiya Javayant
1030Julie M AlbaresIndia2024-05-06Buckley Miller Wright PROPOSAL91Bernardo Dominic
1031Silvio A ChuiRussia2024-05-08Feiner Bros NEGOTIATION96Stephen Shaw
1032Maisha Q NestleBrazil2024-04-29Benton, John B Jr RENEWAL35Bernardo Dominic
1033Alejandro T CaudyUnited Kingdom2024-05-10Buckley Miller Wright QUALIFIED49Anna Fali
1034Francesco T BowleyArgentina2024-05-11Rousseaux, Michael Esq UNQUALIFIED52Asiya Javayant
1035Greenwood M SergiFrance2024-04-15Truhlar And Truhlar Attys RENEWAL23Bernardo Dominic
1036Clifford D RulapaughAustralia2024-05-07Chanay, Jeffrey A Esq NEW7Amy Elsner
1037Ashley I RoysterBrazil2024-05-01Feiner Bros PROPOSAL40Asiya Javayant
1038Aika F RutaItaly2024-04-27Buckley Miller Wright NEGOTIATION70Xuxue Feng
1039Jennifer T RimBrazil2024-05-10Chemel, James L Cpa QUALIFIED32Asiya Javayant
1040Leon Q CaldareraItaly2024-04-22Feltz Printing Service PROPOSAL50Bernardo Dominic
1041Smith W IturbideIndia2024-05-07Rousseaux, Michael Esq QUALIFIED60Xuxue Feng
1042Tony C KuskoGermany2024-05-05Feltz Printing Service UNQUALIFIED62Amy Elsner
1043Wickens T MaletIndia2024-04-22Printing Dimensions RENEWAL83Anna Fali
1044Isabel Q PerinSpain2024-04-17King, Christopher A Esq PROPOSAL19Onyama Limba
1045Morrow B MaletSpain2024-05-02King, Christopher A Esq QUALIFIED14Bernardo Dominic
1046Faith H StockhamGermany2024-04-21Dorl, James J Esq QUALIFIED68Bernardo Dominic
1047Octavia V FollerIndia2024-05-05Feltz Printing Service NEGOTIATION4Amy Elsner
1048Stacey F DilliardBrazil2024-05-03Printing Dimensions UNQUALIFIED12Onyama Limba
1049Salvatore G NickaCanada2024-04-22Buckley Miller Wright NEW23Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Murillo N CaldareraRussiaIoni Bowcher NEW
Claire E ChuiGermanyBernardo Dominic RENEWAL
Francesco O OstroskyAustraliaAsiya Javayant NEW
Alejandro G BologniaRussiaElwin Sharvill RENEWAL
Jones H BriddickFranceIvan Magalhaes RENEWAL
Izzy N MacleadRussiaAnna Fali RENEWAL
Emily E TollnerAustraliaStephen Shaw UNQUALIFIED
Rodrigues W DoeJapanXuxue Feng RENEWAL
Mayumi R AmigonJapanAmy Elsner UNQUALIFIED
Greenwood R RimSpainAnna Fali RENEWAL
Ricardo C GillianBrazilElwin Sharvill QUALIFIED
Alejandro N SchemmerSpainStephen Shaw NEGOTIATION
Kaitlin B KolmetzCanadaAmy Elsner RENEWAL
Emily M MaletBrazilXuxue Feng QUALIFIED
Stacey U CaudyArgentinaIoni Bowcher NEW
Leon W DilliardSpainStephen Shaw PROPOSAL
Ashley U VenereJapanElwin Sharvill UNQUALIFIED
Smith A WaycottItalyAsiya Javayant PROPOSAL
Mujtaba G FigeroaItalyElwin Sharvill NEGOTIATION
Maria I CaudyItalyAsiya Javayant UNQUALIFIED
Silvio J BologniaJapanAnna Fali QUALIFIED
Stacey L PerinArgentinaElwin Sharvill UNQUALIFIED
Claire J WaycottAustraliaXuxue Feng UNQUALIFIED
Murillo E SlusarskiUnited KingdomIvan Magalhaes NEGOTIATION
Francesco P FollerArgentinaStephen Shaw QUALIFIED
Misaki X FollerBrazilXuxue Feng NEGOTIATION
Murillo Q TollnerRussiaAsiya Javayant PROPOSAL
Silvio Q MarrierIndiaStephen Shaw NEGOTIATION
Leja I BriddickUnited KingdomIoni Bowcher QUALIFIED
Rodrigues W SchemmerItalyXuxue Feng NEGOTIATION
Aditya A VenereArgentinaAnna Fali NEW
Francesco O FollerGermanyOnyama Limba QUALIFIED
James X GlickUnited KingdomBernardo Dominic NEW
Juan B MaletCanadaOnyama Limba QUALIFIED
Faith Z VenereRussiaIvan Magalhaes NEGOTIATION
Leon L PerinRussiaBernardo Dominic PROPOSAL
Alejandro S DarakjyGermanyIoni Bowcher NEGOTIATION
Cody B RulapaughAustraliaAnna Fali PROPOSAL
Wickens E WhobreyUnited KingdomIoni Bowcher QUALIFIED
Isabel D MaletSpainAsiya Javayant NEGOTIATION
Arvin C InouyeUnited KingdomIvan Magalhaes NEGOTIATION
Julie Y FollerCanadaAmy Elsner NEGOTIATION
Jennifer B FollerCanadaElwin Sharvill QUALIFIED
Silvio S BriddickFranceElwin Sharvill UNQUALIFIED
Antonio K RulapaughCanadaIvan Magalhaes UNQUALIFIED
Nicolas Z PaprockiSpainAnna Fali RENEWAL
Jennifer M MorascaRussiaBernardo Dominic NEGOTIATION
Izzy N FollerItalyOnyama Limba UNQUALIFIED
Faith Y BriddickAustraliaElwin Sharvill NEW
Maisha Q GarufiCanadaElwin Sharvill NEW
Frozen Columns
Name
Ricardo L Rim
David U Malet
Cody C Venere
Ivar H Iturbide
Mujtaba K Slusarski
Adams H Paprocki
Greenwood D Gaucho
Leon R Sergi
Stacey X Venere
Greenwood V Poquette
Munro W Butt
Munro P Oldroyd
Octavia B Glick
Greenwood L Malet
Munro L Schemmer
Smith Y Shinko
Antonio J Ostrosky
Adams J Ostrosky
Salvatore Y Sergi
Arvin G Kolmetz
Julie M Bolognia
Tony G Dilliard
Sinclair B Maclead
Mujtaba W Flosi
Tony X Oldroyd
Leja R Dilliard
Smith F Caldarera
Jefferson D Kusko
Alejandro L Kolmetz
Leja Z Amigon
Ivar R Campain
Mayumi T Stenseth
Ricardo N Garufi
Johnson Z Maclead
Smith H Rim
Rodrigues P Maclead
Sinclair V Nestle
Juan F Slusarski
Rodrigues T Paprocki
Aruna Y Doe
Aditya I Chui
Emily T Whobrey
Johnson V Waycott
Nicolas N Morasca
Cody G Inouye
Antonio K Bowley
Sinclair I Stockham
Cody Z Royster
Silvio V Kusko
Tony G Inouye
IdCountryDate
1000India2024-05-03
1001Argentina2024-05-12
1002India2024-05-04
1003United Kingdom2024-05-02
1004United Kingdom2024-04-27
1005Brazil2024-04-22
1006Japan2024-04-19
1007Canada2024-05-12
1008Brazil2024-04-28
1009Argentina2024-04-24
1010Brazil2024-04-26
1011Argentina2024-05-09
1012France2024-04-24
1013Italy2024-04-17
1014India2024-05-06
1015Brazil2024-05-03
1016Spain2024-05-12
1017Canada2024-05-08
1018Russia2024-04-27
1019Spain2024-04-22
1020Japan2024-04-22
1021Japan2024-04-18
1022Australia2024-04-15
1023India2024-04-21
1024Argentina2024-05-09
1025India2024-05-08
1026Russia2024-04-22
1027France2024-04-24
1028France2024-04-13
1029United Kingdom2024-04-25
1030India2024-04-18
1031Canada2024-04-20
1032Russia2024-04-29
1033Australia2024-04-17
1034Argentina2024-04-21
1035United Kingdom2024-04-21
1036Spain2024-05-05
1037Germany2024-05-04
1038Japan2024-05-03
1039Russia2024-05-12
1040Japan2024-05-01
1041Canada2024-04-18
1042France2024-04-26
1043Russia2024-04-20
1044Argentina2024-04-15
1045France2024-05-11
1046United Kingdom2024-05-08
1047Germany2024-05-07
1048United Kingdom2024-04-23
1049France2024-04-16

On-Demand Data

NameIdCountryDate
Rodrigues V Doe1000Russia2024-04-23
Greenwood M Wieser1001Argentina2024-04-23
Jennifer I Malet1002Argentina2024-04-30
Kaitlin Z Paprocki1003Russia2024-04-13
Ivar L Foller1004Spain2024-04-18
Julie H Venere1005Spain2024-05-08
Ashley P Iturbide1006Canada2024-05-07
Silvio H Malet1007Russia2024-05-11
Johnson D Darakjy1008Australia2024-05-12
Stacey X Saylors1009Argentina2024-05-05
Misaki B Perin1010India2024-04-29
Francesco N Waycott1011France2024-05-04
Aruna B Venere1012Canada2024-05-01
Deepesh P Schemmer1013Spain2024-04-24
Ricardo Z Bolognia1014Canada2024-05-03
Chavez R Butt1015Spain2024-04-29
Morrow X Oldroyd1016Australia2024-04-24
Juan L Malet1017Spain2024-04-20
Murillo Z Ruta1018Canada2024-05-01
Francesco N Perin1019India2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens H VocelkaUnited KingdomIoni Bowcher PROPOSAL
Aika I StockhamJapanAmy Elsner QUALIFIED
Ricardo D VocelkaRussiaAsiya Javayant PROPOSAL
Jefferson E BologniaSpainIvan Magalhaes QUALIFIED
Wickens O FlosiUnited KingdomBernardo Dominic RENEWAL
Arvin N MacleadItalyOnyama Limba NEGOTIATION
James X WaycottArgentinaIvan Magalhaes PROPOSAL
Maisha D KuskoRussiaIoni Bowcher PROPOSAL
Johnson Z AlbaresItalyAmy Elsner NEGOTIATION
Arvin E FollerCanadaXuxue Feng QUALIFIED
Sinclair D MacleadCanadaOnyama Limba NEGOTIATION
Alejandro F FollerArgentinaIoni Bowcher RENEWAL
Leon H FigeroaFranceAsiya Javayant QUALIFIED
Isabel M RutaFranceOnyama Limba QUALIFIED
Emily Q DoeUnited KingdomAnna Fali NEW
Smith P FerenczBrazilIvan Magalhaes NEW
Juan O KuskoSpainElwin Sharvill PROPOSAL
Claire O PaprockiGermanyOnyama Limba NEW
Clifford Q ButtCanadaIoni Bowcher PROPOSAL
Leon T CaldareraGermanyElwin Sharvill QUALIFIED
James H WieserSpainIvan Magalhaes NEGOTIATION
Johnson N KolmetzJapanIvan Magalhaes PROPOSAL
Julie X ChuiJapanElwin Sharvill QUALIFIED
Kadeem W ChuiItalyAsiya Javayant NEW
Claire V SaylorsItalyElwin Sharvill QUALIFIED
Silvio O MacleadIndiaOnyama Limba NEW
Smith O CaldareraAustraliaStephen Shaw QUALIFIED
Francesco V StockhamArgentinaIvan Magalhaes PROPOSAL
Emily Z StockhamItalyAmy Elsner RENEWAL
Claire R SergiGermanyStephen Shaw RENEWAL
Maria M ButtFranceStephen Shaw PROPOSAL
Nicolas K WhobreyBrazilAsiya Javayant NEW
James M SergiBrazilAnna Fali NEGOTIATION
Munro M AlbaresGermanyOnyama Limba NEGOTIATION
Costa O DoeArgentinaElwin Sharvill NEGOTIATION
Jones B DilliardBrazilIvan Magalhaes UNQUALIFIED
Sinclair F ButtUnited KingdomXuxue Feng UNQUALIFIED
Adams Q CaudyAustraliaIvan Magalhaes QUALIFIED
Deepesh C SlusarskiGermanyIoni Bowcher QUALIFIED
Silvio X SaylorsIndiaBernardo Dominic 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>