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
James S SlusarskiIndiaBernardo Dominic UNQUALIFIED
David K FollerIndiaBernardo Dominic NEGOTIATION
Ashley T PerinGermanyElwin Sharvill QUALIFIED
Rodrigues P TollnerArgentinaStephen Shaw UNQUALIFIED
Ashley R VocelkaAustraliaIvan Magalhaes NEW
Munro W VenereUnited KingdomXuxue Feng NEGOTIATION
Claire R MacleadFranceAnna Fali RENEWAL
Kadeem S VenereIndiaAsiya Javayant QUALIFIED
Julie N VenereJapanOnyama Limba RENEWAL
Mujtaba V PerinRussiaElwin Sharvill NEW
Aruna K NickaFranceAmy Elsner UNQUALIFIED
Nicolas D DoeGermanyIoni Bowcher NEW
Jeanfrancois A KolmetzBrazilOnyama Limba NEGOTIATION
Ashley Y PaprockiSpainXuxue Feng QUALIFIED
Izzy L GlickJapanElwin Sharvill PROPOSAL
Jones D DarakjySpainAnna Fali NEW
Munro C MorascaArgentinaOnyama Limba QUALIFIED
Ashley Q SlusarskiAustraliaOnyama Limba RENEWAL
Julie C SergiItalyIoni Bowcher UNQUALIFIED
Antonio B FlosiCanadaOnyama Limba RENEWAL
Ashley U AmigonSpainAmy Elsner UNQUALIFIED
Mayumi Y MarrierItalyAnna Fali QUALIFIED
Leon T AlbaresGermanyElwin Sharvill NEGOTIATION
Emily U SlusarskiBrazilIoni Bowcher UNQUALIFIED
Isabel A BologniaAustraliaAmy Elsner UNQUALIFIED
Aika J PoquetteArgentinaStephen Shaw PROPOSAL
Wickens Q NestleGermanyBernardo Dominic NEGOTIATION
Kadeem W OldroydRussiaIoni Bowcher UNQUALIFIED
Alejandro O FigeroaGermanyOnyama Limba NEGOTIATION
Stacey M StockhamIndiaXuxue Feng NEW
Kadeem A FlosiUnited KingdomIvan Magalhaes UNQUALIFIED
Adams M FigeroaIndiaAmy Elsner NEW
Antonio N RutaArgentinaAsiya Javayant QUALIFIED
Greenwood H StockhamUnited KingdomAsiya Javayant NEW
Clifford P GlickGermanyIoni Bowcher UNQUALIFIED
Sinclair L BowleyGermanyAmy Elsner PROPOSAL
Jeanfrancois M StensethRussiaStephen Shaw RENEWAL
James H DarakjyFranceIvan Magalhaes NEW
Wickens P MacleadSpainAsiya Javayant NEW
Darci R FollerRussiaElwin Sharvill UNQUALIFIED
Morrow Y RulapaughFranceIoni Bowcher PROPOSAL
Tony V VenereJapanElwin Sharvill PROPOSAL
Alejandro U RutaAustraliaAmy Elsner QUALIFIED
Maisha A NickaCanadaBernardo Dominic PROPOSAL
Aruna G CaudySpainIoni Bowcher NEGOTIATION
Aditya X SlusarskiCanadaIoni Bowcher QUALIFIED
Maria G BowleyUnited KingdomStephen Shaw PROPOSAL
Costa O WaycottIndiaXuxue Feng RENEWAL
Juan F AlbaresGermanyAsiya Javayant NEW
Deepesh A VocelkaAustraliaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Misaki Z BologniaFranceAnna Fali QUALIFIED
Jennifer M VocelkaArgentinaElwin Sharvill UNQUALIFIED
Misaki K MaletJapanBernardo Dominic RENEWAL
Murillo G GauchoRussiaElwin Sharvill UNQUALIFIED
Arvin C CaudyIndiaStephen Shaw UNQUALIFIED
Mayumi D MorascaSpainAnna Fali QUALIFIED
Alejandro D MorascaGermanyStephen Shaw NEW
Misaki I PerinUnited KingdomOnyama Limba QUALIFIED
Deepesh K SchemmerSpainStephen Shaw NEGOTIATION
Jeanfrancois L NickaIndiaAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco H NestleGermany2024-03-31Rangoni Of Florence RENEWAL19Anna Fali
1001Deepesh T DilliardIndia2024-04-08King, Christopher A Esq QUALIFIED92Stephen Shaw
1002Greenwood U SlusarskiGermany2024-03-31Commercial Press QUALIFIED44Ivan Magalhaes
1003Ashley U GlickCanada2024-03-27Feiner Bros UNQUALIFIED22Onyama Limba
1004Francesco M OstroskyJapan2024-04-12Truhlar And Truhlar Attys RENEWAL64Bernardo Dominic
1005Wickens D FollerBrazil2024-04-13Printing Dimensions UNQUALIFIED37Anna Fali
1006Julie W MorascaSpain2024-04-17Chapman, Ross E Esq QUALIFIED54Anna Fali
1007Antonio T SaylorsSpain2024-03-26Feltz Printing Service QUALIFIED55Xuxue Feng
1008Nicolas U StensethCanada2024-04-18Feltz Printing Service RENEWAL35Asiya Javayant
1009Antonio F KolmetzAustralia2024-04-07Morlong Associates NEGOTIATION18Anna Fali
1010Johnson Y RoysterSpain2024-03-30Chanay, Jeffrey A Esq NEGOTIATION20Bernardo Dominic
1011Francesco K WieserFrance2024-04-20Commercial Press UNQUALIFIED22Ivan Magalhaes
1012Jennifer P GillianSpain2024-04-16Dorl, James J Esq NEGOTIATION29Asiya Javayant
1013Chavez V PaprockiGermany2024-04-21Feiner Bros QUALIFIED54Elwin Sharvill
1014Alejandro V IturbideCanada2024-04-02Benton, John B Jr NEW42Anna Fali
1015Greenwood Q WhobreyBrazil2024-04-08King, Christopher A Esq QUALIFIED62Stephen Shaw
1016Cody F BowleyArgentina2024-04-01Feiner Bros NEW52Asiya Javayant
1017Maisha V MorascaItaly2024-04-04Chanay, Jeffrey A Esq PROPOSAL87Ivan Magalhaes
1018Ivar J OldroydArgentina2024-04-22Rousseaux, Michael Esq RENEWAL19Stephen Shaw
1019Jeanfrancois M AmigonItaly2024-04-03King, Christopher A Esq UNQUALIFIED55Elwin Sharvill
1020Smith G MorascaJapan2024-04-23Commercial Press QUALIFIED21Anna Fali
1021Rodrigues P RulapaughRussia2024-03-26Rangoni Of Florence RENEWAL14Bernardo Dominic
1022Emily J DarakjyGermany2024-04-17Truhlar And Truhlar Attys NEW66Bernardo Dominic
1023Aruna D KolmetzAustralia2024-04-17Rangoni Of Florence NEGOTIATION44Bernardo Dominic
1024Wickens R WhobreySpain2024-04-09Buckley Miller Wright PROPOSAL74Ivan Magalhaes
1025Darci O ShinkoRussia2024-04-01Dorl, James J Esq RENEWAL16Amy Elsner
1026Jennifer C InouyeBrazil2024-04-12Rangoni Of Florence NEW73Ioni Bowcher
1027Mujtaba F FollerAustralia2024-04-15Dorl, James J Esq NEGOTIATION14Anna Fali
1028Morrow Y KolmetzJapan2024-04-23King, Christopher A Esq QUALIFIED17Onyama Limba
1029Ashley T StensethItaly2024-03-28Chapman, Ross E Esq UNQUALIFIED30Elwin Sharvill
1030Costa X RimJapan2024-04-08Feltz Printing Service RENEWAL72Anna Fali
1031Tony K SaylorsArgentina2024-04-22Commercial Press PROPOSAL28Anna Fali
1032Mujtaba P GarufiUnited Kingdom2024-04-19Buckley Miller Wright NEGOTIATION17Amy Elsner
1033Johnson N BowleyAustralia2024-04-16Truhlar And Truhlar Attys PROPOSAL5Onyama Limba
1034Adams D CaldareraAustralia2024-04-19Feltz Printing Service RENEWAL8Elwin Sharvill
1035Rodrigues W ButtItaly2024-04-16Rangoni Of Florence NEW95Ivan Magalhaes
1036Nicolas J MarrierRussia2024-03-30Feiner Bros NEGOTIATION96Ivan Magalhaes
1037Adams E FollerFrance2024-04-20Feiner Bros PROPOSAL1Anna Fali
1038Antonio L ChuiJapan2024-04-18Chanay, Jeffrey A Esq QUALIFIED2Xuxue Feng
1039Ivar B DarakjyRussia2024-04-04Truhlar And Truhlar Attys PROPOSAL20Xuxue Feng
1040Aruna D PoquetteAustralia2024-04-01Chanay, Jeffrey A Esq PROPOSAL66Ivan Magalhaes
1041Misaki M KolmetzAustralia2024-03-28Chapman, Ross E Esq NEW10Bernardo Dominic
1042Nicolas T MacleadSpain2024-04-24Printing Dimensions PROPOSAL6Anna Fali
1043Claire H PoquetteSpain2024-04-02King, Christopher A Esq NEW37Ivan Magalhaes
1044Clifford Z TollnerItaly2024-03-27Feiner Bros NEGOTIATION13Bernardo Dominic
1045Chavez G MaletCanada2024-03-31Truhlar And Truhlar Attys RENEWAL95Anna Fali
1046Jeanfrancois O NickaGermany2024-04-03Benton, John B Jr RENEWAL95Xuxue Feng
1047Johnson J BowleyGermany2024-04-23Commercial Press RENEWAL36Elwin Sharvill
1048Nicolas F GlickGermany2024-03-28Dorl, James J Esq RENEWAL2Amy Elsner
1049Aruna H CaldareraFrance2024-04-22King, Christopher A Esq QUALIFIED88Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Leon L MorascaAustraliaElwin Sharvill NEGOTIATION
Chavez J BriddickJapanOnyama Limba QUALIFIED
Jeanfrancois M NickaItalyBernardo Dominic NEW
Jeanfrancois T BowleyCanadaXuxue Feng QUALIFIED
Julie Q IturbideGermanyElwin Sharvill UNQUALIFIED
Munro Q NickaRussiaStephen Shaw NEW
Kaitlin M ChuiJapanIvan Magalhaes NEGOTIATION
Juan F SlusarskiAustraliaAsiya Javayant NEW
Isabel H BologniaGermanyBernardo Dominic PROPOSAL
Ashley X SchemmerFranceStephen Shaw NEGOTIATION
James D BologniaJapanStephen Shaw QUALIFIED
Faith W VocelkaRussiaIvan Magalhaes RENEWAL
Stacey K StensethGermanyAnna Fali RENEWAL
Mayumi X NickaJapanIvan Magalhaes PROPOSAL
Emily N AlbaresSpainElwin Sharvill UNQUALIFIED
Kadeem B ButtUnited KingdomAsiya Javayant RENEWAL
Stacey L GauchoCanadaBernardo Dominic RENEWAL
Alejandro D WieserCanadaAnna Fali UNQUALIFIED
Greenwood X ChuiUnited KingdomIvan Magalhaes PROPOSAL
Ashley E SergiIndiaAsiya Javayant PROPOSAL
Smith U AmigonItalyIoni Bowcher UNQUALIFIED
Misaki H RutaIndiaAmy Elsner RENEWAL
Izzy X KuskoRussiaStephen Shaw QUALIFIED
Misaki V BologniaRussiaIoni Bowcher UNQUALIFIED
Isabel B SaylorsGermanyStephen Shaw NEGOTIATION
Antonio J TollnerIndiaAsiya Javayant NEW
Claire F GauchoSpainIoni Bowcher QUALIFIED
Aditya H InouyeSpainIoni Bowcher RENEWAL
Arvin O FlosiAustraliaElwin Sharvill UNQUALIFIED
Isabel Z RimUnited KingdomBernardo Dominic QUALIFIED
Rodrigues A RutaItalyAmy Elsner NEW
Costa Z KolmetzFranceOnyama Limba RENEWAL
Darci V BologniaItalyIvan Magalhaes PROPOSAL
Morrow R CaldareraFranceAnna Fali UNQUALIFIED
Cody T OldroydJapanAnna Fali PROPOSAL
Clifford T SchemmerUnited KingdomAsiya Javayant RENEWAL
Kaitlin H AlbaresJapanXuxue Feng NEW
Smith Y DarakjyFranceOnyama Limba NEW
Jennifer O RutaItalyStephen Shaw UNQUALIFIED
David Y FerenczJapanAnna Fali QUALIFIED
Johnson Q KuskoAustraliaElwin Sharvill NEW
Wickens T MarrierBrazilIoni Bowcher NEW
Greenwood U AmigonFranceAmy Elsner PROPOSAL
Salvatore G IturbideArgentinaAsiya Javayant PROPOSAL
Munro F FerenczRussiaStephen Shaw UNQUALIFIED
Jefferson Q NickaGermanyAsiya Javayant QUALIFIED
Cody G GlickItalyIvan Magalhaes UNQUALIFIED
Faith K VenereIndiaBernardo Dominic NEW
Darci Y SaylorsSpainIvan Magalhaes UNQUALIFIED
Deepesh L MaletGermanyAmy Elsner PROPOSAL
Frozen Columns
Name
James T Campain
James G Whobrey
Leon I Waycott
Mayumi O Gillian
Smith A Perin
Aditya P Morasca
Maria D Poquette
Leja A Sergi
Isabel C Tollner
Julie V Poquette
Mayumi X Caldarera
Jeanfrancois I Shinko
Aruna M Kolmetz
Ashley M Doe
Cody P Butt
Jeanfrancois S Butt
Arvin T Campain
Alejandro Q Royster
Clifford I Perin
Costa S Kolmetz
Cody Y Waycott
Jeanfrancois K Malet
Nicolas J Caldarera
Izzy D Nestle
Munro X Maclead
Aika B Waycott
Cody H Morasca
Alejandro Y Iturbide
Silvio O Iturbide
Claire Z Poquette
Darci U Rulapaugh
Kaitlin X Kolmetz
Costa H Ferencz
Isabel G Foller
Leon G Vocelka
Leon C Maclead
Jennifer I Iturbide
Greenwood K Malet
Aditya F Malet
Cody L Slusarski
Alejandro O Saylors
Julie R Dilliard
Stacey M Schemmer
Ivar F Dilliard
Aruna J Stenseth
Johnson B Chui
Adams X Sergi
Maria A Kolmetz
Chavez A Marrier
Ricardo V Shinko
IdCountryDate
1000Brazil2024-04-10
1001Canada2024-04-17
1002Japan2024-03-30
1003France2024-04-04
1004Canada2024-04-03
1005United Kingdom2024-04-19
1006Spain2024-04-16
1007Russia2024-04-21
1008Italy2024-04-14
1009United Kingdom2024-04-01
1010Germany2024-03-31
1011Canada2024-04-20
1012Spain2024-03-26
1013United Kingdom2024-04-10
1014Germany2024-03-26
1015Australia2024-04-04
1016Canada2024-04-21
1017United Kingdom2024-04-22
1018Australia2024-04-03
1019Germany2024-04-17
1020Argentina2024-04-20
1021Japan2024-04-01
1022Canada2024-04-11
1023Argentina2024-04-19
1024Australia2024-04-12
1025Spain2024-04-23
1026Russia2024-04-09
1027Italy2024-04-21
1028Australia2024-04-01
1029France2024-04-11
1030Japan2024-03-29
1031Australia2024-04-24
1032India2024-03-31
1033India2024-03-29
1034Germany2024-04-14
1035Italy2024-04-01
1036Germany2024-04-18
1037France2024-04-01
1038Australia2024-04-18
1039Russia2024-04-11
1040Italy2024-04-15
1041Italy2024-04-16
1042Brazil2024-04-09
1043India2024-04-18
1044India2024-04-04
1045Russia2024-03-27
1046United Kingdom2024-04-22
1047Germany2024-04-06
1048Australia2024-04-09
1049India2024-04-02

