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
Ivar P DilliardGermanyBernardo Dominic QUALIFIED
Octavia A MaletIndiaOnyama Limba RENEWAL
Chavez D CaldareraSpainOnyama Limba NEGOTIATION
Sinclair R FigeroaBrazilAnna Fali RENEWAL
Salvatore U SlusarskiSpainOnyama Limba RENEWAL
Claire H DarakjyItalyAnna Fali PROPOSAL
James I TollnerIndiaElwin Sharvill NEGOTIATION
Julie X MacleadJapanElwin Sharvill NEW
Murillo Z VenereCanadaAmy Elsner QUALIFIED
Emily J ShinkoItalyBernardo Dominic PROPOSAL
Wickens E CaldareraItalyIoni Bowcher NEW
Maria U AmigonItalyBernardo Dominic PROPOSAL
Mayumi T FerenczIndiaIvan Magalhaes PROPOSAL
Costa W MacleadBrazilXuxue Feng RENEWAL
Ricardo H ButtJapanAnna Fali PROPOSAL
Tony Z CaudyArgentinaAmy Elsner QUALIFIED
Darci Q ButtFranceAmy Elsner NEGOTIATION
Chavez B CampainJapanAmy Elsner QUALIFIED
Wickens M DoeBrazilXuxue Feng PROPOSAL
Claire K VenereRussiaIvan Magalhaes UNQUALIFIED
Ashley G SchemmerRussiaIvan Magalhaes PROPOSAL
Sinclair O SlusarskiGermanyAnna Fali RENEWAL
Chavez O TollnerBrazilXuxue Feng PROPOSAL
Deepesh L GarufiCanadaIvan Magalhaes UNQUALIFIED
Alejandro Z GarufiFranceAnna Fali UNQUALIFIED
Juan X MaletSpainAsiya Javayant RENEWAL
Aruna A NickaSpainOnyama Limba NEW
Maisha K GauchoIndiaAmy Elsner NEW
Smith O WhobreyCanadaIvan Magalhaes RENEWAL
Deepesh Y IturbideArgentinaXuxue Feng QUALIFIED
Clifford O VenereIndiaAmy Elsner UNQUALIFIED
David Z CaldareraFranceOnyama Limba NEGOTIATION
Mayumi E DoeIndiaBernardo Dominic RENEWAL
Morrow L WieserItalyAmy Elsner NEGOTIATION
Salvatore H CaudyFranceIoni Bowcher NEW
Sinclair M VenereBrazilElwin Sharvill NEGOTIATION
Antonio D SchemmerArgentinaElwin Sharvill NEGOTIATION
Misaki V MacleadBrazilOnyama Limba RENEWAL
Julie A StensethArgentinaAnna Fali PROPOSAL
Greenwood B MarrierUnited KingdomIvan Magalhaes RENEWAL
Darci C ButtRussiaBernardo Dominic NEGOTIATION
Arvin L FigeroaSpainStephen Shaw RENEWAL
Murillo B CampainFranceElwin Sharvill PROPOSAL
Darci S VenereRussiaAnna Fali NEGOTIATION
Jefferson W FollerArgentinaStephen Shaw RENEWAL
Francesco H PoquetteSpainIoni Bowcher PROPOSAL
Murillo J VenereGermanyXuxue Feng NEW
Juan A SaylorsIndiaIvan Magalhaes RENEWAL
Arvin N OstroskyFranceIvan Magalhaes RENEWAL
Alejandro K StensethRussiaAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem Q DilliardItalyIvan Magalhaes NEGOTIATION
Octavia K DarakjyGermanyBernardo Dominic RENEWAL
Aruna J FlosiBrazilXuxue Feng UNQUALIFIED
Wickens M KolmetzSpainOnyama Limba QUALIFIED
Leon F SaylorsItalyStephen Shaw PROPOSAL
Deepesh G RulapaughIndiaIvan Magalhaes RENEWAL
Mujtaba V PaprockiAustraliaBernardo Dominic PROPOSAL
David R KuskoRussiaStephen Shaw UNQUALIFIED
Octavia O DoeGermanyAmy Elsner NEGOTIATION
Mujtaba H GarufiItalyIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco L WhobreyJapan2024-04-25Buckley Miller Wright NEW38Stephen Shaw
1001Jeanfrancois U RimGermany2024-04-11Buckley Miller Wright QUALIFIED12Ivan Magalhaes
1002Ivar H DoeGermany2024-04-11Rangoni Of Florence UNQUALIFIED28Ivan Magalhaes
1003Kadeem P CaldareraJapan2024-04-01Chanay, Jeffrey A Esq QUALIFIED16Asiya Javayant
1004Wickens K TollnerSpain2024-04-24Buckley Miller Wright NEW92Anna Fali
1005Sinclair B InouyeSpain2024-04-09Rousseaux, Michael Esq UNQUALIFIED56Onyama Limba
1006James J DilliardSpain2024-04-08Chapman, Ross E Esq NEW58Anna Fali
1007Tony M MacleadUnited Kingdom2024-04-17Feiner Bros QUALIFIED80Xuxue Feng
1008Emily C OldroydBrazil2024-04-21Benton, John B Jr UNQUALIFIED18Stephen Shaw
1009Juan Q MaletRussia2024-04-01Truhlar And Truhlar Attys QUALIFIED15Asiya Javayant
1010Julie A MacleadUnited Kingdom2024-04-11Chapman, Ross E Esq NEW98Stephen Shaw
1011Aruna T GauchoJapan2024-04-20Chemel, James L Cpa QUALIFIED55Anna Fali
1012Antonio H MarrierBrazil2024-03-28Rangoni Of Florence RENEWAL7Ioni Bowcher
1013Stacey X BowleySpain2024-04-08Chapman, Ross E Esq NEGOTIATION70Amy Elsner
1014Murillo O RimJapan2024-04-18Chapman, Ross E Esq RENEWAL63Ivan Magalhaes
1015Kaitlin P TollnerAustralia2024-03-27Chemel, James L Cpa NEGOTIATION1Stephen Shaw
1016Kaitlin B SaylorsGermany2024-04-08Dorl, James J Esq RENEWAL15Amy Elsner
1017Leon M ShinkoBrazil2024-04-18Printing Dimensions PROPOSAL57Onyama Limba
1018Aditya G KolmetzCanada2024-04-18Commercial Press NEW78Stephen Shaw
1019Maria L MorascaFrance2024-04-07Truhlar And Truhlar Attys NEGOTIATION47Xuxue Feng
1020Clifford Z GauchoRussia2024-04-03Rousseaux, Michael Esq QUALIFIED32Anna Fali
1021Francesco W BologniaAustralia2024-03-27Feiner Bros UNQUALIFIED68Stephen Shaw
1022Jennifer G PaprockiItaly2024-03-29Buckley Miller Wright PROPOSAL22Onyama Limba
1023Claire T SchemmerSpain2024-04-13Chapman, Ross E Esq NEW38Bernardo Dominic
1024Rodrigues Q MarrierJapan2024-04-11Rousseaux, Michael Esq QUALIFIED28Bernardo Dominic
1025Ivar T StockhamBrazil2024-03-29Dorl, James J Esq RENEWAL8Elwin Sharvill
1026Mayumi U StockhamIndia2024-04-03King, Christopher A Esq RENEWAL60Xuxue Feng
1027Costa H AlbaresItaly2024-04-03Chemel, James L Cpa PROPOSAL84Bernardo Dominic
1028Costa B InouyeItaly2024-04-03Benton, John B Jr NEGOTIATION54Ioni Bowcher
1029Octavia W AlbaresGermany2024-04-11Rousseaux, Michael Esq NEW97Ivan Magalhaes
1030Jennifer W SchemmerAustralia2024-04-22Chanay, Jeffrey A Esq QUALIFIED72Onyama Limba
1031Kaitlin W CaldareraCanada2024-03-31Morlong Associates NEW96Xuxue Feng
1032Claire H ShinkoCanada2024-04-10Commercial Press NEGOTIATION96Xuxue Feng
1033Johnson Q RulapaughUnited Kingdom2024-04-09Dorl, James J Esq QUALIFIED21Ivan Magalhaes
1034Cody J GauchoUnited Kingdom2024-04-18Rousseaux, Michael Esq RENEWAL68Onyama Limba
1035Johnson N CaldareraIndia2024-04-04Dorl, James J Esq PROPOSAL96Onyama Limba
1036Jones N CaldareraItaly2024-04-25Dorl, James J Esq NEGOTIATION16Ivan Magalhaes
1037Jefferson J BologniaItaly2024-04-08King, Christopher A Esq PROPOSAL73Xuxue Feng
1038Ivar E StensethItaly2024-04-11Rangoni Of Florence QUALIFIED13Xuxue Feng
1039Greenwood N GauchoItaly2024-04-03Buckley Miller Wright RENEWAL70Stephen Shaw
1040Maisha A BologniaIndia2024-04-02Feiner Bros PROPOSAL68Elwin Sharvill
1041Octavia N FollerAustralia2024-04-21Chanay, Jeffrey A Esq RENEWAL51Anna Fali
1042Smith F MacleadJapan2024-04-18Printing Dimensions RENEWAL22Ioni Bowcher
1043Chavez T GlickJapan2024-04-24Chemel, James L Cpa PROPOSAL77Onyama Limba
1044Alejandro R TollnerJapan2024-04-03Buckley Miller Wright NEW1Stephen Shaw
1045Aditya B FerenczAustralia2024-04-10Rousseaux, Michael Esq UNQUALIFIED3Elwin Sharvill
1046Arvin Y RutaCanada2024-04-08Printing Dimensions PROPOSAL79Asiya Javayant
1047Darci H StockhamArgentina2024-04-19Dorl, James J Esq QUALIFIED83Onyama Limba
1048Leon Z InouyeAustralia2024-04-04Feiner Bros PROPOSAL5Elwin Sharvill
1049Silvio W DilliardArgentina2024-04-23Buckley Miller Wright PROPOSAL57Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Salvatore K AmigonIndiaIoni Bowcher NEW
Murillo K GlickUnited KingdomXuxue Feng UNQUALIFIED
Nicolas I FlosiGermanyStephen Shaw UNQUALIFIED
Morrow G ShinkoAustraliaStephen Shaw RENEWAL
James W FigeroaArgentinaAmy Elsner RENEWAL
Greenwood M CampainGermanyAmy Elsner NEGOTIATION
Mayumi Y ButtArgentinaIoni Bowcher QUALIFIED
Aditya P BologniaCanadaAmy Elsner PROPOSAL
Aika H PaprockiFranceStephen Shaw NEGOTIATION
David V BowleyCanadaIvan Magalhaes NEGOTIATION
Rodrigues I AmigonGermanyAmy Elsner RENEWAL
Morrow O FlosiUnited KingdomXuxue Feng UNQUALIFIED
Rodrigues W OstroskySpainOnyama Limba QUALIFIED
Clifford X FlosiIndiaAnna Fali UNQUALIFIED
Wickens Y MarrierSpainAnna Fali QUALIFIED
Aika R CampainArgentinaAnna Fali PROPOSAL
Maisha U GauchoCanadaAnna Fali NEW
Juan J AlbaresFranceAsiya Javayant NEGOTIATION
Stacey K GauchoUnited KingdomAnna Fali NEGOTIATION
Emily C StockhamUnited KingdomIvan Magalhaes PROPOSAL
Jefferson M PerinBrazilIvan Magalhaes NEGOTIATION
Jennifer S FerenczRussiaXuxue Feng UNQUALIFIED
David K BologniaJapanBernardo Dominic QUALIFIED
Aditya D StockhamIndiaStephen Shaw RENEWAL
Mujtaba Q ShinkoRussiaAnna Fali QUALIFIED
Emily E FollerCanadaXuxue Feng RENEWAL
Ivar J GlickBrazilXuxue Feng QUALIFIED
David Z AlbaresAustraliaStephen Shaw UNQUALIFIED
Leja W BologniaSpainXuxue Feng NEGOTIATION
Rodrigues O TollnerAustraliaAsiya Javayant PROPOSAL
Julie F KolmetzFranceBernardo Dominic PROPOSAL
Smith A NestleRussiaIoni Bowcher NEW
Juan P FollerCanadaAmy Elsner UNQUALIFIED
Arvin U DilliardUnited KingdomAmy Elsner PROPOSAL
Salvatore O DarakjyGermanyAsiya Javayant NEW
Francesco A MorascaUnited KingdomStephen Shaw NEW
Munro B RutaJapanStephen Shaw UNQUALIFIED
Smith N NestleRussiaIvan Magalhaes NEGOTIATION
Rodrigues V BowleyAustraliaAmy Elsner UNQUALIFIED
Antonio A RimJapanAnna Fali QUALIFIED
Smith Z NickaUnited KingdomIvan Magalhaes NEW
Salvatore Q MaletJapanIvan Magalhaes NEGOTIATION
Greenwood H FollerIndiaElwin Sharvill QUALIFIED
Rodrigues Q AmigonRussiaElwin Sharvill RENEWAL
Arvin Z MaletJapanXuxue Feng QUALIFIED
Cody U DoeArgentinaOnyama Limba PROPOSAL
Aruna S BologniaIndiaBernardo Dominic UNQUALIFIED
David O BowleyFranceOnyama Limba QUALIFIED
Mujtaba X CaldareraRussiaAsiya Javayant RENEWAL
Costa D ShinkoAustraliaIvan Magalhaes RENEWAL
Frozen Columns
Name
Stacey J Wieser
Aruna S Bowley
Claire B Bolognia
David R Inouye
Julie K Maclead
Nicolas X Vocelka
Jefferson X Bowley
Maria L Waycott
Mujtaba L Royster
Alejandro S Slusarski
James A Tollner
Mujtaba O Dilliard
Aditya G Schemmer
Wickens J Sergi
Jefferson X Nicka
Jeanfrancois K Inouye
Costa A Wieser
Emily J Maclead
Munro G Oldroyd
Faith T Marrier
Misaki R Nestle
Mayumi R Malet
Arvin J Campain
Munro U Paprocki
Francesco K Venere
Ashley G Ruta
Stacey A Gillian
Ricardo G Royster
Cody X Oldroyd
Chavez M Chui
Misaki F Kusko
Stacey Z Rulapaugh
Johnson L Campain
Clifford M Venere
Sinclair M Marrier
Deepesh Y Nicka
Emily D Nestle
Jennifer P Ostrosky
Johnson R Slusarski
Leon G Nestle
Tony C Gillian
James R Stockham
Clifford U Paprocki
Aika B Slusarski
Aditya I Poquette
Misaki F Shinko
Smith T Oldroyd
Stacey I Poquette
Darci B Marrier
Mujtaba G Maclead
IdCountryDate
1000Brazil2024-04-15
1001Canada2024-04-08
1002Germany2024-03-28
1003Germany2024-03-31
1004Germany2024-04-06
1005Australia2024-03-28
1006Argentina2024-04-02
1007Spain2024-04-18
1008Germany2024-04-14
1009Japan2024-04-14
1010Italy2024-04-20
1011United Kingdom2024-04-14
1012Italy2024-04-17
1013Brazil2024-04-08
1014Australia2024-04-19
1015United Kingdom2024-04-02
1016India2024-04-02
1017Argentina2024-03-28
1018Australia2024-03-31
1019United Kingdom2024-03-28
1020Italy2024-03-27
1021France2024-04-05
1022Japan2024-04-09
1023Canada2024-04-01
1024United Kingdom2024-04-04
1025United Kingdom2024-03-28
1026Germany2024-04-10
1027Canada2024-04-06
1028France2024-04-25
1029Brazil2024-04-20
1030Japan2024-04-18
1031Spain2024-04-10
1032India2024-04-18
1033Italy2024-03-29
1034Australia2024-04-16
1035Australia2024-04-13
1036Canada2024-04-18
1037Canada2024-04-20
1038India2024-04-05
1039Russia2024-04-17
1040Argentina2024-04-21
1041Spain2024-04-07
1042Russia2024-04-09
1043Spain2024-04-09
1044Japan2024-03-28
1045Italy2024-04-02
1046India2024-04-18
1047Spain2024-03-31
1048Canada2024-04-19
1049Canada2024-04-14

