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
Antonio N StensethCanadaXuxue Feng RENEWAL
Claire R GauchoGermanyElwin Sharvill UNQUALIFIED
Kaitlin M ButtIndiaAnna Fali NEGOTIATION
Arvin Y GillianArgentinaIoni Bowcher PROPOSAL
Morrow O BriddickItalyIvan Magalhaes NEGOTIATION
Nicolas D MacleadSpainAsiya Javayant NEW
Clifford C BriddickBrazilIvan Magalhaes RENEWAL
Kadeem Y MorascaItalyAsiya Javayant NEGOTIATION
Alejandro S VenereFranceAsiya Javayant NEW
Faith O RoysterCanadaElwin Sharvill RENEWAL
Munro L CampainAustraliaXuxue Feng NEGOTIATION
Ashley I RutaArgentinaAnna Fali QUALIFIED
Jennifer J ButtFranceOnyama Limba PROPOSAL
Aika P MorascaArgentinaIoni Bowcher NEGOTIATION
Leja K RulapaughSpainElwin Sharvill NEGOTIATION
Misaki T FollerFranceStephen Shaw PROPOSAL
Wickens R BriddickAustraliaXuxue Feng NEW
Ricardo P GlickJapanStephen Shaw NEW
Mayumi W GlickBrazilAsiya Javayant QUALIFIED
Ricardo L MacleadSpainIvan Magalhaes NEW
Johnson H SchemmerItalyStephen Shaw NEGOTIATION
Jefferson F SergiItalyAnna Fali NEW
Costa K MarrierUnited KingdomXuxue Feng RENEWAL
Emily L BologniaUnited KingdomIvan Magalhaes RENEWAL
Ricardo T MaletAustraliaAnna Fali NEW
Jefferson Q CaudyArgentinaStephen Shaw NEGOTIATION
Costa C GauchoRussiaBernardo Dominic NEGOTIATION
Adams L SchemmerAustraliaIvan Magalhaes PROPOSAL
Aditya U ShinkoCanadaOnyama Limba NEW
Morrow F WhobreyUnited KingdomAnna Fali NEW
Rodrigues C RimArgentinaOnyama Limba PROPOSAL
James B ChuiSpainIvan Magalhaes RENEWAL
Jennifer L PoquetteAustraliaXuxue Feng QUALIFIED
Jefferson R BriddickAustraliaXuxue Feng UNQUALIFIED
Salvatore A WhobreyGermanyAnna Fali NEW
Darci N GillianJapanStephen Shaw NEGOTIATION
Emily S CampainIndiaAnna Fali PROPOSAL
Aruna U AmigonAustraliaIoni Bowcher RENEWAL
Salvatore H MaletIndiaElwin Sharvill RENEWAL
Antonio Q VenereCanadaXuxue Feng PROPOSAL
Maria W CampainBrazilIoni Bowcher QUALIFIED
Julie R MarrierBrazilOnyama Limba NEGOTIATION
Jennifer F DilliardUnited KingdomIoni Bowcher UNQUALIFIED
Aditya N GauchoRussiaIoni Bowcher NEW
Costa W PaprockiUnited KingdomBernardo Dominic QUALIFIED
Mujtaba M MaletJapanBernardo Dominic NEW
Johnson C RoysterIndiaStephen Shaw NEGOTIATION
Jefferson U InouyeJapanXuxue Feng PROPOSAL
Faith X VocelkaItalyXuxue Feng NEW
Jefferson R CampainArgentinaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Morrow J PaprockiGermanyElwin Sharvill UNQUALIFIED
Greenwood W BowleyBrazilIvan Magalhaes QUALIFIED
Mayumi Z StockhamUnited KingdomOnyama Limba NEW
Costa S GlickFranceStephen Shaw PROPOSAL
Jennifer J NickaItalyBernardo Dominic RENEWAL
Faith L CampainSpainAmy Elsner NEGOTIATION
Smith A FerenczRussiaAmy Elsner QUALIFIED
Arvin Q SergiGermanyStephen Shaw QUALIFIED
Nicolas H NestleCanadaOnyama Limba NEW
Claire P MarrierSpainAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar I PoquetteBrazil2024-04-09Feltz Printing Service PROPOSAL55Ivan Magalhaes
1001Francesco C MorascaItaly2024-04-17Chapman, Ross E Esq RENEWAL65Bernardo Dominic
1002Adams J AmigonSpain2024-04-08Chemel, James L Cpa QUALIFIED85Xuxue Feng
1003Jennifer Z GauchoArgentina2024-04-17Benton, John B Jr PROPOSAL98Bernardo Dominic
1004Misaki G PerinItaly2024-04-23Morlong Associates RENEWAL6Asiya Javayant
1005Deepesh M NestleGermany2024-04-25Benton, John B Jr NEW41Bernardo Dominic
1006Ivar C AlbaresFrance2024-04-29Rangoni Of Florence NEGOTIATION80Amy Elsner
1007Francesco F MaletCanada2024-04-07Feltz Printing Service UNQUALIFIED56Stephen Shaw
1008Cody K StockhamAustralia2024-04-09Chemel, James L Cpa UNQUALIFIED99Onyama Limba
1009Izzy Y TollnerCanada2024-04-14Buckley Miller Wright NEGOTIATION31Ioni Bowcher
1010Jones D KolmetzRussia2024-04-20Chapman, Ross E Esq UNQUALIFIED91Ioni Bowcher
1011Greenwood U DilliardSpain2024-04-23Commercial Press PROPOSAL57Bernardo Dominic
1012Murillo B KolmetzIndia2024-04-26Chanay, Jeffrey A Esq UNQUALIFIED26Ioni Bowcher
1013Maisha X OldroydItaly2024-04-05Chemel, James L Cpa NEW10Elwin Sharvill
1014Maria S MarrierGermany2024-04-15Printing Dimensions NEGOTIATION49Ioni Bowcher
1015Aika O RutaGermany2024-04-13Truhlar And Truhlar Attys QUALIFIED12Amy Elsner
1016Tony M IturbideRussia2024-04-23Morlong Associates QUALIFIED55Asiya Javayant
1017Emily A InouyeItaly2024-04-16Chanay, Jeffrey A Esq NEW90Amy Elsner
1018Isabel F IturbideFrance2024-04-13Dorl, James J Esq NEW78Ioni Bowcher
1019Salvatore U DarakjyUnited Kingdom2024-04-26Feltz Printing Service UNQUALIFIED0Ioni Bowcher
1020Adams Y GlickJapan2024-04-09Commercial Press NEW84Onyama Limba
1021Aruna T PaprockiSpain2024-04-17Morlong Associates UNQUALIFIED51Ioni Bowcher
1022Izzy B CaldareraBrazil2024-04-21Morlong Associates NEGOTIATION95Onyama Limba
1023Juan S RimItaly2024-04-15Dorl, James J Esq PROPOSAL20Onyama Limba
1024Clifford L DilliardArgentina2024-04-07Feiner Bros RENEWAL83Stephen Shaw
1025Ivar F RutaSpain2024-04-11Feiner Bros PROPOSAL95Anna Fali
1026Alejandro E DarakjyItaly2024-04-21King, Christopher A Esq RENEWAL61Onyama Limba
1027Aruna T RoysterArgentina2024-04-22Feiner Bros QUALIFIED27Ivan Magalhaes
1028Cody B FigeroaItaly2024-04-05Printing Dimensions NEW66Onyama Limba
1029Emily L StockhamRussia2024-04-29Printing Dimensions NEW45Ivan Magalhaes
1030Leon Q NickaArgentina2024-04-25Chanay, Jeffrey A Esq UNQUALIFIED21Stephen Shaw
1031Leja P CampainFrance2024-04-16Dorl, James J Esq PROPOSAL78Stephen Shaw
1032Jones P StensethJapan2024-04-05Rangoni Of Florence NEGOTIATION57Elwin Sharvill
1033Francesco H SaylorsBrazil2024-04-18Printing Dimensions NEW58Asiya Javayant
1034Jeanfrancois O WieserFrance2024-04-20Truhlar And Truhlar Attys NEGOTIATION78Ioni Bowcher
1035Kadeem Y KuskoBrazil2024-04-08Chemel, James L Cpa QUALIFIED16Amy Elsner
1036Murillo S CampainFrance2024-04-07Benton, John B Jr UNQUALIFIED51Asiya Javayant
1037Kadeem Q ShinkoArgentina2024-04-16Chapman, Ross E Esq RENEWAL91Stephen Shaw
1038Chavez J MorascaJapan2024-04-18Benton, John B Jr RENEWAL23Asiya Javayant
1039Maria T ShinkoSpain2024-04-03Feiner Bros NEW3Asiya Javayant
1040Smith N PerinAustralia2024-04-28Printing Dimensions NEW16Anna Fali
1041Clifford G GauchoRussia2024-04-15Benton, John B Jr PROPOSAL27Xuxue Feng
1042Silvio Y AmigonGermany2024-04-22Benton, John B Jr RENEWAL47Stephen Shaw
1043Ashley O VenereRussia2024-04-24Buckley Miller Wright PROPOSAL32Onyama Limba
1044Jeanfrancois P DarakjyGermany2024-04-25Feiner Bros NEW4Ivan Magalhaes
1045Aika X ChuiAustralia2024-04-24Morlong Associates UNQUALIFIED32Asiya Javayant
1046Jones N OstroskyJapan2024-04-17Printing Dimensions PROPOSAL57Bernardo Dominic
1047Aruna V PoquetteFrance2024-04-01Benton, John B Jr NEW13Asiya Javayant
1048Jeanfrancois L MarrierRussia2024-04-05King, Christopher A Esq QUALIFIED86Xuxue Feng
1049Jefferson R KolmetzUnited Kingdom2024-04-06Chanay, Jeffrey A Esq RENEWAL68Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Clifford H InouyeIndiaElwin Sharvill UNQUALIFIED
Maria T RutaSpainIvan Magalhaes QUALIFIED
Rodrigues B CampainItalyIvan Magalhaes RENEWAL
Kaitlin T IturbideIndiaElwin Sharvill QUALIFIED
Wickens B InouyeItalyOnyama Limba NEW
Maisha A CampainFranceIoni Bowcher QUALIFIED
David O BowleyArgentinaOnyama Limba QUALIFIED
Aika V CaldareraGermanyStephen Shaw QUALIFIED
Silvio I TollnerBrazilIvan Magalhaes PROPOSAL
Octavia P OldroydSpainIvan Magalhaes NEW
Kaitlin Q GarufiGermanyIvan Magalhaes NEW
Aruna H SchemmerSpainBernardo Dominic UNQUALIFIED
Stacey Y InouyeIndiaOnyama Limba PROPOSAL
Greenwood F InouyeUnited KingdomIoni Bowcher NEW
Leja W InouyeCanadaOnyama Limba PROPOSAL
Juan T MorascaUnited KingdomIoni Bowcher QUALIFIED
James R StockhamArgentinaOnyama Limba UNQUALIFIED
Cody W PoquetteArgentinaXuxue Feng NEW
Isabel O CaudyRussiaIvan Magalhaes PROPOSAL
Leon R MarrierFranceElwin Sharvill RENEWAL
Mayumi I CampainRussiaXuxue Feng QUALIFIED
Aditya J RulapaughGermanyElwin Sharvill NEW
Ricardo S ButtSpainAnna Fali UNQUALIFIED
Jefferson B MorascaJapanAsiya Javayant RENEWAL
Costa I SlusarskiItalyXuxue Feng NEGOTIATION
Maria I CaudyIndiaBernardo Dominic NEGOTIATION
Kaitlin L GauchoSpainOnyama Limba RENEWAL
Aruna O FlosiItalyXuxue Feng PROPOSAL
Sinclair H ButtCanadaIoni Bowcher QUALIFIED
Aruna P PaprockiAustraliaIoni Bowcher QUALIFIED
Ricardo C ButtBrazilStephen Shaw NEGOTIATION
Aruna I IturbideUnited KingdomXuxue Feng NEGOTIATION
Murillo M TollnerArgentinaIvan Magalhaes QUALIFIED
Faith V DarakjyIndiaIoni Bowcher QUALIFIED
Leja X KuskoGermanyIoni Bowcher NEW
Munro O MaletAustraliaOnyama Limba UNQUALIFIED
Tony D InouyeFranceElwin Sharvill NEGOTIATION
David X OstroskyAustraliaBernardo Dominic QUALIFIED
David X IturbideAustraliaStephen Shaw UNQUALIFIED
Nicolas H NestleAustraliaXuxue Feng PROPOSAL
Sinclair F PaprockiFranceXuxue Feng PROPOSAL
Jefferson O ButtJapanElwin Sharvill UNQUALIFIED
Faith Y NestleAustraliaStephen Shaw NEGOTIATION
Octavia G MorascaGermanyBernardo Dominic RENEWAL
Silvio X StockhamUnited KingdomIoni Bowcher NEW
Salvatore L PoquetteGermanyBernardo Dominic UNQUALIFIED
Johnson G FigeroaCanadaIvan Magalhaes RENEWAL
Emily I RoysterIndiaAmy Elsner QUALIFIED
Clifford C GillianUnited KingdomElwin Sharvill NEGOTIATION
Cody Q RimFranceAsiya Javayant PROPOSAL
Frozen Columns
Name
Johnson R Gillian
Stacey D Glick
Stacey O Chui
Wickens M Rulapaugh
Smith I Poquette
Faith A Morasca
Jones D Nicka
Arvin Q Garufi
Leon P Bolognia
Maria W Amigon
Julie D Paprocki
Leon W Venere
Clifford W Tollner
Darci M Dilliard
Isabel N Darakjy
Arvin R Rim
Silvio Q Bowley
Tony G Dilliard
Faith S Darakjy
Tony R Glick
Smith O Oldroyd
Juan Z Rim
Costa Y Schemmer
Jones J Foller
Aika T Ruta
Juan L Darakjy
Aruna L Saylors
Antonio G Gaucho
Munro F Rim
Ashley J Flosi
Tony Q Ferencz
Leja D Caudy
Smith Y Nicka
Faith F Ostrosky
Jeanfrancois L Stockham
Alejandro D Saylors
Jones U Briddick
Arvin Y Doe
Darci N Ferencz
Sinclair Q Butt
Maria B Glick
Ricardo Y Morasca
Aika Q Nestle
Jones R Foller
Alejandro I Poquette
David Z Schemmer
Jennifer F Stenseth
Wickens A Nicka
Jeanfrancois V Stenseth
Deepesh W Kolmetz
IdCountryDate
1000United Kingdom2024-04-12
1001Japan2024-04-04
1002United Kingdom2024-04-20
1003India2024-04-22
1004Argentina2024-04-11
1005Spain2024-04-13
1006Spain2024-04-17
1007Canada2024-04-22
1008Italy2024-04-19
1009Argentina2024-04-08
1010India2024-04-20
1011Canada2024-04-13
1012Japan2024-04-27
1013Spain2024-04-26
1014Brazil2024-04-15
1015India2024-04-16
1016Italy2024-04-07
1017Canada2024-04-22
1018United Kingdom2024-04-10
1019Italy2024-04-11
1020Brazil2024-04-06
1021Italy2024-04-06
1022Russia2024-04-25
1023Spain2024-04-16
1024Japan2024-04-15
1025Canada2024-04-17
1026France2024-04-24
1027Japan2024-03-31
1028Australia2024-04-27
1029France2024-04-03
1030Russia2024-04-25
1031Argentina2024-04-22
1032Australia2024-04-15
1033Brazil2024-04-13
1034Australia2024-04-20
1035United Kingdom2024-04-25
1036Italy2024-04-25
1037Australia2024-04-22
1038Brazil2024-04-13
1039Japan2024-04-16
1040Argentina2024-04-11
1041Spain2024-04-04
1042Argentina2024-04-20
1043Russia2024-03-31
1044United Kingdom2024-04-14
1045France2024-04-08
1046United Kingdom2024-04-29
1047Japan2024-03-31
1048Italy2024-04-24
1049Germany2024-04-27

