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
Arvin Z InouyeItalyIvan Magalhaes RENEWAL
Misaki C KuskoIndiaOnyama Limba RENEWAL
Adams N PaprockiArgentinaElwin Sharvill PROPOSAL
Tony I IturbideUnited KingdomIoni Bowcher UNQUALIFIED
Julie G PerinAustraliaIoni Bowcher NEW
Jeanfrancois A MarrierIndiaAnna Fali QUALIFIED
Misaki Q StensethGermanyOnyama Limba UNQUALIFIED
Wickens C MaletSpainIoni Bowcher PROPOSAL
Leon R StockhamFranceAmy Elsner QUALIFIED
Adams J TollnerArgentinaOnyama Limba PROPOSAL
Deepesh H InouyeUnited KingdomBernardo Dominic RENEWAL
Faith R PaprockiFranceIoni Bowcher NEW
Izzy P MaletRussiaAmy Elsner NEGOTIATION
James L FollerRussiaAmy Elsner RENEWAL
Aruna N MacleadUnited KingdomStephen Shaw PROPOSAL
Tony Z MaletArgentinaIoni Bowcher PROPOSAL
Faith T ShinkoRussiaBernardo Dominic QUALIFIED
Sinclair H VocelkaSpainElwin Sharvill RENEWAL
Claire K WieserItalyAmy Elsner UNQUALIFIED
Mujtaba D StensethAustraliaXuxue Feng NEGOTIATION
Greenwood R VocelkaGermanyXuxue Feng PROPOSAL
Antonio K MacleadGermanyBernardo Dominic NEGOTIATION
Antonio G ShinkoUnited KingdomIvan Magalhaes UNQUALIFIED
Murillo I MacleadItalyAmy Elsner RENEWAL
Adams K GarufiJapanOnyama Limba NEGOTIATION
Murillo N PoquetteRussiaAsiya Javayant PROPOSAL
Antonio X InouyeBrazilIoni Bowcher NEW
Ashley K AmigonAustraliaXuxue Feng NEGOTIATION
Tony T FigeroaUnited KingdomOnyama Limba PROPOSAL
Salvatore M GauchoJapanAsiya Javayant PROPOSAL
Munro R BologniaIndiaAmy Elsner NEGOTIATION
Leja C RimArgentinaAmy Elsner RENEWAL
Smith B GlickUnited KingdomStephen Shaw NEW
Claire J CampainIndiaAsiya Javayant RENEWAL
Maria K FlosiUnited KingdomIvan Magalhaes QUALIFIED
Maisha Z WieserBrazilElwin Sharvill PROPOSAL
Francesco P OstroskyCanadaBernardo Dominic NEGOTIATION
Francesco I GlickArgentinaAmy Elsner NEGOTIATION
Munro O FerenczBrazilXuxue Feng RENEWAL
David O RutaItalyAnna Fali NEGOTIATION
Emily I RulapaughRussiaElwin Sharvill NEW
Wickens N BowleyRussiaIoni Bowcher NEW
Aika U OldroydIndiaOnyama Limba PROPOSAL
Stacey U FigeroaUnited KingdomStephen Shaw NEGOTIATION
Nicolas M MorascaItalyOnyama Limba RENEWAL
Arvin F AmigonItalyStephen Shaw NEGOTIATION
Claire U KolmetzIndiaAnna Fali NEGOTIATION
Silvio U FerenczItalyElwin Sharvill QUALIFIED
Rodrigues M VenereGermanyStephen Shaw UNQUALIFIED
Isabel L NickaUnited KingdomOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Francesco U ShinkoIndiaOnyama Limba RENEWAL
Kadeem F RoysterUnited KingdomElwin Sharvill NEW
Tony S PaprockiAustraliaStephen Shaw QUALIFIED
Sinclair E AlbaresCanadaIvan Magalhaes RENEWAL
Jones Z VocelkaSpainStephen Shaw RENEWAL
Stacey Q PaprockiItalyOnyama Limba UNQUALIFIED
Leja E DarakjyAustraliaElwin Sharvill PROPOSAL
Octavia F WieserCanadaXuxue Feng NEW
Ivar P FlosiGermanyAsiya Javayant UNQUALIFIED
Ashley O DilliardCanadaAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika J NestleCanada2024-04-18Feltz Printing Service UNQUALIFIED5Ioni Bowcher
1001Nicolas Q DilliardBrazil2024-03-29Rousseaux, Michael Esq NEGOTIATION56Xuxue Feng
1002Kaitlin P SchemmerGermany2024-04-05Printing Dimensions QUALIFIED47Anna Fali
1003Kaitlin A RoysterItaly2024-04-07King, Christopher A Esq NEW73Anna Fali
1004Kaitlin S ButtGermany2024-04-12King, Christopher A Esq PROPOSAL83Ivan Magalhaes
1005Leon N RoysterIndia2024-04-06Printing Dimensions UNQUALIFIED67Asiya Javayant
1006Greenwood N TollnerItaly2024-04-11Chanay, Jeffrey A Esq PROPOSAL9Onyama Limba
1007Tony V BriddickGermany2024-04-17King, Christopher A Esq QUALIFIED81Stephen Shaw
1008Isabel S FlosiRussia2024-04-09Morlong Associates QUALIFIED16Bernardo Dominic
1009Tony J BologniaJapan2024-04-23King, Christopher A Esq QUALIFIED81Asiya Javayant
1010Ivar H VocelkaArgentina2024-04-10Feiner Bros UNQUALIFIED20Ivan Magalhaes
1011Mujtaba M NestleFrance2024-04-16Chapman, Ross E Esq UNQUALIFIED64Stephen Shaw
1012Ricardo J ButtGermany2024-04-19Feiner Bros RENEWAL77Ioni Bowcher
1013Costa E WaycottSpain2024-04-27Feiner Bros RENEWAL37Ivan Magalhaes
1014Octavia L VenereArgentina2024-04-07Dorl, James J Esq NEGOTIATION37Asiya Javayant
1015James F CaldareraItaly2024-04-06Truhlar And Truhlar Attys PROPOSAL96Anna Fali
1016Maria I MarrierAustralia2024-04-07Feiner Bros UNQUALIFIED1Bernardo Dominic
1017David P RimItaly2024-04-17Commercial Press UNQUALIFIED79Anna Fali
1018Octavia T MaletJapan2024-03-30Printing Dimensions PROPOSAL29Elwin Sharvill
1019Kaitlin S CaudyItaly2024-04-16Dorl, James J Esq NEGOTIATION5Bernardo Dominic
1020Misaki A RulapaughIndia2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED87Amy Elsner
1021Ashley X MaletBrazil2024-04-19Truhlar And Truhlar Attys RENEWAL76Stephen Shaw
1022Kaitlin E VenereBrazil2024-04-05Chapman, Ross E Esq RENEWAL72Bernardo Dominic
1023Jones M MaletJapan2024-04-02Chapman, Ross E Esq PROPOSAL99Asiya Javayant
1024Jones B SaylorsUnited Kingdom2024-03-30Commercial Press NEGOTIATION67Bernardo Dominic
1025Chavez E RutaRussia2024-04-19Rousseaux, Michael Esq NEW58Stephen Shaw
1026Kadeem Z GauchoJapan2024-04-06Printing Dimensions QUALIFIED73Xuxue Feng
1027Jefferson Q SergiUnited Kingdom2024-04-12Commercial Press NEW57Bernardo Dominic
1028Silvio Q MarrierUnited Kingdom2024-04-02Chanay, Jeffrey A Esq RENEWAL15Asiya Javayant
1029Jones A IturbideUnited Kingdom2024-04-15Chemel, James L Cpa PROPOSAL76Ioni Bowcher
1030Izzy Q ShinkoItaly2024-04-15Rangoni Of Florence PROPOSAL30Ioni Bowcher
1031Aditya D CaudyIndia2024-03-31King, Christopher A Esq NEW66Bernardo Dominic
1032Silvio L MaletJapan2024-04-11Commercial Press UNQUALIFIED28Ioni Bowcher
1033Aika V VocelkaJapan2024-04-23Truhlar And Truhlar Attys UNQUALIFIED45Anna Fali
1034Salvatore Q BowleyUnited Kingdom2024-04-02Benton, John B Jr PROPOSAL74Elwin Sharvill
1035Jennifer Y MaletIndia2024-04-21Rangoni Of Florence UNQUALIFIED75Asiya Javayant
1036Juan O InouyeAustralia2024-04-09King, Christopher A Esq UNQUALIFIED44Stephen Shaw
1037Adams H IturbideAustralia2024-04-01Chanay, Jeffrey A Esq NEGOTIATION98Asiya Javayant
1038Nicolas M VenereJapan2024-03-29Rangoni Of Florence NEGOTIATION40Ivan Magalhaes
1039Jeanfrancois Z GlickRussia2024-04-26Benton, John B Jr NEGOTIATION93Ioni Bowcher
1040Leja S ChuiIndia2024-04-11Commercial Press UNQUALIFIED6Ioni Bowcher
1041Misaki O StockhamArgentina2024-04-18Chapman, Ross E Esq NEW81Amy Elsner
1042Munro A PerinAustralia2024-04-15Truhlar And Truhlar Attys UNQUALIFIED13Elwin Sharvill
1043Claire M KuskoFrance2024-04-25King, Christopher A Esq QUALIFIED20Ivan Magalhaes
1044Emily D WieserCanada2024-04-10Morlong Associates NEGOTIATION99Xuxue Feng
1045Chavez E WieserIndia2024-04-26Rousseaux, Michael Esq PROPOSAL20Asiya Javayant
1046Ricardo V RulapaughCanada2024-04-20Chapman, Ross E Esq PROPOSAL54Bernardo Dominic
1047Faith G FigeroaSpain2024-04-07Rousseaux, Michael Esq RENEWAL72Ivan Magalhaes
1048Ivar P StensethJapan2024-04-01Chanay, Jeffrey A Esq NEGOTIATION42Ivan Magalhaes
1049Johnson F MarrierFrance2024-04-18Feiner Bros RENEWAL75Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Wickens L OstroskySpainBernardo Dominic QUALIFIED
Stacey D KuskoArgentinaIvan Magalhaes QUALIFIED
Maisha F NestleAustraliaAnna Fali NEGOTIATION
Stacey R RoysterBrazilXuxue Feng PROPOSAL
Chavez M OldroydBrazilAnna Fali QUALIFIED
Misaki E ShinkoIndiaOnyama Limba NEGOTIATION
Julie G GillianRussiaAsiya Javayant RENEWAL
Deepesh Q NestleJapanAsiya Javayant NEGOTIATION
Clifford K PaprockiGermanyAnna Fali NEW
Juan O SlusarskiIndiaOnyama Limba QUALIFIED
Darci U BriddickArgentinaAsiya Javayant RENEWAL
Jeanfrancois J PerinArgentinaAmy Elsner UNQUALIFIED
Stacey O CampainSpainBernardo Dominic UNQUALIFIED
Arvin O StensethUnited KingdomXuxue Feng QUALIFIED
Deepesh D NickaGermanyAsiya Javayant NEGOTIATION
Darci Z FlosiRussiaIoni Bowcher UNQUALIFIED
Morrow U MacleadSpainBernardo Dominic RENEWAL
Jones N OldroydItalyBernardo Dominic NEGOTIATION
Misaki N MaletItalyStephen Shaw QUALIFIED
Smith E ButtGermanyAnna Fali QUALIFIED
Maisha O DilliardItalyElwin Sharvill QUALIFIED
Maria L SlusarskiSpainElwin Sharvill NEGOTIATION
Misaki D CampainSpainIoni Bowcher PROPOSAL
Aika V OstroskyUnited KingdomAmy Elsner PROPOSAL
Tony W DilliardBrazilElwin Sharvill QUALIFIED
Jefferson L IturbideGermanyAmy Elsner UNQUALIFIED
Arvin X PoquetteJapanBernardo Dominic QUALIFIED
Wickens Y SaylorsJapanIoni Bowcher NEGOTIATION
Kaitlin U CaldareraCanadaBernardo Dominic PROPOSAL
Antonio L InouyeIndiaXuxue Feng NEW
Silvio V SaylorsSpainIoni Bowcher PROPOSAL
Johnson B CaudyBrazilAsiya Javayant QUALIFIED
Morrow X VocelkaCanadaIvan Magalhaes PROPOSAL
Maria Z GarufiItalyStephen Shaw RENEWAL
Kadeem J DilliardCanadaAsiya Javayant RENEWAL
Morrow C StensethFranceOnyama Limba QUALIFIED
Darci L WhobreyGermanyElwin Sharvill NEW
Jones G OstroskyItalyIvan Magalhaes PROPOSAL
Kaitlin W ShinkoFranceElwin Sharvill QUALIFIED
Jefferson D GlickCanadaAsiya Javayant QUALIFIED
Izzy T WaycottArgentinaIoni Bowcher NEGOTIATION
Darci L CaldareraAustraliaElwin Sharvill NEGOTIATION
Leon Y SlusarskiUnited KingdomElwin Sharvill PROPOSAL
Costa F SaylorsUnited KingdomAnna Fali NEW
Antonio V KolmetzBrazilAsiya Javayant PROPOSAL
Aruna S OstroskyArgentinaIoni Bowcher UNQUALIFIED
Greenwood M RoysterSpainOnyama Limba QUALIFIED
Jennifer H SchemmerJapanElwin Sharvill RENEWAL
Silvio P MaletArgentinaElwin Sharvill PROPOSAL
Wickens K PoquetteJapanOnyama Limba PROPOSAL
Frozen Columns
Name
Kadeem B Albares
Emily J Royster
Isabel H Poquette
Nicolas G Malet
Faith O Iturbide
Juan G Inouye
Juan E Sergi
Kaitlin H Caldarera
Kadeem H Saylors
Deepesh O Sergi
Johnson K Caudy
Octavia I Campain
Johnson S Venere
Mujtaba C Ferencz
Maisha P Rulapaugh
Isabel N Rim
Jones X Garufi
Claire O Rulapaugh
Costa M Ruta
Wickens R Shinko
Mayumi K Chui
James A Maclead
Tony B Marrier
Morrow K Caudy
Juan N Schemmer
Mayumi E Ferencz
Munro W Albares
Smith Y Wieser
Julie D Glick
Jefferson S Nicka
Munro V Maclead
Julie B Nestle
Juan H Ruta
Ivar C Briddick
Antonio A Inouye
Jones H Morasca
Izzy U Flosi
Ashley S Royster
Kadeem F Venere
Mayumi G Tollner
Mujtaba G Caudy
Nicolas M Shinko
Maisha X Royster
Silvio J Garufi
Claire M Marrier
Munro X Chui
Murillo I Ostrosky
Morrow A Albares
Salvatore Q Darakjy
Silvio U Rulapaugh
IdCountryDate
1000Argentina2024-04-16
1001Brazil2024-04-13
1002Italy2024-04-22
1003Italy2024-04-17
1004Canada2024-04-16
1005Argentina2024-04-27
1006France2024-03-29
1007Australia2024-04-21
1008Argentina2024-03-29
1009Australia2024-04-16
1010Italy2024-04-05
1011Japan2024-04-13
1012India2024-04-21
1013Japan2024-04-20
1014Spain2024-04-01
1015Spain2024-04-20
1016France2024-04-11
1017Argentina2024-04-07
1018Australia2024-04-25
1019Japan2024-04-26
1020Brazil2024-04-24
1021Brazil2024-04-20
1022Italy2024-04-20
1023Russia2024-03-30
1024Russia2024-04-06
1025Spain2024-03-29
1026Canada2024-04-01
1027India2024-04-05
1028Australia2024-04-11
1029Brazil2024-04-13
1030United Kingdom2024-04-14
1031Germany2024-04-08
1032India2024-04-11
1033Germany2024-04-10
1034Brazil2024-04-10
1035Australia2024-04-15
1036Australia2024-04-22
1037Argentina2024-04-21
1038Australia2024-04-24
1039Germany2024-04-07
1040Italy2024-04-06
1041Argentina2024-04-12
1042Italy2024-04-03
1043France2024-04-14
1044Australia2024-04-27
1045Brazil2024-04-06
1046Japan2024-04-18
1047Australia2024-04-08
1048Spain2024-04-07
1049France2024-04-12

