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
Cody Q WaycottItalyIvan Magalhaes PROPOSAL
Maria K MaletCanadaXuxue Feng NEGOTIATION
Faith G PerinSpainAsiya Javayant QUALIFIED
Deepesh U IturbideUnited KingdomXuxue Feng NEGOTIATION
Julie X NestleAustraliaOnyama Limba NEGOTIATION
Alejandro E BowleyCanadaAnna Fali NEW
Jennifer B SaylorsIndiaIvan Magalhaes PROPOSAL
Faith G MaletIndiaStephen Shaw PROPOSAL
Ivar K RimFranceElwin Sharvill QUALIFIED
Maisha P MarrierItalyBernardo Dominic NEGOTIATION
Faith J MaletJapanOnyama Limba PROPOSAL
Adams Y StensethSpainStephen Shaw QUALIFIED
Salvatore W InouyeCanadaOnyama Limba PROPOSAL
Salvatore W GillianItalyIoni Bowcher RENEWAL
Costa S PerinSpainElwin Sharvill NEGOTIATION
Wickens P VocelkaItalyIvan Magalhaes RENEWAL
Clifford S PaprockiItalyAmy Elsner RENEWAL
Izzy U ButtBrazilAmy Elsner NEGOTIATION
Ashley F NestleAustraliaStephen Shaw NEGOTIATION
Aika F KuskoFranceAsiya Javayant PROPOSAL
Emily T RutaCanadaAnna Fali NEW
Sinclair I StockhamRussiaAsiya Javayant PROPOSAL
Arvin V OstroskyArgentinaIvan Magalhaes PROPOSAL
Mayumi S KolmetzCanadaBernardo Dominic UNQUALIFIED
Smith R StockhamArgentinaIvan Magalhaes PROPOSAL
Jeanfrancois H FlosiIndiaElwin Sharvill QUALIFIED
Claire W OldroydCanadaAnna Fali UNQUALIFIED
Sinclair L AlbaresSpainStephen Shaw NEGOTIATION
Darci B BriddickArgentinaXuxue Feng NEGOTIATION
Johnson W MacleadJapanStephen Shaw UNQUALIFIED
Smith K OldroydUnited KingdomStephen Shaw NEGOTIATION
Izzy B SchemmerJapanBernardo Dominic QUALIFIED
Julie M BologniaRussiaElwin Sharvill NEGOTIATION
Leon Y SchemmerRussiaIvan Magalhaes RENEWAL
Jeanfrancois Q GarufiUnited KingdomAsiya Javayant UNQUALIFIED
Costa O PoquetteRussiaIoni Bowcher NEGOTIATION
Cody C DoeIndiaAsiya Javayant NEW
Clifford V ChuiUnited KingdomBernardo Dominic QUALIFIED
Stacey I CaudySpainAsiya Javayant PROPOSAL
Leja O TollnerUnited KingdomOnyama Limba RENEWAL
Johnson L RutaArgentinaIvan Magalhaes QUALIFIED
Maisha B ShinkoCanadaAmy Elsner QUALIFIED
Kadeem F SchemmerRussiaAsiya Javayant QUALIFIED
Darci W GlickSpainBernardo Dominic QUALIFIED
Maisha E MacleadFranceXuxue Feng UNQUALIFIED
Clifford H OstroskyAustraliaIvan Magalhaes RENEWAL
Tony W TollnerAustraliaIoni Bowcher QUALIFIED
Nicolas O ButtJapanAnna Fali NEW
James P IturbideBrazilStephen Shaw NEGOTIATION
Jones V VocelkaIndiaAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Deepesh I CaldareraGermanyAsiya Javayant NEGOTIATION
Julie L VocelkaCanadaIoni Bowcher RENEWAL
Jennifer N StockhamGermanyElwin Sharvill QUALIFIED
Costa A NickaSpainAnna Fali NEW
Murillo S WieserItalyIvan Magalhaes RENEWAL
Julie F PerinIndiaOnyama Limba PROPOSAL
Stacey K OldroydCanadaIoni Bowcher UNQUALIFIED
Greenwood L WhobreyAustraliaIvan Magalhaes QUALIFIED
Smith Y RoysterJapanAmy Elsner NEGOTIATION
Alejandro F AmigonCanadaAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki Z VocelkaGermany2024-04-17Benton, John B Jr PROPOSAL12Ivan Magalhaes
1001Silvio X KuskoGermany2024-04-03Commercial Press QUALIFIED11Ivan Magalhaes
1002Johnson A TollnerArgentina2024-04-04Printing Dimensions RENEWAL24Onyama Limba
1003Cody H ButtSpain2024-04-10Buckley Miller Wright RENEWAL18Xuxue Feng
1004Johnson S CaudyIndia2024-04-12Feiner Bros RENEWAL87Onyama Limba
1005Leja J MaletFrance2024-04-10Chapman, Ross E Esq RENEWAL82Bernardo Dominic
1006Morrow I DoeCanada2024-04-03Commercial Press QUALIFIED28Xuxue Feng
1007Smith Y DarakjyAustralia2024-04-06Printing Dimensions UNQUALIFIED96Bernardo Dominic
1008Sinclair A SchemmerBrazil2024-04-21Truhlar And Truhlar Attys QUALIFIED87Anna Fali
1009Ricardo F MaletRussia2024-04-25Chemel, James L Cpa QUALIFIED24Elwin Sharvill
1010James G BologniaItaly2024-04-02Printing Dimensions PROPOSAL90Stephen Shaw
1011Ivar C MorascaSpain2024-04-22King, Christopher A Esq QUALIFIED47Ivan Magalhaes
1012Isabel O StensethRussia2024-03-30Chemel, James L Cpa RENEWAL43Elwin Sharvill
1013Aditya V GillianArgentina2024-04-25Chanay, Jeffrey A Esq NEW61Ivan Magalhaes
1014Darci A WieserCanada2024-04-14Dorl, James J Esq UNQUALIFIED13Ioni Bowcher
1015Izzy M OldroydSpain2024-04-04Chemel, James L Cpa PROPOSAL10Asiya Javayant
1016Isabel L DilliardCanada2024-03-31Truhlar And Truhlar Attys UNQUALIFIED91Stephen Shaw
1017Clifford G VenereGermany2024-04-26Rangoni Of Florence UNQUALIFIED55Onyama Limba
1018Munro M InouyeCanada2024-04-08Dorl, James J Esq PROPOSAL81Elwin Sharvill
1019Jennifer H InouyeSpain2024-04-19King, Christopher A Esq RENEWAL42Amy Elsner
1020Ricardo S InouyeSpain2024-04-19Feiner Bros UNQUALIFIED7Elwin Sharvill
1021Munro J BowleySpain2024-04-17Morlong Associates RENEWAL21Amy Elsner
1022Aruna L PaprockiGermany2024-04-06Truhlar And Truhlar Attys NEW46Ivan Magalhaes
1023Smith D TollnerCanada2024-04-08Chemel, James L Cpa QUALIFIED97Amy Elsner
1024Kaitlin X KolmetzUnited Kingdom2024-04-20King, Christopher A Esq UNQUALIFIED97Ioni Bowcher
1025Johnson X SergiRussia2024-04-23Commercial Press RENEWAL28Asiya Javayant
1026Rodrigues U CaldareraItaly2024-04-03Benton, John B Jr RENEWAL22Asiya Javayant
1027Sinclair A FlosiAustralia2024-04-10Feiner Bros UNQUALIFIED92Stephen Shaw
1028Arvin Z MaletUnited Kingdom2024-04-09Feiner Bros NEW63Asiya Javayant
1029Nicolas G MaletBrazil2024-04-26Morlong Associates UNQUALIFIED89Bernardo Dominic
1030Octavia H ButtBrazil2024-04-11Chapman, Ross E Esq NEGOTIATION24Bernardo Dominic
1031Salvatore O CaudyIndia2024-04-17Dorl, James J Esq QUALIFIED36Ioni Bowcher
1032Claire M IturbideBrazil2024-04-08Dorl, James J Esq RENEWAL61Anna Fali
1033Emily H SaylorsSpain2024-04-14Rangoni Of Florence RENEWAL60Asiya Javayant
1034Jefferson A PerinBrazil2024-04-16Morlong Associates PROPOSAL48Ivan Magalhaes
1035Chavez C KuskoBrazil2024-04-07Feiner Bros UNQUALIFIED28Elwin Sharvill
1036Emily F PoquetteArgentina2024-04-11Truhlar And Truhlar Attys RENEWAL98Onyama Limba
1037Mujtaba H NestleJapan2024-04-07King, Christopher A Esq PROPOSAL36Bernardo Dominic
1038Arvin T BriddickSpain2024-04-09Commercial Press QUALIFIED75Ivan Magalhaes
1039Chavez W ChuiBrazil2024-04-25Chemel, James L Cpa NEW57Anna Fali
1040Morrow O IturbideGermany2024-04-17Feiner Bros NEW17Bernardo Dominic
1041Cody Q KolmetzCanada2024-04-19Feiner Bros UNQUALIFIED27Stephen Shaw
1042Stacey X VocelkaRussia2024-03-28Rangoni Of Florence RENEWAL98Xuxue Feng
1043Jennifer T WhobreyItaly2024-04-09Chemel, James L Cpa NEW7Elwin Sharvill
1044Deepesh A InouyeIndia2024-04-26Rangoni Of Florence NEW76Elwin Sharvill
1045Mujtaba R DoeJapan2024-04-17Rangoni Of Florence PROPOSAL82Xuxue Feng
1046Mayumi I RutaBrazil2024-04-21Feltz Printing Service QUALIFIED92Asiya Javayant
1047Jeanfrancois D GarufiGermany2024-04-05Chapman, Ross E Esq NEW6Ioni Bowcher
1048Morrow O StockhamFrance2024-04-09Chanay, Jeffrey A Esq NEW14Onyama Limba
1049Claire P CampainRussia2024-04-11Dorl, James J Esq PROPOSAL12Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Wickens B BologniaCanadaOnyama Limba NEW
Greenwood X FlosiFranceAsiya Javayant NEW
Francesco H RoysterItalyStephen Shaw QUALIFIED
Aika C GillianUnited KingdomXuxue Feng NEW
Rodrigues B OstroskyAustraliaAmy Elsner PROPOSAL
Juan I DilliardCanadaIvan Magalhaes PROPOSAL
Clifford Y BologniaUnited KingdomIvan Magalhaes UNQUALIFIED
Mujtaba S VocelkaFranceBernardo Dominic PROPOSAL
Rodrigues I GillianIndiaElwin Sharvill UNQUALIFIED
Kadeem N RutaJapanIoni Bowcher QUALIFIED
Aika C SergiSpainStephen Shaw NEGOTIATION
Darci O ButtFranceElwin Sharvill NEW
Rodrigues S BowleyGermanyStephen Shaw UNQUALIFIED
Aruna Q KolmetzJapanStephen Shaw PROPOSAL
Alejandro A RoysterCanadaXuxue Feng QUALIFIED
Chavez N MarrierItalyIoni Bowcher NEW
Octavia Z DilliardItalyOnyama Limba NEGOTIATION
Jones T MorascaCanadaXuxue Feng NEW
Izzy Z MaletIndiaAmy Elsner PROPOSAL
Ivar X StockhamGermanyAsiya Javayant RENEWAL
Morrow O CaudyIndiaAsiya Javayant NEGOTIATION
Juan Q VenereUnited KingdomAsiya Javayant PROPOSAL
Maria F MaletUnited KingdomAsiya Javayant NEW
Greenwood Q CaldareraAustraliaStephen Shaw PROPOSAL
Cody V MacleadRussiaAsiya Javayant QUALIFIED
Antonio E GlickRussiaIoni Bowcher PROPOSAL
Cody Q AmigonCanadaElwin Sharvill PROPOSAL
Ivar X GarufiIndiaElwin Sharvill NEW
Murillo H FerenczAustraliaIvan Magalhaes RENEWAL
Jones C MarrierItalyXuxue Feng NEGOTIATION
Maisha B PaprockiItalyStephen Shaw RENEWAL
Cody G ChuiBrazilOnyama Limba RENEWAL
Aika B ButtGermanyBernardo Dominic RENEWAL
Morrow C NickaSpainIvan Magalhaes RENEWAL
Francesco O BowleyJapanXuxue Feng UNQUALIFIED
Salvatore X MarrierArgentinaAmy Elsner PROPOSAL
Aditya I StensethAustraliaAnna Fali NEW
Costa B ChuiFranceOnyama Limba RENEWAL
Alejandro D RutaCanadaOnyama Limba NEGOTIATION
Jefferson T VocelkaItalyIoni Bowcher UNQUALIFIED
Aika C VocelkaUnited KingdomIoni Bowcher NEW
Ricardo U BriddickGermanyElwin Sharvill NEW
Mujtaba T MorascaRussiaOnyama Limba QUALIFIED
Aruna W BowleyFranceXuxue Feng NEW
Emily H BriddickBrazilAnna Fali UNQUALIFIED
Costa R KolmetzUnited KingdomXuxue Feng RENEWAL
Wickens S RulapaughSpainIvan Magalhaes UNQUALIFIED
Claire W ShinkoJapanStephen Shaw QUALIFIED
Darci N AlbaresCanadaAnna Fali UNQUALIFIED
Jefferson F NickaArgentinaIoni Bowcher NEGOTIATION
Frozen Columns
Name
Maisha K Bolognia
Clifford X Butt
Jefferson P Vocelka
Jennifer W Paprocki
Ricardo O Inouye
Darci D Stenseth
Maisha V Malet
Misaki K Caldarera
Claire Q Paprocki
Mujtaba K Gillian
Aruna T Kolmetz
Sinclair F Bolognia
Nicolas J Maclead
Deepesh A Chui
Murillo J Rulapaugh
Emily M Briddick
Darci A Malet
Antonio S Figeroa
Jefferson Y Wieser
Stacey E Chui
Leon N Flosi
Kaitlin S Morasca
Costa D Doe
Claire W Vocelka
Aditya O Caldarera
Ivar B Rim
Deepesh G Royster
Aika R Oldroyd
Morrow P Venere
Ivar U Marrier
Munro H Schemmer
Mayumi M Slusarski
Alejandro S Albares
James H Amigon
Faith G Albares
Smith A Ferencz
David X Gillian
Emily G Vocelka
Greenwood Z Paprocki
Stacey P Saylors
Greenwood Z Ostrosky
Clifford X Bolognia
Clifford T Doe
Jennifer I Doe
Cody D Iturbide
Stacey S Paprocki
Faith H Garufi
Antonio A Waycott
Maria E Nicka
Kadeem U Royster
IdCountryDate
1000Russia2024-04-21
1001United Kingdom2024-04-19
1002United Kingdom2024-04-11
1003France2024-04-05
1004France2024-04-01
1005Italy2024-04-23
1006Russia2024-04-07
1007India2024-03-28
1008Australia2024-04-26
1009Japan2024-04-26
1010Japan2024-03-28
1011Canada2024-04-09
1012Italy2024-04-13
1013France2024-04-16
1014United Kingdom2024-04-16
1015Russia2024-04-09
1016Australia2024-03-28
1017Japan2024-03-30
1018Canada2024-04-11
1019France2024-04-19
1020Argentina2024-04-18
1021Argentina2024-04-01
1022Russia2024-04-23
1023Russia2024-04-05
1024Canada2024-03-31
1025Argentina2024-04-09
1026France2024-03-30
1027Australia2024-03-31
1028Brazil2024-04-04
1029Canada2024-04-21
1030Australia2024-04-19
1031Russia2024-04-18
1032Italy2024-04-16
1033Spain2024-04-17
1034Argentina2024-04-05
1035France2024-03-31
1036Russia2024-04-11
1037Spain2024-03-31
1038United Kingdom2024-04-21
1039Germany2024-04-12
1040Italy2024-04-03
1041Australia2024-04-14
1042Russia2024-04-03
1043Argentina2024-04-20
1044Italy2024-03-28
1045India2024-04-10
1046Brazil2024-04-21
1047United Kingdom2024-04-17
1048Italy2024-04-22
1049Brazil2024-04-21

