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
Juan P DilliardCanadaBernardo Dominic QUALIFIED
Silvio C ChuiItalyElwin Sharvill UNQUALIFIED
Izzy S MaletCanadaAnna Fali UNQUALIFIED
Smith S PerinCanadaBernardo Dominic NEW
Deepesh Y SchemmerBrazilOnyama Limba NEGOTIATION
Emily D ButtCanadaElwin Sharvill QUALIFIED
Sinclair N BowleyAustraliaElwin Sharvill QUALIFIED
Jefferson I NickaArgentinaIoni Bowcher NEW
Francesco L NickaUnited KingdomAnna Fali NEW
Jennifer G FollerSpainStephen Shaw NEGOTIATION
Wickens E SchemmerUnited KingdomAnna Fali QUALIFIED
Julie P KolmetzCanadaOnyama Limba QUALIFIED
Silvio Q MaletAustraliaXuxue Feng PROPOSAL
Antonio L CaudyArgentinaIoni Bowcher RENEWAL
Munro E MaletIndiaAmy Elsner QUALIFIED
Deepesh R TollnerIndiaStephen Shaw UNQUALIFIED
James H FollerBrazilIvan Magalhaes PROPOSAL
Mujtaba P NestleIndiaStephen Shaw UNQUALIFIED
Johnson R GarufiAustraliaXuxue Feng QUALIFIED
Leja I BologniaSpainStephen Shaw RENEWAL
Silvio W AmigonItalyAmy Elsner UNQUALIFIED
Antonio G TollnerItalyXuxue Feng PROPOSAL
Jones C MaletSpainOnyama Limba NEW
Morrow C MaletRussiaIvan Magalhaes QUALIFIED
Arvin H CaudyBrazilAmy Elsner NEW
Isabel O MacleadSpainElwin Sharvill PROPOSAL
Deepesh Z RutaCanadaOnyama Limba UNQUALIFIED
Leon D RimJapanAmy Elsner NEGOTIATION
Tony M WaycottFranceAsiya Javayant UNQUALIFIED
Smith V OldroydGermanyElwin Sharvill QUALIFIED
Misaki W RimArgentinaBernardo Dominic PROPOSAL
James S DarakjyJapanBernardo Dominic QUALIFIED
Mayumi B ShinkoFranceIvan Magalhaes QUALIFIED
Deepesh F PoquetteItalyBernardo Dominic QUALIFIED
Clifford B RoysterUnited KingdomBernardo Dominic RENEWAL
Ricardo F OstroskyGermanyElwin Sharvill RENEWAL
Salvatore W DilliardArgentinaAmy Elsner NEW
Ricardo N TollnerIndiaXuxue Feng UNQUALIFIED
Alejandro N StockhamAustraliaAmy Elsner QUALIFIED
Maisha M MaletFranceOnyama Limba NEW
Claire B PoquetteFranceAnna Fali NEW
Cody X CaudyGermanyIvan Magalhaes RENEWAL
Ricardo A OldroydRussiaXuxue Feng NEGOTIATION
Nicolas P AmigonFranceBernardo Dominic PROPOSAL
Isabel E InouyeUnited KingdomAmy Elsner RENEWAL
Claire D ChuiSpainAmy Elsner NEW
Smith O SchemmerAustraliaOnyama Limba UNQUALIFIED
Cody G PoquetteGermanyBernardo Dominic PROPOSAL
Aruna E RoysterGermanyAnna Fali RENEWAL
Misaki P NickaItalyElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jefferson B FerenczCanadaAmy Elsner UNQUALIFIED
Alejandro D SaylorsAustraliaAmy Elsner QUALIFIED
Aruna Z GillianUnited KingdomBernardo Dominic QUALIFIED
Tony M IturbideSpainAsiya Javayant UNQUALIFIED
Francesco F FerenczIndiaBernardo Dominic QUALIFIED
Aditya U GarufiSpainAsiya Javayant RENEWAL
Emily C DoeItalyAsiya Javayant UNQUALIFIED
Johnson S CaldareraItalyAsiya Javayant PROPOSAL
Murillo N PoquetteRussiaIvan Magalhaes NEGOTIATION
Wickens V MacleadJapanElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues I PaprockiGermany2024-04-12Feltz Printing Service UNQUALIFIED69Onyama Limba
1001Munro R NestleBrazil2024-04-08Chanay, Jeffrey A Esq PROPOSAL47Ioni Bowcher
1002Aika Z DoeFrance2024-04-22Truhlar And Truhlar Attys RENEWAL21Onyama Limba
1003Mayumi J StensethFrance2024-04-09Commercial Press RENEWAL45Onyama Limba
1004Leja E GillianBrazil2024-04-03Feiner Bros UNQUALIFIED31Anna Fali
1005Sinclair Z SlusarskiRussia2024-04-09Rousseaux, Michael Esq NEGOTIATION6Ivan Magalhaes
1006James P DilliardCanada2024-04-08Chapman, Ross E Esq RENEWAL30Xuxue Feng
1007Silvio C CampainRussia2024-04-22Rousseaux, Michael Esq NEGOTIATION77Elwin Sharvill
1008Clifford A RutaGermany2024-04-10Morlong Associates RENEWAL2Anna Fali
1009Arvin B BologniaAustralia2024-04-15Chemel, James L Cpa UNQUALIFIED73Asiya Javayant
1010Johnson J FlosiAustralia2024-04-15Rangoni Of Florence NEW73Stephen Shaw
1011David Y MaletCanada2024-04-19Dorl, James J Esq UNQUALIFIED40Stephen Shaw
1012Francesco W DoeJapan2024-04-04King, Christopher A Esq QUALIFIED5Xuxue Feng
1013Chavez U DoeIndia2024-04-18Dorl, James J Esq PROPOSAL62Ioni Bowcher
1014Jeanfrancois I ButtJapan2024-04-26Rangoni Of Florence UNQUALIFIED22Anna Fali
1015Morrow I GauchoAustralia2024-03-31Dorl, James J Esq PROPOSAL9Stephen Shaw
1016Morrow Q AlbaresItaly2024-04-25Dorl, James J Esq UNQUALIFIED29Amy Elsner
1017Stacey W GauchoGermany2024-04-20Printing Dimensions RENEWAL60Bernardo Dominic
1018Clifford H MaletCanada2024-04-02Benton, John B Jr PROPOSAL48Anna Fali
1019Arvin S CaldareraAustralia2024-04-17Truhlar And Truhlar Attys RENEWAL49Ioni Bowcher
1020Adams C ButtRussia2024-04-26Dorl, James J Esq NEGOTIATION47Asiya Javayant
1021Antonio M BowleyItaly2024-04-11Buckley Miller Wright QUALIFIED26Xuxue Feng
1022Smith G WieserFrance2024-04-09Truhlar And Truhlar Attys UNQUALIFIED25Xuxue Feng
1023Johnson O StensethIndia2024-04-20Commercial Press RENEWAL85Amy Elsner
1024Stacey T SaylorsBrazil2024-04-20Commercial Press NEGOTIATION35Amy Elsner
1025Julie G GarufiFrance2024-04-28Rangoni Of Florence QUALIFIED45Elwin Sharvill
1026Aika E PerinBrazil2024-03-31Chanay, Jeffrey A Esq PROPOSAL27Onyama Limba
1027Maria N WhobreyGermany2024-04-12Chemel, James L Cpa NEGOTIATION96Asiya Javayant
1028Ashley L WhobreyUnited Kingdom2024-04-25Rousseaux, Michael Esq UNQUALIFIED16Bernardo Dominic
1029Claire O SchemmerRussia2024-04-14Dorl, James J Esq NEW88Xuxue Feng
1030Jeanfrancois O ShinkoUnited Kingdom2024-04-19King, Christopher A Esq NEGOTIATION76Bernardo Dominic
1031Arvin T CaldareraIndia2024-04-11Feltz Printing Service QUALIFIED72Anna Fali
1032Chavez B GarufiBrazil2024-04-10Morlong Associates NEGOTIATION88Elwin Sharvill
1033Faith X FigeroaGermany2024-04-28Rousseaux, Michael Esq PROPOSAL89Onyama Limba
1034Cody A WaycottArgentina2024-04-09King, Christopher A Esq NEGOTIATION94Amy Elsner
1035Silvio U StensethBrazil2024-04-10Rousseaux, Michael Esq NEGOTIATION2Onyama Limba
1036Maisha Q MarrierJapan2024-04-16King, Christopher A Esq QUALIFIED17Anna Fali
1037Nicolas G SlusarskiUnited Kingdom2024-04-22Commercial Press NEGOTIATION53Elwin Sharvill
1038Juan J FerenczBrazil2024-04-12Feltz Printing Service PROPOSAL30Onyama Limba
1039Aditya V SchemmerSpain2024-04-07Benton, John B Jr QUALIFIED61Xuxue Feng
1040Isabel V PerinArgentina2024-04-14Chanay, Jeffrey A Esq QUALIFIED46Bernardo Dominic
1041Munro T KolmetzItaly2024-04-22Buckley Miller Wright NEW11Stephen Shaw
1042Sinclair C SergiRussia2024-04-25Feltz Printing Service UNQUALIFIED4Stephen Shaw
1043Tony V BowleyFrance2024-04-27King, Christopher A Esq NEW51Onyama Limba
1044Leon B OldroydAustralia2024-04-21Chemel, James L Cpa UNQUALIFIED96Elwin Sharvill
1045Aruna P WieserArgentina2024-04-20Printing Dimensions RENEWAL85Asiya Javayant
1046James Z StensethRussia2024-04-22Rangoni Of Florence UNQUALIFIED28Ioni Bowcher
1047Jones R MaletAustralia2024-04-17Chapman, Ross E Esq PROPOSAL40Ioni Bowcher
1048Misaki Y ChuiItaly2024-04-11Rangoni Of Florence RENEWAL31Onyama Limba
1049Deepesh O BologniaSpain2024-04-21Benton, John B Jr QUALIFIED89Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Munro R CaldareraRussiaIvan Magalhaes QUALIFIED
Smith F PaprockiItalyXuxue Feng UNQUALIFIED
Ashley F StensethRussiaElwin Sharvill UNQUALIFIED
Chavez I InouyeRussiaOnyama Limba UNQUALIFIED
Morrow D RulapaughUnited KingdomElwin Sharvill UNQUALIFIED
Salvatore X PaprockiSpainAmy Elsner NEW
Claire S SaylorsIndiaXuxue Feng QUALIFIED
Cody D AmigonFranceAsiya Javayant UNQUALIFIED
Maria U GarufiJapanElwin Sharvill RENEWAL
Maisha N CaudyUnited KingdomXuxue Feng QUALIFIED
Stacey Z RutaItalyElwin Sharvill RENEWAL
Leon P BologniaJapanIoni Bowcher RENEWAL
David C CampainJapanIoni Bowcher QUALIFIED
Jefferson P MaletRussiaAsiya Javayant NEGOTIATION
Isabel T StensethRussiaStephen Shaw RENEWAL
Silvio H StensethSpainAmy Elsner NEGOTIATION
Octavia A MacleadSpainIvan Magalhaes NEGOTIATION
James F FerenczRussiaAsiya Javayant UNQUALIFIED
Chavez J SchemmerItalyAmy Elsner RENEWAL
Emily J MorascaArgentinaXuxue Feng UNQUALIFIED
Cody E FigeroaItalyAnna Fali UNQUALIFIED
Aditya N CaudyGermanyAsiya Javayant QUALIFIED
Jones U GarufiRussiaAmy Elsner RENEWAL
Smith X DarakjyCanadaXuxue Feng PROPOSAL
Ivar R StensethIndiaIoni Bowcher PROPOSAL
Ivar P NickaSpainIoni Bowcher PROPOSAL
Ivar R FollerCanadaXuxue Feng UNQUALIFIED
Tony X GillianJapanAnna Fali UNQUALIFIED
Rodrigues G GarufiSpainStephen Shaw QUALIFIED
Leon E FollerGermanyElwin Sharvill NEGOTIATION
Ashley F SlusarskiItalyXuxue Feng QUALIFIED
Smith E IturbideGermanyElwin Sharvill RENEWAL
Aruna X DilliardArgentinaIvan Magalhaes RENEWAL
Darci U GauchoUnited KingdomOnyama Limba NEW
Rodrigues X MaletIndiaBernardo Dominic RENEWAL
Cody R ButtAustraliaXuxue Feng NEW
Stacey U DarakjyGermanyIoni Bowcher QUALIFIED
Murillo C CampainGermanyStephen Shaw NEGOTIATION
Misaki X MaletItalyOnyama Limba UNQUALIFIED
Mujtaba B RoysterSpainStephen Shaw NEGOTIATION
Ashley L DoeItalyStephen Shaw QUALIFIED
Leja W ChuiBrazilAmy Elsner NEGOTIATION
Jennifer V OstroskyBrazilAmy Elsner UNQUALIFIED
Leon M GillianJapanAsiya Javayant NEGOTIATION
Mujtaba W RulapaughUnited KingdomOnyama Limba UNQUALIFIED
Antonio P GillianFranceAnna Fali NEGOTIATION
Jefferson Y SlusarskiSpainIoni Bowcher NEGOTIATION
Aruna D IturbideGermanyElwin Sharvill RENEWAL
Silvio Z DoeArgentinaElwin Sharvill UNQUALIFIED
Francesco S RutaCanadaAmy Elsner RENEWAL
Frozen Columns
Name
James X Caldarera
Greenwood F Tollner
Octavia E Venere
Emily P Gaucho
Claire L Vocelka
Wickens V Kusko
Emily J Vocelka
Aruna W Kusko
Faith S Paprocki
Sinclair U Kusko
Isabel P Ruta
Chavez L Nicka
Sinclair U Doe
Jennifer T Oldroyd
Rodrigues D Malet
Stacey I Whobrey
Ashley I Briddick
Smith P Shinko
Clifford E Waycott
Ivar L Campain
Sinclair E Venere
Arvin R Sergi
Izzy H Iturbide
Silvio T Kolmetz
Ricardo K Stenseth
Chavez D Inouye
Costa U Campain
Johnson F Campain
Kadeem V Dilliard
Izzy R Figeroa
Misaki E Stockham
Claire H Maclead
Kaitlin U Bolognia
Kaitlin Q Glick
Nicolas C Nicka
Antonio O Foller
Adams Y Ostrosky
Faith I Chui
Aruna Y Stockham
Juan M Malet
Nicolas W Saylors
Arvin H Saylors
Aika J Saylors
Clifford S Kolmetz
Aika E Malet
Mayumi D Foller
Jeanfrancois E Morasca
Juan Q Albares
Johnson E Nestle
Munro U Caldarera
IdCountryDate
1000Russia2024-04-19
1001Germany2024-04-24
1002Brazil2024-04-22
1003Australia2024-04-29
1004Russia2024-04-08
1005Russia2024-04-12
1006United Kingdom2024-04-15
1007Germany2024-04-25
1008Russia2024-04-04
1009Japan2024-04-28
1010United Kingdom2024-04-01
1011France2024-04-08
1012Italy2024-04-16
1013Russia2024-04-27
1014Russia2024-04-19
1015Spain2024-04-05
1016Japan2024-04-03
1017Russia2024-04-02
1018Germany2024-04-18
1019United Kingdom2024-04-12
1020Italy2024-04-07
1021France2024-04-19
1022United Kingdom2024-04-08
1023Italy2024-04-02
1024Australia2024-04-22
1025Italy2024-04-25
1026India2024-04-29
1027Canada2024-04-28
1028France2024-04-07
1029Canada2024-04-05
1030Russia2024-04-16
1031Australia2024-04-03
1032Canada2024-04-16
1033Japan2024-04-28
1034France2024-04-25
1035Spain2024-04-07
1036Italy2024-04-20
1037Italy2024-04-21
1038Italy2024-04-13
1039United Kingdom2024-04-01
1040India2024-04-16
1041Germany2024-04-18
1042Japan2024-03-31
1043Argentina2024-04-15
1044Italy2024-04-20
1045Germany2024-04-04
1046Spain2024-04-22
1047Canada2024-03-31
1048Italy2024-04-24
1049Australia2024-04-24

