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
Salvatore J StensethBrazilBernardo Dominic NEW
Antonio B ShinkoJapanOnyama Limba PROPOSAL
Greenwood N StensethFranceBernardo Dominic UNQUALIFIED
Leja D IturbideArgentinaOnyama Limba PROPOSAL
Faith N StockhamBrazilBernardo Dominic NEGOTIATION
Jeanfrancois D SaylorsAustraliaAnna Fali QUALIFIED
Johnson D StensethCanadaStephen Shaw QUALIFIED
Arvin R NickaBrazilOnyama Limba QUALIFIED
Mayumi C SchemmerSpainIvan Magalhaes UNQUALIFIED
Tony K FlosiJapanOnyama Limba QUALIFIED
Maisha N ButtCanadaIvan Magalhaes NEW
Nicolas G StockhamSpainAnna Fali QUALIFIED
Jones F ChuiIndiaStephen Shaw PROPOSAL
Jennifer H NestleUnited KingdomAmy Elsner PROPOSAL
Silvio P MarrierFranceIvan Magalhaes RENEWAL
Stacey D FigeroaBrazilXuxue Feng QUALIFIED
Octavia S FlosiSpainStephen Shaw NEGOTIATION
Aruna B VocelkaItalyAmy Elsner PROPOSAL
Deepesh R WhobreyBrazilIvan Magalhaes UNQUALIFIED
Misaki X SlusarskiSpainIoni Bowcher NEW
Faith D OldroydAustraliaIvan Magalhaes NEW
James A WieserIndiaIoni Bowcher PROPOSAL
Antonio R ButtItalyBernardo Dominic UNQUALIFIED
Salvatore L ShinkoSpainXuxue Feng QUALIFIED
Jones W BriddickArgentinaElwin Sharvill NEW
Rodrigues R SergiArgentinaOnyama Limba PROPOSAL
Johnson Q PaprockiSpainXuxue Feng PROPOSAL
Silvio D SchemmerJapanXuxue Feng QUALIFIED
Salvatore Y MarrierSpainIoni Bowcher NEW
Greenwood N GillianArgentinaBernardo Dominic RENEWAL
Leja P WieserArgentinaAnna Fali QUALIFIED
Arvin N RutaGermanyAmy Elsner PROPOSAL
Darci Y MacleadFranceElwin Sharvill PROPOSAL
Jones E RoysterUnited KingdomXuxue Feng NEGOTIATION
Jefferson Y WhobreyRussiaXuxue Feng UNQUALIFIED
Claire O GarufiBrazilOnyama Limba RENEWAL
Mayumi V BriddickAustraliaXuxue Feng UNQUALIFIED
Chavez P OldroydIndiaElwin Sharvill UNQUALIFIED
Maria A DilliardBrazilBernardo Dominic NEGOTIATION
Octavia E BowleyJapanStephen Shaw PROPOSAL
Julie Y ChuiItalyBernardo Dominic NEW
Aika C MaletJapanAnna Fali RENEWAL
Wickens U RulapaughFranceAmy Elsner NEW
Leon R SergiBrazilAnna Fali NEW
Alejandro N BologniaJapanAmy Elsner NEGOTIATION
Greenwood B StensethGermanyAsiya Javayant QUALIFIED
Jeanfrancois G FerenczItalyStephen Shaw PROPOSAL
Greenwood P SlusarskiRussiaAsiya Javayant PROPOSAL
Isabel P NestleSpainIoni Bowcher NEW
Greenwood L PoquetteItalyStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Faith G OldroydUnited KingdomAnna Fali NEW
Sinclair S SergiUnited KingdomOnyama Limba RENEWAL
Aruna D BowleyCanadaIvan Magalhaes NEGOTIATION
Izzy O DilliardCanadaIoni Bowcher QUALIFIED
Alejandro X KolmetzAustraliaAsiya Javayant NEW
Maisha X ChuiJapanOnyama Limba PROPOSAL
Izzy J ButtRussiaAnna Fali RENEWAL
Clifford W StensethFranceAmy Elsner QUALIFIED
Mayumi B CaldareraRussiaIvan Magalhaes PROPOSAL
Jeanfrancois U ChuiAustraliaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody I AlbaresItaly2024-04-09Feltz Printing Service NEGOTIATION26Stephen Shaw
1001Chavez X MarrierBrazil2024-04-19Dorl, James J Esq QUALIFIED80Ioni Bowcher
1002Kadeem Q GlickIndia2024-04-16Dorl, James J Esq NEGOTIATION73Xuxue Feng
1003Darci R VenereItaly2024-04-06King, Christopher A Esq PROPOSAL17Xuxue Feng
1004Ashley J RutaGermany2024-04-12Benton, John B Jr NEW2Elwin Sharvill
1005Mujtaba H BowleyRussia2024-04-14Rousseaux, Michael Esq PROPOSAL67Ioni Bowcher
1006Sinclair B VenereSpain2024-04-24Rangoni Of Florence NEGOTIATION19Onyama Limba
1007Ricardo M OstroskyGermany2024-04-02Chemel, James L Cpa NEGOTIATION51Onyama Limba
1008Chavez X StockhamIndia2024-04-13Feiner Bros NEGOTIATION40Amy Elsner
1009Izzy C SchemmerArgentina2024-04-07Chapman, Ross E Esq NEGOTIATION18Elwin Sharvill
1010Maisha D RutaUnited Kingdom2024-04-01Dorl, James J Esq UNQUALIFIED47Amy Elsner
1011Smith W StockhamIndia2024-04-24Buckley Miller Wright PROPOSAL30Ivan Magalhaes
1012Claire L SaylorsArgentina2024-04-27Chanay, Jeffrey A Esq UNQUALIFIED19Anna Fali
1013Mujtaba X CampainAustralia2024-04-18Buckley Miller Wright NEGOTIATION38Stephen Shaw
1014Ivar R MarrierRussia2024-04-17Rousseaux, Michael Esq NEGOTIATION76Asiya Javayant
1015Munro V DoeGermany2024-04-11Feiner Bros RENEWAL76Onyama Limba
1016Costa D WaycottGermany2024-04-21Feltz Printing Service UNQUALIFIED68Amy Elsner
1017Greenwood W SchemmerArgentina2024-04-19Rousseaux, Michael Esq RENEWAL82Anna Fali
1018James Z GauchoSpain2024-04-08Buckley Miller Wright RENEWAL60Onyama Limba
1019Julie Y InouyeUnited Kingdom2024-04-22Chemel, James L Cpa QUALIFIED11Anna Fali
1020Misaki Z PoquetteUnited Kingdom2024-04-09Chapman, Ross E Esq PROPOSAL6Xuxue Feng
1021Sinclair U TollnerAustralia2024-04-12Chanay, Jeffrey A Esq NEW96Anna Fali
1022Leon R AmigonSpain2024-04-14Morlong Associates PROPOSAL65Onyama Limba
1023Antonio R ButtRussia2024-04-05Dorl, James J Esq UNQUALIFIED95Stephen Shaw
1024Darci D IturbideJapan2024-04-28Chanay, Jeffrey A Esq QUALIFIED88Bernardo Dominic
1025Wickens X CaudySpain2024-04-11King, Christopher A Esq UNQUALIFIED61Anna Fali
1026Jones F RulapaughCanada2024-04-20Buckley Miller Wright UNQUALIFIED42Ivan Magalhaes
1027Claire H PoquetteSpain2024-04-21Chanay, Jeffrey A Esq RENEWAL44Stephen Shaw
1028Jennifer G MaletSpain2024-04-26Feltz Printing Service NEW5Stephen Shaw
1029Octavia R BologniaFrance2024-04-21Chanay, Jeffrey A Esq RENEWAL86Xuxue Feng
1030Costa L RoysterRussia2024-04-26Chemel, James L Cpa PROPOSAL11Anna Fali
1031Mujtaba E FigeroaGermany2024-04-18Chapman, Ross E Esq RENEWAL80Stephen Shaw
1032Faith P WaycottBrazil2024-04-02Feiner Bros UNQUALIFIED36Stephen Shaw
1033Morrow T PoquetteGermany2024-04-22Truhlar And Truhlar Attys QUALIFIED63Xuxue Feng
1034David J MarrierCanada2024-04-23Chanay, Jeffrey A Esq QUALIFIED32Xuxue Feng
1035Jefferson Z MaletItaly2024-04-25Rangoni Of Florence QUALIFIED55Onyama Limba
1036Arvin Q AmigonSpain2024-04-25Commercial Press UNQUALIFIED39Ivan Magalhaes
1037Rodrigues R DoeRussia2024-04-27Rangoni Of Florence PROPOSAL6Elwin Sharvill
1038Silvio R VocelkaGermany2024-04-09Chapman, Ross E Esq UNQUALIFIED19Anna Fali
1039Costa O MorascaGermany2024-04-02Dorl, James J Esq NEW23Ioni Bowcher
1040Silvio I RimRussia2024-04-20Dorl, James J Esq RENEWAL26Xuxue Feng
1041Aika N RimFrance2024-04-10Truhlar And Truhlar Attys NEGOTIATION64Asiya Javayant
1042Jennifer F GlickUnited Kingdom2024-04-20Feltz Printing Service NEW67Xuxue Feng
1043Clifford V VenereAustralia2024-04-14Rousseaux, Michael Esq PROPOSAL97Elwin Sharvill
1044Rodrigues S KuskoBrazil2024-04-28Chemel, James L Cpa QUALIFIED89Ioni Bowcher
1045Jones F PerinAustralia2024-04-22Buckley Miller Wright RENEWAL21Stephen Shaw
1046Greenwood U TollnerArgentina2024-04-26King, Christopher A Esq RENEWAL33Onyama Limba
1047Rodrigues I PoquetteUnited Kingdom2024-04-26Buckley Miller Wright PROPOSAL41Xuxue Feng
1048Wickens Z GillianCanada2024-04-29Rousseaux, Michael Esq PROPOSAL95Bernardo Dominic
1049Tony W MacleadSpain2024-04-10Chapman, Ross E Esq UNQUALIFIED3Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues S MaletUnited KingdomAnna Fali QUALIFIED
Rodrigues R FlosiSpainIvan Magalhaes RENEWAL
Kadeem P RulapaughSpainIoni Bowcher NEGOTIATION
Aika E BologniaFranceAsiya Javayant RENEWAL
Stacey U AlbaresRussiaElwin Sharvill RENEWAL
Julie T CaudyAustraliaElwin Sharvill PROPOSAL
Rodrigues I SlusarskiGermanyOnyama Limba NEGOTIATION
Maria T MorascaJapanAmy Elsner PROPOSAL
Kadeem P CaldareraCanadaOnyama Limba RENEWAL
Maisha N KolmetzItalyElwin Sharvill NEGOTIATION
Adams U TollnerSpainIvan Magalhaes NEGOTIATION
Darci U MaletIndiaAmy Elsner PROPOSAL
Jefferson O MarrierAustraliaOnyama Limba PROPOSAL
Isabel D CaudyIndiaAmy Elsner NEGOTIATION
Octavia T GlickUnited KingdomIoni Bowcher QUALIFIED
Isabel X VocelkaFranceElwin Sharvill NEGOTIATION
Arvin F GarufiJapanBernardo Dominic QUALIFIED
Johnson I GillianAustraliaAnna Fali NEGOTIATION
Cody H MorascaIndiaAsiya Javayant RENEWAL
Alejandro G TollnerItalyAnna Fali RENEWAL
Darci H FlosiArgentinaOnyama Limba NEGOTIATION
Stacey T InouyeSpainAnna Fali RENEWAL
Aditya P KuskoAustraliaStephen Shaw QUALIFIED
Arvin I DoeUnited KingdomIvan Magalhaes QUALIFIED
Izzy L BowleyFranceOnyama Limba RENEWAL
Aruna K InouyeCanadaAsiya Javayant QUALIFIED
Juan X CaudyRussiaXuxue Feng RENEWAL
Jennifer K DarakjyArgentinaXuxue Feng UNQUALIFIED
Leon F MacleadIndiaIoni Bowcher UNQUALIFIED
Alejandro U NickaGermanyBernardo Dominic UNQUALIFIED
Francesco O TollnerRussiaAsiya Javayant UNQUALIFIED
Faith E SaylorsArgentinaOnyama Limba UNQUALIFIED
Cody I VenereItalyIoni Bowcher RENEWAL
Francesco Y FlosiBrazilOnyama Limba QUALIFIED
Mujtaba E TollnerSpainStephen Shaw QUALIFIED
Silvio D InouyeIndiaOnyama Limba NEW
Murillo B GlickItalyAnna Fali NEW
Leon P AlbaresSpainBernardo Dominic NEGOTIATION
Ashley S TollnerCanadaIoni Bowcher QUALIFIED
Adams L MorascaAustraliaStephen Shaw NEGOTIATION
Francesco G FlosiSpainBernardo Dominic NEGOTIATION
Claire T PaprockiAustraliaIvan Magalhaes NEW
Nicolas Q SchemmerArgentinaBernardo Dominic UNQUALIFIED
Rodrigues G RoysterItalyStephen Shaw QUALIFIED
Arvin D WhobreyItalyXuxue Feng PROPOSAL
Francesco K FigeroaFranceXuxue Feng PROPOSAL
Julie C CampainSpainStephen Shaw QUALIFIED
Juan B PaprockiCanadaBernardo Dominic RENEWAL
Izzy U CampainArgentinaIvan Magalhaes UNQUALIFIED
Leja A BowleyAustraliaIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Misaki R Whobrey
Cody X Royster
Mujtaba N Royster
Aditya V Doe
Deepesh U Maclead
Antonio M Venere
Aika B Rim
Stacey D Maclead
Aruna Q Bolognia
Izzy D Sergi
Greenwood I Venere
Aruna B Kusko
Aditya Z Waycott
Sinclair Y Gillian
Francesco H Paprocki
Aruna T Paprocki
Ashley I Amigon
Faith V Oldroyd
Deepesh G Caldarera
Stacey J Bolognia
Costa Z Iturbide
Jones M Iturbide
Deepesh G Inouye
Isabel V Nestle
Jeanfrancois T Royster
Faith K Tollner
Costa O Gaucho
Morrow F Caldarera
Jennifer X Darakjy
Juan S Maclead
Jefferson O Shinko
Nicolas N Whobrey
Wickens S Figeroa
Nicolas I Tollner
Salvatore I Ferencz
Salvatore C Ostrosky
Sinclair L Gillian
Murillo D Ruta
Darci P Figeroa
Silvio N Perin
Greenwood G Gaucho
Juan R Glick
Clifford G Saylors
Tony N Saylors
Misaki F Garufi
Aditya C Darakjy
Aruna R Nicka
Arvin M Campain
Mujtaba T Venere
Isabel F Malet
IdCountryDate
1000Argentina2024-04-21
1001France2024-04-06
1002Japan2024-04-10
1003Brazil2024-04-10
1004Australia2024-04-26
1005Australia2024-04-16
1006Japan2024-04-11
1007United Kingdom2024-04-29
1008Italy2024-04-20
1009Brazil2024-04-19
1010Spain2024-04-08
1011Italy2024-04-17
1012Spain2024-04-02
1013Japan2024-04-13
1014Brazil2024-04-26
1015France2024-04-03
1016India2024-04-07
1017Australia2024-04-29
1018Australia2024-04-06
1019India2024-04-28
1020France2024-04-29
1021Argentina2024-04-25
1022Australia2024-04-24
1023India2024-04-22
1024India2024-04-28
1025United Kingdom2024-04-24
1026Russia2024-04-28
1027Spain2024-04-21
1028Japan2024-04-09
1029France2024-04-02
1030Russia2024-04-01
1031Italy2024-04-20
1032Italy2024-04-24
1033Italy2024-04-10
1034Canada2024-04-08
1035Argentina2024-04-23
1036Japan2024-04-24
1037Italy2024-04-26
1038United Kingdom2024-04-29
1039Italy2024-04-22
1040France2024-04-29
1041Argentina2024-04-11
1042Argentina2024-04-29
1043India2024-04-02
1044Japan2024-04-07
1045Brazil2024-04-03
1046Spain2024-04-24
1047Canada2024-04-17
1048Italy2024-04-26
1049Argentina2024-04-23

