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
Stacey J DoeRussiaAmy Elsner RENEWAL
Greenwood P PaprockiAustraliaIvan Magalhaes PROPOSAL
Morrow M VenereGermanyBernardo Dominic NEGOTIATION
Alejandro U RimSpainAsiya Javayant NEW
Faith P MacleadFranceAmy Elsner NEW
Mayumi H BowleySpainBernardo Dominic NEGOTIATION
Antonio N OldroydIndiaAsiya Javayant QUALIFIED
Ashley W GillianFranceAsiya Javayant UNQUALIFIED
Maisha E StensethUnited KingdomIoni Bowcher RENEWAL
Juan H SaylorsAustraliaIvan Magalhaes NEW
Greenwood J AlbaresJapanIoni Bowcher NEGOTIATION
Julie K MaletSpainAsiya Javayant QUALIFIED
James V GillianFranceIvan Magalhaes RENEWAL
Leja L AlbaresSpainXuxue Feng PROPOSAL
Clifford I SergiItalyIoni Bowcher PROPOSAL
Wickens H OstroskyCanadaStephen Shaw QUALIFIED
Claire B RutaSpainElwin Sharvill PROPOSAL
Clifford C FlosiUnited KingdomBernardo Dominic UNQUALIFIED
Maria B GlickUnited KingdomStephen Shaw QUALIFIED
Isabel Y WieserSpainAmy Elsner RENEWAL
Aditya V DarakjySpainStephen Shaw UNQUALIFIED
Jeanfrancois S MaletRussiaXuxue Feng RENEWAL
Jeanfrancois E PerinArgentinaAmy Elsner NEGOTIATION
Ashley I RulapaughUnited KingdomAmy Elsner QUALIFIED
Julie G BologniaJapanAmy Elsner NEGOTIATION
Greenwood N FlosiArgentinaXuxue Feng PROPOSAL
Johnson N OldroydAustraliaElwin Sharvill NEGOTIATION
Ivar U StensethItalyAsiya Javayant UNQUALIFIED
Cody C CaudySpainElwin Sharvill RENEWAL
Jennifer A VenereUnited KingdomAmy Elsner UNQUALIFIED
Jennifer Q FigeroaFranceXuxue Feng UNQUALIFIED
Octavia K AlbaresItalyStephen Shaw RENEWAL
Misaki H RoysterItalyElwin Sharvill NEW
Ivar U StockhamSpainStephen Shaw UNQUALIFIED
Maria H FollerIndiaXuxue Feng QUALIFIED
Juan Y KuskoGermanyBernardo Dominic QUALIFIED
Juan C WieserJapanAmy Elsner QUALIFIED
Maisha N RulapaughJapanOnyama Limba PROPOSAL
Antonio Z NickaItalyStephen Shaw UNQUALIFIED
Sinclair P ShinkoBrazilIoni Bowcher PROPOSAL
Mayumi C KolmetzRussiaIvan Magalhaes QUALIFIED
Stacey A RoysterRussiaBernardo Dominic NEW
Stacey M NickaItalyIoni Bowcher NEW
Antonio X RoysterIndiaIoni Bowcher PROPOSAL
Darci Q AmigonBrazilBernardo Dominic QUALIFIED
Mujtaba K MorascaBrazilIvan Magalhaes NEW
Smith O BologniaGermanyIoni Bowcher QUALIFIED
Chavez O StockhamArgentinaAnna Fali NEW
Misaki U SchemmerBrazilBernardo Dominic RENEWAL
James Z MaletArgentinaAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Smith E ShinkoFranceBernardo Dominic UNQUALIFIED
Alejandro Z GillianBrazilAsiya Javayant UNQUALIFIED
Aditya G TollnerGermanyXuxue Feng NEGOTIATION
Octavia F ButtCanadaElwin Sharvill PROPOSAL
James W CaudyRussiaStephen Shaw NEW
Costa M MaletSpainStephen Shaw NEGOTIATION
Salvatore A VenereFranceAmy Elsner PROPOSAL
Wickens L ShinkoIndiaAnna Fali NEGOTIATION
Aruna W MaletBrazilOnyama Limba PROPOSAL
Faith A InouyeBrazilIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki U WaycottSpain2024-04-27Printing Dimensions QUALIFIED47Bernardo Dominic
1001Darci D PerinSpain2024-04-20Commercial Press NEW51Ioni Bowcher
1002Salvatore A FigeroaBrazil2024-04-24Truhlar And Truhlar Attys PROPOSAL63Ioni Bowcher
1003Johnson M BologniaIndia2024-04-22Printing Dimensions PROPOSAL40Elwin Sharvill
1004David Z RulapaughItaly2024-04-27Feiner Bros QUALIFIED15Xuxue Feng
1005Ivar R KolmetzUnited Kingdom2024-04-16Feiner Bros NEW13Elwin Sharvill
1006Claire Y RutaUnited Kingdom2024-03-30Benton, John B Jr QUALIFIED66Elwin Sharvill
1007Silvio G DarakjyCanada2024-04-17Rangoni Of Florence NEW51Amy Elsner
1008Morrow P BologniaAustralia2024-04-21Feltz Printing Service PROPOSAL5Asiya Javayant
1009Jeanfrancois C VenereGermany2024-04-12Commercial Press PROPOSAL41Ivan Magalhaes
1010Stacey V StensethAustralia2024-04-24Buckley Miller Wright NEW70Asiya Javayant
1011Ivar Z RulapaughIndia2024-04-14Rousseaux, Michael Esq PROPOSAL38Xuxue Feng
1012Aruna S DilliardGermany2024-04-13Chapman, Ross E Esq NEW92Stephen Shaw
1013Arvin E GauchoAustralia2024-04-14Morlong Associates NEGOTIATION66Anna Fali
1014Morrow M WaycottIndia2024-03-31Feiner Bros QUALIFIED57Ioni Bowcher
1015Aruna Q RutaCanada2024-04-01Feiner Bros PROPOSAL54Stephen Shaw
1016Arvin U WaycottCanada2024-03-30Morlong Associates NEW99Amy Elsner
1017Ricardo E MaletArgentina2024-04-14Buckley Miller Wright RENEWAL51Ivan Magalhaes
1018Tony J ChuiFrance2024-03-29Truhlar And Truhlar Attys UNQUALIFIED16Ioni Bowcher
1019Salvatore Q FollerArgentina2024-04-02Feltz Printing Service RENEWAL94Elwin Sharvill
1020Tony E IturbideGermany2024-04-05Morlong Associates NEGOTIATION60Stephen Shaw
1021Murillo Y PaprockiFrance2024-04-25Buckley Miller Wright PROPOSAL78Ivan Magalhaes
1022Ashley P DilliardJapan2024-04-06Truhlar And Truhlar Attys UNQUALIFIED92Stephen Shaw
1023Faith L PoquetteFrance2024-04-14Truhlar And Truhlar Attys QUALIFIED50Ioni Bowcher
1024Jennifer H OstroskyItaly2024-04-20Chanay, Jeffrey A Esq UNQUALIFIED88Stephen Shaw
1025Jefferson W AlbaresRussia2024-04-22Rousseaux, Michael Esq NEW70Bernardo Dominic
1026Greenwood W RimBrazil2024-04-15Dorl, James J Esq NEW36Elwin Sharvill
1027Aika A RimCanada2024-04-05Chanay, Jeffrey A Esq PROPOSAL31Ioni Bowcher
1028Costa H BologniaBrazil2024-04-08Dorl, James J Esq UNQUALIFIED4Xuxue Feng
1029Ashley G RoysterArgentina2024-04-21Buckley Miller Wright PROPOSAL56Onyama Limba
1030Arvin D DarakjyBrazil2024-04-11Benton, John B Jr NEW2Asiya Javayant
1031Aditya M RulapaughSpain2024-04-08Commercial Press UNQUALIFIED21Ivan Magalhaes
1032Isabel I ShinkoRussia2024-04-23Chanay, Jeffrey A Esq NEW92Anna Fali
1033Sinclair R GauchoJapan2024-04-17Rousseaux, Michael Esq PROPOSAL34Ivan Magalhaes
1034Faith Z PerinUnited Kingdom2024-04-02Rangoni Of Florence PROPOSAL28Anna Fali
1035Adams Z StensethRussia2024-04-17Feiner Bros QUALIFIED83Amy Elsner
1036David R FollerItaly2024-04-09Rangoni Of Florence NEGOTIATION56Anna Fali
1037Mayumi W GillianJapan2024-04-16Rousseaux, Michael Esq NEW90Ioni Bowcher
1038Kadeem Z VocelkaIndia2024-04-08Feltz Printing Service UNQUALIFIED3Ioni Bowcher
1039Leja G PerinJapan2024-04-17Buckley Miller Wright UNQUALIFIED44Asiya Javayant
1040Faith Y FollerItaly2024-04-03Morlong Associates NEW48Ioni Bowcher
1041Arvin W GlickRussia2024-04-01Benton, John B Jr UNQUALIFIED95Bernardo Dominic
1042Arvin H OstroskySpain2024-04-13Commercial Press RENEWAL19Ioni Bowcher
1043Leja D SergiFrance2024-04-07Rangoni Of Florence NEGOTIATION64Xuxue Feng
1044Darci A NickaIndia2024-04-19Rousseaux, Michael Esq NEW36Xuxue Feng
1045Octavia D AlbaresUnited Kingdom2024-04-15Printing Dimensions QUALIFIED80Xuxue Feng
1046Costa H VocelkaCanada2024-04-04Chemel, James L Cpa RENEWAL3Onyama Limba
1047Emily G PaprockiArgentina2024-04-12Morlong Associates RENEWAL61Ivan Magalhaes
1048Claire O GarufiIndia2024-04-23Benton, John B Jr RENEWAL96Onyama Limba
1049Smith L FerenczFrance2024-04-02Benton, John B Jr RENEWAL48Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Misaki S ChuiItalyAnna Fali PROPOSAL
Aruna N StockhamJapanAsiya Javayant PROPOSAL
Nicolas Z TollnerBrazilAnna Fali RENEWAL
Ivar K PaprockiJapanXuxue Feng QUALIFIED
Izzy D FollerJapanAmy Elsner NEGOTIATION
Sinclair H MarrierIndiaBernardo Dominic RENEWAL
Cody P ShinkoSpainAsiya Javayant QUALIFIED
Smith J FlosiItalyBernardo Dominic QUALIFIED
Izzy N SchemmerJapanIoni Bowcher QUALIFIED
Aika U NestleUnited KingdomAmy Elsner PROPOSAL
Izzy K CaldareraGermanyAsiya Javayant PROPOSAL
Clifford M DoeFranceIvan Magalhaes UNQUALIFIED
Octavia N PoquetteIndiaIvan Magalhaes NEGOTIATION
Aika X GauchoFranceOnyama Limba QUALIFIED
Greenwood V NickaAustraliaOnyama Limba PROPOSAL
Kaitlin J SchemmerGermanyIoni Bowcher RENEWAL
Cody P NestleCanadaStephen Shaw QUALIFIED
Costa K SlusarskiArgentinaStephen Shaw UNQUALIFIED
Jennifer R AlbaresCanadaOnyama Limba UNQUALIFIED
Faith N GarufiJapanXuxue Feng NEW
Tony O NestleItalyElwin Sharvill UNQUALIFIED
Aditya D MaletSpainOnyama Limba UNQUALIFIED
Darci Z ShinkoCanadaIvan Magalhaes RENEWAL
Rodrigues T AmigonCanadaIvan Magalhaes QUALIFIED
David T AlbaresJapanStephen Shaw PROPOSAL
Clifford Q SchemmerGermanyOnyama Limba RENEWAL
David J RimAustraliaXuxue Feng NEW
Juan S FigeroaCanadaOnyama Limba NEGOTIATION
Greenwood W MarrierJapanIoni Bowcher NEW
Ricardo Z KuskoCanadaAsiya Javayant QUALIFIED
Chavez N MaletRussiaStephen Shaw UNQUALIFIED
Mujtaba Q VocelkaCanadaOnyama Limba QUALIFIED
Claire P SergiRussiaAnna Fali NEGOTIATION
Jefferson X CaldareraBrazilOnyama Limba NEW
Rodrigues C PerinBrazilStephen Shaw QUALIFIED
Leon J StockhamItalyStephen Shaw NEGOTIATION
Morrow O MaletSpainElwin Sharvill UNQUALIFIED
Leja O TollnerArgentinaXuxue Feng NEW
Claire K GillianItalyIoni Bowcher PROPOSAL
Costa A RimUnited KingdomElwin Sharvill QUALIFIED
Deepesh H WaycottItalyAnna Fali PROPOSAL
Murillo J WaycottArgentinaAnna Fali PROPOSAL
Francesco I AlbaresRussiaAmy Elsner NEGOTIATION
Antonio F IturbideUnited KingdomAsiya Javayant UNQUALIFIED
Johnson M FlosiArgentinaOnyama Limba NEW
Ricardo B ButtItalyOnyama Limba QUALIFIED
Maisha B MaletFranceXuxue Feng UNQUALIFIED
Adams Y MorascaGermanyIvan Magalhaes PROPOSAL
Izzy W PoquetteBrazilOnyama Limba UNQUALIFIED
Costa H VocelkaItalyAsiya Javayant NEW
Frozen Columns
Name
Claire U Figeroa
Jefferson W Rulapaugh
Darci K Briddick
Aruna X Maclead
Octavia G Schemmer
Tony N Briddick
Jennifer S Stenseth
Francesco L Garufi
Jefferson J Ruta
Leja N Caldarera
Maria G Saylors
Costa P Marrier
Smith I Campain
Julie G Bolognia
Tony X Glick
Murillo S Campain
Kaitlin R Doe
David A Marrier
Greenwood V Malet
Adams U Caldarera
Misaki L Figeroa
Leja T Butt
Octavia L Doe
Aditya K Maclead
Jones B Marrier
Chavez D Saylors
Stacey C Glick
Juan P Morasca
Maria J Wieser
Juan R Nestle
Emily Y Malet
Silvio L Ostrosky
Costa D Chui
Francesco L Darakjy
Smith A Maclead
Rodrigues N Rim
Greenwood P Paprocki
Adams V Marrier
Murillo M Schemmer
Leon K Malet
Nicolas X Briddick
Murillo T Venere
Clifford W Vocelka
Jones X Garufi
Izzy O Figeroa
Darci L Inouye
Wickens D Sergi
Isabel M Butt
Silvio G Kusko
Alejandro R Foller
IdCountryDate
1000Argentina2024-04-13
1001India2024-04-09
1002Argentina2024-04-10
1003Italy2024-04-19
1004Brazil2024-04-08
1005Canada2024-04-14
1006Canada2024-04-23
1007Russia2024-04-10
1008Australia2024-04-12
1009Australia2024-04-23
1010Argentina2024-04-26
1011United Kingdom2024-04-13
1012Japan2024-04-13
1013Germany2024-04-05
1014Brazil2024-04-15
1015Italy2024-04-01
1016Russia2024-03-31
1017Russia2024-04-19
1018Japan2024-04-08
1019Australia2024-04-09
1020Australia2024-04-14
1021Argentina2024-04-06
1022United Kingdom2024-04-20
1023Brazil2024-04-02
1024Russia2024-04-15
1025Brazil2024-04-04
1026India2024-04-24
1027United Kingdom2024-04-02
1028Russia2024-04-06
1029Japan2024-04-04
1030Spain2024-04-13
1031United Kingdom2024-04-07
1032France2024-04-07
1033Japan2024-04-27
1034France2024-04-03
1035Spain2024-04-12
1036India2024-04-04
1037United Kingdom2024-03-29
1038United Kingdom2024-03-31
1039France2024-04-05
1040Australia2024-04-08
1041India2024-04-11
1042Argentina2024-04-04
1043Russia2024-04-06
1044India2024-04-12
1045Spain2024-03-31
1046France2024-04-26
1047Japan2024-04-06
1048United Kingdom2024-04-25
1049Canada2024-04-15

