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
Chavez L FigeroaBrazilBernardo Dominic QUALIFIED
Ricardo P FerenczIndiaAsiya Javayant QUALIFIED
David P BriddickUnited KingdomStephen Shaw NEW
Aditya E BologniaItalyAmy Elsner PROPOSAL
Mujtaba J InouyeCanadaOnyama Limba QUALIFIED
Deepesh F KolmetzFranceAnna Fali QUALIFIED
Maria F SchemmerFranceIvan Magalhaes RENEWAL
Octavia H PoquetteGermanyBernardo Dominic PROPOSAL
Costa I StockhamBrazilAmy Elsner QUALIFIED
Jennifer F AlbaresUnited KingdomIvan Magalhaes PROPOSAL
Murillo G FlosiAustraliaAsiya Javayant NEGOTIATION
Misaki K NickaJapanOnyama Limba NEGOTIATION
Maisha M SlusarskiFranceIvan Magalhaes NEW
Morrow S AlbaresSpainIoni Bowcher RENEWAL
Rodrigues H WaycottUnited KingdomIoni Bowcher NEW
Greenwood S OstroskyUnited KingdomAnna Fali RENEWAL
Aika C WieserIndiaIoni Bowcher RENEWAL
Alejandro B ChuiFranceAmy Elsner RENEWAL
Leja D VocelkaSpainAnna Fali NEGOTIATION
Murillo A PoquetteSpainAsiya Javayant PROPOSAL
David L VenereSpainXuxue Feng QUALIFIED
Aditya Z MacleadFranceOnyama Limba NEGOTIATION
Maisha G MarrierUnited KingdomIvan Magalhaes QUALIFIED
Chavez T MarrierSpainAnna Fali PROPOSAL
Costa L PerinUnited KingdomIvan Magalhaes UNQUALIFIED
Faith Y CaldareraJapanBernardo Dominic NEGOTIATION
Mayumi B StensethAustraliaStephen Shaw NEW
Clifford T ChuiArgentinaXuxue Feng RENEWAL
Juan I GauchoItalyElwin Sharvill QUALIFIED
Kaitlin J SaylorsItalyAnna Fali NEW
Jones H CampainJapanElwin Sharvill NEW
Adams T IturbideFranceAmy Elsner QUALIFIED
Aruna G ShinkoItalyElwin Sharvill NEW
Costa Y RimItalyStephen Shaw QUALIFIED
Misaki H PaprockiBrazilBernardo Dominic UNQUALIFIED
Costa N InouyeItalyXuxue Feng QUALIFIED
Kaitlin E RimCanadaAsiya Javayant RENEWAL
Claire Q KolmetzSpainAmy Elsner UNQUALIFIED
David N GauchoGermanyStephen Shaw NEW
James L DilliardIndiaOnyama Limba RENEWAL
Maisha R WaycottGermanyOnyama Limba PROPOSAL
Leon P TollnerBrazilAmy Elsner NEGOTIATION
Leon E OldroydUnited KingdomStephen Shaw NEGOTIATION
Greenwood P SlusarskiGermanyBernardo Dominic NEGOTIATION
Cody M MaletJapanElwin Sharvill UNQUALIFIED
Deepesh Q GarufiRussiaBernardo Dominic RENEWAL
Jefferson D CaldareraBrazilBernardo Dominic UNQUALIFIED
Wickens F OstroskyRussiaStephen Shaw RENEWAL
Jeanfrancois J SchemmerItalyIoni Bowcher UNQUALIFIED
Kaitlin V BowleySpainBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Faith Z AmigonBrazilStephen Shaw RENEWAL
Salvatore P FerenczUnited KingdomAnna Fali UNQUALIFIED
Jefferson F DarakjyCanadaStephen Shaw UNQUALIFIED
Aditya V BriddickGermanyStephen Shaw NEW
Adams K CampainRussiaElwin Sharvill RENEWAL
Mayumi T SlusarskiIndiaAnna Fali PROPOSAL
Johnson D MarrierRussiaAmy Elsner QUALIFIED
Johnson E MaletSpainOnyama Limba NEW
Antonio S ShinkoFranceStephen Shaw RENEWAL
Misaki P WieserFranceIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer L WhobreyGermany2024-04-12Rousseaux, Michael Esq NEGOTIATION80Onyama Limba
1001Emily M TollnerBrazil2024-04-22Truhlar And Truhlar Attys NEGOTIATION51Ioni Bowcher
1002Aditya G SlusarskiAustralia2024-04-17Rangoni Of Florence RENEWAL35Anna Fali
1003David Q MorascaFrance2024-04-20King, Christopher A Esq UNQUALIFIED31Onyama Limba
1004Francesco Q SergiRussia2024-04-21Feiner Bros NEW73Bernardo Dominic
1005Greenwood A RimUnited Kingdom2024-04-23Printing Dimensions RENEWAL35Ivan Magalhaes
1006Smith T OstroskyUnited Kingdom2024-05-03Buckley Miller Wright NEW27Xuxue Feng
1007Julie P SaylorsIndia2024-04-23Printing Dimensions QUALIFIED82Anna Fali
1008Faith F AmigonUnited Kingdom2024-04-24Feiner Bros RENEWAL30Anna Fali
1009James D CampainItaly2024-04-11Rangoni Of Florence RENEWAL17Amy Elsner
1010Mujtaba B PerinRussia2024-05-08Benton, John B Jr QUALIFIED37Ivan Magalhaes
1011Antonio Z NickaFrance2024-05-04Commercial Press PROPOSAL79Elwin Sharvill
1012Misaki Y GillianIndia2024-04-20Commercial Press RENEWAL23Bernardo Dominic
1013Munro K MacleadCanada2024-04-28Truhlar And Truhlar Attys NEGOTIATION78Ioni Bowcher
1014Antonio Q NickaArgentina2024-05-05King, Christopher A Esq NEW61Amy Elsner
1015Sinclair U CampainSpain2024-04-24Chanay, Jeffrey A Esq NEGOTIATION42Bernardo Dominic
1016Jeanfrancois G PaprockiSpain2024-05-02Commercial Press NEGOTIATION2Asiya Javayant
1017Kadeem L DilliardArgentina2024-04-21Buckley Miller Wright PROPOSAL61Stephen Shaw
1018Rodrigues V RutaCanada2024-04-27Morlong Associates RENEWAL8Stephen Shaw
1019Mujtaba U NickaAustralia2024-05-02Buckley Miller Wright QUALIFIED4Stephen Shaw
1020Rodrigues Z SergiRussia2024-05-01Chapman, Ross E Esq PROPOSAL63Stephen Shaw
1021Murillo U KuskoBrazil2024-05-07Dorl, James J Esq NEGOTIATION19Asiya Javayant
1022Francesco T KolmetzFrance2024-05-02Printing Dimensions RENEWAL57Elwin Sharvill
1023Salvatore A TollnerCanada2024-04-28Rousseaux, Michael Esq NEW33Asiya Javayant
1024Izzy Q BowleyAustralia2024-04-30Printing Dimensions NEW36Ivan Magalhaes
1025Leja B RoysterUnited Kingdom2024-05-06Morlong Associates NEW9Amy Elsner
1026Octavia A ButtUnited Kingdom2024-05-02Truhlar And Truhlar Attys UNQUALIFIED54Asiya Javayant
1027Antonio B AmigonGermany2024-05-02Commercial Press QUALIFIED8Stephen Shaw
1028Arvin J IturbideArgentina2024-04-30Commercial Press PROPOSAL34Onyama Limba
1029Adams U RulapaughBrazil2024-04-20King, Christopher A Esq UNQUALIFIED10Ivan Magalhaes
1030Misaki M CaudyItaly2024-05-04Feltz Printing Service QUALIFIED3Onyama Limba
1031Jones B KuskoAustralia2024-05-06Morlong Associates QUALIFIED68Bernardo Dominic
1032Misaki U VocelkaGermany2024-05-03Rousseaux, Michael Esq PROPOSAL17Stephen Shaw
1033Faith J NickaBrazil2024-04-20Printing Dimensions QUALIFIED21Anna Fali
1034Mayumi Q BowleyJapan2024-04-15Chemel, James L Cpa NEGOTIATION88Bernardo Dominic
1035Emily H GarufiIndia2024-05-04Buckley Miller Wright NEW34Xuxue Feng
1036Izzy W VenereArgentina2024-05-10Buckley Miller Wright QUALIFIED36Stephen Shaw
1037Octavia K WieserFrance2024-04-30Rangoni Of Florence NEGOTIATION63Asiya Javayant
1038Johnson P CaudyRussia2024-04-24Rangoni Of Florence UNQUALIFIED19Stephen Shaw
1039Jones R ShinkoItaly2024-04-24Rousseaux, Michael Esq PROPOSAL52Amy Elsner
1040Alejandro L CampainIndia2024-05-07Chapman, Ross E Esq QUALIFIED43Ioni Bowcher
1041Juan N KuskoJapan2024-04-19Commercial Press RENEWAL33Bernardo Dominic
1042Aditya O RulapaughBrazil2024-05-05Chemel, James L Cpa QUALIFIED55Bernardo Dominic
1043Cody Y WaycottUnited Kingdom2024-05-01Feltz Printing Service NEW84Asiya Javayant
1044David I DilliardIndia2024-04-18Rangoni Of Florence UNQUALIFIED23Bernardo Dominic
1045Octavia T KuskoSpain2024-05-08Rousseaux, Michael Esq RENEWAL14Xuxue Feng
1046Cody L WieserBrazil2024-05-02Dorl, James J Esq UNQUALIFIED40Bernardo Dominic
1047Costa F GarufiSpain2024-04-25Commercial Press PROPOSAL69Onyama Limba
1048Maisha N RimItaly2024-04-18Chanay, Jeffrey A Esq RENEWAL59Anna Fali
1049Jennifer W PoquetteItaly2024-05-03Morlong Associates PROPOSAL76Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Johnson M FerenczCanadaIvan Magalhaes QUALIFIED
Maisha O AmigonFranceIvan Magalhaes NEGOTIATION
Jeanfrancois Q FigeroaCanadaOnyama Limba NEGOTIATION
Leja X DoeBrazilIoni Bowcher PROPOSAL
Stacey A WaycottArgentinaStephen Shaw PROPOSAL
Aditya Z GauchoIndiaIoni Bowcher QUALIFIED
Faith Y PerinCanadaOnyama Limba NEW
Greenwood H RoysterGermanyAsiya Javayant RENEWAL
James P PerinCanadaAmy Elsner NEGOTIATION
Izzy Z InouyeSpainOnyama Limba QUALIFIED
Munro P KuskoIndiaElwin Sharvill QUALIFIED
Isabel Y DoeSpainAnna Fali PROPOSAL
Costa E ShinkoBrazilStephen Shaw UNQUALIFIED
Rodrigues M CaldareraUnited KingdomAsiya Javayant NEW
Aika V SchemmerArgentinaStephen Shaw PROPOSAL
Sinclair P DarakjyArgentinaBernardo Dominic QUALIFIED
James D NestleJapanAnna Fali NEW
Kaitlin Z TollnerRussiaIvan Magalhaes PROPOSAL
Johnson F BologniaGermanyIvan Magalhaes NEGOTIATION
Julie D VenereCanadaAsiya Javayant RENEWAL
Arvin O SchemmerCanadaIvan Magalhaes PROPOSAL
Smith N PerinUnited KingdomAsiya Javayant RENEWAL
Munro P GillianItalyBernardo Dominic RENEWAL
Jefferson Q OldroydFranceOnyama Limba PROPOSAL
Munro I KolmetzCanadaElwin Sharvill NEW
Isabel R OstroskyFranceIoni Bowcher NEW
Juan J CaldareraCanadaBernardo Dominic QUALIFIED
Juan Y ButtGermanyIvan Magalhaes NEW
Antonio Q RimGermanyAsiya Javayant NEW
Arvin L FerenczFranceAmy Elsner NEW
Greenwood I AlbaresIndiaAnna Fali QUALIFIED
Wickens A BriddickJapanOnyama Limba UNQUALIFIED
Darci L RoysterFranceAsiya Javayant UNQUALIFIED
Kadeem U ChuiRussiaOnyama Limba RENEWAL
Rodrigues Z RutaSpainBernardo Dominic RENEWAL
Deepesh T VenereBrazilIoni Bowcher PROPOSAL
Claire R SlusarskiRussiaAsiya Javayant UNQUALIFIED
Johnson U WhobreyAustraliaBernardo Dominic UNQUALIFIED
Maria V ShinkoUnited KingdomIvan Magalhaes NEGOTIATION
Julie N GauchoGermanyIvan Magalhaes PROPOSAL
Claire K GlickJapanStephen Shaw NEW
Faith X KuskoCanadaAmy Elsner RENEWAL
Kaitlin B VenereIndiaStephen Shaw RENEWAL
Mujtaba T PoquetteCanadaXuxue Feng UNQUALIFIED
Misaki A InouyeIndiaIoni Bowcher QUALIFIED
Rodrigues W FerenczGermanyIoni Bowcher NEGOTIATION
Johnson V SergiItalyOnyama Limba NEW
James A GillianBrazilIoni Bowcher PROPOSAL
Stacey X GillianAustraliaAmy Elsner RENEWAL
Emily K StockhamJapanAsiya Javayant QUALIFIED
Frozen Columns
Name
Leon S Shinko
Murillo M Bowley
Francesco X Oldroyd
Julie X Rim
Juan E Dilliard
Kaitlin G Butt
Ivar I Foller
Kaitlin S Butt
Leon Q Campain
Octavia D Caudy
Ashley Y Doe
Smith W Maclead
Antonio C Waycott
Salvatore H Schemmer
Salvatore T Figeroa
Jones P Albares
Greenwood P Briddick
Maria O Caldarera
Francesco Q Oldroyd
Claire W Paprocki
Smith L Tollner
Arvin G Glick
Ivar C Garufi
James N Bolognia
Juan Y Whobrey
Leon S Dilliard
Deepesh Y Albares
Clifford I Schemmer
Silvio L Paprocki
Antonio W Wieser
Johnson G Paprocki
Aika B Ruta
Chavez H Gillian
Cody J Sergi
James B Bowley
Adams O Gaucho
Wickens F Inouye
Leon I Darakjy
Adams Y Kusko
Tony J Foller
Jefferson W Royster
Faith J Amigon
Rodrigues M Chui
Antonio D Poquette
Silvio X Albares
Silvio T Stockham
Munro M Gillian
Jones O Vocelka
Jeanfrancois U Garufi
Greenwood V Caudy
IdCountryDate
1000Canada2024-05-01
1001Italy2024-04-16
1002Spain2024-04-26
1003France2024-04-24
1004Japan2024-04-26
1005Germany2024-04-12
1006United Kingdom2024-04-25
1007Argentina2024-04-19
1008Germany2024-05-09
1009Russia2024-04-14
1010India2024-04-26
1011Germany2024-04-28
1012Russia2024-04-15
1013Argentina2024-04-29
1014Russia2024-04-22
1015Italy2024-04-16
1016Argentina2024-05-04
1017France2024-05-07
1018Spain2024-05-01
1019Australia2024-04-11
1020Australia2024-05-07
1021Argentina2024-04-24
1022Spain2024-04-15
1023France2024-04-24
1024Brazil2024-04-14
1025United Kingdom2024-04-25
1026Spain2024-05-07
1027France2024-04-14
1028United Kingdom2024-04-16
1029Brazil2024-04-25
1030Brazil2024-04-21
1031India2024-04-18
1032Australia2024-04-25
1033Brazil2024-04-17
1034Russia2024-04-21
1035Argentina2024-04-20
1036Russia2024-05-08
1037Germany2024-04-29
1038Japan2024-05-09
1039France2024-05-02
1040Argentina2024-04-21
1041Spain2024-04-18
1042Argentina2024-04-21
1043Spain2024-05-07
1044Spain2024-04-21
1045India2024-04-12
1046Italy2024-04-30
1047United Kingdom2024-04-23
1048Spain2024-04-16
1049Germany2024-04-14

