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
Aruna E SergiAustraliaXuxue Feng RENEWAL
Claire I CaudyUnited KingdomStephen Shaw NEGOTIATION
Alejandro V SchemmerGermanyStephen Shaw NEGOTIATION
Sinclair O RulapaughGermanyOnyama Limba RENEWAL
Ashley Z FigeroaBrazilAmy Elsner PROPOSAL
James N SchemmerItalyElwin Sharvill NEGOTIATION
Deepesh O PaprockiFranceXuxue Feng NEGOTIATION
Francesco Q AmigonFranceAnna Fali PROPOSAL
Silvio J GauchoFranceXuxue Feng PROPOSAL
Adams V KolmetzItalyXuxue Feng QUALIFIED
Ricardo G PoquetteItalyElwin Sharvill QUALIFIED
Johnson H NickaJapanAsiya Javayant PROPOSAL
Murillo E OstroskyRussiaAmy Elsner UNQUALIFIED
Wickens G WaycottUnited KingdomStephen Shaw NEGOTIATION
Munro G WhobreyGermanyAnna Fali RENEWAL
Misaki B SaylorsGermanyAmy Elsner RENEWAL
Murillo W MacleadSpainIoni Bowcher QUALIFIED
Aditya W ChuiFranceOnyama Limba NEGOTIATION
Leon Z GillianSpainAsiya Javayant NEW
Jeanfrancois P MarrierBrazilElwin Sharvill QUALIFIED
Kadeem Q DilliardGermanyAsiya Javayant RENEWAL
Ricardo S PaprockiFranceStephen Shaw RENEWAL
Deepesh P MorascaArgentinaXuxue Feng QUALIFIED
Silvio D IturbideJapanIvan Magalhaes PROPOSAL
Ricardo L WhobreyRussiaAmy Elsner PROPOSAL
Costa N ChuiItalyAmy Elsner NEGOTIATION
Clifford O OldroydUnited KingdomIoni Bowcher NEGOTIATION
Claire Z ShinkoIndiaStephen Shaw QUALIFIED
Antonio W MacleadUnited KingdomIvan Magalhaes RENEWAL
Kadeem Z AmigonIndiaStephen Shaw QUALIFIED
Antonio B MaletFranceStephen Shaw NEGOTIATION
Maria U FollerGermanyOnyama Limba PROPOSAL
Morrow V IturbideCanadaAsiya Javayant QUALIFIED
Kadeem H KolmetzJapanAsiya Javayant PROPOSAL
Sinclair C SlusarskiArgentinaIoni Bowcher NEGOTIATION
Maria P CaldareraRussiaOnyama Limba QUALIFIED
Claire N OldroydCanadaOnyama Limba RENEWAL
Morrow U MorascaUnited KingdomIoni Bowcher NEGOTIATION
Murillo O MorascaJapanIoni Bowcher PROPOSAL
Mujtaba C TollnerItalyIoni Bowcher NEGOTIATION
Johnson P BologniaCanadaStephen Shaw UNQUALIFIED
Nicolas L KuskoArgentinaXuxue Feng QUALIFIED
Kadeem D RulapaughBrazilXuxue Feng NEW
Jones P IturbideGermanyAsiya Javayant RENEWAL
Chavez T WaycottAustraliaAmy Elsner UNQUALIFIED
Alejandro B PaprockiFranceOnyama Limba QUALIFIED
Adams P GauchoCanadaAnna Fali PROPOSAL
Mayumi H CaudyBrazilStephen Shaw UNQUALIFIED
Smith I WaycottCanadaBernardo Dominic PROPOSAL
Adams E FollerItalyBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Maria S ButtRussiaAsiya Javayant QUALIFIED
Jefferson T MacleadJapanIoni Bowcher RENEWAL
Nicolas X AlbaresAustraliaBernardo Dominic NEGOTIATION
Wickens G KuskoCanadaBernardo Dominic NEW
Nicolas V CaudyFranceXuxue Feng UNQUALIFIED
Stacey G IturbideGermanyAsiya Javayant RENEWAL
Maisha A CampainFranceElwin Sharvill QUALIFIED
Sinclair L FerenczCanadaStephen Shaw RENEWAL
Salvatore U OldroydBrazilIoni Bowcher NEGOTIATION
James K SchemmerGermanyOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow H DilliardIndia2024-04-15Feiner Bros UNQUALIFIED23Ivan Magalhaes
1001Ivar D KolmetzArgentina2024-04-21Morlong Associates RENEWAL94Elwin Sharvill
1002Aditya M MorascaGermany2024-04-01Printing Dimensions QUALIFIED12Xuxue Feng
1003Cody P IturbideSpain2024-04-05Chemel, James L Cpa NEW9Ioni Bowcher
1004Greenwood O WhobreyArgentina2024-03-29Feiner Bros UNQUALIFIED44Xuxue Feng
1005Jeanfrancois P VenereCanada2024-04-10Chapman, Ross E Esq RENEWAL96Onyama Limba
1006Isabel I DoeGermany2024-04-01Rousseaux, Michael Esq NEW2Bernardo Dominic
1007Ivar T VocelkaBrazil2024-04-12Morlong Associates RENEWAL93Elwin Sharvill
1008Juan Z SlusarskiRussia2024-04-12Rangoni Of Florence UNQUALIFIED7Ivan Magalhaes
1009Antonio P BriddickJapan2024-04-25Chanay, Jeffrey A Esq RENEWAL51Ivan Magalhaes
1010Leon D RimArgentina2024-04-22Commercial Press NEGOTIATION45Asiya Javayant
1011Morrow H GarufiIndia2024-04-22Printing Dimensions PROPOSAL44Onyama Limba
1012Izzy F SlusarskiRussia2024-04-05Chemel, James L Cpa QUALIFIED38Ioni Bowcher
1013Stacey T NickaUnited Kingdom2024-04-17Rangoni Of Florence RENEWAL98Bernardo Dominic
1014Juan L PerinItaly2024-04-18Chanay, Jeffrey A Esq PROPOSAL91Xuxue Feng
1015Chavez D GauchoFrance2024-04-07Rangoni Of Florence NEGOTIATION70Bernardo Dominic
1016Aditya T MorascaArgentina2024-04-14King, Christopher A Esq UNQUALIFIED5Amy Elsner
1017Maria I BologniaAustralia2024-04-02Chemel, James L Cpa RENEWAL32Elwin Sharvill
1018Octavia J AlbaresIndia2024-04-17Buckley Miller Wright QUALIFIED13Stephen Shaw
1019Deepesh J TollnerJapan2024-04-19Rousseaux, Michael Esq RENEWAL24Stephen Shaw
1020Aika F SaylorsFrance2024-04-07Buckley Miller Wright NEW57Ioni Bowcher
1021Deepesh X DarakjyRussia2024-04-21Morlong Associates NEW74Amy Elsner
1022Mayumi D RoysterItaly2024-04-20Feiner Bros PROPOSAL47Bernardo Dominic
1023Arvin N DilliardArgentina2024-03-28Morlong Associates NEW58Stephen Shaw
1024Faith V IturbideUnited Kingdom2024-04-06Truhlar And Truhlar Attys NEGOTIATION86Xuxue Feng
1025Alejandro X TollnerIndia2024-04-24Feltz Printing Service UNQUALIFIED49Onyama Limba
1026Greenwood S NickaJapan2024-04-23Feiner Bros PROPOSAL92Amy Elsner
1027Morrow N MaletFrance2024-04-19Buckley Miller Wright NEGOTIATION47Xuxue Feng
1028Maria C OstroskyItaly2024-04-10Truhlar And Truhlar Attys NEW93Onyama Limba
1029Kadeem Z SlusarskiCanada2024-04-24Feltz Printing Service PROPOSAL35Asiya Javayant
1030David A FerenczRussia2024-04-01Rousseaux, Michael Esq NEW16Ivan Magalhaes
1031Greenwood C FigeroaGermany2024-04-09Printing Dimensions NEGOTIATION43Ivan Magalhaes
1032Greenwood L RulapaughFrance2024-04-09King, Christopher A Esq NEW80Amy Elsner
1033Juan E RimFrance2024-04-10Printing Dimensions QUALIFIED27Anna Fali
1034Juan W ShinkoGermany2024-04-19Chemel, James L Cpa QUALIFIED34Elwin Sharvill
1035Morrow Q OldroydIndia2024-03-30Buckley Miller Wright QUALIFIED23Amy Elsner
1036Munro F StockhamAustralia2024-04-16Chemel, James L Cpa PROPOSAL18Amy Elsner
1037Claire R MacleadItaly2024-04-02Commercial Press RENEWAL28Elwin Sharvill
1038Leja D CampainIndia2024-04-17Feltz Printing Service NEGOTIATION19Ivan Magalhaes
1039Deepesh I RulapaughItaly2024-04-07Chapman, Ross E Esq UNQUALIFIED74Onyama Limba
1040Darci I IturbideArgentina2024-04-22Truhlar And Truhlar Attys NEGOTIATION45Stephen Shaw
1041Julie M FollerUnited Kingdom2024-04-05Chapman, Ross E Esq RENEWAL70Ivan Magalhaes
1042Morrow P GlickFrance2024-04-18Feltz Printing Service NEW75Ivan Magalhaes
1043Morrow D PaprockiRussia2024-04-05King, Christopher A Esq RENEWAL73Stephen Shaw
1044Greenwood P WieserArgentina2024-04-26Feiner Bros NEGOTIATION89Ioni Bowcher
1045Wickens J SchemmerFrance2024-04-15Benton, John B Jr NEW17Elwin Sharvill
1046Murillo T VenereGermany2024-03-31Feiner Bros NEW68Ioni Bowcher
1047Jeanfrancois O WieserJapan2024-04-25King, Christopher A Esq QUALIFIED50Onyama Limba
1048Chavez L RutaJapan2024-03-31Rousseaux, Michael Esq UNQUALIFIED65Ioni Bowcher
1049Leja D SlusarskiJapan2024-04-24Chanay, Jeffrey A Esq QUALIFIED21Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Costa H NestleIndiaOnyama Limba PROPOSAL
Aruna Y FlosiBrazilElwin Sharvill UNQUALIFIED
Mayumi Q OldroydJapanElwin Sharvill NEGOTIATION
Leon S NickaAustraliaOnyama Limba NEW
Morrow O WieserRussiaIvan Magalhaes NEGOTIATION
Morrow D GauchoArgentinaIvan Magalhaes RENEWAL
Johnson L RutaAustraliaAnna Fali RENEWAL
Murillo B FigeroaUnited KingdomXuxue Feng NEGOTIATION
Jennifer Z BologniaRussiaAsiya Javayant UNQUALIFIED
Adams L FlosiUnited KingdomAsiya Javayant PROPOSAL
Jefferson J VocelkaArgentinaAmy Elsner NEW
Faith A VocelkaFranceStephen Shaw PROPOSAL
Francesco E GauchoUnited KingdomXuxue Feng NEW
Clifford H FerenczAustraliaAmy Elsner UNQUALIFIED
Nicolas S MaletJapanAnna Fali NEGOTIATION
Julie K GauchoSpainOnyama Limba NEW
Octavia V PaprockiFranceElwin Sharvill RENEWAL
Aruna J RimJapanStephen Shaw RENEWAL
Leon N KuskoSpainIvan Magalhaes NEGOTIATION
Leja D GillianAustraliaOnyama Limba RENEWAL
Cody E StockhamArgentinaAmy Elsner PROPOSAL
Octavia G KuskoIndiaIvan Magalhaes NEW
Faith N CaudyCanadaAnna Fali PROPOSAL
Leja W GauchoArgentinaAsiya Javayant PROPOSAL
Greenwood I CampainBrazilOnyama Limba NEW
Mayumi T AlbaresAustraliaElwin Sharvill PROPOSAL
Aruna Z DilliardGermanyBernardo Dominic NEGOTIATION
Ivar Y RulapaughArgentinaAmy Elsner NEW
Johnson S NestleRussiaStephen Shaw NEGOTIATION
Arvin Q GillianArgentinaXuxue Feng NEW
Stacey P FerenczBrazilElwin Sharvill RENEWAL
Leon B NickaFranceAsiya Javayant NEW
Jefferson C BriddickUnited KingdomAmy Elsner RENEWAL
Stacey D IturbideGermanyIvan Magalhaes RENEWAL
Antonio P FigeroaSpainAsiya Javayant UNQUALIFIED
Costa X WhobreyUnited KingdomOnyama Limba NEGOTIATION
Greenwood M RutaCanadaAsiya Javayant QUALIFIED
Leja J CampainIndiaIoni Bowcher NEGOTIATION
Claire L PaprockiFranceAmy Elsner UNQUALIFIED
Francesco S CampainFranceAsiya Javayant NEW
Antonio S MaletItalyAsiya Javayant NEW
Antonio O SchemmerUnited KingdomAsiya Javayant NEW
James W RulapaughCanadaElwin Sharvill UNQUALIFIED
Deepesh D SchemmerGermanyBernardo Dominic NEW
Silvio S GillianJapanElwin Sharvill PROPOSAL
Francesco R ChuiBrazilStephen Shaw NEW
Munro O ChuiFranceXuxue Feng UNQUALIFIED
Leja Z RoysterItalyStephen Shaw RENEWAL
James M GillianGermanyElwin Sharvill QUALIFIED
David F WaycottJapanStephen Shaw QUALIFIED
Frozen Columns
Name
Jefferson G Ruta
Francesco H Ostrosky
Wickens V Garufi
Mayumi T Rulapaugh
Greenwood O Marrier
Aika V Venere
Aditya Y Malet
Arvin P Royster
Kadeem K Gillian
Mujtaba A Poquette
Darci W Malet
Rodrigues F Whobrey
Costa O Ostrosky
Maria E Albares
Morrow V Nestle
Antonio B Figeroa
Stacey X Flosi
Aika W Ostrosky
Faith H Nicka
Chavez J Nestle
Maria E Wieser
Misaki P Dilliard
Jones J Figeroa
David E Campain
Munro V Ruta
Mujtaba K Perin
Salvatore V Vocelka
Nicolas C Oldroyd
Deepesh W Sergi
Silvio G Paprocki
Izzy A Nestle
Arvin O Venere
Ashley A Caldarera
Chavez M Venere
Cody R Glick
Ricardo M Gaucho
Smith Z Inouye
Jones T Morasca
Octavia K Ostrosky
Murillo Q Royster
Cody U Nicka
Julie Z Glick
Francesco W Gaucho
Misaki X Waycott
Leon I Royster
Jefferson V Paprocki
Darci H Poquette
Alejandro A Kolmetz
Rodrigues C Caldarera
Octavia D Morasca
IdCountryDate
1000Brazil2024-04-24
1001Australia2024-04-07
1002Germany2024-04-16
1003Japan2024-04-02
1004Japan2024-04-13
1005Australia2024-04-08
1006Japan2024-04-16
1007United Kingdom2024-04-18
1008United Kingdom2024-03-28
1009France2024-04-18
1010Australia2024-04-02
1011Canada2024-04-08
1012India2024-04-14
1013Germany2024-04-08
1014Argentina2024-03-30
1015Spain2024-04-07
1016India2024-03-28
1017United Kingdom2024-04-23
1018Germany2024-04-01
1019Australia2024-04-14
1020Japan2024-04-10
1021Japan2024-04-21
1022Spain2024-04-10
1023Japan2024-04-05
1024United Kingdom2024-04-25
1025Australia2024-04-25
1026Italy2024-04-18
1027Spain2024-04-18
1028Australia2024-04-14
1029India2024-04-09
1030Brazil2024-04-03
1031Spain2024-04-02
1032Spain2024-04-20
1033Australia2024-04-11
1034Italy2024-04-15
1035Brazil2024-04-18
1036India2024-04-05
1037Argentina2024-04-23
1038India2024-04-09
1039Argentina2024-04-17
1040Argentina2024-04-09
1041Russia2024-04-02
1042France2024-04-01
1043France2024-04-15
1044Argentina2024-04-03
1045Canada2024-04-22
1046India2024-04-02
1047Argentina2024-04-11
1048Australia2024-04-02
1049India2024-04-19