On-Demand Data

NameIdCountryDate
Smith W Schemmer1000Russia2024-04-07
Claire W Maclead1001Canada2024-04-14
Darci I Campain1002India2024-04-16
Sinclair V Ostrosky1003Japan2024-04-12
Jennifer A Darakjy1004India2024-03-29
Nicolas I Marrier1005Spain2024-04-17
Ivar H Waycott1006Canada2024-04-01
Sinclair Q Foller1007Italy2024-04-09
Arvin J Nestle1008India2024-04-22
Sinclair L Malet1009Germany2024-04-01
Aditya Q Nicka1010Russia2024-04-05
Maisha S Oldroyd1011India2024-04-26
Jones O Tollner1012Argentina2024-04-06
Emily Y Nestle1013France2024-04-03
Munro O Glick1014Brazil2024-04-25
Rodrigues M Schemmer1015Argentina2024-04-07
Clifford I Chui1016Spain2024-03-28
Rodrigues F Schemmer1017United Kingdom2024-04-10
Izzy O Oldroyd1018Canada2024-04-25
Ashley U Tollner1019Spain2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow I GauchoGermanyBernardo Dominic NEGOTIATION
Izzy T SchemmerBrazilAnna Fali QUALIFIED
Cody D SlusarskiUnited KingdomXuxue Feng NEW
Misaki Y VocelkaArgentinaStephen Shaw NEW
Silvio J RulapaughJapanXuxue Feng UNQUALIFIED
Faith D BologniaAustraliaIoni Bowcher PROPOSAL
Johnson H RoysterIndiaAnna Fali NEW
Emily A ShinkoGermanyIoni Bowcher NEW
Izzy E GlickSpainAsiya Javayant NEW
Claire F KolmetzGermanyIoni Bowcher NEGOTIATION
Arvin K GauchoAustraliaIvan Magalhaes RENEWAL
Munro X MacleadCanadaAsiya Javayant RENEWAL
Darci Z VocelkaBrazilElwin Sharvill NEGOTIATION
Rodrigues Y MaletSpainXuxue Feng NEGOTIATION
Kadeem F InouyeAustraliaXuxue Feng UNQUALIFIED
Francesco O MorascaFranceElwin Sharvill NEGOTIATION
Maisha J RoysterAustraliaOnyama Limba PROPOSAL
Antonio O SergiFranceOnyama Limba PROPOSAL
Aditya E OstroskyArgentinaAsiya Javayant NEGOTIATION
Jones U TollnerCanadaAnna Fali NEGOTIATION
Johnson U FlosiUnited KingdomAmy Elsner NEGOTIATION
Rodrigues G SlusarskiItalyAsiya Javayant QUALIFIED
Sinclair I SaylorsBrazilXuxue Feng NEGOTIATION
Smith N VenereFranceAnna Fali QUALIFIED
Ashley H MorascaItalyAsiya Javayant QUALIFIED
Munro W VocelkaUnited KingdomAnna Fali NEW
Tony Z CaudyAustraliaElwin Sharvill NEGOTIATION
Deepesh S FigeroaSpainIoni Bowcher NEW
David Y SaylorsArgentinaAsiya Javayant NEGOTIATION
Costa A MaletArgentinaElwin Sharvill PROPOSAL
Francesco Q StockhamGermanyXuxue Feng RENEWAL
Leja G TollnerBrazilElwin Sharvill UNQUALIFIED
Kadeem B MacleadCanadaAmy Elsner PROPOSAL
Adams N DilliardCanadaElwin Sharvill UNQUALIFIED
Arvin R OstroskySpainAnna Fali NEGOTIATION
Clifford Z SaylorsIndiaAsiya Javayant UNQUALIFIED
Isabel U FigeroaFranceElwin Sharvill RENEWAL
Murillo G WaycottUnited KingdomOnyama Limba PROPOSAL
Jennifer W FigeroaAustraliaBernardo Dominic NEGOTIATION
Ivar K FigeroaGermanyIoni Bowcher 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>