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
Izzy K VenereBrazilAmy Elsner PROPOSAL
Claire O MaletUnited KingdomIoni Bowcher NEW
Costa V FerenczUnited KingdomAsiya Javayant UNQUALIFIED
Ricardo T RulapaughItalyElwin Sharvill NEGOTIATION
Ricardo V NestleBrazilOnyama Limba QUALIFIED
Morrow U PoquetteCanadaElwin Sharvill RENEWAL
Munro N FlosiAustraliaXuxue Feng NEGOTIATION
Salvatore S PerinSpainAsiya Javayant NEGOTIATION
Julie D MarrierArgentinaBernardo Dominic NEGOTIATION
Jennifer N CaudyIndiaIoni Bowcher PROPOSAL
Murillo C BowleyJapanAsiya Javayant QUALIFIED
Leja I OldroydIndiaElwin Sharvill UNQUALIFIED
Ivar M ShinkoRussiaAsiya Javayant NEW
Julie S SaylorsCanadaIvan Magalhaes RENEWAL
Juan U OstroskyFranceBernardo Dominic NEGOTIATION
Aruna D VenereGermanyElwin Sharvill RENEWAL
Aika U DoeJapanOnyama Limba UNQUALIFIED
Deepesh M StockhamItalyIoni Bowcher RENEWAL
Morrow W StensethUnited KingdomAmy Elsner QUALIFIED
James Q StensethArgentinaAsiya Javayant QUALIFIED
Juan T AlbaresSpainElwin Sharvill PROPOSAL
Deepesh X RoysterArgentinaOnyama Limba QUALIFIED
Costa R WhobreyCanadaAnna Fali NEW
Jefferson F WieserBrazilAmy Elsner RENEWAL
Stacey M CaldareraBrazilIoni Bowcher PROPOSAL
Leon E GlickArgentinaAnna Fali QUALIFIED
Salvatore D FerenczArgentinaXuxue Feng UNQUALIFIED
Maisha G FerenczArgentinaAsiya Javayant QUALIFIED
Wickens S RimFranceAmy Elsner NEW
Nicolas G OldroydBrazilBernardo Dominic PROPOSAL
Misaki F SaylorsFranceXuxue Feng UNQUALIFIED
Johnson Y DilliardSpainElwin Sharvill NEGOTIATION
Adams V StensethUnited KingdomIvan Magalhaes NEW
Juan R KuskoGermanyElwin Sharvill NEGOTIATION
Julie X ButtAustraliaAmy Elsner PROPOSAL
Faith J WieserIndiaAsiya Javayant NEGOTIATION
Cody J SlusarskiIndiaIvan Magalhaes NEW
Morrow Y ShinkoIndiaAsiya Javayant NEW
Wickens F GillianBrazilXuxue Feng NEW
Antonio D GauchoRussiaAsiya Javayant NEW
Jones V GarufiUnited KingdomStephen Shaw RENEWAL
Salvatore A ButtIndiaOnyama Limba PROPOSAL
Tony K KolmetzIndiaStephen Shaw PROPOSAL
Jefferson C AlbaresRussiaIoni Bowcher NEGOTIATION
Kaitlin U DilliardArgentinaIvan Magalhaes NEGOTIATION
Jones W KuskoGermanyBernardo Dominic QUALIFIED
Salvatore A BriddickArgentinaElwin Sharvill RENEWAL
Maria D GauchoBrazilIvan Magalhaes RENEWAL
Antonio N WieserFranceIvan Magalhaes RENEWAL
Clifford R VenereJapanBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois T GauchoBrazilAsiya Javayant RENEWAL
Jones T SlusarskiAustraliaOnyama Limba NEW
Izzy M KuskoUnited KingdomOnyama Limba UNQUALIFIED
Claire W MaletUnited KingdomIoni Bowcher QUALIFIED
Juan L StensethAustraliaXuxue Feng NEW
Maria W BriddickArgentinaAmy Elsner QUALIFIED
Clifford I InouyeRussiaAmy Elsner QUALIFIED
Jennifer I CampainFranceAnna Fali RENEWAL
Munro Q RimUnited KingdomBernardo Dominic RENEWAL
Juan F SchemmerFranceElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci B RimBrazil2024-04-25Commercial Press PROPOSAL79Amy Elsner
1001Maisha O GarufiGermany2024-05-08Dorl, James J Esq RENEWAL45Elwin Sharvill
1002Jones Q SlusarskiJapan2024-04-27Feiner Bros QUALIFIED4Elwin Sharvill
1003Jeanfrancois E PoquetteSpain2024-04-28Feltz Printing Service NEW25Bernardo Dominic
1004Isabel O SchemmerCanada2024-04-19King, Christopher A Esq NEW33Ivan Magalhaes
1005Murillo K OstroskyIndia2024-04-16Chemel, James L Cpa UNQUALIFIED89Asiya Javayant
1006Mayumi A CampainRussia2024-04-29Commercial Press NEGOTIATION48Stephen Shaw
1007Izzy O AmigonItaly2024-04-15Chemel, James L Cpa QUALIFIED42Ivan Magalhaes
1008Leon D DoeItaly2024-04-20Dorl, James J Esq RENEWAL20Stephen Shaw
1009Jennifer Q RutaItaly2024-04-24Feltz Printing Service PROPOSAL1Anna Fali
1010Juan R SchemmerSpain2024-04-15Rousseaux, Michael Esq PROPOSAL83Ioni Bowcher
1011Leon W AmigonArgentina2024-04-20Printing Dimensions UNQUALIFIED13Elwin Sharvill
1012Murillo X RutaUnited Kingdom2024-04-30Chapman, Ross E Esq UNQUALIFIED93Elwin Sharvill
1013Leon C OstroskyJapan2024-04-25Rangoni Of Florence RENEWAL26Asiya Javayant
1014Adams Y GauchoCanada2024-04-25Commercial Press NEGOTIATION20Xuxue Feng
1015Kadeem V OstroskyCanada2024-04-17Rangoni Of Florence QUALIFIED60Ivan Magalhaes
1016Smith O GillianIndia2024-04-11King, Christopher A Esq UNQUALIFIED6Bernardo Dominic
1017Claire X WhobreyFrance2024-04-29Commercial Press RENEWAL1Xuxue Feng
1018Arvin J AlbaresBrazil2024-04-18Dorl, James J Esq QUALIFIED53Onyama Limba
1019Kaitlin P BriddickRussia2024-04-24Chemel, James L Cpa NEGOTIATION17Stephen Shaw
1020Murillo I PoquetteUnited Kingdom2024-05-08Chemel, James L Cpa PROPOSAL67Xuxue Feng
1021Mujtaba N WhobreySpain2024-04-25Benton, John B Jr UNQUALIFIED8Xuxue Feng
1022Tony X SaylorsRussia2024-04-26Chanay, Jeffrey A Esq NEGOTIATION70Elwin Sharvill
1023Emily P BologniaUnited Kingdom2024-04-24Rangoni Of Florence UNQUALIFIED3Xuxue Feng
1024James V BriddickArgentina2024-04-16Morlong Associates NEW48Asiya Javayant
1025Stacey S ChuiIndia2024-05-07Buckley Miller Wright NEW19Bernardo Dominic
1026Misaki B BriddickRussia2024-04-30Chapman, Ross E Esq UNQUALIFIED18Anna Fali
1027Salvatore U CampainArgentina2024-04-30Truhlar And Truhlar Attys QUALIFIED84Bernardo Dominic
1028Salvatore Z KuskoItaly2024-04-15Chapman, Ross E Esq QUALIFIED62Onyama Limba
1029Salvatore L FollerUnited Kingdom2024-05-02Chemel, James L Cpa QUALIFIED77Anna Fali
1030Mayumi X FerenczArgentina2024-04-19Benton, John B Jr NEW85Elwin Sharvill
1031Chavez O BologniaArgentina2024-04-14Commercial Press NEGOTIATION95Onyama Limba
1032Sinclair L GauchoSpain2024-04-19Commercial Press NEW79Onyama Limba
1033Juan W PaprockiArgentina2024-04-20Rousseaux, Michael Esq NEGOTIATION26Onyama Limba
1034Wickens M KuskoJapan2024-04-23Rousseaux, Michael Esq NEW55Elwin Sharvill
1035David Z StensethFrance2024-04-10Morlong Associates UNQUALIFIED23Amy Elsner
1036Francesco L RutaGermany2024-05-01Benton, John B Jr NEW72Anna Fali
1037Julie Y MaletBrazil2024-05-01Chemel, James L Cpa UNQUALIFIED75Asiya Javayant
1038Aruna X FollerAustralia2024-04-15Feiner Bros QUALIFIED69Amy Elsner
1039Sinclair G PoquetteSpain2024-04-23Chanay, Jeffrey A Esq NEGOTIATION33Asiya Javayant
1040Aditya W BriddickUnited Kingdom2024-04-20King, Christopher A Esq QUALIFIED64Xuxue Feng
1041Silvio T WhobreySpain2024-04-15Chemel, James L Cpa RENEWAL88Amy Elsner
1042Chavez K GillianCanada2024-04-15Rousseaux, Michael Esq PROPOSAL79Amy Elsner
1043Adams W MaletBrazil2024-04-21Rangoni Of Florence NEW74Ivan Magalhaes
1044Smith D KolmetzJapan2024-04-11Benton, John B Jr PROPOSAL4Anna Fali
1045Jefferson V FerenczArgentina2024-05-09Rousseaux, Michael Esq QUALIFIED45Amy Elsner
1046Jones Q InouyeArgentina2024-04-19King, Christopher A Esq NEGOTIATION49Bernardo Dominic
1047Aditya U DilliardAustralia2024-04-25Chapman, Ross E Esq RENEWAL9Elwin Sharvill
1048Darci C SergiJapan2024-04-22Rangoni Of Florence QUALIFIED75Stephen Shaw
1049Mujtaba W PoquetteFrance2024-05-05Truhlar And Truhlar Attys NEW9Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Mayumi R PaprockiSpainIoni Bowcher RENEWAL
Julie X DarakjyArgentinaIvan Magalhaes PROPOSAL
Izzy O KolmetzFranceIoni Bowcher PROPOSAL
Kadeem J KolmetzItalyIvan Magalhaes QUALIFIED
Misaki C GarufiRussiaStephen Shaw NEW
Emily J PerinAustraliaAnna Fali NEGOTIATION
Misaki Z MarrierJapanIoni Bowcher PROPOSAL
Nicolas I VenereUnited KingdomElwin Sharvill PROPOSAL
Adams A RoysterArgentinaBernardo Dominic NEGOTIATION
Antonio H InouyeSpainIvan Magalhaes NEW
Aruna H BriddickArgentinaAnna Fali RENEWAL
Ricardo J PaprockiRussiaIoni Bowcher PROPOSAL
Smith S VocelkaIndiaXuxue Feng QUALIFIED
Kaitlin B StensethBrazilBernardo Dominic PROPOSAL
Kaitlin R NestleUnited KingdomXuxue Feng RENEWAL
Darci C NestleCanadaBernardo Dominic NEW
Maisha O PerinRussiaAnna Fali PROPOSAL
Nicolas L FollerIndiaIoni Bowcher QUALIFIED
Kadeem R TollnerUnited KingdomOnyama Limba NEW
Kaitlin R StensethAustraliaElwin Sharvill QUALIFIED
Arvin V OstroskyRussiaIoni Bowcher NEW
Rodrigues V NestleSpainStephen Shaw UNQUALIFIED
Misaki M WhobreyIndiaOnyama Limba QUALIFIED
Adams I BriddickBrazilXuxue Feng NEGOTIATION
Sinclair V StensethCanadaElwin Sharvill PROPOSAL
Rodrigues F NestleCanadaOnyama Limba QUALIFIED
Mujtaba F InouyeGermanyAsiya Javayant NEGOTIATION
Ashley C PoquetteJapanAsiya Javayant RENEWAL
Mujtaba L IturbideItalyAmy Elsner UNQUALIFIED
Maisha V PaprockiJapanXuxue Feng PROPOSAL
James L OldroydCanadaElwin Sharvill NEGOTIATION
Salvatore I KolmetzItalyElwin Sharvill PROPOSAL
Jeanfrancois C NestleCanadaAmy Elsner QUALIFIED
Jones W SaylorsArgentinaAmy Elsner QUALIFIED
Aruna G SergiRussiaIoni Bowcher UNQUALIFIED
Octavia Y MaletSpainIoni Bowcher QUALIFIED
Deepesh G BowleyRussiaIvan Magalhaes PROPOSAL
Jeanfrancois L PoquetteIndiaElwin Sharvill PROPOSAL
Rodrigues D ChuiBrazilIvan Magalhaes QUALIFIED
Maria U MorascaRussiaAmy Elsner UNQUALIFIED
Smith S CaldareraGermanyAnna Fali PROPOSAL
Leja E CampainArgentinaAnna Fali UNQUALIFIED
Munro L OstroskyRussiaAsiya Javayant NEW
Greenwood I TollnerArgentinaElwin Sharvill QUALIFIED
Tony Z ChuiRussiaIvan Magalhaes UNQUALIFIED
Francesco U RulapaughRussiaAsiya Javayant RENEWAL
Sinclair O FerenczAustraliaAnna Fali UNQUALIFIED
Emily S MaletIndiaElwin Sharvill RENEWAL
Darci V KuskoFranceStephen Shaw UNQUALIFIED
Francesco D StensethCanadaAmy Elsner NEGOTIATION
Frozen Columns
Name
Smith R Poquette
James B Saylors
David V Doe
Jones D Slusarski
Deepesh C Inouye
Kadeem P Ferencz
Ashley O Butt
Nicolas F Shinko
Faith A Foller
Julie B Royster
Cody T Flosi
Jennifer Y Ostrosky
Aika M Stenseth
Silvio U Bowley
Aika J Ostrosky
Ricardo J Whobrey
Darci M Stenseth
Aika Y Rulapaugh
Jefferson X Shinko
Alejandro P Inouye
Emily F Amigon
Costa C Campain
Izzy T Saylors
Antonio V Malet
Julie V Gaucho
Salvatore S Doe
Chavez J Maclead
Sinclair D Stockham
James M Iturbide
Sinclair X Bolognia
Morrow D Paprocki
Costa H Butt
Arvin S Doe
Faith H Malet
Tony U Paprocki
Francesco L Amigon
Wickens X Butt
Ricardo S Ostrosky
James N Oldroyd
Ivar E Ruta
Antonio T Gaucho
Tony R Slusarski
Mayumi G Nestle
Francesco W Saylors
Mayumi B Nestle
Misaki J Nestle
Aruna E Shinko
Aditya I Caldarera
Cody T Morasca
Leon Q Gaucho
IdCountryDate
1000Canada2024-04-19
1001Italy2024-04-10
1002Canada2024-05-05
1003Japan2024-04-21
1004Germany2024-04-15
1005Australia2024-04-15
1006Russia2024-04-16
1007Argentina2024-04-29
1008Germany2024-04-13
1009Brazil2024-04-14
1010Brazil2024-04-11
1011Brazil2024-04-30
1012United Kingdom2024-04-28
1013Japan2024-05-06
1014Australia2024-04-15
1015Canada2024-04-20
1016Australia2024-04-20
1017Germany2024-04-17
1018France2024-04-22
1019Russia2024-04-28
1020India2024-05-06
1021France2024-05-08
1022Japan2024-05-03
1023Germany2024-04-21
1024France2024-04-17
1025Russia2024-05-06
1026Spain2024-04-15
1027Russia2024-04-19
1028Russia2024-04-26
1029Argentina2024-04-26
1030Italy2024-04-27
1031Germany2024-05-02
1032United Kingdom2024-05-02
1033Australia2024-04-26
1034Argentina2024-04-24
1035Spain2024-04-30
1036Canada2024-05-07
1037United Kingdom2024-05-03
1038Canada2024-04-13
1039Russia2024-04-16
1040United Kingdom2024-04-25
1041Spain2024-04-21
1042Japan2024-04-25
1043United Kingdom2024-04-19
1044Brazil2024-04-11
1045Argentina2024-05-03
1046Argentina2024-04-20
1047Brazil2024-04-15
1048India2024-05-06
1049Japan2024-05-04

