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
Greenwood P WhobreyIndiaIoni Bowcher RENEWAL
Nicolas H OstroskyIndiaStephen Shaw NEGOTIATION
Rodrigues M CampainSpainAnna Fali QUALIFIED
Aditya I TollnerRussiaAnna Fali NEGOTIATION
Ivar A WhobreyFranceIoni Bowcher NEW
Smith A SchemmerSpainElwin Sharvill RENEWAL
Chavez C ShinkoJapanIoni Bowcher PROPOSAL
Sinclair W DoeCanadaAnna Fali RENEWAL
Antonio E KolmetzBrazilOnyama Limba RENEWAL
Darci E OstroskyFranceAnna Fali UNQUALIFIED
Murillo E AlbaresAustraliaXuxue Feng NEGOTIATION
Julie S NestleArgentinaIvan Magalhaes QUALIFIED
Munro X PoquetteBrazilXuxue Feng NEGOTIATION
Cody Q CaldareraItalyIoni Bowcher PROPOSAL
Leja V SaylorsIndiaIvan Magalhaes NEW
Emily N FlosiRussiaBernardo Dominic PROPOSAL
Ivar N MorascaJapanIvan Magalhaes RENEWAL
Ivar M CaudyUnited KingdomIoni Bowcher PROPOSAL
Alejandro M GauchoFranceXuxue Feng QUALIFIED
Aditya Y CampainUnited KingdomIvan Magalhaes UNQUALIFIED
Chavez A GlickArgentinaOnyama Limba QUALIFIED
Octavia W KolmetzBrazilAmy Elsner NEW
Antonio F SlusarskiRussiaIoni Bowcher RENEWAL
Aika V MacleadUnited KingdomElwin Sharvill PROPOSAL
Faith X RimItalyAsiya Javayant NEGOTIATION
Kaitlin I WhobreyAustraliaAsiya Javayant QUALIFIED
Isabel L NickaCanadaIvan Magalhaes RENEWAL
Jones R WhobreyArgentinaXuxue Feng UNQUALIFIED
Maria D RulapaughRussiaAnna Fali UNQUALIFIED
Aika C KolmetzBrazilAmy Elsner NEW
Nicolas X VenereCanadaIoni Bowcher QUALIFIED
James G GlickAustraliaStephen Shaw PROPOSAL
Chavez K WieserGermanyAmy Elsner NEW
Stacey U GarufiJapanAnna Fali QUALIFIED
Nicolas Y WhobreySpainAmy Elsner QUALIFIED
Antonio N PoquetteArgentinaIoni Bowcher UNQUALIFIED
Rodrigues U ShinkoSpainOnyama Limba RENEWAL
Jones T OstroskySpainOnyama Limba NEGOTIATION
Darci V RutaAustraliaStephen Shaw UNQUALIFIED
Wickens H SchemmerCanadaOnyama Limba QUALIFIED
Deepesh P WhobreySpainElwin Sharvill NEGOTIATION
Francesco D NestleCanadaAnna Fali NEW
Darci J BologniaUnited KingdomAsiya Javayant RENEWAL
Cody G SlusarskiAustraliaBernardo Dominic NEW
Chavez J BriddickJapanAsiya Javayant PROPOSAL
Cody B WieserAustraliaElwin Sharvill QUALIFIED
Mujtaba C MaletItalyBernardo Dominic QUALIFIED
Jefferson Q RutaFranceXuxue Feng RENEWAL
Arvin N DilliardArgentinaAsiya Javayant PROPOSAL
Deepesh N MaletBrazilXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
James Y KolmetzBrazilStephen Shaw NEW
Rodrigues I CampainGermanyStephen Shaw RENEWAL
Francesco O FigeroaSpainStephen Shaw NEW
Murillo M MarrierFranceBernardo Dominic NEGOTIATION
Mujtaba F FigeroaAustraliaAsiya Javayant NEGOTIATION
Maria L AlbaresBrazilAsiya Javayant NEW
Salvatore V StockhamJapanOnyama Limba NEGOTIATION
Morrow S MaletUnited KingdomXuxue Feng QUALIFIED
Cody Y WaycottItalyAsiya Javayant RENEWAL
Ricardo Q OldroydItalyIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey L FollerAustralia2024-04-30King, Christopher A Esq PROPOSAL20Bernardo Dominic
1001Antonio T GauchoFrance2024-04-24Printing Dimensions UNQUALIFIED28Asiya Javayant
1002Juan L IturbideArgentina2024-04-30Feiner Bros NEW6Xuxue Feng
1003Leon B WieserBrazil2024-04-20Morlong Associates RENEWAL54Ivan Magalhaes
1004Aditya G CaldareraRussia2024-05-16Dorl, James J Esq NEW49Ivan Magalhaes
1005Claire Y IturbideJapan2024-05-08Truhlar And Truhlar Attys NEGOTIATION85Bernardo Dominic
1006Tony M OstroskyJapan2024-04-22Feltz Printing Service RENEWAL97Elwin Sharvill
1007Silvio G GlickUnited Kingdom2024-05-01Feltz Printing Service NEGOTIATION27Ioni Bowcher
1008Aditya I FlosiUnited Kingdom2024-05-09Buckley Miller Wright NEW38Stephen Shaw
1009Jefferson L OldroydAustralia2024-05-14Rousseaux, Michael Esq RENEWAL27Anna Fali
1010Costa C GauchoGermany2024-04-29Buckley Miller Wright PROPOSAL0Asiya Javayant
1011Stacey P ButtUnited Kingdom2024-04-30Buckley Miller Wright RENEWAL73Asiya Javayant
1012Darci O StockhamFrance2024-05-02Buckley Miller Wright UNQUALIFIED7Asiya Javayant
1013Tony X AlbaresAustralia2024-05-11Morlong Associates UNQUALIFIED95Amy Elsner
1014Wickens N VenereIndia2024-05-06Feltz Printing Service UNQUALIFIED76Elwin Sharvill
1015Julie V GillianRussia2024-05-10Truhlar And Truhlar Attys NEW26Onyama Limba
1016Arvin Y DilliardFrance2024-04-29Feiner Bros QUALIFIED95Ioni Bowcher
1017Darci O StockhamCanada2024-04-28Truhlar And Truhlar Attys UNQUALIFIED88Ioni Bowcher
1018Mujtaba O FerenczIndia2024-04-28King, Christopher A Esq NEW42Onyama Limba
1019Kadeem D FigeroaGermany2024-04-24Chanay, Jeffrey A Esq PROPOSAL35Xuxue Feng
1020Aditya T SergiSpain2024-05-09Chanay, Jeffrey A Esq PROPOSAL82Ioni Bowcher
1021Costa S ShinkoFrance2024-05-12Dorl, James J Esq QUALIFIED39Xuxue Feng
1022Stacey M FollerAustralia2024-05-07Feiner Bros RENEWAL71Ivan Magalhaes
1023Mayumi Q WieserCanada2024-04-24Rousseaux, Michael Esq NEGOTIATION47Onyama Limba
1024Faith L NickaJapan2024-04-20Chanay, Jeffrey A Esq RENEWAL10Ivan Magalhaes
1025Ivar O KuskoCanada2024-05-01Truhlar And Truhlar Attys UNQUALIFIED67Asiya Javayant
1026Jones G StockhamFrance2024-05-13Chapman, Ross E Esq NEGOTIATION48Xuxue Feng
1027Kaitlin W ButtRussia2024-05-10Feltz Printing Service RENEWAL29Ivan Magalhaes
1028Mayumi H StensethJapan2024-05-11Chanay, Jeffrey A Esq NEW30Elwin Sharvill
1029Cody C BologniaFrance2024-04-20Morlong Associates NEGOTIATION51Onyama Limba
1030Octavia L RimJapan2024-05-08King, Christopher A Esq PROPOSAL28Elwin Sharvill
1031Julie X MacleadUnited Kingdom2024-04-21Dorl, James J Esq QUALIFIED2Ioni Bowcher
1032Alejandro F SaylorsBrazil2024-05-15Printing Dimensions NEW60Xuxue Feng
1033Claire L VenereFrance2024-04-23Chapman, Ross E Esq PROPOSAL85Ioni Bowcher
1034Kadeem K PaprockiItaly2024-05-02Rangoni Of Florence QUALIFIED48Ioni Bowcher
1035James M BologniaArgentina2024-04-21Commercial Press PROPOSAL62Stephen Shaw
1036Aditya W VocelkaGermany2024-05-19Chapman, Ross E Esq QUALIFIED40Onyama Limba
1037Greenwood L FlosiGermany2024-05-12Chanay, Jeffrey A Esq NEW71Stephen Shaw
1038Silvio F GlickArgentina2024-04-28Chanay, Jeffrey A Esq NEGOTIATION55Elwin Sharvill
1039Deepesh P RutaIndia2024-04-21Rangoni Of Florence NEGOTIATION93Elwin Sharvill
1040Johnson H GlickFrance2024-05-19Morlong Associates NEW89Bernardo Dominic
1041Claire R TollnerGermany2024-05-07King, Christopher A Esq PROPOSAL69Amy Elsner
1042Kadeem Y ChuiArgentina2024-05-09Truhlar And Truhlar Attys PROPOSAL66Stephen Shaw
1043Izzy P VocelkaFrance2024-05-01Rangoni Of Florence NEGOTIATION47Asiya Javayant
1044Johnson C GillianArgentina2024-04-29Chanay, Jeffrey A Esq PROPOSAL75Amy Elsner
1045Rodrigues N FigeroaItaly2024-04-21Rousseaux, Michael Esq NEGOTIATION64Bernardo Dominic
1046Stacey Q PerinAustralia2024-04-23Feiner Bros PROPOSAL40Amy Elsner
1047James A ShinkoSpain2024-04-25King, Christopher A Esq QUALIFIED32Asiya Javayant
1048Maisha V ButtGermany2024-05-10King, Christopher A Esq QUALIFIED4Onyama Limba
1049Aika Z RutaRussia2024-05-13Chemel, James L Cpa NEGOTIATION6Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Francesco O BowleyItalyOnyama Limba QUALIFIED
Claire P SlusarskiSpainAnna Fali RENEWAL
Costa J StensethAustraliaIoni Bowcher NEW
Juan L RimUnited KingdomOnyama Limba UNQUALIFIED
Wickens I MorascaRussiaIoni Bowcher QUALIFIED
Claire D NickaBrazilAsiya Javayant UNQUALIFIED
Nicolas G WaycottUnited KingdomIvan Magalhaes NEW
Deepesh H ChuiFranceOnyama Limba RENEWAL
Aditya Y NestleAustraliaStephen Shaw RENEWAL
Adams Q FerenczFranceBernardo Dominic UNQUALIFIED
Johnson X MorascaCanadaStephen Shaw NEW
Alejandro S ButtArgentinaOnyama Limba RENEWAL
Julie H IturbideItalyBernardo Dominic NEGOTIATION
Clifford P MaletUnited KingdomAmy Elsner QUALIFIED
Sinclair I AmigonBrazilOnyama Limba NEGOTIATION
Mayumi P RimItalyElwin Sharvill NEW
Aditya N PerinArgentinaBernardo Dominic QUALIFIED
Emily G SaylorsItalyIvan Magalhaes PROPOSAL
Costa G RoysterUnited KingdomIvan Magalhaes NEW
Emily Z SlusarskiUnited KingdomXuxue Feng NEGOTIATION
Francesco A SaylorsItalyStephen Shaw QUALIFIED
Jeanfrancois W SchemmerSpainAmy Elsner UNQUALIFIED
David C MaletFranceStephen Shaw NEGOTIATION
Costa J PerinItalyAnna Fali NEW
Izzy M MacleadCanadaElwin Sharvill PROPOSAL
Munro O CaldareraItalyBernardo Dominic UNQUALIFIED
Jennifer V GauchoSpainAnna Fali UNQUALIFIED
Aruna K PerinGermanyXuxue Feng PROPOSAL
Juan B VenereFranceBernardo Dominic PROPOSAL
Jennifer D VocelkaGermanyElwin Sharvill RENEWAL
Octavia C VocelkaGermanyOnyama Limba RENEWAL
Maisha U RoysterAustraliaXuxue Feng UNQUALIFIED
Jeanfrancois C MacleadSpainIoni Bowcher NEGOTIATION
Antonio R AlbaresBrazilIoni Bowcher QUALIFIED
Kaitlin H NestleItalyStephen Shaw QUALIFIED
Julie F FlosiIndiaIvan Magalhaes NEW
Tony R GillianUnited KingdomElwin Sharvill NEGOTIATION
Munro J AlbaresArgentinaElwin Sharvill RENEWAL
Kaitlin R BowleyIndiaXuxue Feng RENEWAL
Stacey V MorascaItalyBernardo Dominic QUALIFIED
Rodrigues N RulapaughCanadaAnna Fali NEGOTIATION
Murillo P RulapaughArgentinaAmy Elsner RENEWAL
Clifford Y NickaFranceAmy Elsner QUALIFIED
Juan A FerenczBrazilIvan Magalhaes RENEWAL
David A WhobreyFranceElwin Sharvill QUALIFIED
Jones P GlickBrazilIoni Bowcher PROPOSAL
Ashley U WaycottGermanyAsiya Javayant UNQUALIFIED
Aruna B ShinkoArgentinaBernardo Dominic NEGOTIATION
Nicolas U KolmetzBrazilIvan Magalhaes PROPOSAL
Stacey V GarufiArgentinaAnna Fali NEW
Frozen Columns
Name
Izzy K Perin
Mujtaba Z Chui
Sinclair H Shinko
Salvatore Q Saylors
Chavez U Saylors
Faith Z Rulapaugh
Ricardo V Paprocki
Misaki I Ruta
Jefferson Y Chui
Jennifer B Dilliard
Wickens T Perin
Deepesh F Nestle
Jennifer X Saylors
Deepesh X Campain
Morrow Q Caudy
Jefferson W Stenseth
David H Perin
Jefferson A Caldarera
Costa L Kolmetz
Johnson L Albares
David K Figeroa
Wickens H Shinko
Arvin M Amigon
Leja Y Rim
Francesco H Saylors
Arvin L Doe
Jones R Oldroyd
Jennifer K Butt
Leja S Tollner
Arvin J Vocelka
Adams K Royster
Deepesh X Malet
Costa R Paprocki
Kaitlin H Caldarera
Rodrigues A Amigon
Emily K Iturbide
Juan E Gaucho
Alejandro R Doe
Emily Z Vocelka
Clifford U Royster
Jefferson H Caldarera
Munro U Paprocki
Francesco H Tollner
Claire Z Glick
Aditya Y Campain
Mayumi U Inouye
Greenwood X Malet
Misaki H Albares
Deepesh S Garufi
Octavia W Whobrey
IdCountryDate
1000Germany2024-05-16
1001Brazil2024-04-25
1002Italy2024-05-01
1003United Kingdom2024-05-05
1004United Kingdom2024-05-12
1005Germany2024-04-26
1006Japan2024-04-23
1007Germany2024-05-11
1008Brazil2024-05-19
1009Brazil2024-04-28
1010Canada2024-05-11
1011India2024-05-11
1012Argentina2024-05-03
1013Brazil2024-04-22
1014United Kingdom2024-05-10
1015United Kingdom2024-04-23
1016Argentina2024-05-18
1017Russia2024-04-29
1018India2024-04-20
1019United Kingdom2024-05-12
1020Russia2024-05-04
1021India2024-05-18
1022Canada2024-05-17
1023Japan2024-05-19
1024Canada2024-04-24
1025France2024-05-03
1026Japan2024-05-13
1027Russia2024-05-11
1028France2024-05-15
1029Japan2024-05-10
1030France2024-05-14
1031Germany2024-05-07
1032Spain2024-04-20
1033Germany2024-05-10
1034Australia2024-04-26
1035Argentina2024-05-08
1036Germany2024-04-25
1037United Kingdom2024-04-26
1038Japan2024-04-22
1039Japan2024-05-16
1040France2024-05-18
1041Japan2024-04-27
1042Germany2024-05-01
1043Brazil2024-04-27
1044Brazil2024-05-10
1045Italy2024-05-16
1046Argentina2024-04-24
1047Argentina2024-04-28
1048Italy2024-04-20
1049Japan2024-04-28

