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 J DarakjyBrazilStephen Shaw QUALIFIED
Francesco A SergiArgentinaXuxue Feng NEGOTIATION
Antonio C GlickItalyElwin Sharvill NEGOTIATION
Jefferson K RoysterJapanAnna Fali QUALIFIED
Greenwood D BriddickBrazilStephen Shaw RENEWAL
Isabel P RimSpainStephen Shaw NEGOTIATION
Adams R AmigonBrazilAmy Elsner RENEWAL
Maisha E StensethIndiaIoni Bowcher NEW
Rodrigues Q BologniaSpainAmy Elsner NEW
Darci Y WieserGermanyAnna Fali UNQUALIFIED
Deepesh B TollnerAustraliaAnna Fali UNQUALIFIED
Jennifer R KuskoArgentinaAnna Fali QUALIFIED
Greenwood B FerenczUnited KingdomIoni Bowcher NEW
Leja Q FollerArgentinaElwin Sharvill QUALIFIED
Murillo Q WaycottBrazilStephen Shaw QUALIFIED
Jennifer W FigeroaFranceStephen Shaw RENEWAL
Jeanfrancois Y CaldareraRussiaStephen Shaw PROPOSAL
Mayumi N StockhamGermanyOnyama Limba PROPOSAL
Murillo R ChuiItalyStephen Shaw NEW
Johnson Z KolmetzCanadaBernardo Dominic UNQUALIFIED
Johnson X VocelkaSpainOnyama Limba RENEWAL
Arvin B DoeItalyAmy Elsner NEGOTIATION
Julie Y PerinUnited KingdomAmy Elsner NEGOTIATION
Emily Q WhobreyArgentinaXuxue Feng NEGOTIATION
Sinclair M DilliardGermanyOnyama Limba UNQUALIFIED
Jennifer Z PerinAustraliaIvan Magalhaes QUALIFIED
Jefferson S TollnerAustraliaElwin Sharvill UNQUALIFIED
Nicolas Y SaylorsBrazilIoni Bowcher RENEWAL
Alejandro P SergiIndiaAnna Fali UNQUALIFIED
Jefferson K FlosiUnited KingdomAmy Elsner NEGOTIATION
Cody P StockhamJapanStephen Shaw NEGOTIATION
Aika P MaletCanadaBernardo Dominic UNQUALIFIED
Cody I GauchoAustraliaXuxue Feng RENEWAL
Jones R ChuiFranceIoni Bowcher NEW
Juan Y OstroskyAustraliaOnyama Limba PROPOSAL
Jeanfrancois K FigeroaIndiaOnyama Limba PROPOSAL
Greenwood T NestleGermanyAmy Elsner NEW
Emily Z WieserItalyAsiya Javayant PROPOSAL
Ivar Z GarufiBrazilAmy Elsner PROPOSAL
Francesco U CaudyArgentinaAsiya Javayant NEW
Aika Z NestleJapanAnna Fali UNQUALIFIED
Kadeem K RutaRussiaAnna Fali PROPOSAL
Maria I NestleSpainOnyama Limba UNQUALIFIED
Morrow P SlusarskiGermanyIoni Bowcher UNQUALIFIED
Maisha H WieserUnited KingdomAnna Fali UNQUALIFIED
Julie O ChuiFranceAnna Fali QUALIFIED
Misaki S FigeroaAustraliaIoni Bowcher RENEWAL
Mujtaba E GlickUnited KingdomIoni Bowcher UNQUALIFIED
Salvatore E DoeSpainOnyama Limba UNQUALIFIED
Kadeem Q SaylorsSpainIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Jennifer S GillianIndiaXuxue Feng UNQUALIFIED
Faith X RimIndiaXuxue Feng RENEWAL
Silvio U RoysterArgentinaIvan Magalhaes NEGOTIATION
Deepesh T BriddickBrazilAnna Fali UNQUALIFIED
Ivar C TollnerBrazilIvan Magalhaes RENEWAL
Munro X BowleyFranceIvan Magalhaes UNQUALIFIED
Isabel J CaldareraJapanAmy Elsner PROPOSAL
Misaki B RutaCanadaAsiya Javayant RENEWAL
Jefferson P CaldareraUnited KingdomIvan Magalhaes NEW
Antonio R DilliardUnited KingdomElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David S CaldareraAustralia2024-05-06Rangoni Of Florence PROPOSAL63Onyama Limba
1001Tony X CaudyCanada2024-04-27Chapman, Ross E Esq UNQUALIFIED75Stephen Shaw
1002Leon X RutaAustralia2024-04-20Morlong Associates NEGOTIATION43Asiya Javayant
1003Darci L PoquetteGermany2024-04-29Feltz Printing Service RENEWAL64Anna Fali
1004Morrow O VocelkaGermany2024-04-21Truhlar And Truhlar Attys PROPOSAL80Onyama Limba
1005Sinclair I OstroskyArgentina2024-04-15Benton, John B Jr UNQUALIFIED85Bernardo Dominic
1006Kadeem C BriddickJapan2024-04-10Commercial Press NEGOTIATION17Asiya Javayant
1007Emily M FollerItaly2024-04-14Rousseaux, Michael Esq UNQUALIFIED55Amy Elsner
1008James A DarakjyAustralia2024-04-27Chapman, Ross E Esq RENEWAL81Xuxue Feng
1009Morrow V BriddickRussia2024-04-17Dorl, James J Esq RENEWAL76Anna Fali
1010Kadeem G AlbaresBrazil2024-04-18Dorl, James J Esq QUALIFIED4Elwin Sharvill
1011Leon M StockhamUnited Kingdom2024-05-01Feiner Bros NEGOTIATION69Bernardo Dominic
1012Morrow W VocelkaSpain2024-04-13Chapman, Ross E Esq UNQUALIFIED2Amy Elsner
1013Aditya S MarrierRussia2024-05-01Buckley Miller Wright PROPOSAL97Xuxue Feng
1014Jeanfrancois W MorascaItaly2024-04-18Truhlar And Truhlar Attys PROPOSAL48Ioni Bowcher
1015Alejandro U OldroydUnited Kingdom2024-04-24Rangoni Of Florence RENEWAL59Xuxue Feng
1016James J MarrierUnited Kingdom2024-04-17Feltz Printing Service NEW68Anna Fali
1017Francesco W StensethBrazil2024-04-18Commercial Press RENEWAL35Bernardo Dominic
1018Antonio U InouyeRussia2024-04-25Chapman, Ross E Esq UNQUALIFIED0Ivan Magalhaes
1019Leon U PerinJapan2024-04-15Feltz Printing Service NEW80Ioni Bowcher
1020Salvatore R BologniaItaly2024-04-16Truhlar And Truhlar Attys PROPOSAL75Bernardo Dominic
1021Leja L SergiArgentina2024-05-02Chanay, Jeffrey A Esq QUALIFIED42Amy Elsner
1022Wickens E GlickJapan2024-04-28Rousseaux, Michael Esq QUALIFIED2Asiya Javayant
1023Emily N MaletArgentina2024-04-16King, Christopher A Esq RENEWAL99Onyama Limba
1024Leon P SaylorsCanada2024-04-23Chapman, Ross E Esq QUALIFIED74Ioni Bowcher
1025Jeanfrancois G BriddickRussia2024-04-17Chapman, Ross E Esq RENEWAL93Ivan Magalhaes
1026Wickens F StensethArgentina2024-04-23Feiner Bros RENEWAL0Onyama Limba
1027Maria A MorascaCanada2024-04-07Printing Dimensions NEW10Amy Elsner
1028Aruna J SaylorsBrazil2024-04-27Chemel, James L Cpa QUALIFIED51Elwin Sharvill
1029Clifford F GlickCanada2024-05-03Feiner Bros NEGOTIATION69Stephen Shaw
1030Aika J MacleadItaly2024-04-21Morlong Associates RENEWAL36Stephen Shaw
1031Aruna L WaycottJapan2024-05-05Rousseaux, Michael Esq NEW11Onyama Limba
1032James S OstroskySpain2024-04-15Morlong Associates UNQUALIFIED49Ivan Magalhaes
1033Salvatore C PaprockiRussia2024-05-03Truhlar And Truhlar Attys PROPOSAL52Anna Fali
1034Arvin E RimItaly2024-05-02Chanay, Jeffrey A Esq NEW37Elwin Sharvill
1035Jefferson O ShinkoSpain2024-04-17Morlong Associates RENEWAL89Asiya Javayant
1036Nicolas V BologniaItaly2024-04-08Dorl, James J Esq RENEWAL46Asiya Javayant
1037Smith Q OldroydArgentina2024-04-24Chemel, James L Cpa NEW5Stephen Shaw
1038Izzy C KolmetzRussia2024-04-10Rousseaux, Michael Esq NEW50Stephen Shaw
1039Costa L GillianRussia2024-04-19Truhlar And Truhlar Attys NEGOTIATION21Stephen Shaw
1040James V DoeGermany2024-05-01Commercial Press QUALIFIED11Stephen Shaw
1041Aika S GauchoSpain2024-04-16Benton, John B Jr RENEWAL39Xuxue Feng
1042David T WieserUnited Kingdom2024-04-28Chapman, Ross E Esq RENEWAL42Asiya Javayant
1043Mayumi T MarrierGermany2024-04-14Benton, John B Jr RENEWAL8Ivan Magalhaes
1044Aika R MaletAustralia2024-04-12Chapman, Ross E Esq PROPOSAL58Anna Fali
1045Jeanfrancois F RoysterRussia2024-04-24Chapman, Ross E Esq UNQUALIFIED98Anna Fali
1046Leja F KuskoAustralia2024-04-09Rangoni Of Florence UNQUALIFIED43Ioni Bowcher
1047Silvio A NickaFrance2024-04-17Printing Dimensions NEGOTIATION65Onyama Limba
1048David J FollerIndia2024-05-06King, Christopher A Esq RENEWAL92Ivan Magalhaes
1049Aika J OstroskyFrance2024-04-29Rangoni Of Florence UNQUALIFIED86Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Aika D BowleyArgentinaIvan Magalhaes RENEWAL
Deepesh V FigeroaRussiaElwin Sharvill UNQUALIFIED
Mayumi Q GauchoIndiaBernardo Dominic PROPOSAL
Tony K FerenczBrazilAmy Elsner NEW
Ashley S MaletSpainStephen Shaw UNQUALIFIED
Smith P RimArgentinaElwin Sharvill QUALIFIED
Tony X GarufiItalyOnyama Limba UNQUALIFIED
Wickens I MorascaCanadaIvan Magalhaes NEGOTIATION
Mayumi H RulapaughFranceAnna Fali NEGOTIATION
Claire D BriddickJapanIoni Bowcher PROPOSAL
Mujtaba X RoysterCanadaBernardo Dominic NEGOTIATION
Mujtaba I IturbideCanadaAmy Elsner NEW
Kadeem V FigeroaFranceIoni Bowcher NEW
Ivar M PerinJapanStephen Shaw NEW
Deepesh R GarufiBrazilXuxue Feng UNQUALIFIED
Juan R MarrierRussiaAsiya Javayant QUALIFIED
Jennifer J SergiSpainAsiya Javayant NEGOTIATION
Tony G AmigonIndiaAnna Fali PROPOSAL
Smith G NickaJapanAsiya Javayant RENEWAL
Kadeem R StockhamUnited KingdomElwin Sharvill NEW
Juan R RutaAustraliaIoni Bowcher NEGOTIATION
Jones X StensethArgentinaBernardo Dominic QUALIFIED
Claire U GarufiFranceIoni Bowcher RENEWAL
Ivar U AmigonFranceIvan Magalhaes NEW
Leja X ChuiFranceXuxue Feng NEGOTIATION
James A SergiUnited KingdomAnna Fali QUALIFIED
Deepesh P FigeroaUnited KingdomIvan Magalhaes NEW
Silvio M NickaFranceIoni Bowcher QUALIFIED
David T MacleadFranceOnyama Limba QUALIFIED
Smith T AmigonFranceIoni Bowcher QUALIFIED
Mujtaba R InouyeSpainAnna Fali QUALIFIED
Jeanfrancois I ShinkoUnited KingdomBernardo Dominic NEGOTIATION
Ivar X CampainSpainAmy Elsner QUALIFIED
Costa E VenereRussiaElwin Sharvill RENEWAL
Aruna E DarakjyIndiaIvan Magalhaes UNQUALIFIED
Aika D CaldareraBrazilOnyama Limba NEGOTIATION
Munro U MaletAustraliaAnna Fali NEGOTIATION
Costa S MaletIndiaAnna Fali RENEWAL
Kaitlin X DarakjyJapanAsiya Javayant UNQUALIFIED
James G SchemmerSpainAsiya Javayant PROPOSAL
Chavez T RimArgentinaAmy Elsner NEW
Clifford X MorascaRussiaStephen Shaw UNQUALIFIED
Murillo H DilliardFranceIoni Bowcher QUALIFIED
Johnson M VocelkaItalyStephen Shaw NEW
Aika E BriddickBrazilElwin Sharvill NEW
Mujtaba J ShinkoAustraliaOnyama Limba RENEWAL
Murillo Q AmigonItalyOnyama Limba PROPOSAL
Stacey U RutaArgentinaBernardo Dominic QUALIFIED
Deepesh X WieserJapanOnyama Limba NEGOTIATION
Mayumi S DilliardFranceElwin Sharvill RENEWAL
Frozen Columns
Name
Francesco P Malet
Munro M Bowley
Leja M Figeroa
Tony Q Ruta
Stacey U Maclead
Stacey R Gaucho
Smith E Schemmer
Antonio B Foller
Johnson X Rulapaugh
Mayumi H Royster
Aditya Y Whobrey
Adams K Wieser
Silvio A Nestle
Deepesh O Figeroa
Aditya B Tollner
Rodrigues T Waycott
Murillo G Rulapaugh
Octavia D Ostrosky
Johnson X Caldarera
Morrow U Maclead
Smith F Poquette
Emily K Albares
Kaitlin T Saylors
Cody Q Chui
Julie W Stockham
Ricardo V Gaucho
Ivar Q Venere
Cody J Amigon
Jennifer A Slusarski
Greenwood F Bolognia
Leja Z Marrier
Ricardo P Perin
Kaitlin X Slusarski
Aruna N Paprocki
Clifford R Waycott
Munro U Kolmetz
Ivar H Iturbide
Aditya F Inouye
Jennifer K Poquette
Aruna B Caudy
Cody O Foller
Tony P Wieser
Maisha F Iturbide
Greenwood J Tollner
Adams O Garufi
Jeanfrancois C Bolognia
Jefferson H Doe
Tony Y Kolmetz
Faith V Ruta
Ashley Q Gaucho
IdCountryDate
1000Argentina2024-04-08
1001Argentina2024-04-15
1002Italy2024-05-02
1003United Kingdom2024-04-07
1004Brazil2024-04-27
1005Italy2024-04-07
1006Canada2024-04-16
1007India2024-04-27
1008France2024-04-13
1009India2024-05-04
1010Spain2024-05-01
1011Germany2024-04-27
1012Spain2024-04-08
1013Japan2024-04-10
1014Spain2024-04-23
1015United Kingdom2024-04-16
1016Argentina2024-04-25
1017Brazil2024-04-15
1018Argentina2024-05-02
1019Canada2024-04-16
1020Argentina2024-04-08
1021United Kingdom2024-04-26
1022Australia2024-04-10
1023France2024-04-11
1024Argentina2024-05-02
1025Russia2024-04-08
1026Spain2024-04-28
1027Italy2024-04-29
1028Japan2024-04-08
1029United Kingdom2024-04-11
1030Russia2024-04-10
1031Japan2024-04-13
1032Japan2024-04-17
1033Germany2024-05-01
1034Brazil2024-04-26
1035Japan2024-05-01
1036Germany2024-04-23
1037Canada2024-04-15
1038Argentina2024-04-15
1039United Kingdom2024-04-15
1040Spain2024-04-12
1041Argentina2024-04-11
1042Russia2024-04-30
1043Argentina2024-04-11
1044Japan2024-04-25
1045Brazil2024-04-29
1046France2024-04-27
1047Australia2024-04-22
1048Brazil2024-04-15
1049Russia2024-04-17

