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
Ricardo M StockhamJapanAmy Elsner NEGOTIATION
Francesco Z FollerSpainOnyama Limba QUALIFIED
Alejandro N CampainJapanIoni Bowcher NEGOTIATION
Nicolas K SlusarskiFranceAnna Fali QUALIFIED
Misaki C InouyeJapanIoni Bowcher NEGOTIATION
Misaki K OldroydSpainIoni Bowcher QUALIFIED
Arvin C MaletGermanyOnyama Limba NEGOTIATION
Costa S AlbaresBrazilOnyama Limba RENEWAL
Maisha S NickaFranceBernardo Dominic RENEWAL
Smith S DilliardFranceOnyama Limba PROPOSAL
Nicolas W FigeroaCanadaIvan Magalhaes UNQUALIFIED
Julie A ChuiIndiaAsiya Javayant UNQUALIFIED
Deepesh D WhobreyGermanyAmy Elsner NEW
Jeanfrancois W CaudyBrazilElwin Sharvill UNQUALIFIED
Aruna V AmigonSpainAnna Fali UNQUALIFIED
Izzy H PoquetteGermanyAmy Elsner PROPOSAL
Greenwood G BologniaRussiaAmy Elsner NEGOTIATION
Ivar S NestleSpainStephen Shaw NEGOTIATION
Claire L VocelkaUnited KingdomIvan Magalhaes UNQUALIFIED
Mujtaba C FigeroaFranceIoni Bowcher NEGOTIATION
James H TollnerUnited KingdomAnna Fali NEW
Deepesh M PoquetteGermanyOnyama Limba QUALIFIED
Clifford N ButtCanadaBernardo Dominic PROPOSAL
David L SlusarskiItalyBernardo Dominic UNQUALIFIED
Kadeem F BriddickRussiaIoni Bowcher UNQUALIFIED
Morrow Z WieserSpainStephen Shaw NEW
Jennifer J ChuiFranceAnna Fali RENEWAL
Jones Q BriddickFranceBernardo Dominic RENEWAL
Mayumi R SergiIndiaAnna Fali RENEWAL
Costa S CampainRussiaOnyama Limba QUALIFIED
Jefferson N CampainFranceIoni Bowcher RENEWAL
Murillo O TollnerUnited KingdomXuxue Feng RENEWAL
Deepesh C StockhamItalyBernardo Dominic UNQUALIFIED
Aruna T StockhamFranceOnyama Limba QUALIFIED
Deepesh B MaletBrazilAnna Fali UNQUALIFIED
Arvin C OldroydFranceXuxue Feng NEW
Juan O CaudyRussiaIvan Magalhaes PROPOSAL
Kaitlin P NestleGermanyOnyama Limba QUALIFIED
Izzy L FollerJapanElwin Sharvill NEW
Francesco A WieserBrazilElwin Sharvill PROPOSAL
Juan B SlusarskiIndiaBernardo Dominic PROPOSAL
Salvatore N NestleGermanyElwin Sharvill NEW
Claire M MorascaJapanAmy Elsner PROPOSAL
Octavia N OstroskyArgentinaXuxue Feng UNQUALIFIED
Aruna B FollerArgentinaOnyama Limba NEW
Darci K PaprockiAustraliaElwin Sharvill RENEWAL
Ricardo E GlickUnited KingdomAnna Fali RENEWAL
Munro K FlosiAustraliaIvan Magalhaes QUALIFIED
Cody Q RutaCanadaOnyama Limba QUALIFIED
Alejandro L KuskoItalyStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois U MaletJapanXuxue Feng RENEWAL
Faith K GarufiJapanIvan Magalhaes NEW
Maisha R MarrierIndiaElwin Sharvill UNQUALIFIED
Wickens P PoquetteBrazilIvan Magalhaes UNQUALIFIED
Mujtaba R GlickItalyBernardo Dominic QUALIFIED
Chavez P FerenczBrazilOnyama Limba RENEWAL
Aika H FlosiRussiaAsiya Javayant UNQUALIFIED
Aika Z GillianGermanyXuxue Feng PROPOSAL
Emily E DoeBrazilStephen Shaw RENEWAL
Morrow S MacleadJapanElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas S TollnerGermany2024-05-03Truhlar And Truhlar Attys RENEWAL14Elwin Sharvill
1001Ivar P SlusarskiGermany2024-04-05Benton, John B Jr NEGOTIATION4Xuxue Feng
1002Aditya H DoeJapan2024-04-26Chapman, Ross E Esq NEGOTIATION54Onyama Limba
1003Adams O TollnerUnited Kingdom2024-04-26Dorl, James J Esq PROPOSAL48Ivan Magalhaes
1004Isabel Z MorascaItaly2024-04-17King, Christopher A Esq RENEWAL19Xuxue Feng
1005Sinclair H FlosiJapan2024-04-23Printing Dimensions NEW82Ivan Magalhaes
1006Kaitlin D GarufiItaly2024-04-13Chanay, Jeffrey A Esq NEGOTIATION41Anna Fali
1007Aika M PaprockiSpain2024-04-16King, Christopher A Esq NEW14Amy Elsner
1008Julie V WhobreyGermany2024-04-16Dorl, James J Esq QUALIFIED41Ioni Bowcher
1009Antonio T MorascaRussia2024-04-10Morlong Associates QUALIFIED65Elwin Sharvill
1010Francesco P OldroydSpain2024-04-17Chemel, James L Cpa QUALIFIED40Anna Fali
1011Smith P BologniaJapan2024-04-16Feltz Printing Service RENEWAL97Ioni Bowcher
1012Isabel Z InouyeItaly2024-04-07Buckley Miller Wright QUALIFIED60Asiya Javayant
1013Smith F DilliardRussia2024-04-08Morlong Associates RENEWAL23Ivan Magalhaes
1014Faith P MaletArgentina2024-04-17Feltz Printing Service UNQUALIFIED24Xuxue Feng
1015Murillo F StockhamJapan2024-04-29Commercial Press NEW90Ioni Bowcher
1016Morrow V TollnerFrance2024-05-03Feiner Bros NEGOTIATION92Onyama Limba
1017Silvio D FlosiSpain2024-04-28Morlong Associates UNQUALIFIED54Amy Elsner
1018Munro Y MacleadBrazil2024-04-28Chanay, Jeffrey A Esq PROPOSAL74Elwin Sharvill
1019Isabel L ShinkoIndia2024-04-28Feiner Bros PROPOSAL89Ivan Magalhaes
1020Murillo A BologniaFrance2024-04-16King, Christopher A Esq NEW19Anna Fali
1021Jeanfrancois N WaycottIndia2024-04-21Dorl, James J Esq NEW39Ivan Magalhaes
1022Octavia R SaylorsBrazil2024-04-09Rangoni Of Florence PROPOSAL80Bernardo Dominic
1023Costa L WieserFrance2024-04-10Morlong Associates UNQUALIFIED43Amy Elsner
1024Adams W WaycottArgentina2024-04-12Buckley Miller Wright NEW45Xuxue Feng
1025David G DarakjyJapan2024-04-09Rangoni Of Florence QUALIFIED66Ivan Magalhaes
1026Claire U VocelkaFrance2024-05-02Rangoni Of Florence NEW8Elwin Sharvill
1027Julie C MaletFrance2024-04-10Rousseaux, Michael Esq QUALIFIED40Bernardo Dominic
1028Costa X RulapaughJapan2024-04-12Chemel, James L Cpa QUALIFIED16Xuxue Feng
1029Johnson U KuskoJapan2024-04-07Feiner Bros NEGOTIATION42Asiya Javayant
1030Tony H WieserItaly2024-04-28Benton, John B Jr PROPOSAL73Onyama Limba
1031Jeanfrancois M RimArgentina2024-04-08Chemel, James L Cpa QUALIFIED98Ivan Magalhaes
1032Leon F BologniaItaly2024-04-24Chanay, Jeffrey A Esq PROPOSAL44Elwin Sharvill
1033Tony G BologniaItaly2024-04-16Dorl, James J Esq RENEWAL6Amy Elsner
1034Aika Z DilliardGermany2024-04-14Chapman, Ross E Esq PROPOSAL22Xuxue Feng
1035Adams D OstroskyFrance2024-04-27Feiner Bros NEGOTIATION60Stephen Shaw
1036Tony H GarufiFrance2024-04-13Chapman, Ross E Esq QUALIFIED30Amy Elsner
1037Costa R FollerUnited Kingdom2024-04-22Rousseaux, Michael Esq NEW35Asiya Javayant
1038Stacey K TollnerJapan2024-05-04Feiner Bros RENEWAL98Anna Fali
1039Claire U AlbaresItaly2024-04-10Chemel, James L Cpa RENEWAL91Asiya Javayant
1040Darci J RulapaughGermany2024-05-01Chemel, James L Cpa NEGOTIATION33Ioni Bowcher
1041Munro M FlosiGermany2024-04-26Commercial Press QUALIFIED59Xuxue Feng
1042Emily V CaldareraFrance2024-04-29Chemel, James L Cpa NEGOTIATION42Anna Fali
1043Emily C GlickFrance2024-04-23Printing Dimensions NEW26Amy Elsner
1044David Y FigeroaJapan2024-04-30Printing Dimensions PROPOSAL84Onyama Limba
1045Greenwood Y VenereJapan2024-04-27Benton, John B Jr NEGOTIATION25Elwin Sharvill
1046Jeanfrancois E CaudyUnited Kingdom2024-04-29Chapman, Ross E Esq NEW17Bernardo Dominic
1047Nicolas W WaycottGermany2024-05-01Feiner Bros RENEWAL22Asiya Javayant
1048Rodrigues X NestleIndia2024-04-09Rousseaux, Michael Esq RENEWAL97Stephen Shaw
1049Isabel C VenereIndia2024-04-11Morlong Associates UNQUALIFIED0Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Jennifer R SlusarskiRussiaXuxue Feng NEGOTIATION
Deepesh P MacleadBrazilIvan Magalhaes NEGOTIATION
James W SchemmerItalyOnyama Limba NEGOTIATION
Kaitlin D MacleadSpainElwin Sharvill RENEWAL
Claire B CaldareraBrazilXuxue Feng RENEWAL
Ricardo F AlbaresCanadaStephen Shaw UNQUALIFIED
Wickens I CaldareraItalyStephen Shaw QUALIFIED
Johnson K CampainSpainIoni Bowcher NEW
Morrow P IturbideSpainAsiya Javayant NEW
Stacey T GarufiFranceBernardo Dominic PROPOSAL
Faith F BriddickGermanyAmy Elsner UNQUALIFIED
Arvin D FigeroaRussiaBernardo Dominic RENEWAL
Greenwood M WieserArgentinaIoni Bowcher QUALIFIED
Julie L AlbaresBrazilIvan Magalhaes PROPOSAL
Arvin P FerenczAustraliaElwin Sharvill QUALIFIED
James I NickaIndiaOnyama Limba UNQUALIFIED
Wickens Q CampainSpainBernardo Dominic PROPOSAL
Isabel R BowleyAustraliaIoni Bowcher UNQUALIFIED
Isabel A GlickSpainOnyama Limba NEGOTIATION
Rodrigues T FigeroaFranceAsiya Javayant NEW
Arvin O FlosiSpainBernardo Dominic QUALIFIED
Aditya L StockhamBrazilAmy Elsner RENEWAL
James M MacleadItalyBernardo Dominic RENEWAL
Darci M VocelkaIndiaAnna Fali NEW
Maria Z RutaJapanIoni Bowcher PROPOSAL
Nicolas E IturbideFranceAmy Elsner QUALIFIED
Johnson E TollnerJapanIoni Bowcher UNQUALIFIED
Deepesh Z StensethCanadaAnna Fali NEGOTIATION
Rodrigues C PaprockiRussiaStephen Shaw RENEWAL
Nicolas S ChuiCanadaIvan Magalhaes QUALIFIED
Octavia D ChuiJapanBernardo Dominic NEW
Johnson S KuskoUnited KingdomBernardo Dominic RENEWAL
Costa S NickaJapanAnna Fali NEW
Francesco V VocelkaItalyAmy Elsner NEW
Ivar K InouyeCanadaOnyama Limba NEGOTIATION
Mujtaba S AlbaresSpainStephen Shaw QUALIFIED
Stacey O KuskoCanadaAmy Elsner NEGOTIATION
Tony I GlickArgentinaAsiya Javayant RENEWAL
Stacey D NestleArgentinaElwin Sharvill PROPOSAL
Mayumi L VocelkaCanadaStephen Shaw QUALIFIED
Murillo W AlbaresSpainOnyama Limba NEW
Cody M DilliardFranceAsiya Javayant NEW
Salvatore Q VocelkaRussiaBernardo Dominic NEW
Ricardo R WaycottItalyXuxue Feng RENEWAL
Adams Y BologniaItalyOnyama Limba RENEWAL
Maisha F AlbaresUnited KingdomElwin Sharvill RENEWAL
Silvio O ChuiRussiaOnyama Limba NEW
Octavia Y IturbideIndiaOnyama Limba RENEWAL
Clifford I SergiIndiaOnyama Limba NEGOTIATION
Faith Y SlusarskiAustraliaAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Jeanfrancois C Ferencz
Johnson S Slusarski
Jennifer F Ruta
Ricardo F Inouye
Kaitlin V Campain
Tony F Stenseth
Wickens Y Stenseth
Nicolas X Wieser
Rodrigues M Dilliard
Leja Q Marrier
Ashley I Paprocki
Costa Y Garufi
Nicolas H Slusarski
Deepesh Y Kolmetz
Kaitlin O Paprocki
Chavez H Royster
Leja C Waycott
Jeanfrancois N Ferencz
Faith M Darakjy
Jeanfrancois C Rim
Chavez D Campain
Morrow W Amigon
Octavia C Ostrosky
Murillo R Doe
Izzy A Schemmer
Maisha Y Vocelka
Clifford S Wieser
Isabel G Malet
Alejandro E Stenseth
Ricardo B Oldroyd
Adams Y Ruta
Chavez I Rulapaugh
Ivar P Garufi
Clifford O Caldarera
Jones G Waycott
Ricardo T Oldroyd
Alejandro Y Venere
Murillo X Bowley
Maria U Bowley
Murillo T Nicka
Rodrigues C Gillian
Deepesh C Schemmer
Leon U Royster
David E Figeroa
Francesco L Ruta
Emily P Butt
Leon K Stockham
Cody C Ruta
Nicolas X Malet
Chavez P Glick
IdCountryDate
1000France2024-05-03
1001Russia2024-04-24
1002United Kingdom2024-04-11
1003United Kingdom2024-04-21
1004Russia2024-05-02
1005United Kingdom2024-05-04
1006Argentina2024-04-30
1007United Kingdom2024-04-24
1008Russia2024-04-22
1009India2024-04-30
1010United Kingdom2024-04-08
1011Spain2024-04-17
1012France2024-04-06
1013Canada2024-04-06
1014India2024-04-25
1015Russia2024-04-28
1016Brazil2024-04-12
1017Australia2024-04-21
1018Canada2024-05-04
1019Spain2024-04-17
1020Russia2024-04-25
1021Japan2024-04-14
1022United Kingdom2024-04-06
1023Spain2024-04-29
1024Italy2024-05-02
1025Australia2024-05-02
1026United Kingdom2024-05-01
1027Brazil2024-04-26
1028India2024-04-16
1029Italy2024-04-10
1030Italy2024-05-03
1031Brazil2024-04-07
1032India2024-04-19
1033Canada2024-04-10
1034France2024-04-13
1035Brazil2024-04-24
1036India2024-04-24
1037Spain2024-05-03
1038United Kingdom2024-04-13
1039India2024-04-26
1040India2024-04-28
1041United Kingdom2024-04-09
1042Argentina2024-04-14
1043India2024-04-23
1044United Kingdom2024-04-08
1045France2024-04-13
1046Brazil2024-04-22
1047France2024-04-07
1048Argentina2024-04-13
1049Australia2024-04-14

