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
Emily W FollerBrazilStephen Shaw NEGOTIATION
Maria Z MaletBrazilAsiya Javayant QUALIFIED
Sinclair E CampainJapanAnna Fali NEW
Smith Y IturbideGermanyBernardo Dominic QUALIFIED
Jeanfrancois P CaldareraAustraliaAsiya Javayant PROPOSAL
Jeanfrancois K PoquetteAustraliaElwin Sharvill QUALIFIED
Wickens S MaletAustraliaBernardo Dominic UNQUALIFIED
Aika C DilliardItalyAsiya Javayant NEGOTIATION
Costa H MorascaIndiaIoni Bowcher PROPOSAL
Julie Y MaletJapanIoni Bowcher PROPOSAL
Julie W MacleadFranceElwin Sharvill PROPOSAL
Aika B GillianBrazilXuxue Feng NEW
Kadeem F AmigonAustraliaAsiya Javayant NEW
Johnson P WieserFranceBernardo Dominic RENEWAL
Alejandro G KuskoItalyIvan Magalhaes UNQUALIFIED
Jones C MorascaJapanAmy Elsner NEGOTIATION
Cody K SlusarskiGermanyBernardo Dominic NEGOTIATION
Murillo X StensethJapanXuxue Feng PROPOSAL
Wickens F GarufiSpainElwin Sharvill RENEWAL
Mujtaba R WhobreyRussiaAmy Elsner QUALIFIED
Claire K OldroydArgentinaIvan Magalhaes QUALIFIED
Johnson B CaldareraCanadaBernardo Dominic QUALIFIED
Maria G MarrierGermanyAmy Elsner PROPOSAL
Kadeem O BologniaCanadaStephen Shaw NEGOTIATION
Misaki A VenereBrazilXuxue Feng NEW
Antonio C GarufiBrazilIvan Magalhaes NEGOTIATION
Francesco L KolmetzUnited KingdomOnyama Limba NEW
Alejandro B VocelkaFranceOnyama Limba NEW
Ashley C NestleAustraliaAsiya Javayant UNQUALIFIED
Rodrigues C KuskoItalyAsiya Javayant QUALIFIED
Ivar H SergiAustraliaStephen Shaw RENEWAL
Jefferson J SchemmerIndiaElwin Sharvill NEW
Silvio P PoquetteItalyAnna Fali QUALIFIED
Darci P MacleadAustraliaAmy Elsner NEW
Johnson C BologniaCanadaAnna Fali RENEWAL
Cody Y KolmetzGermanyAmy Elsner QUALIFIED
Kadeem K FlosiItalyElwin Sharvill UNQUALIFIED
Isabel Y NestleAustraliaAnna Fali NEGOTIATION
Greenwood V GarufiSpainBernardo Dominic PROPOSAL
Smith K ChuiRussiaIvan Magalhaes NEW
Jones X ButtFranceElwin Sharvill PROPOSAL
Ricardo S PerinIndiaAsiya Javayant PROPOSAL
David Z RimCanadaXuxue Feng QUALIFIED
Greenwood J ChuiUnited KingdomIoni Bowcher NEW
Jennifer N FerenczArgentinaStephen Shaw PROPOSAL
Julie R MaletGermanyXuxue Feng NEGOTIATION
Mujtaba F PoquetteIndiaAnna Fali NEGOTIATION
Ricardo I PoquetteRussiaIvan Magalhaes UNQUALIFIED
James K CaldareraArgentinaStephen Shaw UNQUALIFIED
Ricardo R SaylorsRussiaXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Kadeem V MacleadArgentinaAnna Fali RENEWAL
Alejandro X MorascaRussiaBernardo Dominic RENEWAL
Antonio D MorascaItalyAmy Elsner UNQUALIFIED
Chavez Z OldroydUnited KingdomAsiya Javayant NEW
Smith Q CaudyAustraliaOnyama Limba RENEWAL
Nicolas L FerenczUnited KingdomIoni Bowcher NEGOTIATION
Adams H WhobreyUnited KingdomAnna Fali QUALIFIED
Murillo J AmigonCanadaBernardo Dominic NEW
James I OstroskyJapanElwin Sharvill QUALIFIED
Leja Y ChuiBrazilAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki C SergiCanada2024-04-14Morlong Associates NEGOTIATION16Amy Elsner
1001Aruna Z VocelkaJapan2024-04-05Buckley Miller Wright UNQUALIFIED82Xuxue Feng
1002Cody H WieserArgentina2024-04-01Rousseaux, Michael Esq PROPOSAL29Ioni Bowcher
1003Leja F RulapaughArgentina2024-03-27Commercial Press NEW86Anna Fali
1004Jefferson W CampainArgentina2024-04-14Rousseaux, Michael Esq QUALIFIED85Anna Fali
1005Deepesh N KolmetzGermany2024-03-29Printing Dimensions RENEWAL56Amy Elsner
1006Faith K PoquetteGermany2024-04-19King, Christopher A Esq UNQUALIFIED62Onyama Limba
1007Misaki F ButtGermany2024-04-23Truhlar And Truhlar Attys NEGOTIATION43Stephen Shaw
1008Kadeem F BologniaBrazil2024-04-07Printing Dimensions NEGOTIATION59Onyama Limba
1009Octavia O NestleFrance2024-04-02Printing Dimensions RENEWAL2Onyama Limba
1010Salvatore M CaudyIndia2024-04-16Commercial Press QUALIFIED68Anna Fali
1011Jefferson L PoquetteAustralia2024-04-14King, Christopher A Esq UNQUALIFIED55Bernardo Dominic
1012Maria G RutaGermany2024-04-25Feltz Printing Service QUALIFIED69Ivan Magalhaes
1013Smith X OstroskyCanada2024-04-03King, Christopher A Esq UNQUALIFIED41Amy Elsner
1014Leja L DarakjyRussia2024-04-09Feltz Printing Service NEGOTIATION69Anna Fali
1015Morrow T RulapaughUnited Kingdom2024-04-21Buckley Miller Wright RENEWAL83Anna Fali
1016Jefferson N VenereGermany2024-03-31Feiner Bros PROPOSAL56Ivan Magalhaes
1017Kaitlin H RimCanada2024-04-05Morlong Associates QUALIFIED56Elwin Sharvill
1018Jeanfrancois M CampainItaly2024-04-13Buckley Miller Wright QUALIFIED84Amy Elsner
1019Maisha J OstroskyFrance2024-04-25Chapman, Ross E Esq UNQUALIFIED54Asiya Javayant
1020Misaki X MorascaArgentina2024-03-29Chanay, Jeffrey A Esq NEW99Elwin Sharvill
1021Misaki Y CaudyFrance2024-04-01Chanay, Jeffrey A Esq QUALIFIED27Anna Fali
1022Faith V MaletCanada2024-04-15Commercial Press RENEWAL49Asiya Javayant
1023Wickens C BriddickItaly2024-04-23Dorl, James J Esq RENEWAL24Ivan Magalhaes
1024Jefferson B KolmetzSpain2024-04-20Printing Dimensions UNQUALIFIED67Amy Elsner
1025Misaki O OldroydJapan2024-04-02Feltz Printing Service RENEWAL84Onyama Limba
1026Stacey Y SergiCanada2024-04-01Benton, John B Jr PROPOSAL25Elwin Sharvill
1027Clifford B GillianRussia2024-04-13King, Christopher A Esq NEW36Anna Fali
1028Mayumi I KolmetzRussia2024-04-01Rangoni Of Florence RENEWAL92Ivan Magalhaes
1029Kadeem H FerenczCanada2024-04-12Rousseaux, Michael Esq RENEWAL29Onyama Limba
1030Kaitlin I GlickFrance2024-04-17Rousseaux, Michael Esq NEW86Ioni Bowcher
1031Stacey R WhobreyFrance2024-04-12Chemel, James L Cpa UNQUALIFIED89Amy Elsner
1032Rodrigues I PerinItaly2024-03-27Truhlar And Truhlar Attys QUALIFIED58Onyama Limba
1033Cody X RulapaughGermany2024-04-19Rousseaux, Michael Esq UNQUALIFIED16Onyama Limba
1034Morrow E CaudyGermany2024-03-31Printing Dimensions QUALIFIED82Anna Fali
1035Leon K WaycottArgentina2024-04-23Chemel, James L Cpa PROPOSAL70Xuxue Feng
1036Costa X VenereJapan2024-03-31Dorl, James J Esq QUALIFIED23Anna Fali
1037Jeanfrancois I GlickSpain2024-04-19Rangoni Of Florence QUALIFIED56Ivan Magalhaes
1038Smith V ChuiSpain2024-04-07Truhlar And Truhlar Attys NEW7Asiya Javayant
1039Chavez U RoysterItaly2024-04-10Rangoni Of Florence UNQUALIFIED8Stephen Shaw
1040Clifford S DilliardItaly2024-04-17Feiner Bros PROPOSAL48Asiya Javayant
1041Salvatore H VocelkaItaly2024-04-01Benton, John B Jr NEGOTIATION44Ioni Bowcher
1042David K TollnerBrazil2024-03-28Benton, John B Jr NEGOTIATION39Ivan Magalhaes
1043Rodrigues L GillianFrance2024-04-17Dorl, James J Esq NEW57Onyama Limba
1044Antonio U PaprockiJapan2024-04-19Morlong Associates UNQUALIFIED16Elwin Sharvill
1045Ivar Y RimJapan2024-04-08King, Christopher A Esq UNQUALIFIED83Ioni Bowcher
1046Leon K SchemmerAustralia2024-03-28Chapman, Ross E Esq NEW23Onyama Limba
1047Misaki A MacleadAustralia2024-04-07Feltz Printing Service NEW12Bernardo Dominic
1048Kadeem E FollerCanada2024-03-31Chemel, James L Cpa NEW50Amy Elsner
1049Salvatore L SaylorsCanada2024-04-08Dorl, James J Esq UNQUALIFIED96Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Cody U OstroskyCanadaOnyama Limba RENEWAL
Aika B DarakjyItalyStephen Shaw NEW
Maria S FlosiCanadaXuxue Feng RENEWAL
Silvio Y VenereJapanBernardo Dominic PROPOSAL
Arvin N VocelkaJapanOnyama Limba QUALIFIED
Jennifer J OldroydAustraliaIoni Bowcher PROPOSAL
Misaki U FerenczGermanyIoni Bowcher UNQUALIFIED
David M AmigonUnited KingdomStephen Shaw UNQUALIFIED
Smith A BowleyAustraliaElwin Sharvill UNQUALIFIED
James T PerinFranceBernardo Dominic QUALIFIED
Costa W SlusarskiJapanIoni Bowcher QUALIFIED
Kadeem C GauchoItalyOnyama Limba NEGOTIATION
Jones M RutaCanadaElwin Sharvill UNQUALIFIED
Deepesh G RimRussiaStephen Shaw NEW
Ricardo W RulapaughRussiaAmy Elsner QUALIFIED
Deepesh Z SaylorsCanadaIoni Bowcher RENEWAL
Darci W CampainIndiaXuxue Feng QUALIFIED
Sinclair L CaldareraAustraliaXuxue Feng RENEWAL
James O RutaItalyIoni Bowcher UNQUALIFIED
Costa J SaylorsAustraliaXuxue Feng QUALIFIED
Arvin M SlusarskiRussiaAsiya Javayant NEW
Maria K RoysterRussiaIoni Bowcher RENEWAL
Kaitlin I CaldareraIndiaAmy Elsner NEW
Mujtaba F CaudySpainOnyama Limba NEW
Emily X FollerCanadaAsiya Javayant NEW
Mujtaba D RimBrazilBernardo Dominic UNQUALIFIED
David P FerenczSpainIvan Magalhaes UNQUALIFIED
Kadeem Y OldroydJapanAsiya Javayant RENEWAL
Faith K SergiAustraliaAnna Fali UNQUALIFIED
Adams Q IturbideFranceXuxue Feng UNQUALIFIED
Aika B RimAustraliaXuxue Feng QUALIFIED
Isabel E StensethGermanyAnna Fali PROPOSAL
Francesco Y MacleadBrazilBernardo Dominic RENEWAL
Misaki O GarufiCanadaAnna Fali PROPOSAL
Leon T FigeroaItalyBernardo Dominic PROPOSAL
James U CaudyCanadaAnna Fali QUALIFIED
Julie Y CaudyCanadaIoni Bowcher RENEWAL
Leja Y VenereAustraliaIvan Magalhaes NEGOTIATION
Maria I MarrierBrazilAmy Elsner QUALIFIED
Aika D SlusarskiBrazilBernardo Dominic UNQUALIFIED
Tony K PaprockiItalyIvan Magalhaes UNQUALIFIED
Mayumi B FlosiIndiaBernardo Dominic NEGOTIATION
Juan D ChuiIndiaStephen Shaw RENEWAL
Rodrigues N ButtAustraliaAmy Elsner PROPOSAL
Morrow E GillianArgentinaIvan Magalhaes PROPOSAL
Emily M MacleadBrazilIvan Magalhaes QUALIFIED
Rodrigues N MaletIndiaAnna Fali UNQUALIFIED
Mayumi P VocelkaUnited KingdomIoni Bowcher UNQUALIFIED
Leon Q SergiRussiaStephen Shaw PROPOSAL
Morrow M BowleyGermanyIoni Bowcher RENEWAL
Frozen Columns
Name
Izzy I Kolmetz
Maria O Chui
Alejandro L Schemmer
Ivar I Iturbide
Leon L Gaucho
Francesco T Tollner
Aika G Marrier
Octavia W Campain
Leja V Stockham
Maisha D Morasca
Cody Z Stenseth
Maria Z Poquette
Emily Z Caudy
Murillo Z Garufi
Clifford T Gaucho
James H Royster
Kaitlin V Schemmer
Cody G Paprocki
Costa Q Gaucho
Aika E Oldroyd
Tony B Foller
Octavia B Chui
Faith Z Glick
Leon E Ruta
Aditya W Ostrosky
Jefferson T Poquette
Isabel C Maclead
Stacey E Shinko
Morrow G Amigon
Claire X Paprocki
Jeanfrancois K Vocelka
Emily F Chui
Isabel O Bolognia
Ivar M Poquette
Sinclair G Rim
Emily D Tollner
Adams B Albares
Chavez P Sergi
Nicolas O Nestle
Mayumi D Sergi
Misaki O Glick
Tony L Caudy
Jennifer C Campain
Morrow J Paprocki
Ashley I Ruta
Kadeem K Darakjy
Munro Y Morasca
Murillo Y Morasca
Leon W Perin
Stacey D Malet
IdCountryDate
1000Italy2024-04-24
1001Australia2024-04-04
1002Germany2024-04-15
1003United Kingdom2024-04-09
1004Russia2024-04-07
1005Brazil2024-04-25
1006Brazil2024-04-05
1007Brazil2024-04-09
1008Japan2024-04-09
1009Spain2024-04-14
1010France2024-04-01
1011Australia2024-04-06
1012United Kingdom2024-04-25
1013Russia2024-04-14
1014Germany2024-04-14
1015Japan2024-04-23
1016United Kingdom2024-04-23
1017Canada2024-04-24
1018India2024-04-13
1019Germany2024-03-28
1020United Kingdom2024-04-23
1021Spain2024-04-23
1022Australia2024-03-31
1023France2024-03-30
1024Italy2024-04-25
1025United Kingdom2024-04-23
1026Australia2024-04-05
1027Australia2024-04-05
1028Spain2024-04-10
1029Argentina2024-04-13
1030United Kingdom2024-04-19
1031Spain2024-04-05
1032Spain2024-04-10
1033Brazil2024-04-04
1034Russia2024-03-29
1035Russia2024-03-31
1036France2024-04-09
1037Italy2024-04-02
1038Brazil2024-04-14
1039United Kingdom2024-04-02
1040Brazil2024-04-17
1041Italy2024-04-05
1042Australia2024-04-14
1043Argentina2024-04-02
1044Japan2024-04-25
1045Russia2024-03-31
1046Canada2024-04-18
1047Russia2024-03-31
1048Canada2024-04-01
1049Italy2024-04-07