On-Demand Data

NameIdCountryDate
Antonio H Kolmetz1000Japan2024-04-15
Smith N Morasca1001Japan2024-04-11
Adams I Flosi1002Germany2024-04-12
Juan Z Darakjy1003Germany2024-04-27
Costa K Darakjy1004India2024-05-04
Greenwood J Caudy1005Argentina2024-04-30
Antonio R Dilliard1006Russia2024-04-15
Chavez X Glick1007India2024-05-01
Ivar H Rim1008Spain2024-04-24
Stacey J Inouye1009Germany2024-04-21
Salvatore C Darakjy1010Russia2024-04-14
Clifford C Nicka1011Italy2024-04-07
Aditya K Royster1012United Kingdom2024-04-24
Izzy Q Stockham1013Canada2024-05-06
Silvio C Nicka1014Germany2024-04-13
Cody T Rim1015Brazil2024-05-01
Tony H Glick1016Spain2024-04-23
Deepesh W Flosi1017Russia2024-05-06
Darci C Paprocki1018Brazil2024-04-11
Stacey K Tollner1019Russia2024-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon A StockhamUnited KingdomBernardo Dominic QUALIFIED
David G RulapaughSpainElwin Sharvill PROPOSAL
Claire R VenereRussiaBernardo Dominic UNQUALIFIED
Greenwood V VocelkaJapanStephen Shaw RENEWAL
Maria J PerinGermanyXuxue Feng QUALIFIED
Costa N NestleBrazilAmy Elsner RENEWAL
Aruna O RoysterIndiaIvan Magalhaes UNQUALIFIED
Murillo I AlbaresIndiaElwin Sharvill NEGOTIATION
Aruna O DarakjyBrazilXuxue Feng NEW
Francesco C ButtArgentinaIoni Bowcher NEW
Aditya I NestleArgentinaIvan Magalhaes NEW
Leja O NickaUnited KingdomAmy Elsner NEW
Salvatore C TollnerUnited KingdomBernardo Dominic NEGOTIATION
Kaitlin T PoquetteAustraliaIoni Bowcher NEGOTIATION
Arvin M VenereArgentinaAmy Elsner UNQUALIFIED
David W ChuiBrazilIvan Magalhaes NEW
Octavia B RimArgentinaBernardo Dominic RENEWAL
Costa I VenereCanadaOnyama Limba QUALIFIED
Aditya Y FerenczCanadaElwin Sharvill NEGOTIATION
Tony M ChuiGermanyAnna Fali QUALIFIED
Costa L RimCanadaBernardo Dominic RENEWAL
Jones H KolmetzAustraliaElwin Sharvill NEGOTIATION
Clifford J CampainUnited KingdomBernardo Dominic PROPOSAL
Alejandro A GarufiBrazilOnyama Limba PROPOSAL
Sinclair Y RutaFranceIvan Magalhaes UNQUALIFIED
Julie W OstroskyIndiaIvan Magalhaes QUALIFIED
Stacey J SchemmerSpainAnna Fali NEW
Antonio U AmigonAustraliaAsiya Javayant NEW
Nicolas G BologniaUnited KingdomBernardo Dominic QUALIFIED
Costa S OldroydUnited KingdomAsiya Javayant NEGOTIATION
Alejandro I VocelkaAustraliaStephen Shaw RENEWAL
Francesco X KuskoItalyAsiya Javayant UNQUALIFIED
Leon T PaprockiBrazilStephen Shaw RENEWAL
Jones M SaylorsUnited KingdomXuxue Feng QUALIFIED
Chavez Z PoquetteAustraliaXuxue Feng NEW
Tony H DoeRussiaOnyama Limba RENEWAL
Clifford F DarakjySpainAsiya Javayant RENEWAL
Alejandro I AlbaresUnited KingdomBernardo Dominic QUALIFIED
Mayumi C FerenczRussiaAmy Elsner RENEWAL
Jefferson I SergiArgentinaAsiya Javayant PROPOSAL

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