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
Murillo S CampainCanadaAsiya Javayant PROPOSAL
Maisha L VocelkaRussiaBernardo Dominic NEGOTIATION
Arvin R CaudySpainXuxue Feng UNQUALIFIED
Faith Y BologniaAustraliaBernardo Dominic UNQUALIFIED
Rodrigues C VocelkaIndiaXuxue Feng PROPOSAL
Octavia B VenereRussiaOnyama Limba RENEWAL
Arvin T BowleyCanadaAmy Elsner NEW
Francesco F RutaUnited KingdomAsiya Javayant UNQUALIFIED
Leon K AlbaresAustraliaAsiya Javayant UNQUALIFIED
Salvatore Z ShinkoSpainElwin Sharvill RENEWAL
Mujtaba T GillianFranceAsiya Javayant UNQUALIFIED
Alejandro P FlosiFranceIvan Magalhaes PROPOSAL
Jennifer J SaylorsBrazilAmy Elsner RENEWAL
Mujtaba S AmigonItalyElwin Sharvill QUALIFIED
Jeanfrancois Z MaletCanadaXuxue Feng PROPOSAL
Francesco P WieserRussiaElwin Sharvill NEGOTIATION
Tony M PoquetteIndiaStephen Shaw NEW
Ashley V FigeroaItalyOnyama Limba PROPOSAL
Salvatore M OldroydJapanBernardo Dominic QUALIFIED
Ashley N AlbaresSpainOnyama Limba QUALIFIED
Aditya C AlbaresJapanAnna Fali NEGOTIATION
Leja V MacleadArgentinaElwin Sharvill QUALIFIED
Jones O SaylorsBrazilElwin Sharvill UNQUALIFIED
Aditya K VocelkaUnited KingdomStephen Shaw NEGOTIATION
Aditya G WaycottAustraliaAnna Fali QUALIFIED
Kadeem O KolmetzAustraliaIvan Magalhaes RENEWAL
Morrow S IturbideBrazilAmy Elsner NEW
Stacey U OstroskyArgentinaIoni Bowcher NEGOTIATION
Ricardo U SergiItalyIoni Bowcher NEGOTIATION
Jones L ButtAustraliaAsiya Javayant PROPOSAL
Smith K RimItalyStephen Shaw PROPOSAL
Ricardo Q MaletCanadaBernardo Dominic QUALIFIED
Adams K AlbaresItalyAsiya Javayant UNQUALIFIED
Greenwood H GarufiGermanyIvan Magalhaes PROPOSAL
Julie M BriddickItalyStephen Shaw NEW
Izzy P MaletItalyAsiya Javayant UNQUALIFIED
Clifford A MaletItalyAmy Elsner RENEWAL
Cody O PoquetteCanadaAmy Elsner NEGOTIATION
Julie W GauchoItalyIvan Magalhaes NEW
Aruna E BriddickArgentinaStephen Shaw NEGOTIATION
Misaki F GillianItalyIvan Magalhaes UNQUALIFIED
Stacey Z GarufiIndiaXuxue Feng UNQUALIFIED
Aruna W GlickItalyIoni Bowcher QUALIFIED
Smith V NickaFranceStephen Shaw NEGOTIATION
Mujtaba N WaycottUnited KingdomOnyama Limba RENEWAL
Nicolas N KolmetzSpainIvan Magalhaes UNQUALIFIED
Nicolas I OstroskyArgentinaXuxue Feng NEW
Emily E PoquetteSpainAsiya Javayant UNQUALIFIED
Leon U AlbaresJapanIvan Magalhaes QUALIFIED
Izzy Y RulapaughFranceXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Greenwood D GauchoGermanyIvan Magalhaes NEW
Leon X GarufiRussiaAsiya Javayant UNQUALIFIED
Stacey E SaylorsUnited KingdomAsiya Javayant PROPOSAL
Mayumi P StockhamRussiaStephen Shaw RENEWAL
Alejandro Y OldroydItalyXuxue Feng QUALIFIED
Kadeem Y DilliardCanadaStephen Shaw RENEWAL
Mayumi E GauchoAustraliaXuxue Feng UNQUALIFIED
David R WieserAustraliaAnna Fali NEW
Kaitlin F CaldareraRussiaAnna Fali NEW
Juan J AmigonSpainIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon Y SchemmerSpain2024-04-12Buckley Miller Wright UNQUALIFIED9Onyama Limba
1001Nicolas H NestleRussia2024-04-22Buckley Miller Wright UNQUALIFIED51Amy Elsner
1002Isabel S AmigonArgentina2024-04-07Dorl, James J Esq QUALIFIED44Asiya Javayant
1003Silvio A PoquetteGermany2024-04-01Printing Dimensions NEGOTIATION69Onyama Limba
1004Mujtaba N SlusarskiBrazil2024-04-17Truhlar And Truhlar Attys UNQUALIFIED42Onyama Limba
1005Johnson S WieserCanada2024-04-03Chanay, Jeffrey A Esq UNQUALIFIED46Amy Elsner
1006Maisha A SaylorsArgentina2024-04-18Feltz Printing Service RENEWAL4Elwin Sharvill
1007Deepesh V RutaRussia2024-04-23Chemel, James L Cpa NEGOTIATION34Xuxue Feng
1008Wickens M ChuiJapan2024-04-03Printing Dimensions NEW6Asiya Javayant
1009Leja C ButtItaly2024-03-28Rangoni Of Florence UNQUALIFIED87Onyama Limba
1010Smith L NestleCanada2024-04-25Morlong Associates NEW75Ioni Bowcher
1011Mayumi V PaprockiBrazil2024-03-30Feiner Bros QUALIFIED51Asiya Javayant
1012Jeanfrancois D WieserJapan2024-04-17Commercial Press QUALIFIED73Elwin Sharvill
1013Stacey F RoysterGermany2024-04-11Commercial Press QUALIFIED95Asiya Javayant
1014James W WieserRussia2024-04-02Feltz Printing Service QUALIFIED22Amy Elsner
1015Munro U GillianFrance2024-04-07Chapman, Ross E Esq UNQUALIFIED86Asiya Javayant
1016Alejandro E SergiArgentina2024-04-09Rangoni Of Florence UNQUALIFIED30Bernardo Dominic
1017Leja B MorascaGermany2024-04-04Buckley Miller Wright NEW34Onyama Limba
1018Antonio C GarufiJapan2024-04-02Morlong Associates RENEWAL94Stephen Shaw
1019Aditya K NickaSpain2024-04-10Dorl, James J Esq QUALIFIED56Stephen Shaw
1020Stacey L GillianUnited Kingdom2024-04-23Morlong Associates NEW80Anna Fali
1021Maria S FerenczAustralia2024-04-16Feltz Printing Service NEGOTIATION3Amy Elsner
1022Antonio B FollerUnited Kingdom2024-04-22Feiner Bros PROPOSAL82Bernardo Dominic
1023Morrow C CampainJapan2024-04-05Commercial Press NEW55Xuxue Feng
1024Morrow V GauchoFrance2024-04-06Buckley Miller Wright NEW51Xuxue Feng
1025Jeanfrancois H BologniaAustralia2024-04-18Truhlar And Truhlar Attys UNQUALIFIED70Onyama Limba
1026Mayumi H GlickCanada2024-04-15Chemel, James L Cpa NEW95Stephen Shaw
1027Izzy R TollnerItaly2024-04-09Feltz Printing Service NEGOTIATION3Ivan Magalhaes
1028Aika V ShinkoRussia2024-04-20Feiner Bros RENEWAL75Anna Fali
1029Darci E ButtIndia2024-04-10Chapman, Ross E Esq RENEWAL13Anna Fali
1030Smith E WaycottJapan2024-04-21Rangoni Of Florence PROPOSAL67Onyama Limba
1031Silvio C RimCanada2024-04-25Feltz Printing Service NEW12Amy Elsner
1032Mayumi R TollnerJapan2024-04-16Feiner Bros QUALIFIED18Onyama Limba
1033Deepesh E ShinkoIndia2024-04-07Truhlar And Truhlar Attys RENEWAL72Ivan Magalhaes
1034Ricardo F RulapaughUnited Kingdom2024-04-10Printing Dimensions NEGOTIATION39Onyama Limba
1035Munro N ButtBrazil2024-04-10Benton, John B Jr NEW39Anna Fali
1036Ivar P OldroydIndia2024-03-31Truhlar And Truhlar Attys PROPOSAL22Onyama Limba
1037Mujtaba E FollerJapan2024-04-19Buckley Miller Wright UNQUALIFIED29Ioni Bowcher
1038Aika S SaylorsGermany2024-04-23Chemel, James L Cpa PROPOSAL71Bernardo Dominic
1039Sinclair Q GlickCanada2024-04-03King, Christopher A Esq RENEWAL37Ivan Magalhaes
1040Ivar B NestleJapan2024-03-29Feltz Printing Service UNQUALIFIED4Stephen Shaw
1041Francesco M WaycottFrance2024-04-09Dorl, James J Esq RENEWAL62Bernardo Dominic
1042Kaitlin K CaldareraAustralia2024-04-15Dorl, James J Esq NEW27Ioni Bowcher
1043James M BowleyGermany2024-04-04Benton, John B Jr RENEWAL55Elwin Sharvill
1044Sinclair V BriddickSpain2024-04-08Rousseaux, Michael Esq RENEWAL82Asiya Javayant
1045Aditya W SaylorsCanada2024-04-13Benton, John B Jr RENEWAL85Asiya Javayant
1046Aruna O AmigonAustralia2024-04-07Rousseaux, Michael Esq PROPOSAL62Ioni Bowcher
1047Greenwood P AmigonUnited Kingdom2024-04-02Rousseaux, Michael Esq UNQUALIFIED68Xuxue Feng
1048Adams H VocelkaSpain2024-04-08Feiner Bros NEW42Amy Elsner
1049Aika K StockhamIndia2024-03-31Chapman, Ross E Esq UNQUALIFIED53Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Faith I WhobreyUnited KingdomIvan Magalhaes NEW
Misaki J StensethRussiaAnna Fali RENEWAL
Maria L RutaIndiaAmy Elsner QUALIFIED
Misaki R DilliardRussiaAmy Elsner UNQUALIFIED
Adams K FollerBrazilAmy Elsner NEGOTIATION
Aruna S CampainSpainXuxue Feng QUALIFIED
Octavia V ChuiJapanXuxue Feng UNQUALIFIED
Jennifer K RimCanadaAmy Elsner QUALIFIED
Jeanfrancois G NickaSpainStephen Shaw UNQUALIFIED
Costa L ButtRussiaOnyama Limba NEW
Jennifer P WaycottBrazilElwin Sharvill UNQUALIFIED
Francesco H FigeroaFranceOnyama Limba RENEWAL
Misaki H CaudyGermanyOnyama Limba NEGOTIATION
Juan Q FlosiRussiaOnyama Limba PROPOSAL
Murillo L NestleJapanIvan Magalhaes NEW
Tony G MarrierCanadaBernardo Dominic NEW
Smith D GarufiAustraliaOnyama Limba NEGOTIATION
Cody B VenereRussiaAnna Fali QUALIFIED
Ivar U ShinkoItalyBernardo Dominic NEGOTIATION
Smith M RulapaughIndiaAnna Fali UNQUALIFIED
Ricardo G KuskoIndiaIvan Magalhaes RENEWAL
Jefferson K NickaFranceElwin Sharvill PROPOSAL
Deepesh A ButtGermanyElwin Sharvill PROPOSAL
Nicolas D ChuiSpainOnyama Limba NEGOTIATION
Greenwood G SergiBrazilIvan Magalhaes NEGOTIATION
Kadeem U ShinkoArgentinaAnna Fali RENEWAL
Arvin V RoysterItalyOnyama Limba NEGOTIATION
Ricardo Y FerenczUnited KingdomIvan Magalhaes PROPOSAL
Aruna A AlbaresIndiaAmy Elsner UNQUALIFIED
Morrow Z MorascaSpainStephen Shaw UNQUALIFIED
Juan Q KolmetzIndiaAmy Elsner RENEWAL
Salvatore E MaletBrazilAsiya Javayant UNQUALIFIED
Silvio P OstroskyJapanXuxue Feng UNQUALIFIED
Stacey U PerinSpainXuxue Feng PROPOSAL
Smith B FollerCanadaAmy Elsner QUALIFIED
Alejandro M AmigonAustraliaAmy Elsner UNQUALIFIED
Misaki T CaudyUnited KingdomElwin Sharvill UNQUALIFIED
David M ShinkoRussiaStephen Shaw RENEWAL
Kaitlin R WaycottCanadaBernardo Dominic PROPOSAL
Adams W ButtFranceBernardo Dominic QUALIFIED
Jones Q MaletItalyIvan Magalhaes NEGOTIATION
Tony H GlickSpainAmy Elsner UNQUALIFIED
Aika U DarakjyRussiaOnyama Limba NEGOTIATION
Wickens D MaletFranceElwin Sharvill NEW
Alejandro Q WaycottSpainBernardo Dominic RENEWAL
Kaitlin M VocelkaItalyAsiya Javayant NEW
Juan K InouyeArgentinaIoni Bowcher RENEWAL
Ricardo W MaletGermanyAsiya Javayant UNQUALIFIED
Leja U ChuiItalyOnyama Limba UNQUALIFIED
Costa G SergiArgentinaAmy Elsner NEGOTIATION
Frozen Columns
Name
Munro B Glick
Jeanfrancois G Garufi
Aika L Inouye
Rodrigues C Schemmer
Mayumi O Wieser
Johnson E Saylors
Wickens J Kusko
Julie B Whobrey
Mujtaba P Foller
Arvin H Venere
Alejandro L Venere
Leon J Sergi
Aruna O Perin
Sinclair M Caudy
Ricardo L Waycott
Salvatore A Shinko
Antonio P Rim
Alejandro C Wieser
Clifford J Marrier
Aditya Z Shinko
Kadeem X Poquette
Rodrigues V Malet
Smith Y Royster
Aditya G Morasca
Jeanfrancois Q Ferencz
Nicolas D Doe
Mujtaba Z Shinko
Claire X Nestle
Leon K Amigon
Maria A Waycott
Leon S Malet
Juan T Sergi
Arvin Y Doe
Isabel A Rim
Silvio C Schemmer
Greenwood J Rulapaugh
Darci F Sergi
Izzy T Poquette
Munro J Sergi
Salvatore D Slusarski
Ashley J Rim
Cody F Albares
Juan L Doe
Leja C Maclead
Emily I Nicka
Ashley U Nicka
Costa M Maclead
Julie F Perin
Maisha G Doe
Aruna P Malet
IdCountryDate
1000Brazil2024-04-13
1001Argentina2024-04-06
1002Brazil2024-04-14
1003Russia2024-03-30
1004Spain2024-04-09
1005Spain2024-03-29
1006India2024-04-21
1007Italy2024-03-28
1008Germany2024-04-25
1009Canada2024-04-18
1010United Kingdom2024-04-20
1011Spain2024-03-30
1012Argentina2024-04-02
1013Canada2024-04-02
1014Russia2024-04-02
1015India2024-04-26
1016Japan2024-04-07
1017India2024-04-26
1018Japan2024-04-02
1019Brazil2024-04-05
1020Spain2024-03-30
1021Australia2024-04-08
1022France2024-04-03
1023Italy2024-04-07
1024Japan2024-03-29
1025Japan2024-04-18
1026Italy2024-04-13
1027France2024-04-12
1028Australia2024-04-13
1029Canada2024-04-26
1030Argentina2024-04-22
1031Germany2024-04-06
1032Australia2024-04-08
1033India2024-04-18
1034Spain2024-04-15
1035Canada2024-04-16
1036United Kingdom2024-04-20
1037Brazil2024-04-24
1038Brazil2024-03-30
1039Russia2024-04-07
1040Brazil2024-04-12
1041Canada2024-04-26
1042Canada2024-04-01
1043France2024-04-05
1044Germany2024-04-19
1045Canada2024-04-14
1046Canada2024-03-30
1047France2024-04-25
1048United Kingdom2024-04-15
1049India2024-04-24

