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
Darci N CaldareraGermanyAmy Elsner QUALIFIED
Greenwood Y VenereIndiaAnna Fali NEW
Maisha O FollerArgentinaXuxue Feng UNQUALIFIED
James T SaylorsCanadaElwin Sharvill NEGOTIATION
Ricardo H DilliardGermanyElwin Sharvill NEGOTIATION
Mujtaba I TollnerRussiaOnyama Limba PROPOSAL
Johnson R GauchoIndiaIvan Magalhaes NEGOTIATION
Juan U RimSpainOnyama Limba NEW
Antonio C VenereIndiaOnyama Limba NEGOTIATION
Emily Q FigeroaRussiaAnna Fali QUALIFIED
Tony D BowleyIndiaStephen Shaw NEW
Faith Q StockhamIndiaAnna Fali PROPOSAL
Greenwood I DoeAustraliaBernardo Dominic PROPOSAL
Leon T MacleadFranceAsiya Javayant QUALIFIED
Mayumi E FerenczAustraliaStephen Shaw RENEWAL
Jennifer W InouyeIndiaStephen Shaw RENEWAL
Morrow E WieserIndiaAnna Fali RENEWAL
Emily Z RulapaughRussiaXuxue Feng UNQUALIFIED
Izzy F DoeArgentinaAmy Elsner NEGOTIATION
Salvatore N GillianFranceAnna Fali NEGOTIATION
Julie E ShinkoFranceAsiya Javayant PROPOSAL
Ashley U GarufiRussiaAmy Elsner PROPOSAL
Emily H CaldareraAustraliaStephen Shaw UNQUALIFIED
Arvin M RulapaughJapanBernardo Dominic NEW
James O BologniaIndiaAmy Elsner NEW
Costa C PaprockiJapanIvan Magalhaes UNQUALIFIED
Jeanfrancois N SlusarskiCanadaIoni Bowcher NEW
Leja A DoeBrazilOnyama Limba UNQUALIFIED
Adams H SlusarskiItalyOnyama Limba NEW
Greenwood I MacleadRussiaElwin Sharvill PROPOSAL
Ashley K BowleyCanadaAsiya Javayant QUALIFIED
Cody T MarrierItalyAnna Fali PROPOSAL
Maria U WieserRussiaBernardo Dominic QUALIFIED
Isabel K SaylorsUnited KingdomBernardo Dominic QUALIFIED
Ricardo G GlickAustraliaIvan Magalhaes NEGOTIATION
Murillo A PaprockiBrazilIvan Magalhaes RENEWAL
Alejandro Q BologniaArgentinaIoni Bowcher PROPOSAL
Sinclair F StensethFranceAsiya Javayant PROPOSAL
Chavez K KolmetzJapanAnna Fali QUALIFIED
Ivar X IturbideCanadaOnyama Limba NEW
Clifford Z BriddickGermanyBernardo Dominic QUALIFIED
Faith E CampainCanadaAmy Elsner RENEWAL
Tony G BologniaGermanyIvan Magalhaes UNQUALIFIED
Julie R MaletArgentinaAmy Elsner UNQUALIFIED
Julie Q MaletArgentinaIoni Bowcher NEW
Misaki S WhobreyIndiaElwin Sharvill NEGOTIATION
Tony I MaletGermanyIoni Bowcher RENEWAL
Maria J RutaCanadaXuxue Feng PROPOSAL
Emily G MaletUnited KingdomIoni Bowcher PROPOSAL
Murillo I RimGermanyIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Juan V CaldareraIndiaStephen Shaw NEGOTIATION
Morrow Z WhobreyRussiaXuxue Feng QUALIFIED
Octavia G PerinRussiaIoni Bowcher QUALIFIED
Mujtaba L GillianItalyAsiya Javayant QUALIFIED
Kaitlin W DilliardRussiaIoni Bowcher QUALIFIED
Adams K RulapaughIndiaElwin Sharvill UNQUALIFIED
Francesco M WaycottArgentinaStephen Shaw UNQUALIFIED
Smith Y BologniaFranceXuxue Feng NEW
Adams D PaprockiSpainStephen Shaw RENEWAL
Antonio Z StensethAustraliaIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna E SlusarskiCanada2024-04-27Commercial Press UNQUALIFIED44Bernardo Dominic
1001Emily X CaldareraFrance2024-04-09Dorl, James J Esq NEW59Onyama Limba
1002Aditya N ShinkoItaly2024-04-22Morlong Associates UNQUALIFIED4Elwin Sharvill
1003Juan J DoeUnited Kingdom2024-04-22Chemel, James L Cpa RENEWAL99Bernardo Dominic
1004Aika D BowleyRussia2024-04-14King, Christopher A Esq UNQUALIFIED16Amy Elsner
1005Misaki M DilliardIndia2024-04-28Morlong Associates RENEWAL92Bernardo Dominic
1006Jefferson T FerenczSpain2024-04-18Feltz Printing Service NEGOTIATION49Onyama Limba
1007Antonio D MaletAustralia2024-04-10Rousseaux, Michael Esq QUALIFIED40Elwin Sharvill
1008Izzy N PaprockiUnited Kingdom2024-04-13Chemel, James L Cpa UNQUALIFIED79Bernardo Dominic
1009Maisha V SlusarskiRussia2024-04-12Chapman, Ross E Esq NEW48Ioni Bowcher
1010Clifford O RoysterArgentina2024-04-15Feltz Printing Service UNQUALIFIED54Ivan Magalhaes
1011Jefferson M WieserArgentina2024-04-29Buckley Miller Wright PROPOSAL69Bernardo Dominic
1012Johnson G CaldareraUnited Kingdom2024-04-08Printing Dimensions PROPOSAL15Asiya Javayant
1013Julie X ChuiAustralia2024-04-12Feiner Bros NEGOTIATION61Anna Fali
1014Faith X KolmetzRussia2024-04-19Feltz Printing Service QUALIFIED46Ioni Bowcher
1015Chavez P SlusarskiRussia2024-04-18Benton, John B Jr UNQUALIFIED22Ivan Magalhaes
1016Juan C MaletBrazil2024-04-11Chanay, Jeffrey A Esq NEW9Ivan Magalhaes
1017Antonio R PerinItaly2024-04-02Feiner Bros UNQUALIFIED22Xuxue Feng
1018Aika W FerenczItaly2024-04-11Printing Dimensions QUALIFIED90Onyama Limba
1019Ivar L SchemmerSpain2024-04-06Morlong Associates NEW77Onyama Limba
1020Ashley P WieserUnited Kingdom2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED20Stephen Shaw
1021David H GlickGermany2024-04-03Chanay, Jeffrey A Esq NEGOTIATION57Onyama Limba
1022Ivar Y VenereUnited Kingdom2024-04-07Printing Dimensions UNQUALIFIED45Stephen Shaw
1023Morrow K FigeroaIndia2024-04-11Chemel, James L Cpa PROPOSAL35Asiya Javayant
1024Maisha T CampainGermany2024-04-21Morlong Associates NEGOTIATION28Xuxue Feng
1025Leja I SchemmerFrance2024-04-02Feiner Bros NEW79Ioni Bowcher
1026Maria C StensethBrazil2024-04-30Dorl, James J Esq UNQUALIFIED1Bernardo Dominic
1027Juan N AmigonArgentina2024-04-09Buckley Miller Wright NEGOTIATION7Ioni Bowcher
1028Claire W CaudyJapan2024-04-24Morlong Associates UNQUALIFIED3Asiya Javayant
1029Mujtaba F RulapaughGermany2024-04-19Feiner Bros UNQUALIFIED18Amy Elsner
1030Izzy H StockhamAustralia2024-04-26Benton, John B Jr QUALIFIED33Ioni Bowcher
1031Costa Q ChuiJapan2024-04-09Benton, John B Jr NEGOTIATION98Ivan Magalhaes
1032Mayumi X WieserIndia2024-04-02Buckley Miller Wright UNQUALIFIED18Ioni Bowcher
1033Jeanfrancois S IturbideUnited Kingdom2024-04-22Rangoni Of Florence NEGOTIATION47Amy Elsner
1034Morrow H CaldareraFrance2024-04-02Morlong Associates UNQUALIFIED54Asiya Javayant
1035Munro C MaletItaly2024-04-07Buckley Miller Wright UNQUALIFIED69Bernardo Dominic
1036Silvio J RulapaughIndia2024-04-19Morlong Associates UNQUALIFIED40Ivan Magalhaes
1037Jefferson K SaylorsBrazil2024-04-07Buckley Miller Wright QUALIFIED9Xuxue Feng
1038Claire H FigeroaCanada2024-04-20Rousseaux, Michael Esq QUALIFIED79Asiya Javayant
1039Claire I FollerBrazil2024-04-13Benton, John B Jr QUALIFIED51Stephen Shaw
1040Johnson X SlusarskiJapan2024-04-24Chanay, Jeffrey A Esq NEW13Amy Elsner
1041Johnson W CaudyAustralia2024-04-03Morlong Associates UNQUALIFIED42Anna Fali
1042Octavia X AmigonRussia2024-04-08Rousseaux, Michael Esq NEW32Bernardo Dominic
1043Antonio Y ButtFrance2024-04-29Rousseaux, Michael Esq PROPOSAL25Asiya Javayant
1044Aruna X ButtRussia2024-04-12Rousseaux, Michael Esq NEW3Amy Elsner
1045Mujtaba H PaprockiIndia2024-04-09Benton, John B Jr RENEWAL93Stephen Shaw
1046Juan F FollerItaly2024-04-23King, Christopher A Esq PROPOSAL57Stephen Shaw
1047Aditya I GillianAustralia2024-04-05King, Christopher A Esq NEW5Amy Elsner
1048Antonio R SlusarskiRussia2024-04-15Morlong Associates UNQUALIFIED26Anna Fali
1049Aditya R GlickCanada2024-04-05Chemel, James L Cpa QUALIFIED25Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Emily S NestleCanadaXuxue Feng NEGOTIATION
Maisha P KolmetzIndiaAnna Fali NEGOTIATION
Tony Z CampainGermanyOnyama Limba PROPOSAL
Ashley C WieserArgentinaElwin Sharvill PROPOSAL
Octavia W PerinCanadaAsiya Javayant QUALIFIED
Alejandro S VenereAustraliaIoni Bowcher PROPOSAL
Aruna P DarakjyArgentinaAnna Fali NEW
Ashley Y GlickIndiaBernardo Dominic RENEWAL
Aika V CaldareraRussiaOnyama Limba RENEWAL
Sinclair F RutaItalyElwin Sharvill NEGOTIATION
James O ButtSpainAnna Fali NEW
Darci A GlickGermanyStephen Shaw RENEWAL
Leon M OldroydItalyElwin Sharvill PROPOSAL
Wickens O SaylorsBrazilIvan Magalhaes NEW
Salvatore O BowleyAustraliaIoni Bowcher RENEWAL
Darci R VenereIndiaElwin Sharvill NEGOTIATION
James P InouyeFranceBernardo Dominic NEGOTIATION
Jefferson U CampainSpainStephen Shaw PROPOSAL
Aruna G KuskoItalyAsiya Javayant NEW
Misaki F FigeroaIndiaElwin Sharvill NEW
Ricardo M SaylorsIndiaStephen Shaw PROPOSAL
Arvin A SchemmerItalyAmy Elsner NEGOTIATION
Wickens B RutaUnited KingdomAsiya Javayant RENEWAL
Ashley C InouyeItalyElwin Sharvill RENEWAL
Tony H CaudyRussiaOnyama Limba PROPOSAL
Misaki Y DilliardRussiaIvan Magalhaes NEW
Stacey I VenereRussiaAnna Fali RENEWAL
Ivar Y AlbaresAustraliaXuxue Feng UNQUALIFIED
Mujtaba G RoysterJapanBernardo Dominic NEGOTIATION
Aditya P PaprockiCanadaAnna Fali QUALIFIED
Maria Q MacleadBrazilStephen Shaw NEGOTIATION
Chavez B BowleySpainAmy Elsner PROPOSAL
Leja Y ChuiAustraliaBernardo Dominic UNQUALIFIED
Jefferson T SergiIndiaOnyama Limba NEW
Chavez E WieserUnited KingdomAmy Elsner QUALIFIED
Cody S FigeroaItalyBernardo Dominic NEGOTIATION
Cody Y MorascaCanadaIvan Magalhaes NEW
David E ChuiGermanyAnna Fali NEW
Darci U RimGermanyBernardo Dominic PROPOSAL
Darci M ChuiUnited KingdomOnyama Limba QUALIFIED
Silvio Y CaldareraSpainBernardo Dominic QUALIFIED
Munro J ShinkoItalyOnyama Limba NEGOTIATION
Maria N BowleyBrazilElwin Sharvill UNQUALIFIED
David D MarrierIndiaXuxue Feng RENEWAL
Maria I FigeroaFranceIvan Magalhaes RENEWAL
Alejandro J DoeAustraliaXuxue Feng PROPOSAL
Maria Y StensethUnited KingdomAnna Fali PROPOSAL
Juan E ShinkoJapanBernardo Dominic RENEWAL
Misaki E SaylorsFranceIvan Magalhaes NEW
Nicolas I SaylorsIndiaOnyama Limba NEW
Frozen Columns
Name
Wickens A Maclead
Rodrigues K Poquette
Deepesh R Albares
Chavez H Butt
Greenwood Y Dilliard
Izzy B Darakjy
Arvin E Ostrosky
Mujtaba Y Darakjy
Claire Q Stockham
James P Perin
Misaki Z Dilliard
Jeanfrancois Q Maclead
Wickens X Waycott
Kaitlin R Campain
Silvio F Schemmer
Murillo H Inouye
Morrow S Poquette
Kaitlin S Wieser
Emily G Caudy
Cody E Albares
Wickens A Ferencz
Adams O Nicka
Jennifer M Caudy
Antonio F Foller
Silvio X Royster
Darci S Morasca
Jefferson K Poquette
Izzy X Rim
Ashley D Ostrosky
Darci D Royster
Stacey M Inouye
Costa H Gaucho
Cody V Gillian
Munro H Saylors
Costa Q Stenseth
Maisha D Schemmer
Ashley U Marrier
James S Slusarski
Juan S Dilliard
Darci U Darakjy
Izzy E Stenseth
Jeanfrancois G Wieser
Juan P Slusarski
Jones D Perin
Aruna M Figeroa
Morrow V Bolognia
Mujtaba G Poquette
Jennifer P Figeroa
Juan Z Bowley
Jones E Bolognia
IdCountryDate
1000Brazil2024-04-20
1001Australia2024-04-04
1002France2024-04-04
1003Russia2024-04-12
1004Brazil2024-04-10
1005United Kingdom2024-04-30
1006India2024-04-20
1007United Kingdom2024-04-30
1008Germany2024-04-16
1009United Kingdom2024-04-19
1010Russia2024-04-12
1011Argentina2024-04-03
1012Canada2024-04-20
1013Germany2024-04-08
1014Spain2024-04-07
1015Argentina2024-04-02
1016France2024-04-29
1017France2024-04-25
1018Japan2024-04-28
1019India2024-04-29
1020France2024-04-30
1021Italy2024-04-23
1022India2024-04-11
1023United Kingdom2024-04-14
1024Germany2024-04-27
1025Italy2024-04-04
1026Australia2024-04-30
1027Russia2024-04-21
1028India2024-04-02
1029India2024-04-19
1030Italy2024-04-25
1031India2024-04-25
1032Japan2024-04-13
1033Russia2024-04-23
1034Spain2024-04-17
1035Japan2024-04-25
1036Australia2024-04-09
1037Russia2024-04-07
1038Argentina2024-04-14
1039Spain2024-04-26
1040India2024-04-25
1041India2024-04-16
1042Argentina2024-04-25
1043Russia2024-04-06
1044Japan2024-04-11
1045Argentina2024-04-18
1046Germany2024-04-30
1047India2024-04-13
1048Germany2024-04-05
1049Canada2024-04-02

