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
Ashley Z InouyeRussiaAnna Fali PROPOSAL
Costa B ChuiAustraliaIvan Magalhaes RENEWAL
Chavez T NickaBrazilAmy Elsner QUALIFIED
Mayumi Z IturbideBrazilXuxue Feng PROPOSAL
Juan K GillianBrazilAsiya Javayant UNQUALIFIED
Claire F NickaArgentinaBernardo Dominic UNQUALIFIED
Ashley K KolmetzArgentinaAmy Elsner NEW
Jones S BologniaGermanyIoni Bowcher NEW
Tony H BologniaJapanAnna Fali UNQUALIFIED
Stacey U NickaGermanyAsiya Javayant RENEWAL
Munro V FlosiItalyIvan Magalhaes UNQUALIFIED
David N ShinkoGermanyXuxue Feng NEW
Rodrigues Q DarakjyRussiaStephen Shaw QUALIFIED
Ivar M StensethUnited KingdomElwin Sharvill NEW
Johnson Q WieserArgentinaBernardo Dominic QUALIFIED
Emily L ChuiUnited KingdomIoni Bowcher RENEWAL
Kadeem F DoeItalyAsiya Javayant NEW
Tony T GlickIndiaAsiya Javayant UNQUALIFIED
Johnson J MaletUnited KingdomIvan Magalhaes NEW
Antonio H PoquetteJapanAmy Elsner QUALIFIED
Maria B ChuiBrazilAmy Elsner PROPOSAL
Costa F OstroskyRussiaStephen Shaw UNQUALIFIED
Mayumi N WaycottAustraliaElwin Sharvill UNQUALIFIED
Leon V VocelkaFranceIoni Bowcher QUALIFIED
Julie I RutaGermanyXuxue Feng QUALIFIED
James G VocelkaGermanyXuxue Feng RENEWAL
Maisha T WaycottArgentinaStephen Shaw NEGOTIATION
Maria P GillianBrazilIvan Magalhaes NEW
Alejandro F SaylorsUnited KingdomIvan Magalhaes PROPOSAL
Jeanfrancois A OstroskyAustraliaAmy Elsner NEGOTIATION
Tony Y PaprockiCanadaIoni Bowcher QUALIFIED
Deepesh Q ShinkoSpainElwin Sharvill NEGOTIATION
Jefferson W MorascaAustraliaAnna Fali QUALIFIED
Mujtaba M FigeroaGermanyAnna Fali NEW
Cody G GauchoGermanyAmy Elsner NEGOTIATION
Chavez C FollerItalyAmy Elsner UNQUALIFIED
Mayumi E VocelkaAustraliaIvan Magalhaes QUALIFIED
Leja B TollnerCanadaElwin Sharvill QUALIFIED
Aika B StockhamAustraliaOnyama Limba NEW
David R StensethAustraliaElwin Sharvill NEGOTIATION
Leja I MaletRussiaAmy Elsner RENEWAL
Mujtaba B FollerGermanyAsiya Javayant PROPOSAL
Chavez O FollerUnited KingdomElwin Sharvill QUALIFIED
Aruna R MorascaBrazilStephen Shaw NEW
Kaitlin Y FigeroaAustraliaAnna Fali NEGOTIATION
Octavia V MaletIndiaBernardo Dominic QUALIFIED
Wickens B VenereIndiaAsiya Javayant PROPOSAL
Misaki Y GlickFranceIvan Magalhaes NEW
Deepesh A BowleyIndiaIoni Bowcher RENEWAL
Costa K MarrierRussiaBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mujtaba V BowleyCanadaAnna Fali NEGOTIATION
Octavia J MarrierIndiaAsiya Javayant QUALIFIED
Jefferson Q SlusarskiAustraliaXuxue Feng UNQUALIFIED
Murillo B MacleadRussiaIvan Magalhaes NEGOTIATION
Deepesh Q KolmetzItalyIvan Magalhaes NEGOTIATION
Munro S MaletItalyStephen Shaw RENEWAL
Silvio F GillianGermanyAnna Fali NEW
Aditya E MarrierBrazilIoni Bowcher RENEWAL
Claire F FlosiUnited KingdomOnyama Limba UNQUALIFIED
Adams R FigeroaUnited KingdomElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James Q FollerGermany2024-04-08King, Christopher A Esq NEGOTIATION29Bernardo Dominic
1001Nicolas V PerinArgentina2024-04-22Chanay, Jeffrey A Esq NEW45Bernardo Dominic
1002Munro J RutaArgentina2024-04-24Chanay, Jeffrey A Esq PROPOSAL81Stephen Shaw
1003Tony L WaycottGermany2024-04-23King, Christopher A Esq NEW86Stephen Shaw
1004Maisha U ButtItaly2024-03-31Chemel, James L Cpa QUALIFIED31Elwin Sharvill
1005Chavez U KolmetzBrazil2024-04-05Feltz Printing Service NEGOTIATION43Asiya Javayant
1006Wickens R MaletUnited Kingdom2024-04-20Dorl, James J Esq RENEWAL3Amy Elsner
1007Alejandro W FollerArgentina2024-04-21Chanay, Jeffrey A Esq NEW62Ioni Bowcher
1008Julie Q FollerBrazil2024-04-04Truhlar And Truhlar Attys UNQUALIFIED94Bernardo Dominic
1009Costa D ShinkoBrazil2024-04-13Rangoni Of Florence NEW94Ivan Magalhaes
1010Smith X NestleGermany2024-04-11Chemel, James L Cpa QUALIFIED66Anna Fali
1011Nicolas Y VenereAustralia2024-04-09Dorl, James J Esq QUALIFIED51Amy Elsner
1012Munro P TollnerFrance2024-04-05Rangoni Of Florence NEW19Amy Elsner
1013Arvin H PaprockiFrance2024-04-22Chanay, Jeffrey A Esq RENEWAL0Xuxue Feng
1014Maisha M IturbideAustralia2024-04-22Chapman, Ross E Esq PROPOSAL81Elwin Sharvill
1015Emily R BologniaAustralia2024-04-01Commercial Press NEGOTIATION87Xuxue Feng
1016Darci M NickaSpain2024-04-13Feltz Printing Service UNQUALIFIED38Elwin Sharvill
1017Clifford Y InouyeRussia2024-04-02Buckley Miller Wright PROPOSAL73Bernardo Dominic
1018Emily E VenereArgentina2024-04-20Buckley Miller Wright UNQUALIFIED1Bernardo Dominic
1019Kaitlin X SaylorsCanada2024-04-16King, Christopher A Esq UNQUALIFIED59Amy Elsner
1020Faith J RutaCanada2024-04-18Chanay, Jeffrey A Esq QUALIFIED92Bernardo Dominic
1021Ivar T IturbideSpain2024-04-21Feiner Bros PROPOSAL16Xuxue Feng
1022Murillo M GauchoAustralia2024-03-28Buckley Miller Wright UNQUALIFIED13Bernardo Dominic
1023Salvatore P WaycottItaly2024-04-14Buckley Miller Wright QUALIFIED26Elwin Sharvill
1024Johnson R StockhamFrance2024-04-02Morlong Associates PROPOSAL6Amy Elsner
1025Salvatore I TollnerIndia2024-04-05Buckley Miller Wright NEGOTIATION92Anna Fali
1026Munro B MaletItaly2024-03-28Feltz Printing Service PROPOSAL10Bernardo Dominic
1027Antonio D PerinFrance2024-04-02Chapman, Ross E Esq NEW76Ioni Bowcher
1028Munro K RimItaly2024-04-17Rousseaux, Michael Esq QUALIFIED10Onyama Limba
1029Greenwood G BologniaRussia2024-04-05Feiner Bros NEW2Amy Elsner
1030Juan D StockhamIndia2024-04-24Truhlar And Truhlar Attys QUALIFIED20Bernardo Dominic
1031Tony M RutaAustralia2024-04-08King, Christopher A Esq RENEWAL77Amy Elsner
1032Smith A InouyeAustralia2024-04-21Truhlar And Truhlar Attys QUALIFIED1Onyama Limba
1033Leon A FerenczRussia2024-04-15Morlong Associates NEGOTIATION72Asiya Javayant
1034Mayumi Y NestleBrazil2024-03-30Rousseaux, Michael Esq UNQUALIFIED95Bernardo Dominic
1035Antonio K KuskoRussia2024-04-17Rangoni Of Florence NEW47Xuxue Feng
1036Ricardo C FlosiFrance2024-04-20Feiner Bros RENEWAL30Ioni Bowcher
1037Costa J RulapaughIndia2024-04-23Chanay, Jeffrey A Esq UNQUALIFIED42Asiya Javayant
1038Ricardo H ChuiRussia2024-04-17Chanay, Jeffrey A Esq RENEWAL50Bernardo Dominic
1039Maria J StensethFrance2024-04-11Commercial Press PROPOSAL25Amy Elsner
1040Aika H OldroydCanada2024-04-04Buckley Miller Wright RENEWAL2Onyama Limba
1041Greenwood K NestleGermany2024-04-10Chapman, Ross E Esq UNQUALIFIED82Ivan Magalhaes
1042Wickens I MorascaRussia2024-04-01Benton, John B Jr QUALIFIED59Elwin Sharvill
1043Greenwood F GillianJapan2024-04-21Rousseaux, Michael Esq UNQUALIFIED79Bernardo Dominic
1044Costa G RimRussia2024-04-13Dorl, James J Esq NEW18Xuxue Feng
1045Julie T FollerSpain2024-04-21Morlong Associates QUALIFIED59Ivan Magalhaes
1046Francesco J FollerRussia2024-04-01Commercial Press NEGOTIATION9Anna Fali
1047Isabel E NestleUnited Kingdom2024-04-25Printing Dimensions QUALIFIED23Onyama Limba
1048Deepesh E AmigonIndia2024-04-13King, Christopher A Esq NEGOTIATION24Onyama Limba
1049Wickens I StensethCanada2024-03-28Feltz Printing Service PROPOSAL49Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Leja G ChuiArgentinaAmy Elsner PROPOSAL
Munro O FlosiJapanBernardo Dominic RENEWAL
Mujtaba T NickaCanadaAsiya Javayant PROPOSAL
Aika P MaletFranceAmy Elsner RENEWAL
Nicolas M ChuiJapanIoni Bowcher NEGOTIATION
Octavia A BriddickJapanXuxue Feng RENEWAL
Francesco E MarrierJapanAmy Elsner QUALIFIED
David X GarufiBrazilStephen Shaw NEW
Murillo C SaylorsUnited KingdomStephen Shaw NEGOTIATION
Greenwood G StensethItalyBernardo Dominic QUALIFIED
Aditya H SlusarskiBrazilElwin Sharvill NEW
Alejandro Z VocelkaRussiaIoni Bowcher PROPOSAL
Claire I WhobreySpainAnna Fali UNQUALIFIED
Leon D PaprockiUnited KingdomAsiya Javayant QUALIFIED
Greenwood Z StockhamFranceStephen Shaw QUALIFIED
Faith F StensethJapanAsiya Javayant RENEWAL
Leon R PoquetteFranceXuxue Feng NEW
Tony E RoysterAustraliaOnyama Limba RENEWAL
Ashley I PaprockiAustraliaXuxue Feng NEGOTIATION
Munro Y OstroskySpainIoni Bowcher NEGOTIATION
Antonio O SergiAustraliaAmy Elsner NEW
Mujtaba Y TollnerCanadaAmy Elsner NEW
Kaitlin G SlusarskiJapanIoni Bowcher PROPOSAL
Ivar I BowleySpainAnna Fali QUALIFIED
Jeanfrancois Q ButtCanadaIoni Bowcher RENEWAL
Arvin G VocelkaArgentinaIvan Magalhaes NEW
Juan N GillianRussiaAnna Fali PROPOSAL
Arvin P MaletCanadaOnyama Limba UNQUALIFIED
Deepesh F CampainJapanOnyama Limba QUALIFIED
Arvin H OstroskyGermanyElwin Sharvill QUALIFIED
Julie V RulapaughRussiaOnyama Limba PROPOSAL
Greenwood A ChuiFranceIoni Bowcher PROPOSAL
Mayumi D BologniaJapanStephen Shaw NEGOTIATION
Darci D KuskoAustraliaIvan Magalhaes NEW
Cody R RimJapanOnyama Limba QUALIFIED
Murillo G FlosiSpainBernardo Dominic NEW
Munro W GauchoArgentinaBernardo Dominic UNQUALIFIED
Izzy X TollnerIndiaAnna Fali RENEWAL
Leon O RoysterBrazilXuxue Feng QUALIFIED
Stacey F ShinkoUnited KingdomXuxue Feng PROPOSAL
Deepesh A StockhamCanadaBernardo Dominic RENEWAL
David D PaprockiSpainElwin Sharvill NEGOTIATION
Stacey O KuskoGermanyIvan Magalhaes RENEWAL
Jennifer E StensethAustraliaAsiya Javayant RENEWAL
Darci G IturbideSpainAnna Fali UNQUALIFIED
Octavia O BowleyAustraliaOnyama Limba NEW
Salvatore K WieserBrazilIoni Bowcher NEW
Jennifer W OldroydItalyXuxue Feng NEW
Kaitlin K GarufiAustraliaIvan Magalhaes NEW
Sinclair N NestleRussiaAnna Fali RENEWAL
Frozen Columns
Name
Julie Q Wieser
Julie G Rim
Nicolas T Waycott
Murillo O Kusko
Darci G Schemmer
Maria U Slusarski
Aika Y Wieser
Antonio M Tollner
Ricardo F Maclead
Maria L Bowley
Darci B Foller
Murillo S Kusko
Francesco Z Ruta
Adams U Albares
Cody I Royster
Nicolas T Malet
Jefferson N Perin
Octavia I Sergi
Faith V Poquette
Mayumi X Nicka
Tony H Wieser
Arvin U Flosi
Aika N Morasca
Arvin K Maclead
Ricardo J Kolmetz
Munro M Poquette
Aditya V Nestle
Aika L Ostrosky
Morrow D Stockham
Wickens I Bolognia
Aika H Rulapaugh
Antonio G Marrier
Ricardo J Caldarera
Octavia P Glick
Ivar D Rulapaugh
Smith T Foller
Arvin H Darakjy
Sinclair J Glick
Smith P Slusarski
Greenwood Z Campain
Morrow D Gillian
Antonio S Malet
Aika J Kolmetz
Salvatore N Figeroa
Rodrigues S Figeroa
Leja N Whobrey
Stacey U Wieser
Clifford W Perin
Nicolas T Ruta
Clifford S Rim
IdCountryDate
1000Russia2024-04-18
1001Argentina2024-04-24
1002Germany2024-04-13
1003Brazil2024-04-06
1004Brazil2024-04-06
1005Canada2024-03-27
1006United Kingdom2024-04-03
1007France2024-03-29
1008Brazil2024-03-28
1009Canada2024-04-01
1010Brazil2024-04-23
1011Russia2024-04-20
1012Italy2024-04-09
1013United Kingdom2024-04-24
1014Germany2024-03-28
1015Italy2024-03-28
1016Russia2024-04-18
1017United Kingdom2024-04-11
1018Brazil2024-04-24
1019India2024-04-22
1020Italy2024-04-20
1021Australia2024-04-14
1022Spain2024-04-12
1023Australia2024-04-11
1024Brazil2024-03-28
1025France2024-04-19
1026Canada2024-04-02
1027Brazil2024-04-09
1028Canada2024-04-03
1029Japan2024-04-02
1030Argentina2024-04-21
1031Canada2024-04-06
1032Germany2024-04-22
1033Spain2024-04-05
1034Spain2024-04-20
1035Brazil2024-04-09
1036Spain2024-04-11
1037Canada2024-04-22
1038Russia2024-04-24
1039Australia2024-04-06
1040Japan2024-04-14
1041Brazil2024-04-24
1042Spain2024-04-10
1043Canada2024-03-28
1044Germany2024-04-15
1045Argentina2024-04-25
1046Russia2024-04-22
1047Japan2024-04-02
1048Spain2024-04-19
1049Germany2024-04-14