On-Demand Data

NameIdCountryDate
Stacey Y Campain1000Canada2024-04-07
David P Garufi1001Japan2024-04-26
Cody F Saylors1002Italy2024-04-09
Morrow L Maclead1003Spain2024-04-03
Deepesh T Malet1004Spain2024-04-21
Jefferson Z Inouye1005Canada2024-04-27
Juan F Poquette1006Spain2024-04-23
Kaitlin Q Ostrosky1007Australia2024-04-03
Jennifer N Malet1008Russia2024-04-28
Jefferson W Slusarski1009India2024-04-05
Leja D Shinko1010Spain2024-04-10
Arvin Y Waycott1011France2024-04-14
Antonio D Morasca1012Russia2024-04-09
Octavia Y Glick1013Argentina2024-04-20
Johnson Q Oldroyd1014Russia2024-04-16
Alejandro G Bolognia1015France2024-04-17
Darci H Iturbide1016Russia2024-04-04
Julie A Morasca1017Canada2024-04-29
Jennifer A Tollner1018Argentina2024-04-23
Ashley Q Venere1019Canada2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey Y FlosiFranceAmy Elsner RENEWAL
Alejandro N WieserIndiaBernardo Dominic UNQUALIFIED
Leon P StockhamAustraliaIvan Magalhaes NEGOTIATION
Jennifer G SchemmerBrazilIoni Bowcher NEGOTIATION
Munro V MorascaArgentinaElwin Sharvill PROPOSAL
Rodrigues E OstroskyBrazilBernardo Dominic NEGOTIATION
Claire R ButtJapanStephen Shaw RENEWAL
Izzy G MaletCanadaIvan Magalhaes RENEWAL
Ivar B NickaIndiaStephen Shaw RENEWAL
Aruna A FollerJapanOnyama Limba NEW
Costa Q MarrierUnited KingdomAnna Fali RENEWAL
Misaki I WhobreyGermanyAnna Fali RENEWAL
Jennifer A SchemmerGermanyOnyama Limba UNQUALIFIED
David D MacleadUnited KingdomIvan Magalhaes UNQUALIFIED
Cody K PoquetteArgentinaAmy Elsner QUALIFIED
Aika F MaletItalyStephen Shaw QUALIFIED
Clifford E FlosiItalyAnna Fali QUALIFIED
Cody R RulapaughArgentinaXuxue Feng NEGOTIATION
Juan O PerinJapanStephen Shaw RENEWAL
Izzy U NestleSpainIvan Magalhaes UNQUALIFIED
Kaitlin B SchemmerAustraliaBernardo Dominic UNQUALIFIED
Morrow D DilliardFranceAnna Fali UNQUALIFIED
Sinclair M OstroskyBrazilAmy Elsner NEW
Francesco X GlickGermanyXuxue Feng PROPOSAL
Cody D InouyeUnited KingdomAmy Elsner PROPOSAL
Nicolas H FlosiRussiaElwin Sharvill PROPOSAL
Kaitlin D KuskoItalyAmy Elsner RENEWAL
Greenwood D FerenczGermanyAsiya Javayant RENEWAL
Izzy U ButtBrazilStephen Shaw RENEWAL
Cody Z PaprockiAustraliaIvan Magalhaes QUALIFIED
Leja K AlbaresUnited KingdomOnyama Limba UNQUALIFIED
Sinclair K GillianSpainXuxue Feng PROPOSAL
Kadeem M ButtSpainElwin Sharvill QUALIFIED
David I RutaUnited KingdomElwin Sharvill NEW
Jeanfrancois E AlbaresBrazilAsiya Javayant NEW
Julie G MorascaFranceXuxue Feng PROPOSAL
Kaitlin T MorascaArgentinaAmy Elsner NEW
Jennifer G RulapaughSpainStephen Shaw NEW
Stacey P VenereFranceBernardo Dominic QUALIFIED
Mujtaba N FerenczFranceAnna Fali RENEWAL

<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>