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 Q InouyeIndiaIvan Magalhaes PROPOSAL
Kadeem A DarakjyIndiaXuxue Feng PROPOSAL
Morrow P CampainSpainAnna Fali PROPOSAL
Leon L KuskoFranceAmy Elsner NEGOTIATION
Jones B FerenczCanadaAnna Fali QUALIFIED
Misaki B BologniaGermanyIvan Magalhaes QUALIFIED
Misaki Z StensethBrazilAnna Fali UNQUALIFIED
Murillo T SaylorsSpainOnyama Limba UNQUALIFIED
Mujtaba M PaprockiGermanyXuxue Feng NEW
Deepesh T TollnerItalyStephen Shaw NEW
Greenwood K RoysterAustraliaIvan Magalhaes UNQUALIFIED
Morrow X CaldareraAustraliaIoni Bowcher UNQUALIFIED
Isabel T BowleyAustraliaBernardo Dominic PROPOSAL
Sinclair X DarakjyArgentinaIvan Magalhaes UNQUALIFIED
Mayumi S GarufiSpainBernardo Dominic NEGOTIATION
Jefferson H MacleadJapanStephen Shaw PROPOSAL
Stacey N DoeSpainBernardo Dominic NEW
Izzy C FerenczJapanIvan Magalhaes PROPOSAL
Claire S TollnerUnited KingdomIvan Magalhaes RENEWAL
Maisha W ChuiSpainAnna Fali PROPOSAL
Stacey I AlbaresUnited KingdomIoni Bowcher RENEWAL
Chavez H VocelkaSpainAmy Elsner UNQUALIFIED
Ashley K PerinRussiaStephen Shaw UNQUALIFIED
Clifford P CampainAustraliaAmy Elsner QUALIFIED
Arvin Z TollnerBrazilAsiya Javayant NEGOTIATION
Stacey N IturbideFranceIoni Bowcher RENEWAL
James J RulapaughAustraliaAsiya Javayant QUALIFIED
Ricardo G MaletSpainStephen Shaw QUALIFIED
Nicolas N FlosiFranceIvan Magalhaes NEW
Alejandro I FigeroaSpainAmy Elsner UNQUALIFIED
Claire P ShinkoRussiaElwin Sharvill RENEWAL
Darci T AmigonRussiaAnna Fali PROPOSAL
Octavia G SlusarskiSpainElwin Sharvill NEGOTIATION
Alejandro A TollnerCanadaIvan Magalhaes NEW
Aruna P MorascaUnited KingdomAmy Elsner PROPOSAL
Emily C DoeRussiaElwin Sharvill UNQUALIFIED
Greenwood J MacleadRussiaAsiya Javayant QUALIFIED
Sinclair R SchemmerUnited KingdomElwin Sharvill NEW
Faith O WieserArgentinaIoni Bowcher NEW
Emily U AmigonAustraliaXuxue Feng RENEWAL
Izzy L StensethUnited KingdomOnyama Limba QUALIFIED
Aruna W KolmetzCanadaElwin Sharvill RENEWAL
Salvatore X MacleadRussiaStephen Shaw QUALIFIED
Leja Q DoeItalyStephen Shaw NEGOTIATION
Alejandro P SchemmerIndiaAmy Elsner NEGOTIATION
Silvio S OstroskySpainAsiya Javayant PROPOSAL
Kaitlin O KuskoSpainXuxue Feng QUALIFIED
Francesco U MacleadJapanStephen Shaw RENEWAL
Deepesh Y GarufiUnited KingdomXuxue Feng QUALIFIED
James J ShinkoSpainIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Ashley Z RoysterJapanIoni Bowcher NEW
Alejandro C OldroydJapanAsiya Javayant NEGOTIATION
Izzy K MaletItalyBernardo Dominic RENEWAL
Deepesh M GlickSpainElwin Sharvill PROPOSAL
Clifford Y CaudyAustraliaElwin Sharvill PROPOSAL
Johnson C SchemmerUnited KingdomIoni Bowcher UNQUALIFIED
Izzy R KuskoCanadaBernardo Dominic UNQUALIFIED
Aruna H GlickSpainIoni Bowcher NEW
Ashley Z BowleyAustraliaElwin Sharvill NEGOTIATION
Jones E StockhamGermanyAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore I DarakjyBrazil2024-04-12Feltz Printing Service NEGOTIATION13Asiya Javayant
1001Emily S WieserAustralia2024-04-23Benton, John B Jr NEW26Ivan Magalhaes
1002Aika D DilliardGermany2024-04-02Buckley Miller Wright PROPOSAL73Ivan Magalhaes
1003Chavez E CaudyIndia2024-04-15Feltz Printing Service NEGOTIATION54Onyama Limba
1004Aruna G IturbideJapan2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED27Anna Fali
1005Tony B ButtCanada2024-04-05Commercial Press NEGOTIATION85Ioni Bowcher
1006Antonio G TollnerUnited Kingdom2024-04-28Commercial Press PROPOSAL31Elwin Sharvill
1007Smith F RimRussia2024-04-07King, Christopher A Esq NEW53Onyama Limba
1008Antonio R VenereUnited Kingdom2024-04-02Chanay, Jeffrey A Esq NEGOTIATION36Xuxue Feng
1009Juan R VocelkaJapan2024-04-01Printing Dimensions NEGOTIATION37Elwin Sharvill
1010Cody K MacleadJapan2024-04-20Chemel, James L Cpa NEGOTIATION97Asiya Javayant
1011Misaki P FigeroaIndia2024-04-08Feltz Printing Service UNQUALIFIED36Amy Elsner
1012Smith B WaycottSpain2024-04-13Morlong Associates RENEWAL24Anna Fali
1013Antonio Y MaletBrazil2024-04-20Buckley Miller Wright NEW20Onyama Limba
1014Johnson P PaprockiIndia2024-04-28Buckley Miller Wright PROPOSAL4Anna Fali
1015Wickens Z WaycottJapan2024-04-13Chapman, Ross E Esq UNQUALIFIED6Elwin Sharvill
1016Leja V SergiArgentina2024-04-24Chemel, James L Cpa NEW71Ivan Magalhaes
1017Stacey F MacleadCanada2024-04-12Chapman, Ross E Esq RENEWAL72Anna Fali
1018Murillo P DarakjyIndia2024-04-03Printing Dimensions NEW45Ivan Magalhaes
1019Chavez N WaycottCanada2024-04-17Benton, John B Jr NEW67Ivan Magalhaes
1020Ashley U BologniaRussia2024-04-16Buckley Miller Wright QUALIFIED29Elwin Sharvill
1021Alejandro T IturbideIndia2024-04-28Commercial Press NEGOTIATION20Anna Fali
1022Stacey X CaldareraRussia2024-04-11Printing Dimensions NEW30Xuxue Feng
1023Kadeem P BowleyRussia2024-04-16King, Christopher A Esq PROPOSAL29Xuxue Feng
1024Chavez G ButtBrazil2024-04-17Rousseaux, Michael Esq NEW69Asiya Javayant
1025Maisha A FollerBrazil2024-04-19Rousseaux, Michael Esq UNQUALIFIED72Elwin Sharvill
1026Jones K FlosiGermany2024-04-28Benton, John B Jr PROPOSAL77Elwin Sharvill
1027Adams N DarakjyJapan2024-04-16Rousseaux, Michael Esq PROPOSAL64Xuxue Feng
1028Mayumi T InouyeBrazil2024-04-24Morlong Associates UNQUALIFIED52Asiya Javayant
1029Ricardo L MaletUnited Kingdom2024-04-05Benton, John B Jr QUALIFIED13Anna Fali
1030Jefferson W RutaItaly2024-04-05Printing Dimensions UNQUALIFIED29Onyama Limba
1031Cody B KolmetzRussia2024-04-03Commercial Press PROPOSAL0Bernardo Dominic
1032Maisha N PoquetteRussia2024-04-15Chemel, James L Cpa NEGOTIATION29Elwin Sharvill
1033Deepesh S ChuiAustralia2024-04-13Buckley Miller Wright QUALIFIED89Elwin Sharvill
1034Isabel O FlosiIndia2024-04-07Dorl, James J Esq PROPOSAL23Xuxue Feng
1035Chavez X WhobreyArgentina2024-04-26Printing Dimensions NEW58Stephen Shaw
1036Maisha K BriddickGermany2024-04-24Chapman, Ross E Esq UNQUALIFIED47Ivan Magalhaes
1037Sinclair O PerinIndia2024-04-11Printing Dimensions RENEWAL78Asiya Javayant
1038Jeanfrancois Y GauchoJapan2024-04-02Chanay, Jeffrey A Esq QUALIFIED71Amy Elsner
1039Munro S NickaFrance2024-04-07Benton, John B Jr PROPOSAL85Bernardo Dominic
1040Sinclair T ShinkoAustralia2024-04-06Morlong Associates NEGOTIATION93Xuxue Feng
1041Jeanfrancois S ChuiUnited Kingdom2024-04-19Dorl, James J Esq RENEWAL39Asiya Javayant
1042Leja H FerenczBrazil2024-04-22Dorl, James J Esq UNQUALIFIED18Stephen Shaw
1043Leon C MaletUnited Kingdom2024-04-22Chanay, Jeffrey A Esq UNQUALIFIED27Bernardo Dominic
1044Antonio U SaylorsUnited Kingdom2024-04-22Benton, John B Jr NEGOTIATION92Onyama Limba
1045Smith T GarufiAustralia2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED84Ivan Magalhaes
1046Darci P BologniaJapan2024-04-24Chemel, James L Cpa NEW28Xuxue Feng
1047Munro N FerenczGermany2024-04-02Feltz Printing Service RENEWAL14Xuxue Feng
1048Murillo C VocelkaArgentina2024-04-16Rangoni Of Florence UNQUALIFIED90Xuxue Feng
1049Cody I FerenczRussia2024-04-21Truhlar And Truhlar Attys NEW43Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Smith E BologniaRussiaElwin Sharvill NEW
Munro K WhobreyItalyBernardo Dominic UNQUALIFIED
Salvatore L VenereItalyOnyama Limba UNQUALIFIED
Jones Z BowleySpainStephen Shaw PROPOSAL
Aruna E MorascaGermanyOnyama Limba PROPOSAL
Tony A RimCanadaXuxue Feng UNQUALIFIED
Claire A SchemmerRussiaOnyama Limba NEGOTIATION
Silvio B OldroydBrazilOnyama Limba QUALIFIED
Costa Z WhobreyGermanyOnyama Limba NEW
James W MorascaJapanIoni Bowcher QUALIFIED
Darci B ChuiCanadaBernardo Dominic NEGOTIATION
Arvin I SaylorsJapanOnyama Limba PROPOSAL
Isabel Y NickaBrazilIvan Magalhaes NEGOTIATION
Emily T SaylorsFranceIoni Bowcher NEGOTIATION
Wickens W SaylorsFranceXuxue Feng NEGOTIATION
David A RoysterSpainIoni Bowcher QUALIFIED
Mayumi B SchemmerJapanIvan Magalhaes NEW
Izzy O SchemmerArgentinaAsiya Javayant PROPOSAL
Jennifer D MorascaFranceBernardo Dominic PROPOSAL
Claire A AlbaresBrazilXuxue Feng NEGOTIATION
Jefferson H VocelkaArgentinaBernardo Dominic PROPOSAL
Stacey T StensethRussiaStephen Shaw NEGOTIATION
Alejandro D KuskoAustraliaAnna Fali PROPOSAL
Antonio V BologniaFranceBernardo Dominic NEGOTIATION
Emily R MaletGermanyAsiya Javayant PROPOSAL
Nicolas J GarufiRussiaIoni Bowcher NEW
Julie C PerinJapanAnna Fali UNQUALIFIED
Murillo Y SlusarskiItalyIoni Bowcher NEW
Salvatore F SchemmerFranceAsiya Javayant UNQUALIFIED
Cody H AlbaresUnited KingdomStephen Shaw NEGOTIATION
Stacey H PerinArgentinaAsiya Javayant UNQUALIFIED
Stacey V PerinUnited KingdomXuxue Feng PROPOSAL
Maisha A ChuiSpainIvan Magalhaes UNQUALIFIED
Sinclair A AlbaresArgentinaIvan Magalhaes RENEWAL
Rodrigues F ShinkoCanadaAnna Fali UNQUALIFIED
Deepesh K OstroskyGermanyAnna Fali NEGOTIATION
Darci G ButtFranceAmy Elsner QUALIFIED
Faith F AmigonItalyOnyama Limba NEGOTIATION
Jones T VenereItalyAmy Elsner NEGOTIATION
Ricardo P DarakjyArgentinaBernardo Dominic NEGOTIATION
James Q ShinkoRussiaAsiya Javayant RENEWAL
Munro Y RoysterSpainIoni Bowcher NEW
Sinclair P RimArgentinaXuxue Feng NEW
Adams T VenereCanadaIoni Bowcher QUALIFIED
Mujtaba A NestleIndiaAsiya Javayant NEW
Claire G MaletFranceElwin Sharvill UNQUALIFIED
Chavez W DoeBrazilXuxue Feng NEGOTIATION
Adams R VocelkaAustraliaAmy Elsner NEGOTIATION
James L BologniaItalyAmy Elsner PROPOSAL
Nicolas B DoeArgentinaXuxue Feng NEW
Frozen Columns
Name
David V Flosi
Deepesh R Stockham
Juan R Rulapaugh
Alejandro J Wieser
Aditya K Figeroa
Rodrigues L Kusko
Maria Z Nestle
Jefferson M Rulapaugh
Ashley N Caudy
Kaitlin C Albares
Ivar D Iturbide
Tony R Nestle
Aika X Gaucho
Juan W Oldroyd
Ashley O Nicka
Aditya H Ruta
Mayumi R Venere
Francesco G Whobrey
Cody F Ostrosky
Jennifer M Briddick
Wickens S Nicka
Alejandro N Nicka
Sinclair C Slusarski
Kadeem F Butt
Mujtaba X Butt
Ivar F Gillian
Ivar U Saylors
Kadeem L Dilliard
Jeanfrancois H Poquette
Mujtaba Q Doe
Leja O Ruta
Sinclair Z Schemmer
Salvatore E Stockham
Tony S Royster
Cody J Inouye
Rodrigues D Dilliard
Salvatore T Royster
Emily R Dilliard
Juan U Garufi
Darci L Campain
Ivar K Stockham
James V Glick
Ivar U Perin
Costa W Rulapaugh
Jones D Foller
Kadeem S Bolognia
Aditya J Ruta
Clifford S Ostrosky
Johnson U Chui
David T Figeroa
IdCountryDate
1000Italy2024-04-10
1001United Kingdom2024-04-21
1002Italy2024-04-11
1003Germany2024-04-24
1004Italy2024-04-03
1005Italy2024-04-02
1006Japan2024-04-19
1007Brazil2024-04-18
1008Italy2024-04-13
1009Russia2024-04-06
1010Argentina2024-04-04
1011Spain2024-04-28
1012Spain2024-04-04
1013Argentina2024-04-17
1014Spain2024-04-06
1015Canada2024-04-21
1016Japan2024-04-21
1017India2024-04-14
1018Japan2024-04-27
1019Canada2024-04-21
1020Japan2024-04-18
1021Spain2024-04-23
1022India2024-04-19
1023Spain2024-04-05
1024United Kingdom2024-04-05
1025Spain2024-04-21
1026Spain2024-04-14
1027France2024-04-21
1028India2024-04-11
1029Japan2024-04-23
1030India2024-03-31
1031Spain2024-04-16
1032Germany2024-04-08
1033France2024-04-21
1034Argentina2024-04-14
1035Germany2024-04-03
1036Japan2024-04-15
1037Spain2024-04-28
1038Canada2024-04-22
1039Italy2024-04-19
1040Italy2024-04-29
1041Russia2024-04-10
1042Italy2024-04-08
1043Canada2024-04-11
1044Japan2024-04-05
1045Italy2024-04-18
1046Italy2024-04-16
1047Germany2024-04-27
1048Brazil2024-04-02
1049Brazil2024-04-24