On-Demand Data

NameIdCountryDate
Adams M Garufi1000Canada2024-04-24
Kaitlin B Bowley1001Canada2024-04-01
Isabel U Oldroyd1002India2024-04-30
Ricardo Q Campain1003Canada2024-04-08
Morrow R Tollner1004Japan2024-04-25
Kaitlin F Ferencz1005France2024-04-11
Jeanfrancois B Campain1006India2024-04-05
Maria T Dilliard1007Australia2024-04-10
Juan P Ferencz1008Argentina2024-04-25
Maria M Waycott1009India2024-04-05
Jennifer Z Vocelka1010France2024-04-12
Greenwood J Bowley1011Spain2024-04-18
Clifford H Tollner1012India2024-04-27
Tony J Briddick1013Italy2024-04-03
Jones M Sergi1014Argentina2024-04-10
Mayumi F Ferencz1015Spain2024-04-13
Deepesh F Waycott1016Italy2024-04-09
Octavia H Oldroyd1017India2024-04-18
Deepesh Z Wieser1018United Kingdom2024-04-27
Cody H Albares1019Japan2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi T PaprockiJapanAnna Fali UNQUALIFIED
Jefferson V CaldareraBrazilStephen Shaw NEGOTIATION
Aditya B WhobreyAustraliaBernardo Dominic PROPOSAL
Arvin C SergiIndiaOnyama Limba RENEWAL
James D RutaAustraliaAsiya Javayant NEGOTIATION
Chavez Y RimBrazilIoni Bowcher QUALIFIED
Isabel X GillianBrazilOnyama Limba UNQUALIFIED
Mayumi G SaylorsSpainBernardo Dominic NEGOTIATION
Ivar U PerinCanadaOnyama Limba UNQUALIFIED
Darci C GlickBrazilIvan Magalhaes UNQUALIFIED
Cody B SlusarskiArgentinaOnyama Limba RENEWAL
James R DoeUnited KingdomIoni Bowcher QUALIFIED
Chavez N FlosiBrazilXuxue Feng QUALIFIED
Morrow D ShinkoSpainBernardo Dominic PROPOSAL
Jones T RoysterCanadaAmy Elsner PROPOSAL
Maisha E ShinkoUnited KingdomAmy Elsner NEW
Julie R OldroydUnited KingdomAsiya Javayant RENEWAL
Leja I GlickArgentinaOnyama Limba QUALIFIED
Jones B RimItalyElwin Sharvill QUALIFIED
Isabel K VenereArgentinaOnyama Limba RENEWAL
Maisha D FerenczJapanIvan Magalhaes QUALIFIED
Julie I SaylorsCanadaIvan Magalhaes PROPOSAL
Juan N CaldareraGermanyAnna Fali NEGOTIATION
Adams O SaylorsIndiaBernardo Dominic NEW
Claire R OldroydArgentinaAsiya Javayant PROPOSAL
Maisha S SaylorsJapanOnyama Limba RENEWAL
Jones Z CampainSpainElwin Sharvill NEW
Rodrigues Q KolmetzJapanBernardo Dominic RENEWAL
Greenwood H AlbaresUnited KingdomXuxue Feng PROPOSAL
Antonio W PaprockiBrazilAnna Fali NEGOTIATION
Munro B ShinkoUnited KingdomElwin Sharvill NEW
Kaitlin F CaldareraJapanOnyama Limba UNQUALIFIED
Costa R StockhamBrazilIvan Magalhaes PROPOSAL
Jones Y RutaAustraliaAnna Fali NEW
Wickens B MaletGermanyAmy Elsner UNQUALIFIED
Rodrigues E PaprockiAustraliaIoni Bowcher NEW
Smith P DoeArgentinaOnyama Limba UNQUALIFIED
Cody S GlickSpainAmy Elsner NEW
Aika V GillianBrazilAsiya Javayant UNQUALIFIED
Darci X DoeFranceIvan Magalhaes 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>