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
Mayumi K DilliardGermanyIvan Magalhaes NEGOTIATION
Francesco Q GarufiBrazilElwin Sharvill QUALIFIED
Kaitlin M FerenczCanadaBernardo Dominic NEW
Smith D MarrierIndiaIoni Bowcher NEGOTIATION
Kadeem H MaletArgentinaXuxue Feng QUALIFIED
Kaitlin M MarrierGermanyXuxue Feng NEGOTIATION
Kadeem L KolmetzCanadaAsiya Javayant PROPOSAL
Francesco S AlbaresRussiaIoni Bowcher NEGOTIATION
Izzy X TollnerFranceIoni Bowcher NEGOTIATION
Munro R MaletBrazilAsiya Javayant RENEWAL
Aditya A BowleyGermanyIvan Magalhaes UNQUALIFIED
Silvio R MacleadIndiaAnna Fali NEW
Arvin X MaletIndiaAnna Fali UNQUALIFIED
Juan H MarrierUnited KingdomXuxue Feng NEGOTIATION
Mayumi K DilliardCanadaAmy Elsner QUALIFIED
Adams X WieserJapanIvan Magalhaes PROPOSAL
Rodrigues H BowleyBrazilXuxue Feng PROPOSAL
David Q MacleadIndiaAsiya Javayant PROPOSAL
Faith H VenereIndiaIoni Bowcher QUALIFIED
Aditya V IturbideJapanOnyama Limba QUALIFIED
Arvin S AlbaresSpainBernardo Dominic UNQUALIFIED
Clifford G GlickUnited KingdomXuxue Feng UNQUALIFIED
Kadeem L WaycottArgentinaIvan Magalhaes NEW
Rodrigues J CaudyItalyOnyama Limba NEGOTIATION
Costa Y SergiSpainAsiya Javayant NEW
Morrow O FollerIndiaIvan Magalhaes NEGOTIATION
Jeanfrancois U MaletBrazilAnna Fali UNQUALIFIED
Cody S IturbideCanadaOnyama Limba QUALIFIED
David E FlosiRussiaStephen Shaw NEGOTIATION
Alejandro P ChuiUnited KingdomIoni Bowcher PROPOSAL
Isabel S BowleyItalyIoni Bowcher QUALIFIED
Costa T GlickIndiaXuxue Feng UNQUALIFIED
Julie Z NickaIndiaBernardo Dominic UNQUALIFIED
Mayumi K GauchoBrazilBernardo Dominic UNQUALIFIED
David P PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Smith K RimBrazilElwin Sharvill RENEWAL
Francesco N RulapaughJapanAnna Fali PROPOSAL
Kadeem B BowleyCanadaStephen Shaw NEW
Jones Z RoysterUnited KingdomIoni Bowcher NEGOTIATION
Leon L ChuiCanadaAsiya Javayant NEW
Deepesh C WaycottJapanAsiya Javayant NEGOTIATION
Emily Q RimCanadaOnyama Limba UNQUALIFIED
Mayumi R FlosiAustraliaAnna Fali NEGOTIATION
Julie V PaprockiFranceStephen Shaw RENEWAL
Mujtaba Q BologniaIndiaElwin Sharvill UNQUALIFIED
Octavia G NickaFranceIvan Magalhaes NEW
Misaki R MacleadArgentinaAmy Elsner UNQUALIFIED
Misaki H StensethIndiaXuxue Feng RENEWAL
Rodrigues L KuskoFranceXuxue Feng RENEWAL
Faith L FerenczBrazilOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Maisha T MorascaUnited KingdomStephen Shaw NEW
Rodrigues G DoeAustraliaIoni Bowcher UNQUALIFIED
Claire E VenereBrazilXuxue Feng QUALIFIED
Chavez M CaldareraUnited KingdomAnna Fali QUALIFIED
Costa P CaldareraCanadaAsiya Javayant QUALIFIED
Rodrigues D InouyeRussiaAnna Fali PROPOSAL
Smith I BowleyJapanIvan Magalhaes NEGOTIATION
Mujtaba T AlbaresJapanBernardo Dominic NEGOTIATION
Aditya M ChuiArgentinaIoni Bowcher RENEWAL
Deepesh E GillianRussiaElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon A FigeroaItaly2024-04-19Buckley Miller Wright RENEWAL82Stephen Shaw
1001Jefferson Z AmigonFrance2024-04-04Chanay, Jeffrey A Esq NEW77Anna Fali
1002Isabel L WieserGermany2024-04-10Benton, John B Jr NEW35Asiya Javayant
1003Tony B RoysterSpain2024-04-30Commercial Press RENEWAL57Elwin Sharvill
1004Alejandro T CaldareraItaly2024-04-21Feltz Printing Service NEW73Onyama Limba
1005Aruna L OstroskyFrance2024-04-04Chemel, James L Cpa NEGOTIATION63Asiya Javayant
1006Jennifer C GarufiCanada2024-04-27Benton, John B Jr UNQUALIFIED99Anna Fali
1007Jeanfrancois G RimSpain2024-04-04Buckley Miller Wright RENEWAL66Ioni Bowcher
1008Johnson D RimCanada2024-04-12Rousseaux, Michael Esq RENEWAL1Amy Elsner
1009Jennifer D NestleGermany2024-04-09Chapman, Ross E Esq RENEWAL78Onyama Limba
1010Octavia S FollerFrance2024-04-08Chanay, Jeffrey A Esq QUALIFIED86Anna Fali
1011Rodrigues N GillianAustralia2024-04-09Commercial Press NEGOTIATION40Xuxue Feng
1012Sinclair S OldroydJapan2024-04-05Chemel, James L Cpa NEGOTIATION8Ivan Magalhaes
1013Deepesh K GarufiBrazil2024-04-05Printing Dimensions QUALIFIED33Anna Fali
1014Maisha S GlickItaly2024-04-11Chapman, Ross E Esq RENEWAL0Bernardo Dominic
1015Maria J IturbideAustralia2024-04-24Printing Dimensions NEW80Asiya Javayant
1016Silvio K FigeroaJapan2024-04-24Chemel, James L Cpa PROPOSAL19Stephen Shaw
1017Francesco B FollerUnited Kingdom2024-04-26Rangoni Of Florence PROPOSAL49Amy Elsner
1018Johnson S CampainSpain2024-04-16Rangoni Of Florence NEW53Elwin Sharvill
1019Francesco H IturbideCanada2024-04-01Buckley Miller Wright NEGOTIATION13Elwin Sharvill
1020Rodrigues X SergiItaly2024-04-07Buckley Miller Wright NEW58Amy Elsner
1021Morrow X PaprockiSpain2024-04-27Morlong Associates QUALIFIED74Xuxue Feng
1022Ricardo Z FlosiSpain2024-04-09Dorl, James J Esq NEGOTIATION73Ioni Bowcher
1023Salvatore P RulapaughRussia2024-04-14Dorl, James J Esq QUALIFIED85Ivan Magalhaes
1024Nicolas F SergiFrance2024-04-14Benton, John B Jr PROPOSAL71Asiya Javayant
1025Clifford B WieserUnited Kingdom2024-04-11Benton, John B Jr UNQUALIFIED25Ioni Bowcher
1026Maria O StensethJapan2024-04-26Benton, John B Jr NEW3Amy Elsner
1027Smith B MarrierIndia2024-04-04Feiner Bros RENEWAL36Ivan Magalhaes
1028Mayumi B TollnerGermany2024-04-16Chapman, Ross E Esq UNQUALIFIED67Stephen Shaw
1029Aika I RulapaughBrazil2024-04-05Morlong Associates RENEWAL69Amy Elsner
1030Jeanfrancois T ChuiIndia2024-04-20Truhlar And Truhlar Attys PROPOSAL12Asiya Javayant
1031Mujtaba S WhobreyArgentina2024-04-30King, Christopher A Esq NEW44Stephen Shaw
1032Francesco S TollnerSpain2024-04-16Commercial Press NEW31Bernardo Dominic
1033Munro A RoysterFrance2024-04-20Chanay, Jeffrey A Esq QUALIFIED72Onyama Limba
1034Deepesh M CaldareraGermany2024-04-03Chapman, Ross E Esq NEGOTIATION84Asiya Javayant
1035Juan A SergiGermany2024-04-23Chemel, James L Cpa NEGOTIATION59Ivan Magalhaes
1036Smith H DarakjyIndia2024-04-21Chemel, James L Cpa NEW37Elwin Sharvill
1037Faith P GillianUnited Kingdom2024-04-28Feiner Bros NEW24Bernardo Dominic
1038Julie L WhobreySpain2024-04-24Feiner Bros NEGOTIATION49Stephen Shaw
1039Wickens M FerenczItaly2024-04-17Printing Dimensions UNQUALIFIED24Elwin Sharvill
1040Ricardo T KuskoArgentina2024-04-10Chemel, James L Cpa PROPOSAL92Asiya Javayant
1041Ashley D OldroydRussia2024-04-16Chapman, Ross E Esq PROPOSAL26Xuxue Feng
1042Maria C SlusarskiItaly2024-04-23Chemel, James L Cpa RENEWAL84Xuxue Feng
1043Ricardo S ButtBrazil2024-04-20Feltz Printing Service NEGOTIATION80Stephen Shaw
1044James A InouyeAustralia2024-04-08Printing Dimensions PROPOSAL41Onyama Limba
1045Nicolas T TollnerGermany2024-04-29Morlong Associates NEGOTIATION73Ioni Bowcher
1046Jones X IturbideItaly2024-04-28Printing Dimensions PROPOSAL14Ivan Magalhaes
1047Mayumi A FigeroaIndia2024-04-19Feltz Printing Service NEGOTIATION29Ioni Bowcher
1048David Y KolmetzIndia2024-04-26Chanay, Jeffrey A Esq UNQUALIFIED31Bernardo Dominic
1049Misaki I RulapaughIndia2024-04-05Benton, John B Jr QUALIFIED54Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin B BriddickBrazilAsiya Javayant RENEWAL
Aditya P OldroydIndiaBernardo Dominic PROPOSAL
Cody S CaldareraItalyIoni Bowcher UNQUALIFIED
Jones A OstroskyItalyBernardo Dominic RENEWAL
Rodrigues X RimJapanAnna Fali UNQUALIFIED
Arvin S NickaFranceAsiya Javayant RENEWAL
Mayumi Y MarrierFranceOnyama Limba RENEWAL
Chavez J FerenczCanadaAsiya Javayant NEGOTIATION
Juan R MaletJapanStephen Shaw QUALIFIED
Darci K OldroydRussiaStephen Shaw RENEWAL
David Y WhobreySpainXuxue Feng RENEWAL
Munro L FerenczIndiaIoni Bowcher UNQUALIFIED
Salvatore M AlbaresItalyIoni Bowcher RENEWAL
Arvin U ButtIndiaAsiya Javayant UNQUALIFIED
Silvio C OldroydAustraliaElwin Sharvill PROPOSAL
Faith Z VenereItalyStephen Shaw UNQUALIFIED
Johnson N InouyeBrazilStephen Shaw NEGOTIATION
Wickens R SergiAustraliaIvan Magalhaes PROPOSAL
Kaitlin J CampainSpainAmy Elsner PROPOSAL
Munro U FerenczSpainIvan Magalhaes NEW
Julie H BologniaBrazilElwin Sharvill UNQUALIFIED
Stacey X PoquetteRussiaXuxue Feng PROPOSAL
Maria B AmigonItalyAsiya Javayant UNQUALIFIED
Salvatore C DarakjyArgentinaBernardo Dominic QUALIFIED
Cody M RoysterAustraliaStephen Shaw RENEWAL
Emily J SlusarskiRussiaElwin Sharvill NEW
David H AlbaresGermanyElwin Sharvill PROPOSAL
Aruna D DarakjyIndiaIoni Bowcher NEGOTIATION
James U AmigonIndiaXuxue Feng QUALIFIED
Murillo S RimGermanyAmy Elsner RENEWAL
Munro S InouyeCanadaAsiya Javayant NEW
Maisha C FollerArgentinaElwin Sharvill QUALIFIED
Ashley B DoeBrazilAmy Elsner NEW
Aditya X VocelkaItalyIvan Magalhaes NEW
Adams C FlosiItalyAsiya Javayant NEGOTIATION
Sinclair Y RulapaughCanadaIoni Bowcher NEW
David C ButtArgentinaBernardo Dominic PROPOSAL
Ashley H RulapaughIndiaXuxue Feng NEGOTIATION
Jones V TollnerCanadaAsiya Javayant PROPOSAL
Smith M PoquetteUnited KingdomIvan Magalhaes NEW
Costa V MacleadCanadaIvan Magalhaes PROPOSAL
Maria A StensethBrazilIoni Bowcher UNQUALIFIED
Murillo O CaldareraRussiaElwin Sharvill UNQUALIFIED
Chavez I KolmetzArgentinaXuxue Feng NEGOTIATION
Jeanfrancois C TollnerRussiaBernardo Dominic NEW
Kadeem U AlbaresRussiaBernardo Dominic QUALIFIED
Wickens Z MorascaFranceXuxue Feng PROPOSAL
Murillo U IturbideRussiaOnyama Limba NEGOTIATION
Juan H WieserArgentinaAsiya Javayant UNQUALIFIED
David P RimAustraliaAmy Elsner QUALIFIED
Frozen Columns
Name
Munro E Perin
Salvatore E Albares
Izzy D Doe
Aika H Shinko
Aruna O Ruta
Octavia R Sergi
Leja Q Paprocki
Maria H Garufi
James Z Kolmetz
David J Figeroa
Munro I Amigon
Salvatore X Rim
Emily N Darakjy
Kadeem M Oldroyd
Cody B Gaucho
James L Slusarski
Maria N Doe
Smith I Caudy
Sinclair O Stenseth
Octavia S Poquette
Tony O Darakjy
Costa A Venere
Leon L Caldarera
Jones X Ruta
James A Flosi
Ashley C Foller
Arvin K Caldarera
Clifford N Caudy
Chavez K Albares
Aditya B Figeroa
Arvin Q Whobrey
Adams V Shinko
Stacey L Kusko
Wickens F Briddick
Munro W Schemmer
Darci A Maclead
Claire R Doe
Costa U Malet
Adams D Figeroa
Isabel P Figeroa
Adams H Bowley
Leja S Maclead
Octavia H Glick
Kaitlin A Vocelka
Maria P Iturbide
Rodrigues G Oldroyd
Munro P Bolognia
Emily P Ferencz
Costa A Saylors
Octavia B Campain
IdCountryDate
1000Spain2024-04-10
1001India2024-04-19
1002Italy2024-04-22
1003United Kingdom2024-04-18
1004Canada2024-04-09
1005Italy2024-04-16
1006Argentina2024-04-29
1007Australia2024-04-16
1008Canada2024-04-04
1009Italy2024-04-29
1010Spain2024-04-09
1011Spain2024-04-12
1012Argentina2024-04-07
1013Spain2024-04-13
1014Germany2024-04-03
1015Brazil2024-04-04
1016France2024-04-02
1017Italy2024-04-29
1018United Kingdom2024-04-29
1019Japan2024-04-30
1020Australia2024-04-17
1021Australia2024-04-07
1022Germany2024-04-11
1023Russia2024-04-05
1024Canada2024-04-06
1025Canada2024-04-07
1026Australia2024-04-21
1027Australia2024-04-13
1028Canada2024-04-26
1029United Kingdom2024-04-25
1030Brazil2024-04-27
1031Spain2024-04-01
1032Japan2024-04-28
1033Argentina2024-04-25
1034Spain2024-04-07
1035United Kingdom2024-04-27
1036Germany2024-04-03
1037Australia2024-04-04
1038India2024-04-28
1039India2024-04-07
1040Australia2024-04-02
1041Russia2024-04-26
1042United Kingdom2024-04-09
1043France2024-04-10
1044Spain2024-04-25
1045Germany2024-04-10
1046Germany2024-04-15
1047Spain2024-04-19
1048Canada2024-04-20
1049Brazil2024-04-16