On-Demand Data

NameIdCountryDate
Costa G Amigon1000Russia2024-04-14
Francesco E Rulapaugh1001Japan2024-04-07
Leja I Perin1002Germany2024-04-14
Wickens J Caudy1003Canada2024-04-15
Ricardo H Marrier1004Japan2024-04-06
Jones Q Campain1005Russia2024-04-18
Leja U Poquette1006France2024-04-24
Adams S Butt1007Brazil2024-04-21
Aika P Caudy1008Canada2024-03-31
Alejandro Y Morasca1009Brazil2024-03-28
Aika W Bolognia1010Brazil2024-04-26
Arvin G Butt1011Canada2024-04-11
Arvin S Figeroa1012Russia2024-04-05
Leja Q Oldroyd1013Australia2024-04-25
Costa W Flosi1014Argentina2024-04-17
Maria Z Gillian1015Japan2024-04-02
Wickens J Whobrey1016France2024-04-03
Clifford Z Shinko1017Japan2024-04-04
Greenwood E Rulapaugh1018India2024-04-10
Leja W Figeroa1019Brazil2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh J PerinFranceAsiya Javayant PROPOSAL
Jones C AlbaresSpainAmy Elsner NEW
Octavia X MorascaItalyBernardo Dominic PROPOSAL
Deepesh Z OstroskyCanadaAnna Fali UNQUALIFIED
Ricardo I AlbaresIndiaXuxue Feng UNQUALIFIED
Misaki O AlbaresRussiaIvan Magalhaes UNQUALIFIED
Morrow C KolmetzFranceAmy Elsner RENEWAL
Rodrigues K AmigonRussiaIvan Magalhaes UNQUALIFIED
Ricardo Z TollnerSpainOnyama Limba RENEWAL
Deepesh S WhobreyCanadaOnyama Limba NEW
Murillo Z VocelkaSpainOnyama Limba QUALIFIED
Stacey M RulapaughJapanAmy Elsner NEW
Mayumi P GlickFranceBernardo Dominic NEW
Nicolas G CampainRussiaAsiya Javayant UNQUALIFIED
David H FerenczRussiaIvan Magalhaes NEW
Munro M WaycottRussiaAnna Fali NEGOTIATION
David B RoysterCanadaAmy Elsner NEGOTIATION
Octavia J PaprockiSpainOnyama Limba NEGOTIATION
Maria X SchemmerBrazilAnna Fali NEGOTIATION
Wickens A RulapaughGermanyIoni Bowcher NEGOTIATION
Stacey H GlickAustraliaAnna Fali RENEWAL
Arvin G OstroskyIndiaAmy Elsner RENEWAL
Ivar R GillianCanadaAmy Elsner QUALIFIED
Ivar P SergiFranceElwin Sharvill UNQUALIFIED
Juan C GillianFranceOnyama Limba QUALIFIED
Mujtaba R ChuiCanadaIoni Bowcher PROPOSAL
Faith W FerenczArgentinaBernardo Dominic QUALIFIED
Sinclair Q BriddickUnited KingdomXuxue Feng UNQUALIFIED
Munro V KuskoRussiaIoni Bowcher PROPOSAL
Deepesh A PerinFranceAmy Elsner QUALIFIED
Antonio C WhobreyItalyIoni Bowcher UNQUALIFIED
Johnson S TollnerIndiaAsiya Javayant QUALIFIED
Jefferson S SchemmerUnited KingdomBernardo Dominic NEW
Jeanfrancois O DilliardGermanyOnyama Limba NEW
Claire Z WieserRussiaIoni Bowcher UNQUALIFIED
Aruna B FerenczItalyAnna Fali PROPOSAL
Morrow A NestleJapanIvan Magalhaes UNQUALIFIED
Mayumi T PerinArgentinaOnyama Limba PROPOSAL
Chavez I MaletUnited KingdomAmy Elsner NEGOTIATION
Aruna V VenereJapanXuxue 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>