On-Demand Data

NameIdCountryDate
Kaitlin V Malet1000Australia2024-04-04
Aika I Nestle1001Japan2024-04-20
Antonio A Briddick1002Brazil2024-04-12
Adams C Stockham1003Brazil2024-04-14
Johnson M Marrier1004Germany2024-03-30
Deepesh I Stenseth1005Italy2024-04-25
Aditya B Amigon1006Russia2024-03-28
Alejandro Y Waycott1007Italy2024-03-31
Smith G Caudy1008France2024-03-31
Ashley F Venere1009Germany2024-03-30
Izzy E Ferencz1010Spain2024-04-16
Chavez H Sergi1011France2024-04-10
Costa K Doe1012Argentina2024-04-04
Arvin K Glick1013India2024-04-15
Kadeem V Nestle1014Spain2024-04-04
Kadeem B Garufi1015Germany2024-04-06
Tony Y Dilliard1016Australia2024-04-14
Aika C Ferencz1017India2024-04-11
Sinclair R Venere1018Japan2024-04-15
Maria J Rim1019Japan2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley R FigeroaSpainXuxue Feng QUALIFIED
Sinclair C RoysterIndiaIvan Magalhaes UNQUALIFIED
Wickens J ButtRussiaOnyama Limba PROPOSAL
Aditya Y FollerSpainIvan Magalhaes UNQUALIFIED
Faith B GlickAustraliaAnna Fali UNQUALIFIED
Misaki H BowleyArgentinaAsiya Javayant RENEWAL
Wickens P WhobreySpainOnyama Limba NEGOTIATION
Juan X VocelkaFranceAnna Fali PROPOSAL
Antonio S GlickUnited KingdomStephen Shaw NEGOTIATION
Leon X RulapaughSpainXuxue Feng UNQUALIFIED
Alejandro L DarakjyFranceIoni Bowcher UNQUALIFIED
Maria S NestleBrazilOnyama Limba NEGOTIATION
Kadeem B FerenczIndiaIoni Bowcher NEW
Ashley A FerenczIndiaBernardo Dominic QUALIFIED
Aruna G VenereAustraliaOnyama Limba UNQUALIFIED
Misaki E NickaRussiaBernardo Dominic PROPOSAL
James P GillianCanadaIoni Bowcher NEW
Izzy S InouyeCanadaIvan Magalhaes PROPOSAL
Izzy E BologniaCanadaElwin Sharvill PROPOSAL
Mujtaba X WieserCanadaAsiya Javayant UNQUALIFIED
Mujtaba G RutaFranceAmy Elsner QUALIFIED
Salvatore V SaylorsSpainIvan Magalhaes RENEWAL
Aruna S TollnerFranceXuxue Feng NEGOTIATION
Darci S DilliardGermanyAmy Elsner RENEWAL
Ashley W OldroydBrazilBernardo Dominic NEW
Claire I OldroydGermanyStephen Shaw UNQUALIFIED
Emily S RoysterBrazilXuxue Feng QUALIFIED
Ivar R GauchoBrazilAsiya Javayant PROPOSAL
Isabel Q CampainItalyAsiya Javayant QUALIFIED
Jennifer U GillianBrazilOnyama Limba RENEWAL
Jeanfrancois D MacleadCanadaAnna Fali QUALIFIED
Jones W NickaArgentinaXuxue Feng UNQUALIFIED
Ricardo G WieserUnited KingdomIoni Bowcher UNQUALIFIED
Faith A MacleadGermanyAsiya Javayant QUALIFIED
Arvin I VocelkaUnited KingdomXuxue Feng PROPOSAL
Francesco L GillianJapanStephen Shaw PROPOSAL
Johnson E PoquetteBrazilBernardo Dominic RENEWAL
Johnson V TollnerAustraliaAsiya Javayant NEW
Nicolas K MaletRussiaAnna Fali NEW
Wickens K AmigonFranceBernardo Dominic UNQUALIFIED

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