On-Demand Data

NameIdCountryDate
Tony I Rulapaugh1000France2024-04-07
Misaki J Briddick1001India2024-04-01
Kaitlin R Butt1002United Kingdom2024-03-28
Rodrigues U Rim1003Brazil2024-04-04
Emily I Venere1004Canada2024-04-21
Kadeem M Doe1005Russia2024-04-11
David M Briddick1006Italy2024-04-14
Kaitlin P Sergi1007Canada2024-04-24
Chavez M Ruta1008Italy2024-04-09
Leja G Foller1009India2024-04-11
Emily N Bowley1010India2024-04-24
Arvin U Doe1011France2024-03-30
Aika C Briddick1012France2024-04-26
Ricardo Y Paprocki1013Japan2024-04-15
Aika X Flosi1014Germany2024-04-25
Jefferson G Nestle1015Germany2024-04-10
Jones E Albares1016Russia2024-04-07
Claire R Butt1017France2024-04-04
Sinclair C Ruta1018Japan2024-04-22
David T Stockham1019Russia2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas C ChuiGermanyAsiya Javayant NEW
Arvin N GillianItalyIvan Magalhaes PROPOSAL
Johnson Q RimRussiaIvan Magalhaes RENEWAL
Johnson J CaldareraArgentinaAnna Fali NEGOTIATION
Cody J ButtBrazilAnna Fali NEGOTIATION
Emily L ButtItalyStephen Shaw NEGOTIATION
Aditya J DilliardItalyIvan Magalhaes PROPOSAL
Wickens A ShinkoBrazilElwin Sharvill NEGOTIATION
Smith W MacleadJapanIoni Bowcher RENEWAL
Morrow Y BologniaFranceOnyama Limba NEGOTIATION
Nicolas G GarufiUnited KingdomOnyama Limba UNQUALIFIED
Cody F DilliardBrazilXuxue Feng NEW
Sinclair C StockhamArgentinaBernardo Dominic UNQUALIFIED
Morrow H WieserSpainBernardo Dominic UNQUALIFIED
Jennifer V ChuiFranceXuxue Feng PROPOSAL
Aditya S PerinAustraliaAmy Elsner NEGOTIATION
Antonio C FigeroaGermanyXuxue Feng NEW
Smith G NickaGermanyAmy Elsner PROPOSAL
Aruna V WieserSpainOnyama Limba UNQUALIFIED
Aditya H WieserSpainAnna Fali NEGOTIATION
Costa B CaudyRussiaAmy Elsner NEGOTIATION
Chavez W PerinCanadaOnyama Limba PROPOSAL
Emily Q BriddickCanadaElwin Sharvill QUALIFIED
Kaitlin Y MaletAustraliaXuxue Feng PROPOSAL
Francesco A WieserFranceIvan Magalhaes PROPOSAL
Mayumi Y VenereRussiaElwin Sharvill PROPOSAL
Munro B BologniaArgentinaAmy Elsner QUALIFIED
Antonio Y PaprockiArgentinaStephen Shaw NEGOTIATION
Isabel E AlbaresIndiaBernardo Dominic PROPOSAL
Mayumi V FollerJapanAsiya Javayant NEW
Octavia V TollnerRussiaElwin Sharvill NEW
Julie W GlickUnited KingdomOnyama Limba PROPOSAL
James V SergiRussiaIoni Bowcher PROPOSAL
Leon E WhobreyUnited KingdomAsiya Javayant RENEWAL
Alejandro T SchemmerAustraliaOnyama Limba RENEWAL
Nicolas Z SaylorsCanadaBernardo Dominic PROPOSAL
Kaitlin K ShinkoUnited KingdomXuxue Feng QUALIFIED
Emily L WieserItalyIvan Magalhaes RENEWAL
Jones I NickaUnited KingdomAnna Fali RENEWAL
Aika Z RoysterFranceStephen Shaw 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>