On-Demand Data

NameIdCountryDate
Alejandro M Kolmetz1000Brazil2024-04-24
Costa A Kolmetz1001France2024-04-13
Morrow E Butt1002Spain2024-04-03
Clifford W Rim1003United Kingdom2024-04-06
Juan Y Maclead1004Russia2024-04-02
Jones U Gillian1005France2024-04-01
Nicolas Y Doe1006Russia2024-04-18
Aditya V Kolmetz1007Australia2024-04-24
Ivar W Schemmer1008Japan2024-04-11
Jefferson O Whobrey1009United Kingdom2024-04-23
Antonio H Inouye1010Italy2024-04-13
Darci N Kolmetz1011Germany2024-04-18
Aditya T Venere1012India2024-04-16
Ashley H Malet1013Brazil2024-04-25
Chavez L Malet1014Australia2024-04-16
Arvin V Ferencz1015Argentina2024-04-14
Greenwood O Garufi1016Australia2024-04-10
Jennifer C Perin1017Brazil2024-04-20
Jennifer S Dilliard1018Brazil2024-04-10
Stacey I Bolognia1019Japan2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon L FigeroaIndiaXuxue Feng QUALIFIED
Nicolas G WaycottAustraliaAmy Elsner NEGOTIATION
Leon L DarakjyAustraliaOnyama Limba QUALIFIED
Misaki E WhobreyRussiaStephen Shaw NEGOTIATION
Johnson H CampainUnited KingdomBernardo Dominic QUALIFIED
Adams G NestleIndiaAsiya Javayant PROPOSAL
Tony P CaudyItalyIvan Magalhaes UNQUALIFIED
Kaitlin F MacleadBrazilAnna Fali PROPOSAL
Johnson Z KuskoFranceAmy Elsner QUALIFIED
Greenwood V CaudySpainXuxue Feng QUALIFIED
Munro J PerinBrazilAsiya Javayant NEW
Wickens Y FerenczCanadaIvan Magalhaes NEGOTIATION
Clifford Z WaycottBrazilStephen Shaw UNQUALIFIED
Greenwood M BowleyCanadaIoni Bowcher NEW
Deepesh E ShinkoCanadaAnna Fali NEGOTIATION
Sinclair Z RulapaughIndiaIvan Magalhaes NEW
Jones M GlickItalyStephen Shaw QUALIFIED
Jeanfrancois P ChuiSpainIvan Magalhaes QUALIFIED
Smith Q SaylorsCanadaAmy Elsner NEGOTIATION
Cody Y DarakjyRussiaAsiya Javayant NEW
David T PoquetteCanadaAnna Fali UNQUALIFIED
Francesco B InouyeIndiaAsiya Javayant PROPOSAL
Greenwood O StockhamArgentinaAnna Fali UNQUALIFIED
Octavia I PoquetteIndiaAsiya Javayant UNQUALIFIED
Emily W KolmetzIndiaAsiya Javayant NEGOTIATION
Clifford C OstroskyIndiaAsiya Javayant PROPOSAL
Jennifer G StockhamGermanyBernardo Dominic NEW
Cody I VenereAustraliaStephen Shaw NEW
Francesco S PerinFranceAnna Fali NEGOTIATION
Rodrigues M OldroydUnited KingdomAsiya Javayant NEGOTIATION
Kadeem G OstroskySpainOnyama Limba UNQUALIFIED
Smith Q BologniaJapanAmy Elsner NEGOTIATION
Munro I ButtItalyOnyama Limba NEGOTIATION
Adams U DarakjyJapanAnna Fali UNQUALIFIED
Julie G FigeroaBrazilStephen Shaw RENEWAL
Costa C MorascaGermanyStephen Shaw PROPOSAL
Leon J PoquetteSpainXuxue Feng RENEWAL
Kadeem G AlbaresFranceStephen Shaw PROPOSAL
Misaki G DoeCanadaBernardo Dominic NEW
Tony F IturbideFranceAsiya Javayant 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>