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
Kadeem N MaletAustraliaOnyama Limba NEW
Ivar V BologniaFranceAsiya Javayant NEGOTIATION
Deepesh F PoquetteAustraliaStephen Shaw NEGOTIATION
Stacey U GillianRussiaStephen Shaw QUALIFIED
Clifford Y CaldareraRussiaStephen Shaw NEW
Smith L RimUnited KingdomAnna Fali QUALIFIED
Aruna H VocelkaItalyAnna Fali UNQUALIFIED
Arvin D AlbaresBrazilAnna Fali RENEWAL
Maisha E KuskoArgentinaOnyama Limba RENEWAL
Nicolas J KolmetzCanadaXuxue Feng NEW
Julie V BologniaFranceAnna Fali NEGOTIATION
Alejandro N FigeroaIndiaXuxue Feng RENEWAL
Faith W KolmetzItalyBernardo Dominic NEGOTIATION
Faith S PoquetteGermanyOnyama Limba RENEWAL
Sinclair O RoysterRussiaOnyama Limba PROPOSAL
David L AmigonGermanyElwin Sharvill QUALIFIED
Juan J PoquetteFranceElwin Sharvill UNQUALIFIED
Jefferson M AmigonFranceElwin Sharvill RENEWAL
Cody R TollnerGermanyIvan Magalhaes RENEWAL
Rodrigues K MacleadIndiaStephen Shaw UNQUALIFIED
Stacey H FigeroaCanadaAnna Fali NEGOTIATION
Munro O VenereJapanOnyama Limba NEGOTIATION
Kadeem W FollerGermanyElwin Sharvill UNQUALIFIED
Kadeem Z SaylorsArgentinaAnna Fali RENEWAL
Greenwood Z PoquetteAustraliaXuxue Feng NEW
Maisha Y RutaRussiaAsiya Javayant NEGOTIATION
Jeanfrancois V ShinkoAustraliaStephen Shaw RENEWAL
Ricardo V MaletBrazilAnna Fali UNQUALIFIED
James E ChuiGermanyAmy Elsner QUALIFIED
Rodrigues L MaletArgentinaIoni Bowcher QUALIFIED
Claire P AmigonGermanyIvan Magalhaes RENEWAL
Leon C GarufiIndiaIoni Bowcher QUALIFIED
Aruna B PaprockiArgentinaStephen Shaw RENEWAL
Kadeem N CaldareraGermanyAnna Fali RENEWAL
Wickens P CampainGermanyIoni Bowcher UNQUALIFIED
Morrow M WaycottCanadaIvan Magalhaes QUALIFIED
Faith O FigeroaItalyBernardo Dominic NEW
Sinclair J SergiJapanElwin Sharvill NEW
James L DilliardAustraliaBernardo Dominic NEGOTIATION
Julie Z NestleCanadaIoni Bowcher NEGOTIATION
Ashley X BologniaIndiaAnna Fali NEW
Jefferson C PaprockiJapanStephen Shaw PROPOSAL
Leja J RutaAustraliaIvan Magalhaes NEGOTIATION
Cody F FerenczFranceElwin Sharvill RENEWAL
Tony P RutaGermanyXuxue Feng NEW
Emily T RoysterRussiaIoni Bowcher NEGOTIATION
Chavez Y WieserGermanyIoni Bowcher NEGOTIATION
David B DoeIndiaXuxue Feng RENEWAL
Silvio H MarrierCanadaBernardo Dominic NEGOTIATION
Leja N FollerArgentinaBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Maria Q IturbideAustraliaIvan Magalhaes UNQUALIFIED
Isabel A BriddickBrazilOnyama Limba PROPOSAL
Mujtaba I VocelkaBrazilIvan Magalhaes NEGOTIATION
Rodrigues B TollnerRussiaElwin Sharvill UNQUALIFIED
Adams W MaletCanadaAsiya Javayant UNQUALIFIED
Jones B GillianArgentinaIvan Magalhaes RENEWAL
Jones S MorascaRussiaStephen Shaw RENEWAL
James N CampainUnited KingdomIvan Magalhaes PROPOSAL
Mujtaba E SaylorsBrazilAmy Elsner QUALIFIED
Cody Y RutaBrazilIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson I BologniaJapan2024-04-15Morlong Associates RENEWAL25Amy Elsner
1001James A PoquetteItaly2024-04-03Rousseaux, Michael Esq RENEWAL6Amy Elsner
1002Aika A OldroydUnited Kingdom2024-04-14Dorl, James J Esq QUALIFIED76Xuxue Feng
1003Maria X VenereArgentina2024-04-17Chanay, Jeffrey A Esq NEGOTIATION74Elwin Sharvill
1004Cody U PaprockiFrance2024-04-29Chemel, James L Cpa PROPOSAL41Elwin Sharvill
1005Jefferson Z StensethSpain2024-04-05Dorl, James J Esq QUALIFIED6Anna Fali
1006Rodrigues U WhobreyAustralia2024-04-12Chemel, James L Cpa PROPOSAL21Xuxue Feng
1007Mayumi R ChuiSpain2024-04-10Feltz Printing Service NEW93Onyama Limba
1008Aruna X GlickRussia2024-04-29Feiner Bros RENEWAL43Amy Elsner
1009Aika A MacleadCanada2024-04-09Rousseaux, Michael Esq NEW8Asiya Javayant
1010Munro D BowleyCanada2024-04-26Feltz Printing Service NEW5Bernardo Dominic
1011Alejandro Q MorascaSpain2024-04-16Truhlar And Truhlar Attys NEGOTIATION2Anna Fali
1012David K StensethIndia2024-04-05Chanay, Jeffrey A Esq NEGOTIATION5Amy Elsner
1013Silvio X MorascaJapan2024-04-06Rangoni Of Florence UNQUALIFIED37Anna Fali
1014Jeanfrancois R OstroskyFrance2024-04-20Benton, John B Jr QUALIFIED81Xuxue Feng
1015Munro Q CaldareraAustralia2024-04-11Morlong Associates NEW68Amy Elsner
1016Ricardo N RutaSpain2024-04-05Benton, John B Jr RENEWAL79Amy Elsner
1017Antonio N VocelkaIndia2024-04-13Truhlar And Truhlar Attys UNQUALIFIED97Bernardo Dominic
1018Salvatore H PerinItaly2024-04-11Printing Dimensions PROPOSAL51Ioni Bowcher
1019Maria E PoquetteGermany2024-04-16Rangoni Of Florence NEW19Onyama Limba
1020Emily T AmigonJapan2024-04-27Rangoni Of Florence QUALIFIED55Amy Elsner
1021Nicolas S NickaIndia2024-04-29Feiner Bros RENEWAL63Ioni Bowcher
1022Octavia E DilliardUnited Kingdom2024-04-19King, Christopher A Esq PROPOSAL81Ivan Magalhaes
1023Izzy Y PerinRussia2024-04-04Chanay, Jeffrey A Esq NEW0Amy Elsner
1024Mujtaba Y GlickUnited Kingdom2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED13Onyama Limba
1025Mujtaba U PaprockiRussia2024-04-01Morlong Associates UNQUALIFIED76Stephen Shaw
1026Jones P WieserArgentina2024-04-30Buckley Miller Wright RENEWAL38Stephen Shaw
1027Cody G FlosiJapan2024-04-08King, Christopher A Esq PROPOSAL45Amy Elsner
1028Emily G KolmetzItaly2024-04-10King, Christopher A Esq NEW10Xuxue Feng
1029Mujtaba A DarakjyRussia2024-04-25Feiner Bros PROPOSAL81Onyama Limba
1030Nicolas O GarufiItaly2024-04-05Truhlar And Truhlar Attys NEW93Ivan Magalhaes
1031Tony I CaldareraGermany2024-04-07Chanay, Jeffrey A Esq RENEWAL84Anna Fali
1032Deepesh M FlosiJapan2024-04-06Feltz Printing Service QUALIFIED41Amy Elsner
1033Sinclair H SlusarskiGermany2024-04-05Truhlar And Truhlar Attys UNQUALIFIED77Bernardo Dominic
1034Claire R WieserFrance2024-04-19Printing Dimensions PROPOSAL51Elwin Sharvill
1035Deepesh O ShinkoIndia2024-04-26Chemel, James L Cpa PROPOSAL69Elwin Sharvill
1036Kadeem Z VenereAustralia2024-04-04Chanay, Jeffrey A Esq PROPOSAL66Onyama Limba
1037Mayumi L FerenczFrance2024-04-10Feltz Printing Service QUALIFIED5Stephen Shaw
1038Munro Y KolmetzAustralia2024-04-19Feltz Printing Service NEW85Bernardo Dominic
1039Faith O AlbaresArgentina2024-04-17Feiner Bros RENEWAL26Xuxue Feng
1040Aika M AlbaresSpain2024-04-14Commercial Press UNQUALIFIED78Xuxue Feng
1041Izzy F FollerJapan2024-04-23Rangoni Of Florence NEGOTIATION69Ioni Bowcher
1042Murillo R RimCanada2024-04-11Dorl, James J Esq RENEWAL94Elwin Sharvill
1043Cody N RutaItaly2024-04-27Chapman, Ross E Esq PROPOSAL67Onyama Limba
1044Jennifer N KolmetzUnited Kingdom2024-04-05Morlong Associates UNQUALIFIED54Amy Elsner
1045Jefferson V FerenczSpain2024-04-23Buckley Miller Wright NEGOTIATION39Bernardo Dominic
1046Mujtaba Y CaldareraArgentina2024-04-09Feltz Printing Service RENEWAL96Xuxue Feng
1047Juan P OldroydRussia2024-04-07Buckley Miller Wright RENEWAL89Xuxue Feng
1048Morrow Q DoeSpain2024-04-25Morlong Associates PROPOSAL30Ioni Bowcher
1049Francesco M PoquetteItaly2024-04-10King, Christopher A Esq QUALIFIED65Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois M DilliardGermanyOnyama Limba NEW
Octavia Q GlickSpainXuxue Feng RENEWAL
Rodrigues T RulapaughArgentinaBernardo Dominic NEW
Aruna F DarakjyArgentinaAnna Fali NEGOTIATION
Sinclair X DarakjyItalyOnyama Limba PROPOSAL
Murillo V VocelkaAustraliaAnna Fali NEGOTIATION
Wickens J TollnerGermanyIvan Magalhaes NEGOTIATION
Kaitlin P BowleyBrazilStephen Shaw QUALIFIED
Ashley T CaldareraCanadaAsiya Javayant RENEWAL
Tony Q RoysterRussiaIvan Magalhaes UNQUALIFIED
Mujtaba T GarufiCanadaAsiya Javayant PROPOSAL
Emily B CampainUnited KingdomAnna Fali NEW
David W AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Jennifer E PerinAustraliaIvan Magalhaes RENEWAL
Antonio K CampainBrazilBernardo Dominic QUALIFIED
Clifford P BologniaSpainAsiya Javayant RENEWAL
Silvio N FerenczJapanStephen Shaw PROPOSAL
Tony Y NickaIndiaIoni Bowcher NEW
Kadeem B RutaJapanElwin Sharvill NEW
Adams W MarrierArgentinaXuxue Feng NEGOTIATION
Silvio K GarufiUnited KingdomAsiya Javayant QUALIFIED
James K DilliardRussiaAmy Elsner NEGOTIATION
Aika Y WieserItalyAsiya Javayant NEW
Rodrigues Z VenereIndiaAmy Elsner RENEWAL
Ricardo N WhobreyItalyIoni Bowcher UNQUALIFIED
Izzy R GarufiRussiaElwin Sharvill NEW
Costa T ChuiIndiaIvan Magalhaes UNQUALIFIED
Sinclair N BriddickUnited KingdomAmy Elsner PROPOSAL
Faith J PerinRussiaIoni Bowcher NEW
Misaki P TollnerAustraliaAnna Fali NEW
Chavez I AmigonFranceXuxue Feng PROPOSAL
Adams G VenereIndiaOnyama Limba QUALIFIED
Emily G MorascaSpainIoni Bowcher NEGOTIATION
Faith R BologniaSpainAmy Elsner UNQUALIFIED
Claire X ShinkoIndiaOnyama Limba RENEWAL
Isabel N MorascaAustraliaXuxue Feng QUALIFIED
Juan M MaletAustraliaAsiya Javayant NEGOTIATION
Clifford W OldroydRussiaAsiya Javayant QUALIFIED
Ashley Y FerenczBrazilElwin Sharvill NEGOTIATION
Mayumi G FigeroaBrazilXuxue Feng NEW
Smith A KolmetzCanadaXuxue Feng NEW
Emily F GlickIndiaBernardo Dominic PROPOSAL
Salvatore Q SergiAustraliaIoni Bowcher UNQUALIFIED
Izzy F DarakjyRussiaAmy Elsner NEW
Jefferson V OstroskyIndiaXuxue Feng NEW
Misaki R IturbideUnited KingdomStephen Shaw QUALIFIED
Murillo Z VenereArgentinaIoni Bowcher PROPOSAL
Wickens S BowleyArgentinaOnyama Limba PROPOSAL
Juan T MacleadItalyBernardo Dominic PROPOSAL
Jones H PerinArgentinaIoni Bowcher PROPOSAL
Frozen Columns
Name
Ivar E Glick
Maisha J Doe
Sinclair B Glick
David K Inouye
Sinclair L Malet
Salvatore J Venere
Aditya I Sergi
Ivar C Gillian
Leja L Nestle
Costa B Marrier
Misaki F Campain
Maria F Ruta
Tony P Oldroyd
Clifford U Bolognia
Leon K Gillian
Jeanfrancois K Malet
Rodrigues N Amigon
Ivar G Bolognia
Sinclair M Gaucho
James Z Poquette
Ricardo L Foller
James L Ostrosky
Rodrigues X Schemmer
Kaitlin U Waycott
James T Gillian
Izzy P Ferencz
Arvin L Doe
Kadeem J Glick
Chavez X Darakjy
Sinclair R Butt
Chavez K Wieser
Smith E Ferencz
Jones R Saylors
Aditya J Wieser
Leon Q Doe
Jones F Stenseth
Claire J Dilliard
Arvin Q Saylors
Clifford W Glick
Arvin G Marrier
Wickens X Nicka
Misaki Z Shinko
Cody E Waycott
Sinclair H Amigon
Aditya I Rulapaugh
Jeanfrancois H Nestle
Aika C Nestle
Mayumi U Ruta
Chavez L Slusarski
Nicolas R Slusarski
IdCountryDate
1000Argentina2024-04-01
1001Canada2024-04-04
1002Brazil2024-04-02
1003Germany2024-04-18
1004Argentina2024-04-06
1005Italy2024-04-19
1006India2024-04-10
1007Australia2024-04-08
1008India2024-04-28
1009Italy2024-04-28
1010Germany2024-04-13
1011Russia2024-04-02
1012Russia2024-04-02
1013Germany2024-04-04
1014Brazil2024-04-06
1015Russia2024-04-02
1016United Kingdom2024-04-05
1017Italy2024-04-08
1018Japan2024-04-05
1019India2024-04-01
1020United Kingdom2024-04-28
1021Canada2024-04-20
1022France2024-04-26
1023Spain2024-04-30
1024India2024-04-05
1025Canada2024-04-11
1026Italy2024-04-11
1027India2024-04-25
1028Argentina2024-04-01
1029France2024-04-29
1030Germany2024-04-09
1031India2024-04-10
1032Canada2024-04-06
1033Spain2024-04-15
1034Germany2024-04-25
1035Japan2024-04-30
1036Argentina2024-04-20
1037Brazil2024-04-25
1038Germany2024-04-10
1039United Kingdom2024-04-04
1040Spain2024-04-18
1041India2024-04-23
1042Italy2024-04-14
1043Brazil2024-04-30
1044India2024-04-22
1045Canada2024-04-29
1046Spain2024-04-20
1047Russia2024-04-29
1048Italy2024-04-06
1049United Kingdom2024-04-29