On-Demand Data

NameIdCountryDate
Aditya F Sergi1000France2024-04-17
Johnson Z Foller1001Japan2024-04-15
Mujtaba B Albares1002Russia2024-04-11
Ivar S Gillian1003France2024-04-23
Stacey I Kolmetz1004Australia2024-04-05
Nicolas R Rulapaugh1005Italy2024-04-16
Smith P Caudy1006Germany2024-04-16
David U Ferencz1007India2024-04-05
Ivar Q Maclead1008Italy2024-04-10
Wickens R Slusarski1009Germany2024-04-06
Tony E Kusko1010Russia2024-04-07
Darci Z Waycott1011United Kingdom2024-04-21
Murillo Q Royster1012Japan2024-04-01
Mayumi Q Nestle1013United Kingdom2024-04-25
Faith O Oldroyd1014Argentina2024-04-14
Greenwood C Garufi1015Argentina2024-03-29
Costa Y Wieser1016Canada2024-04-07
Morrow B Inouye1017Australia2024-04-15
Deepesh O Malet1018India2024-03-30
Jones K Stockham1019Australia2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin I AlbaresUnited KingdomAmy Elsner NEGOTIATION
Smith W DilliardItalyBernardo Dominic NEW
Chavez J GillianItalyAnna Fali RENEWAL
Ivar P SaylorsRussiaElwin Sharvill QUALIFIED
Aruna J VocelkaArgentinaAnna Fali RENEWAL
Aika K BriddickSpainIvan Magalhaes PROPOSAL
Salvatore Z WaycottUnited KingdomStephen Shaw UNQUALIFIED
Smith Q GarufiAustraliaAnna Fali QUALIFIED
James U KuskoSpainIvan Magalhaes RENEWAL
Jennifer R OldroydArgentinaAsiya Javayant QUALIFIED
Leon U GauchoJapanAnna Fali PROPOSAL
Smith B CampainFranceAmy Elsner PROPOSAL
Johnson L RutaBrazilXuxue Feng UNQUALIFIED
Greenwood T DilliardIndiaOnyama Limba RENEWAL
Arvin F CaldareraItalyIoni Bowcher NEGOTIATION
Arvin S BologniaRussiaAmy Elsner RENEWAL
Jefferson J WaycottJapanAmy Elsner PROPOSAL
Jefferson Q MorascaBrazilAnna Fali PROPOSAL
Kaitlin S RoysterSpainBernardo Dominic NEGOTIATION
Stacey T MorascaItalyAmy Elsner RENEWAL
Leon E CampainRussiaBernardo Dominic RENEWAL
Faith W VenereUnited KingdomAnna Fali NEGOTIATION
James N OstroskyBrazilAmy Elsner PROPOSAL
Darci L CaudyJapanIvan Magalhaes NEGOTIATION
Alejandro Y NestleItalyBernardo Dominic RENEWAL
Octavia Z DilliardCanadaStephen Shaw NEGOTIATION
Munro A MaletGermanyIvan Magalhaes QUALIFIED
Ricardo I NestleBrazilElwin Sharvill PROPOSAL
Aika U BologniaJapanElwin Sharvill PROPOSAL
Leon J WaycottSpainBernardo Dominic RENEWAL
Izzy V FollerItalyOnyama Limba PROPOSAL
Clifford E DilliardBrazilOnyama Limba QUALIFIED
Morrow T AlbaresCanadaAsiya Javayant RENEWAL
Darci J BologniaSpainAsiya Javayant NEW
Jefferson Y GlickFranceAnna Fali PROPOSAL
Maria E FerenczBrazilStephen Shaw QUALIFIED
Kadeem H OldroydRussiaElwin Sharvill PROPOSAL
Francesco T OstroskyJapanAnna Fali QUALIFIED
Jefferson G WhobreyCanadaStephen Shaw NEW
Jeanfrancois E AlbaresCanadaAsiya Javayant NEGOTIATION

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