On-Demand Data

NameIdCountryDate
Misaki A Ruta1000Russia2024-03-28
Munro X Oldroyd1001Argentina2024-04-11
Francesco G Ostrosky1002Japan2024-04-10
Jeanfrancois C Butt1003Italy2024-04-13
Deepesh G Schemmer1004Spain2024-03-29
Silvio Z Oldroyd1005Australia2024-04-19
Misaki N Glick1006Russia2024-04-18
Wickens Q Glick1007France2024-04-08
Leon D Dilliard1008Australia2024-03-29
Octavia F Bolognia1009Russia2024-04-11
David K Paprocki1010Spain2024-04-07
Munro E Nestle1011Canada2024-04-16
Munro A Gaucho1012Spain2024-04-18
Johnson Z Bowley1013France2024-04-13
Tony A Sergi1014France2024-04-06
Sinclair G Venere1015Canada2024-03-29
Mayumi M Malet1016India2024-04-21
Aika F Darakjy1017Canada2024-04-22
Antonio U Tollner1018Spain2024-04-07
Mujtaba L Vocelka1019Spain2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika S RoysterJapanOnyama Limba UNQUALIFIED
Ricardo H DoeSpainOnyama Limba UNQUALIFIED
Clifford Y MorascaRussiaXuxue Feng RENEWAL
Kaitlin G KolmetzFranceElwin Sharvill UNQUALIFIED
Isabel U AlbaresItalyStephen Shaw NEGOTIATION
Julie Y MacleadFranceAsiya Javayant UNQUALIFIED
Jones Z WhobreyJapanXuxue Feng NEGOTIATION
Rodrigues Q AlbaresUnited KingdomIvan Magalhaes RENEWAL
Kadeem X KolmetzArgentinaAmy Elsner PROPOSAL
Deepesh B DarakjyJapanIvan Magalhaes PROPOSAL
Jennifer J IturbideUnited KingdomBernardo Dominic RENEWAL
Deepesh L BowleyCanadaIoni Bowcher UNQUALIFIED
Antonio R PerinItalyIoni Bowcher NEGOTIATION
Emily V MorascaUnited KingdomStephen Shaw UNQUALIFIED
David Y ButtGermanyXuxue Feng RENEWAL
Jennifer O MarrierFranceStephen Shaw PROPOSAL
Isabel A DarakjyCanadaIvan Magalhaes NEW
David D RimArgentinaAsiya Javayant UNQUALIFIED
Chavez U RulapaughAustraliaAnna Fali QUALIFIED
Julie O GauchoAustraliaIvan Magalhaes QUALIFIED
Silvio G WaycottRussiaStephen Shaw RENEWAL
Maisha O CampainAustraliaIvan Magalhaes QUALIFIED
Morrow Q OstroskyAustraliaAmy Elsner NEW
Leja I StensethAustraliaXuxue Feng RENEWAL
Johnson H TollnerAustraliaOnyama Limba RENEWAL
Nicolas S KolmetzSpainStephen Shaw RENEWAL
Kaitlin C DilliardItalyXuxue Feng RENEWAL
Deepesh T MaletFranceIvan Magalhaes NEGOTIATION
Octavia A GarufiJapanAnna Fali UNQUALIFIED
Johnson L CampainIndiaAnna Fali NEW
Aika S ButtArgentinaStephen Shaw NEW
Morrow B MaletArgentinaXuxue Feng RENEWAL
Jefferson E ChuiFranceElwin Sharvill NEGOTIATION
Alejandro G StensethCanadaAnna Fali RENEWAL
Misaki H VocelkaAustraliaAmy Elsner NEW
Claire G SlusarskiBrazilXuxue Feng NEW
Ashley K PerinFranceAmy Elsner NEW
Rodrigues J NestleArgentinaIoni Bowcher RENEWAL
Smith O BologniaCanadaAsiya Javayant PROPOSAL
Kaitlin E SlusarskiJapanAmy Elsner RENEWAL

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