On-Demand Data

NameIdCountryDate
Jones V Poquette1000Brazil2024-05-02
Alejandro Z Sergi1001Japan2024-05-06
Aika U Briddick1002Japan2024-05-09
Silvio E Slusarski1003Italy2024-04-21
Rodrigues Y Darakjy1004Canada2024-04-14
Wickens V Venere1005United Kingdom2024-04-24
Alejandro G Bolognia1006India2024-04-24
Ricardo S Caudy1007Argentina2024-05-03
Izzy P Saylors1008Germany2024-04-22
Aruna G Bolognia1009India2024-04-30
Rodrigues A Maclead1010Japan2024-04-28
Mayumi W Kusko1011Brazil2024-04-12
Aditya M Sergi1012Australia2024-04-16
Ashley E Albares1013Italy2024-04-30
Chavez A Amigon1014United Kingdom2024-04-26
Emily O Wieser1015Argentina2024-04-26
Misaki E Royster1016Canada2024-05-01
Morrow P Foller1017India2024-04-24
Munro L Stenseth1018Japan2024-04-23
Arvin B Venere1019Russia2024-05-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith Z DilliardAustraliaXuxue Feng QUALIFIED
Juan O TollnerAustraliaAsiya Javayant NEGOTIATION
Nicolas Q SaylorsBrazilXuxue Feng NEGOTIATION
Greenwood K CaldareraJapanAsiya Javayant NEW
Emily Z VocelkaSpainAnna Fali NEGOTIATION
Deepesh W AmigonUnited KingdomStephen Shaw NEW
Mujtaba G RimItalyOnyama Limba NEW
Aditya Y OldroydJapanAnna Fali UNQUALIFIED
Deepesh A ShinkoRussiaStephen Shaw NEW
Rodrigues K ChuiIndiaAmy Elsner PROPOSAL
Sinclair K IturbideRussiaAmy Elsner NEGOTIATION
Kadeem H MacleadRussiaXuxue Feng NEW
Clifford U OldroydItalyAmy Elsner NEGOTIATION
Antonio Y KuskoCanadaIvan Magalhaes NEW
Ashley Q FollerArgentinaAsiya Javayant UNQUALIFIED
Juan O PerinBrazilBernardo Dominic NEW
Mayumi K RimIndiaIoni Bowcher NEW
Salvatore R PoquetteSpainOnyama Limba UNQUALIFIED
Morrow L NestleArgentinaXuxue Feng PROPOSAL
Tony S AmigonUnited KingdomBernardo Dominic UNQUALIFIED
Cody U MaletItalyOnyama Limba PROPOSAL
Maisha Q RimArgentinaIoni Bowcher NEGOTIATION
James I GarufiSpainStephen Shaw QUALIFIED
Tony E WhobreyBrazilIoni Bowcher QUALIFIED
Munro K RutaSpainBernardo Dominic UNQUALIFIED
Ricardo N FigeroaItalyAnna Fali NEGOTIATION
Jeanfrancois Z MaletSpainXuxue Feng NEGOTIATION
Johnson Q KolmetzIndiaBernardo Dominic RENEWAL
Johnson X MorascaJapanAmy Elsner QUALIFIED
Tony R WaycottItalyElwin Sharvill NEGOTIATION
Ricardo V TollnerRussiaIvan Magalhaes NEW
Ivar E WaycottBrazilOnyama Limba QUALIFIED
Ashley E SchemmerItalyStephen Shaw QUALIFIED
James Y MorascaItalyIvan Magalhaes NEGOTIATION
Kadeem Z DoeCanadaIoni Bowcher NEW
Salvatore O MaletItalyElwin Sharvill UNQUALIFIED
Greenwood B MaletRussiaStephen Shaw NEW
David P AlbaresAustraliaElwin Sharvill PROPOSAL
Emily X FerenczFranceOnyama Limba PROPOSAL
Munro Q PerinUnited KingdomElwin Sharvill 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>