On-Demand Data

NameIdCountryDate
Emily S Vocelka1000Australia2024-04-14
Greenwood W Kusko1001Canada2024-04-26
Mujtaba O Tollner1002Italy2024-05-09
Silvio V Stenseth1003India2024-04-12
David P Butt1004Brazil2024-04-25
Sinclair X Sergi1005Germany2024-04-11
Maisha A Campain1006Argentina2024-04-23
Leon O Marrier1007Germany2024-05-04
Mayumi Q Kusko1008India2024-04-25
David T Slusarski1009France2024-04-14
Silvio O Poquette1010United Kingdom2024-05-01
Julie E Stenseth1011Argentina2024-04-23
Chavez I Foller1012Canada2024-04-27
Morrow U Morasca1013Germany2024-05-10
Mujtaba V Ferencz1014India2024-05-08
Jefferson Q Nestle1015Germany2024-05-07
Stacey H Ruta1016Brazil2024-04-24
David Y Maclead1017France2024-04-14
Rodrigues O Ferencz1018Japan2024-04-23
Greenwood L Kolmetz1019France2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford Q ButtCanadaElwin Sharvill QUALIFIED
Stacey P RutaBrazilXuxue Feng RENEWAL
Emily S OstroskyBrazilAnna Fali NEW
Octavia F FollerAustraliaIoni Bowcher QUALIFIED
Jeanfrancois Q WieserRussiaIvan Magalhaes NEGOTIATION
Costa C PaprockiRussiaStephen Shaw QUALIFIED
Aruna C KolmetzJapanIvan Magalhaes NEW
Wickens Z StensethJapanBernardo Dominic NEW
Jones U SaylorsItalyIvan Magalhaes NEW
Mujtaba Q VocelkaJapanAmy Elsner NEGOTIATION
Maisha Y FlosiArgentinaAnna Fali NEW
Alejandro Q CaudyJapanElwin Sharvill NEW
Tony B StockhamJapanAsiya Javayant UNQUALIFIED
Claire F DilliardItalyXuxue Feng PROPOSAL
Juan L SaylorsAustraliaElwin Sharvill QUALIFIED
Mayumi T RimIndiaAmy Elsner NEW
Deepesh S RoysterAustraliaStephen Shaw NEW
Wickens V OstroskyFranceIoni Bowcher PROPOSAL
Cody H StensethFranceElwin Sharvill NEGOTIATION
Kaitlin W FigeroaArgentinaXuxue Feng UNQUALIFIED
Antonio R BologniaFranceStephen Shaw UNQUALIFIED
Morrow R BologniaUnited KingdomBernardo Dominic QUALIFIED
Alejandro W SaylorsUnited KingdomBernardo Dominic PROPOSAL
Adams R KolmetzGermanyIoni Bowcher QUALIFIED
Francesco L RoysterItalyStephen Shaw NEW
Octavia V CampainIndiaStephen Shaw NEGOTIATION
Misaki O ShinkoAustraliaXuxue Feng PROPOSAL
Ricardo Q PerinJapanIvan Magalhaes RENEWAL
Aika U PaprockiUnited KingdomOnyama Limba NEW
Claire O AlbaresGermanyIvan Magalhaes PROPOSAL
Morrow G VocelkaIndiaAmy Elsner NEW
Nicolas R VocelkaFranceIvan Magalhaes UNQUALIFIED
Adams U DoeArgentinaAmy Elsner QUALIFIED
Clifford F PerinGermanyIoni Bowcher QUALIFIED
Aditya C MaletGermanyOnyama Limba NEW
Mujtaba D NickaCanadaElwin Sharvill NEW
Costa N MaletBrazilOnyama Limba UNQUALIFIED
Leon Y AlbaresIndiaElwin Sharvill QUALIFIED
Aika C SchemmerFranceStephen Shaw NEW
Aditya I GlickArgentinaBernardo Dominic 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>