On-Demand Data

NameIdCountryDate
James S Tollner1000Argentina2024-04-12
David Q Nicka1001India2024-04-03
Mayumi A Glick1002Japan2024-04-05
Sinclair B Figeroa1003Spain2024-04-14
Leja H Poquette1004Brazil2024-04-09
Julie O Morasca1005Germany2024-04-22
Murillo K Venere1006India2024-04-15
Stacey K Albares1007Argentina2024-04-27
Morrow X Wieser1008Italy2024-04-05
Alejandro E Slusarski1009Argentina2024-04-18
Jennifer Z Chui1010Canada2024-04-15
Maisha U Ferencz1011Canada2024-04-30
Cody H Albares1012Canada2024-04-05
Maisha N Caudy1013United Kingdom2024-04-25
Jeanfrancois K Poquette1014United Kingdom2024-04-01
Antonio M Saylors1015Germany2024-04-09
Silvio F Foller1016Russia2024-04-11
David R Wieser1017United Kingdom2024-04-12
Francesco C Butt1018France2024-04-11
Chavez Z Waycott1019Australia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith Z TollnerCanadaOnyama Limba NEW
Kadeem N BologniaItalyIvan Magalhaes RENEWAL
James G SaylorsUnited KingdomXuxue Feng NEGOTIATION
Mayumi B StockhamRussiaIvan Magalhaes NEW
Leja X NickaArgentinaIvan Magalhaes RENEWAL
Maria F PerinArgentinaOnyama Limba RENEWAL
Jeanfrancois R FigeroaArgentinaAsiya Javayant QUALIFIED
Emily X MorascaCanadaIoni Bowcher QUALIFIED
Chavez F PerinItalyIvan Magalhaes RENEWAL
Mujtaba Z GauchoItalyXuxue Feng PROPOSAL
Ashley E FollerFranceOnyama Limba RENEWAL
Smith D DoeItalyXuxue Feng NEW
Leja U StensethUnited KingdomBernardo Dominic QUALIFIED
Costa X MacleadItalyIvan Magalhaes QUALIFIED
Mujtaba B ShinkoFranceAsiya Javayant NEGOTIATION
Alejandro B ShinkoItalyOnyama Limba NEW
Faith O SergiIndiaBernardo Dominic PROPOSAL
Clifford V FlosiSpainAmy Elsner RENEWAL
Clifford V ChuiUnited KingdomXuxue Feng UNQUALIFIED
Morrow W NestleRussiaIvan Magalhaes NEGOTIATION
Faith Q ButtIndiaAmy Elsner NEGOTIATION
Juan F ShinkoIndiaAmy Elsner QUALIFIED
Alejandro P RoysterSpainAnna Fali QUALIFIED
David E StensethIndiaXuxue Feng NEGOTIATION
Jeanfrancois A OldroydSpainAmy Elsner RENEWAL
Alejandro M DoeAustraliaIvan Magalhaes NEGOTIATION
Morrow J NestleCanadaIvan Magalhaes NEW
Morrow W PaprockiBrazilAmy Elsner QUALIFIED
Leon D StockhamItalyAmy Elsner QUALIFIED
Ricardo X SchemmerCanadaBernardo Dominic NEGOTIATION
Adams K DoeFranceIvan Magalhaes NEW
Nicolas Z CaudySpainStephen Shaw UNQUALIFIED
Tony B KuskoUnited KingdomIvan Magalhaes QUALIFIED
Clifford T SchemmerRussiaOnyama Limba NEW
Johnson W WaycottSpainStephen Shaw RENEWAL
Murillo L WaycottRussiaAnna Fali RENEWAL
Adams R VocelkaGermanyIvan Magalhaes UNQUALIFIED
Rodrigues E FollerIndiaAmy Elsner UNQUALIFIED
Maria T KuskoJapanAmy Elsner UNQUALIFIED
Murillo J MacleadIndiaAsiya Javayant 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>