On-Demand Data

NameIdCountryDate
Sinclair D Glick1000France2024-04-16
Mujtaba Y Bowley1001Japan2024-04-09
Leja V Poquette1002Spain2024-04-21
Ashley Q Ruta1003United Kingdom2024-04-21
Silvio I Malet1004Canada2024-04-20
Salvatore W Oldroyd1005Germany2024-04-15
Deepesh S Foller1006Germany2024-05-01
Salvatore I Campain1007Brazil2024-05-01
Octavia T Vocelka1008Japan2024-04-13
Aika G Dilliard1009Brazil2024-04-07
Adams L Flosi1010Germany2024-04-27
Deepesh B Dilliard1011Japan2024-04-27
Salvatore V Darakjy1012Japan2024-05-02
Smith G Waycott1013Italy2024-04-09
Alejandro P Albares1014Germany2024-04-12
Deepesh U Saylors1015Japan2024-04-27
Ashley X Schemmer1016Italy2024-04-28
Adams Q Caudy1017Italy2024-04-24
James D Inouye1018Argentina2024-05-03
Antonio A Caldarera1019Australia2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika I CaudyJapanAmy Elsner QUALIFIED
Leon Q BowleyItalyAnna Fali RENEWAL
Leja W CaudyArgentinaElwin Sharvill UNQUALIFIED
James I WhobreyGermanyAnna Fali QUALIFIED
Chavez I ShinkoSpainAsiya Javayant NEW
Arvin L KuskoBrazilAnna Fali RENEWAL
Ricardo M PoquetteCanadaStephen Shaw NEGOTIATION
Rodrigues Y MaletFranceOnyama Limba NEGOTIATION
Arvin P GillianCanadaAsiya Javayant PROPOSAL
Adams G RutaIndiaAnna Fali PROPOSAL
Maisha L FollerItalyOnyama Limba UNQUALIFIED
Smith B AmigonRussiaStephen Shaw UNQUALIFIED
Murillo Z FerenczGermanyStephen Shaw QUALIFIED
Adams J PoquetteItalyOnyama Limba UNQUALIFIED
Leon A StensethCanadaIvan Magalhaes NEGOTIATION
Greenwood H BologniaGermanyStephen Shaw NEGOTIATION
Isabel V BologniaArgentinaIvan Magalhaes QUALIFIED
Sinclair V FigeroaArgentinaXuxue Feng PROPOSAL
Sinclair M GauchoArgentinaElwin Sharvill UNQUALIFIED
Darci A DoeGermanyOnyama Limba PROPOSAL
Morrow V OstroskySpainAsiya Javayant RENEWAL
Murillo J GarufiFranceBernardo Dominic NEW
Nicolas U FerenczUnited KingdomElwin Sharvill QUALIFIED
Mujtaba C ChuiFranceAmy Elsner NEW
Julie B MorascaGermanyStephen Shaw RENEWAL
Stacey Z OstroskyGermanyBernardo Dominic PROPOSAL
Ricardo I MarrierUnited KingdomBernardo Dominic RENEWAL
Octavia H DilliardUnited KingdomXuxue Feng NEGOTIATION
Costa G ChuiArgentinaBernardo Dominic QUALIFIED
Clifford T WhobreyArgentinaStephen Shaw PROPOSAL
Costa G NestleGermanyStephen Shaw PROPOSAL
Greenwood C OstroskyAustraliaIoni Bowcher NEGOTIATION
Leja Y PoquetteIndiaXuxue Feng NEGOTIATION
Clifford Q MaletAustraliaStephen Shaw QUALIFIED
Deepesh M AmigonCanadaAnna Fali NEGOTIATION
Cody U MaletIndiaIoni Bowcher NEW
Deepesh M MaletCanadaElwin Sharvill NEW
Leon P MorascaRussiaIoni Bowcher PROPOSAL
Leja J ChuiItalyAnna Fali QUALIFIED
Adams I SlusarskiUnited KingdomBernardo Dominic 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>