On-Demand Data

NameIdCountryDate
Ricardo Y Briddick1000Argentina2024-04-23
Salvatore Z Figeroa1001Germany2024-04-12
Silvio N Glick1002France2024-04-12
Antonio S Ruta1003United Kingdom2024-04-12
Adams V Briddick1004Argentina2024-04-01
Salvatore F Bowley1005Spain2024-04-23
Stacey D Chui1006Japan2024-03-31
Johnson F Garufi1007Brazil2024-03-31
Smith C Saylors1008Italy2024-03-30
Salvatore Y Rim1009Italy2024-03-31
Aditya G Wieser1010Italy2024-03-28
Mayumi S Chui1011Australia2024-04-05
Izzy Q Glick1012United Kingdom2024-04-25
Julie F Maclead1013Japan2024-04-21
David W Bolognia1014Japan2024-03-31
Kadeem V Whobrey1015Canada2024-04-04
Smith T Albares1016India2024-04-06
Murillo P Waycott1017Spain2024-04-25
James R Glick1018Brazil2024-03-30
Smith D Wieser1019Japan2024-04-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith O FerenczAustraliaIvan Magalhaes NEGOTIATION
Ivar O DilliardCanadaAnna Fali NEGOTIATION
Julie F PerinBrazilAsiya Javayant NEGOTIATION
Munro G VocelkaArgentinaXuxue Feng NEW
Mujtaba W BriddickJapanAsiya Javayant QUALIFIED
Emily X MorascaGermanyBernardo Dominic QUALIFIED
Chavez N GauchoUnited KingdomAsiya Javayant UNQUALIFIED
Leon E PerinGermanyStephen Shaw PROPOSAL
Salvatore S FollerBrazilXuxue Feng QUALIFIED
Antonio C ShinkoAustraliaAmy Elsner UNQUALIFIED
Aika I DilliardCanadaAmy Elsner PROPOSAL
Clifford A GauchoUnited KingdomStephen Shaw NEW
Maisha B BologniaIndiaStephen Shaw PROPOSAL
Maria F SaylorsBrazilBernardo Dominic RENEWAL
Jennifer G TollnerCanadaXuxue Feng UNQUALIFIED
Kaitlin W RulapaughRussiaIvan Magalhaes PROPOSAL
Johnson Q WieserFranceIvan Magalhaes PROPOSAL
Sinclair N PaprockiRussiaIoni Bowcher PROPOSAL
Kaitlin P RimRussiaElwin Sharvill QUALIFIED
Murillo U PaprockiSpainIoni Bowcher QUALIFIED
Sinclair Q InouyeArgentinaAsiya Javayant QUALIFIED
Morrow G DarakjyJapanIoni Bowcher NEGOTIATION
Munro L OldroydBrazilElwin Sharvill RENEWAL
Faith P WieserItalyAsiya Javayant PROPOSAL
Francesco R MaletArgentinaBernardo Dominic UNQUALIFIED
Johnson Q AmigonItalyBernardo Dominic PROPOSAL
Faith N GlickIndiaBernardo Dominic QUALIFIED
Chavez B BriddickIndiaStephen Shaw PROPOSAL
Antonio D GarufiRussiaXuxue Feng QUALIFIED
James M NestleIndiaAsiya Javayant NEGOTIATION
Adams K DilliardBrazilElwin Sharvill NEGOTIATION
Silvio P BriddickBrazilIoni Bowcher UNQUALIFIED
Isabel N WieserBrazilElwin Sharvill NEW
Aditya T BriddickArgentinaAnna Fali RENEWAL
Greenwood A CaldareraGermanyOnyama Limba NEW
Leja I OldroydFranceStephen Shaw NEW
Faith T AmigonUnited KingdomBernardo Dominic RENEWAL
Mayumi P PerinCanadaAmy Elsner PROPOSAL
Emily V RimSpainAnna Fali NEW
James V PoquetteBrazilOnyama Limba 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>