On-Demand Data

NameIdCountryDate
Clifford L Malet1000Canada2024-05-07
Jefferson S Campain1001Spain2024-04-25
Leja F Rim1002Australia2024-05-12
Wickens N Campain1003Japan2024-04-24
Chavez Z Vocelka1004Russia2024-05-19
Claire X Glick1005Canada2024-05-07
Cody G Morasca1006Canada2024-04-28
Juan G Wieser1007Russia2024-05-05
Izzy Z Foller1008France2024-04-30
Maisha O Figeroa1009Brazil2024-04-28
Faith E Marrier1010United Kingdom2024-04-27
Aruna H Slusarski1011Argentina2024-05-17
Antonio C Poquette1012India2024-04-20
Faith Z Darakjy1013Spain2024-05-10
Adams I Bolognia1014India2024-05-11
Maisha B Wieser1015Argentina2024-05-18
Costa Q Slusarski1016Italy2024-05-08
Deepesh C Saylors1017Spain2024-05-14
Claire M Flosi1018Argentina2024-05-02
Claire V Malet1019Australia2024-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams U MacleadItalyAsiya Javayant NEW
Faith H SaylorsBrazilAnna Fali QUALIFIED
Octavia Z TollnerCanadaBernardo Dominic RENEWAL
Salvatore J GauchoRussiaIoni Bowcher PROPOSAL
David P RutaFranceIvan Magalhaes NEGOTIATION
Kadeem S WhobreyGermanyIoni Bowcher UNQUALIFIED
Faith D DoeIndiaXuxue Feng RENEWAL
Rodrigues E DilliardArgentinaAmy Elsner QUALIFIED
Stacey T SaylorsGermanyAmy Elsner NEGOTIATION
Rodrigues X NestleUnited KingdomStephen Shaw PROPOSAL
Mujtaba Z MorascaUnited KingdomStephen Shaw QUALIFIED
Kaitlin W ChuiGermanyAmy Elsner PROPOSAL
Morrow R IturbideRussiaAmy Elsner UNQUALIFIED
Mujtaba G OstroskyAustraliaAsiya Javayant RENEWAL
Francesco N RulapaughUnited KingdomOnyama Limba PROPOSAL
Aditya A TollnerSpainAmy Elsner NEW
Munro G MarrierIndiaBernardo Dominic RENEWAL
Emily Y MaletCanadaStephen Shaw NEGOTIATION
Salvatore H NestleArgentinaAsiya Javayant UNQUALIFIED
Salvatore Z ChuiIndiaStephen Shaw RENEWAL
Stacey Q WhobreyItalyElwin Sharvill RENEWAL
Wickens L MorascaIndiaStephen Shaw NEGOTIATION
Mujtaba E GlickUnited KingdomIoni Bowcher QUALIFIED
Sinclair I SlusarskiUnited KingdomXuxue Feng QUALIFIED
Izzy D PoquetteSpainXuxue Feng UNQUALIFIED
Maisha U AlbaresAustraliaAsiya Javayant NEW
Misaki W GlickRussiaIvan Magalhaes NEGOTIATION
Aditya A RutaArgentinaStephen Shaw NEW
Munro O ButtIndiaAnna Fali RENEWAL
Deepesh M BriddickBrazilStephen Shaw NEGOTIATION
Salvatore N FlosiGermanyIoni Bowcher NEGOTIATION
Johnson J StensethJapanAsiya Javayant NEGOTIATION
Stacey T ShinkoIndiaXuxue Feng RENEWAL
Maria C AmigonRussiaIvan Magalhaes NEGOTIATION
Emily K WieserAustraliaBernardo Dominic PROPOSAL
Ricardo C WaycottGermanyIoni Bowcher NEW
Izzy E StockhamIndiaIvan Magalhaes RENEWAL
Murillo U SaylorsJapanStephen Shaw NEW
Julie H WhobreyUnited KingdomIoni Bowcher NEGOTIATION
Nicolas J AmigonBrazilBernardo Dominic QUALIFIED

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