On-Demand Data

NameIdCountryDate
Emily A Kolmetz1000France2024-04-01
Leja T Glick1001Australia2024-04-04
Isabel U Inouye1002India2024-04-12
James W Stenseth1003Russia2024-04-17
Aditya R Dilliard1004United Kingdom2024-04-13
Jefferson C Dilliard1005Brazil2024-04-18
Alejandro Z Saylors1006Argentina2024-04-02
Cody Y Marrier1007Italy2024-04-27
Isabel E Flosi1008Japan2024-04-10
Deepesh X Glick1009Argentina2024-04-06
Juan U Kolmetz1010France2024-04-28
Jeanfrancois I Albares1011Argentina2024-04-22
Claire J Bolognia1012France2024-04-12
Morrow M Bolognia1013Germany2024-04-23
Claire Q Doe1014Brazil2024-04-14
Isabel F Shinko1015France2024-04-11
Darci E Gaucho1016Argentina2024-04-25
Isabel X Flosi1017Brazil2024-04-09
James K Glick1018Australia2024-04-23
Ricardo W Wieser1019India2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens K KuskoGermanyAsiya Javayant NEGOTIATION
Arvin K FerenczAustraliaOnyama Limba RENEWAL
Murillo S FlosiRussiaIoni Bowcher NEW
Costa M OstroskyBrazilXuxue Feng QUALIFIED
Tony A GarufiSpainAsiya Javayant UNQUALIFIED
Tony M OldroydArgentinaAsiya Javayant PROPOSAL
Leon O FigeroaUnited KingdomXuxue Feng PROPOSAL
Wickens T MacleadCanadaAsiya Javayant NEGOTIATION
Jeanfrancois X ChuiIndiaIoni Bowcher RENEWAL
Francesco Y RimGermanyAnna Fali PROPOSAL
Clifford S RoysterFranceAmy Elsner NEW
Chavez P OstroskyItalyIvan Magalhaes NEGOTIATION
Leja D SchemmerRussiaAnna Fali NEW
Sinclair L WhobreyGermanyElwin Sharvill QUALIFIED
Clifford G PerinCanadaIvan Magalhaes NEGOTIATION
Silvio V PoquetteArgentinaStephen Shaw NEGOTIATION
Greenwood A RulapaughUnited KingdomStephen Shaw RENEWAL
Francesco S MorascaBrazilStephen Shaw RENEWAL
Aika N SergiUnited KingdomOnyama Limba NEGOTIATION
Antonio D FigeroaJapanIoni Bowcher QUALIFIED
Jennifer H OldroydJapanIvan Magalhaes QUALIFIED
Isabel N PerinBrazilOnyama Limba QUALIFIED
Murillo O DarakjyGermanyAmy Elsner NEW
Stacey U CaldareraAustraliaElwin Sharvill NEGOTIATION
Tony I BriddickItalyElwin Sharvill NEGOTIATION
Clifford R PaprockiJapanIoni Bowcher NEW
Claire E StockhamBrazilIvan Magalhaes NEW
Aruna D RoysterBrazilIvan Magalhaes NEW
Mujtaba L SlusarskiUnited KingdomIvan Magalhaes NEGOTIATION
Julie R RoysterFranceIoni Bowcher QUALIFIED
Francesco K BriddickFranceStephen Shaw RENEWAL
Johnson O RutaArgentinaIvan Magalhaes UNQUALIFIED
Isabel A InouyeAustraliaAsiya Javayant RENEWAL
Deepesh O FollerItalyElwin Sharvill NEW
Darci J MaletRussiaStephen Shaw NEW
Chavez O FerenczJapanAnna Fali UNQUALIFIED
Maisha S CampainArgentinaOnyama Limba NEGOTIATION
Julie W GarufiUnited KingdomXuxue Feng RENEWAL
Chavez M StensethFranceBernardo Dominic QUALIFIED
Alejandro A SchemmerItalyIvan Magalhaes 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>