On-Demand Data

NameIdCountryDate
Cody J Maclead1000France2024-04-21
David F Nestle1001Canada2024-04-17
Aruna P Gaucho1002Australia2024-04-03
David S Ferencz1003Brazil2024-04-26
Mujtaba O Darakjy1004France2024-04-20
Misaki Y Kusko1005Russia2024-04-20
Smith H Flosi1006Germany2024-04-20
Francesco Q Kusko1007France2024-04-18
Darci B Caudy1008Germany2024-04-24
Rodrigues H Iturbide1009Brazil2024-04-19
Ricardo M Venere1010Australia2024-04-12
Smith W Bowley1011Germany2024-04-18
Emily F Caldarera1012France2024-04-04
Morrow L Whobrey1013France2024-04-21
Clifford B Paprocki1014Canada2024-04-14
Francesco A Iturbide1015Japan2024-04-24
Octavia T Royster1016Spain2024-04-21
Antonio K Sergi1017France2024-04-10
Alejandro J Caldarera1018United Kingdom2024-04-11
Munro E Saylors1019Brazil2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James Z OldroydGermanyAnna Fali PROPOSAL
Costa W RoysterIndiaStephen Shaw NEW
Smith E VenereGermanyElwin Sharvill NEW
Silvio A TollnerIndiaElwin Sharvill QUALIFIED
Octavia F DilliardUnited KingdomIvan Magalhaes NEGOTIATION
Alejandro W SergiCanadaElwin Sharvill NEGOTIATION
Aruna J VocelkaUnited KingdomIoni Bowcher UNQUALIFIED
Darci I GlickAustraliaBernardo Dominic RENEWAL
Julie P CaudyGermanyBernardo Dominic RENEWAL
Kaitlin V CaudyItalyAsiya Javayant UNQUALIFIED
Isabel I RoysterFranceStephen Shaw NEW
David V CampainBrazilAmy Elsner NEGOTIATION
Clifford H IturbideFranceXuxue Feng RENEWAL
Aditya E SergiBrazilBernardo Dominic PROPOSAL
Jennifer S RutaGermanyAsiya Javayant NEW
Leon Y GlickCanadaAnna Fali QUALIFIED
Faith K CampainArgentinaStephen Shaw UNQUALIFIED
Darci Q PoquetteUnited KingdomOnyama Limba RENEWAL
David S CaudyAustraliaAmy Elsner QUALIFIED
Mayumi T GlickIndiaIoni Bowcher PROPOSAL
Ricardo E BologniaFranceAnna Fali RENEWAL
Alejandro Y WaycottBrazilIvan Magalhaes NEW
Arvin O GillianSpainStephen Shaw UNQUALIFIED
Sinclair M BriddickFranceAsiya Javayant RENEWAL
Tony S ChuiJapanElwin Sharvill NEGOTIATION
Deepesh W StockhamIndiaXuxue Feng NEW
Misaki B RoysterBrazilIvan Magalhaes QUALIFIED
Ricardo H BologniaSpainAsiya Javayant PROPOSAL
Smith B GlickRussiaBernardo Dominic RENEWAL
Maria C SergiRussiaAsiya Javayant UNQUALIFIED
Sinclair Y PaprockiRussiaIoni Bowcher PROPOSAL
Ricardo L AlbaresUnited KingdomIvan Magalhaes RENEWAL
Munro N MaletFranceStephen Shaw PROPOSAL
Aruna U OldroydArgentinaIvan Magalhaes RENEWAL
Jefferson W WieserJapanStephen Shaw RENEWAL
Silvio M KuskoSpainAnna Fali PROPOSAL
Mujtaba S PaprockiFranceBernardo Dominic QUALIFIED
Claire X MorascaAustraliaBernardo Dominic RENEWAL
Kadeem M GarufiGermanyIoni Bowcher PROPOSAL
Smith U MaletArgentinaXuxue Feng 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>