On-Demand Data

NameIdCountryDate
Misaki U Albares1000India2024-04-04
Aika U Venere1001United Kingdom2024-04-26
Leja V Whobrey1002Spain2024-04-04
Sinclair Y Slusarski1003Russia2024-04-21
Juan K Ostrosky1004India2024-04-16
Costa C Waycott1005Australia2024-04-16
Wickens T Dilliard1006Argentina2024-04-09
Stacey C Morasca1007France2024-04-29
Aruna M Kusko1008United Kingdom2024-04-11
James U Oldroyd1009Japan2024-04-08
David I Sergi1010Brazil2024-04-27
Arvin A Royster1011France2024-04-10
Tony V Ferencz1012Spain2024-04-13
Johnson Z Butt1013United Kingdom2024-04-11
Silvio T Venere1014Australia2024-04-15
Clifford G Marrier1015Japan2024-04-03
Kadeem R Amigon1016United Kingdom2024-04-26
David Z Wieser1017France2024-04-27
Izzy Y Sergi1018Argentina2024-04-08
Silvio E Gillian1019India2024-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony W NestleGermanyIoni Bowcher PROPOSAL
Clifford T IturbideUnited KingdomAmy Elsner NEGOTIATION
Mayumi V CampainIndiaAnna Fali UNQUALIFIED
Salvatore S CaudyJapanIoni Bowcher QUALIFIED
Sinclair F RutaSpainElwin Sharvill UNQUALIFIED
Stacey H CaudySpainAmy Elsner NEGOTIATION
Deepesh Y MacleadSpainElwin Sharvill NEGOTIATION
Sinclair N FollerIndiaIoni Bowcher NEGOTIATION
Izzy I WhobreyUnited KingdomOnyama Limba UNQUALIFIED
Sinclair R AmigonItalyIvan Magalhaes QUALIFIED
Mayumi O WieserRussiaAnna Fali PROPOSAL
Deepesh O IturbideUnited KingdomOnyama Limba NEGOTIATION
Leon O IturbideJapanIvan Magalhaes RENEWAL
Morrow F CaudyAustraliaXuxue Feng UNQUALIFIED
Jefferson C WhobreyItalyStephen Shaw NEGOTIATION
Ivar U PerinBrazilElwin Sharvill NEW
Clifford Y OstroskyJapanIoni Bowcher RENEWAL
Leon E FollerBrazilXuxue Feng QUALIFIED
Aruna Q PerinBrazilBernardo Dominic NEGOTIATION
Cody D ChuiJapanOnyama Limba NEGOTIATION
Wickens T KuskoJapanElwin Sharvill NEW
Ivar J FollerFranceXuxue Feng UNQUALIFIED
Kaitlin E BologniaUnited KingdomAsiya Javayant PROPOSAL
Jones Z BriddickGermanyAmy Elsner NEW
Aditya X VocelkaBrazilBernardo Dominic NEW
Stacey N KuskoRussiaAnna Fali NEGOTIATION
Cody W StockhamRussiaAnna Fali NEGOTIATION
Chavez S ButtGermanyAnna Fali NEGOTIATION
Jefferson E ShinkoArgentinaAsiya Javayant NEW
Isabel O RulapaughAustraliaXuxue Feng UNQUALIFIED
Jones I SergiAustraliaAmy Elsner PROPOSAL
Misaki O FollerFranceAmy Elsner RENEWAL
Murillo D SaylorsFranceStephen Shaw UNQUALIFIED
Nicolas J WaycottAustraliaOnyama Limba RENEWAL
Silvio M RulapaughItalyAnna Fali NEGOTIATION
Misaki E MaletIndiaXuxue Feng QUALIFIED
Izzy B AlbaresAustraliaAmy Elsner QUALIFIED
Juan G PoquetteFranceIvan Magalhaes UNQUALIFIED
Ashley G FollerItalyIvan Magalhaes NEGOTIATION
James S KuskoRussiaAsiya 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>