On-Demand Data

NameIdCountryDate
Ashley E Caldarera1000Russia2024-04-03
Stacey U Stockham1001Brazil2024-04-09
Izzy L Marrier1002Spain2024-04-12
Alejandro O Wieser1003France2024-04-09
Ricardo E Saylors1004Spain2024-03-29
Silvio X Saylors1005Japan2024-04-10
Mujtaba Y Butt1006Brazil2024-04-16
Salvatore T Doe1007Spain2024-03-30
Darci U Stenseth1008Russia2024-03-29
Arvin F Figeroa1009Argentina2024-04-08
Costa T Foller1010Argentina2024-04-13
Misaki J Rim1011Japan2024-04-02
Octavia V Stockham1012Japan2024-03-27
Jones B Inouye1013Germany2024-04-10
Leon K Kusko1014Italy2024-04-19
Cody M Butt1015United Kingdom2024-03-31
Adams B Caudy1016India2024-04-03
Julie L Amigon1017France2024-04-21
Greenwood X Campain1018Spain2024-04-18
Alejandro C Stockham1019Canada2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo D SlusarskiAustraliaIoni Bowcher PROPOSAL
Antonio Y FigeroaCanadaStephen Shaw PROPOSAL
Ricardo K DarakjyAustraliaStephen Shaw NEGOTIATION
Faith F FerenczIndiaBernardo Dominic PROPOSAL
Rodrigues H ShinkoFranceElwin Sharvill PROPOSAL
Sinclair D DarakjySpainIvan Magalhaes QUALIFIED
Claire I MaletUnited KingdomAnna Fali UNQUALIFIED
Smith L DoeJapanBernardo Dominic RENEWAL
Julie M DoeCanadaOnyama Limba RENEWAL
Adams A ShinkoBrazilElwin Sharvill NEGOTIATION
Alejandro D MorascaBrazilAmy Elsner RENEWAL
Aika K SchemmerSpainOnyama Limba UNQUALIFIED
Izzy B ChuiSpainStephen Shaw NEGOTIATION
David T VocelkaUnited KingdomStephen Shaw UNQUALIFIED
Silvio G WieserGermanyXuxue Feng NEGOTIATION
Smith Y NestleBrazilBernardo Dominic QUALIFIED
Nicolas W FollerFranceXuxue Feng RENEWAL
Ivar C ShinkoBrazilIvan Magalhaes QUALIFIED
Aditya V SlusarskiRussiaElwin Sharvill NEGOTIATION
Mujtaba N WhobreyIndiaElwin Sharvill NEW
Silvio T BriddickCanadaAnna Fali NEW
Kaitlin K DoeIndiaAmy Elsner UNQUALIFIED
Leja C CaldareraCanadaBernardo Dominic UNQUALIFIED
Greenwood L SlusarskiSpainAnna Fali NEW
Kadeem G VenereFranceOnyama Limba PROPOSAL
Darci T RimBrazilIoni Bowcher NEGOTIATION
Johnson Y StockhamIndiaIoni Bowcher NEGOTIATION
Cody R SlusarskiUnited KingdomIvan Magalhaes PROPOSAL
Claire M GarufiItalyStephen Shaw UNQUALIFIED
Emily L RutaUnited KingdomStephen Shaw NEGOTIATION
Jones R OldroydUnited KingdomElwin Sharvill PROPOSAL
Leja Q DarakjyArgentinaAnna Fali PROPOSAL
Salvatore T BologniaFranceBernardo Dominic UNQUALIFIED
Maisha P WaycottItalyAmy Elsner NEGOTIATION
James D NestleJapanAnna Fali RENEWAL
Kadeem J GauchoJapanAmy Elsner RENEWAL
Juan Y ShinkoJapanAnna Fali UNQUALIFIED
Aditya C InouyeIndiaStephen Shaw PROPOSAL
Alejandro H FerenczSpainBernardo Dominic UNQUALIFIED
Alejandro Z SchemmerAustraliaAsiya Javayant RENEWAL

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