On-Demand Data

NameIdCountryDate
Wickens W Sergi1000India2024-04-01
Clifford C Marrier1001United Kingdom2024-04-14
Aditya P Doe1002Japan2024-04-03
Aruna N Whobrey1003Canada2024-04-06
Ricardo J Gillian1004India2024-04-11
Cody B Rulapaugh1005Russia2024-04-11
Aika D Tollner1006Canada2024-04-11
David A Venere1007Japan2024-04-25
Mayumi Z Campain1008India2024-04-03
Costa V Malet1009Spain2024-04-11
Adams N Poquette1010India2024-04-24
Costa K Stenseth1011France2024-04-14
Adams T Ruta1012Japan2024-04-07
Stacey W Perin1013Canada2024-04-24
Misaki D Butt1014Spain2024-04-09
Jennifer N Kusko1015Japan2024-04-14
Greenwood E Flosi1016Canada2024-04-04
Aika Z Maclead1017Germany2024-04-03
Ricardo M Darakjy1018India2024-04-15
Jeanfrancois R Caudy1019Brazil2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem B ButtCanadaAnna Fali NEW
Maisha G WaycottBrazilAnna Fali NEW
Aruna X SergiJapanAsiya Javayant NEGOTIATION
Mayumi G WieserRussiaElwin Sharvill PROPOSAL
Francesco C GarufiCanadaElwin Sharvill NEGOTIATION
Deepesh F FigeroaRussiaAsiya Javayant PROPOSAL
Aruna N WaycottItalyXuxue Feng QUALIFIED
Cody Z CaldareraIndiaElwin Sharvill NEGOTIATION
Chavez S OldroydAustraliaXuxue Feng NEW
Munro D WhobreyBrazilElwin Sharvill UNQUALIFIED
Kaitlin B DarakjyCanadaIvan Magalhaes QUALIFIED
Mayumi C MaletFranceAnna Fali PROPOSAL
Julie Q InouyeArgentinaIoni Bowcher NEGOTIATION
Stacey I GillianUnited KingdomXuxue Feng NEW
Emily D CaudyCanadaAnna Fali QUALIFIED
Tony D SchemmerBrazilElwin Sharvill UNQUALIFIED
Adams H ShinkoUnited KingdomAmy Elsner QUALIFIED
Darci N GillianGermanyOnyama Limba NEW
Mujtaba C AlbaresAustraliaAnna Fali NEW
Sinclair V PoquetteIndiaIvan Magalhaes PROPOSAL
Julie R DoeItalyBernardo Dominic NEGOTIATION
Francesco B AmigonFranceOnyama Limba NEW
Jeanfrancois A StensethIndiaAsiya Javayant NEGOTIATION
Claire A SergiFranceElwin Sharvill QUALIFIED
Clifford T DarakjyIndiaOnyama Limba UNQUALIFIED
Jennifer N RutaBrazilStephen Shaw QUALIFIED
James B MarrierBrazilAnna Fali RENEWAL
Ivar G SchemmerBrazilIoni Bowcher RENEWAL
Darci M GauchoSpainXuxue Feng RENEWAL
Francesco F CampainFranceStephen Shaw NEGOTIATION
Aruna O KuskoUnited KingdomBernardo Dominic UNQUALIFIED
Morrow H RulapaughSpainIvan Magalhaes RENEWAL
Rodrigues D MaletSpainBernardo Dominic QUALIFIED
Isabel M PerinArgentinaIvan Magalhaes UNQUALIFIED
Octavia Z FerenczSpainAmy Elsner PROPOSAL
Misaki I ShinkoCanadaStephen Shaw RENEWAL
Arvin Z CaldareraAustraliaOnyama Limba NEGOTIATION
Francesco I GlickSpainAmy Elsner RENEWAL
Faith A BriddickIndiaIvan Magalhaes PROPOSAL
James H PerinJapanIoni Bowcher 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>