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
Mayumi P MacleadBrazilXuxue Feng RENEWAL
Murillo M VenereFranceAnna Fali NEW
Kaitlin P PaprockiCanadaXuxue Feng UNQUALIFIED
Rodrigues I IturbideAustraliaElwin Sharvill NEGOTIATION
Izzy N BriddickGermanyStephen Shaw QUALIFIED
Alejandro Q GauchoUnited KingdomXuxue Feng PROPOSAL
James O PoquetteUnited KingdomAsiya Javayant UNQUALIFIED
Adams R GlickJapanStephen Shaw QUALIFIED
Wickens G GlickBrazilBernardo Dominic QUALIFIED
Ricardo H AlbaresBrazilElwin Sharvill NEW
Ricardo O CampainArgentinaXuxue Feng PROPOSAL
Juan X StockhamArgentinaIoni Bowcher NEGOTIATION
Nicolas H DoeRussiaElwin Sharvill UNQUALIFIED
Leja P SlusarskiFranceXuxue Feng RENEWAL
Salvatore C DilliardUnited KingdomAsiya Javayant RENEWAL
Ashley V BowleyFranceIvan Magalhaes QUALIFIED
Tony N MorascaGermanyBernardo Dominic UNQUALIFIED
Maisha F GarufiCanadaIvan Magalhaes UNQUALIFIED
Adams K BriddickArgentinaBernardo Dominic UNQUALIFIED
Jones C AmigonFranceIvan Magalhaes RENEWAL
Mujtaba S ChuiUnited KingdomStephen Shaw UNQUALIFIED
Ashley X OldroydIndiaIvan Magalhaes RENEWAL
Morrow J OstroskyRussiaAsiya Javayant UNQUALIFIED
Tony M MorascaAustraliaIvan Magalhaes UNQUALIFIED
Leja U SaylorsItalyIvan Magalhaes NEGOTIATION
Kadeem R StensethRussiaAsiya Javayant PROPOSAL
Maria G StensethSpainIvan Magalhaes NEW
Faith R NestleUnited KingdomAmy Elsner NEW
Silvio Z SergiBrazilElwin Sharvill UNQUALIFIED
James C FerenczSpainElwin Sharvill NEGOTIATION
Greenwood F KuskoUnited KingdomAnna Fali PROPOSAL
Aika Q MaletUnited KingdomIvan Magalhaes NEW
Octavia U PaprockiCanadaAnna Fali QUALIFIED
Wickens Y VocelkaUnited KingdomStephen Shaw UNQUALIFIED
Kadeem P GarufiItalyAsiya Javayant RENEWAL
Ivar O TollnerCanadaIvan Magalhaes RENEWAL
Tony K StockhamJapanAnna Fali RENEWAL
Murillo T MarrierCanadaOnyama Limba RENEWAL
Misaki V StensethItalyXuxue Feng NEGOTIATION
Misaki I AlbaresBrazilAmy Elsner PROPOSAL
Mayumi R FerenczAustraliaOnyama Limba QUALIFIED
Maria K SchemmerItalyBernardo Dominic NEGOTIATION
Costa T MaletIndiaIoni Bowcher PROPOSAL
Claire P TollnerCanadaIvan Magalhaes PROPOSAL
Jones V GarufiArgentinaBernardo Dominic NEGOTIATION
Misaki G VocelkaAustraliaBernardo Dominic UNQUALIFIED
Julie C NestleBrazilAnna Fali PROPOSAL
Antonio Y BowleyAustraliaXuxue Feng NEGOTIATION
Claire K FlosiIndiaIoni Bowcher NEGOTIATION
Rodrigues E BowleyGermanyIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Maisha N GauchoGermanyStephen Shaw PROPOSAL
Leja M DilliardUnited KingdomElwin Sharvill QUALIFIED
Alejandro L MaletItalyBernardo Dominic UNQUALIFIED
Jefferson B GillianBrazilIvan Magalhaes PROPOSAL
Misaki W FigeroaItalyAnna Fali QUALIFIED
Murillo R InouyeJapanOnyama Limba NEGOTIATION
Johnson C BologniaJapanXuxue Feng RENEWAL
Leon K FlosiSpainAsiya Javayant PROPOSAL
Aika T KolmetzIndiaBernardo Dominic UNQUALIFIED
Nicolas G GauchoCanadaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas S MaletCanada2024-04-22Commercial Press RENEWAL45Asiya Javayant
1001Wickens E MarrierUnited Kingdom2024-03-31King, Christopher A Esq NEW65Anna Fali
1002David F TollnerJapan2024-04-25Rousseaux, Michael Esq RENEWAL83Bernardo Dominic
1003Antonio Q MacleadAustralia2024-04-01Truhlar And Truhlar Attys UNQUALIFIED18Xuxue Feng
1004Antonio H GlickCanada2024-04-03Truhlar And Truhlar Attys QUALIFIED65Amy Elsner
1005Jeanfrancois H SergiJapan2024-03-30Chanay, Jeffrey A Esq UNQUALIFIED2Bernardo Dominic
1006Stacey Q FlosiUnited Kingdom2024-04-23Buckley Miller Wright QUALIFIED32Elwin Sharvill
1007Claire E CampainSpain2024-04-02King, Christopher A Esq PROPOSAL25Asiya Javayant
1008Juan O MaletBrazil2024-04-24Chemel, James L Cpa UNQUALIFIED94Elwin Sharvill
1009Jefferson N SaylorsItaly2024-04-10Buckley Miller Wright QUALIFIED13Asiya Javayant
1010Greenwood A GarufiCanada2024-04-20Rangoni Of Florence UNQUALIFIED45Asiya Javayant
1011Stacey L SlusarskiArgentina2024-03-29King, Christopher A Esq QUALIFIED40Bernardo Dominic
1012Clifford F ChuiUnited Kingdom2024-04-24Commercial Press NEW19Anna Fali
1013Misaki U BriddickIndia2024-04-15Feiner Bros NEGOTIATION62Anna Fali
1014Tony T TollnerCanada2024-03-30Commercial Press RENEWAL68Ioni Bowcher
1015Aditya I KolmetzUnited Kingdom2024-03-31Chemel, James L Cpa UNQUALIFIED75Xuxue Feng
1016James F CampainCanada2024-04-16Feltz Printing Service RENEWAL19Anna Fali
1017Silvio E ChuiAustralia2024-04-01Buckley Miller Wright RENEWAL65Ioni Bowcher
1018Ricardo A SchemmerIndia2024-04-16Rousseaux, Michael Esq PROPOSAL82Stephen Shaw
1019Deepesh G SlusarskiCanada2024-04-05Morlong Associates QUALIFIED86Stephen Shaw
1020Tony I MaletBrazil2024-04-13Buckley Miller Wright NEW42Amy Elsner
1021Mayumi X IturbideGermany2024-04-07King, Christopher A Esq NEGOTIATION90Onyama Limba
1022Costa M FlosiJapan2024-04-09Morlong Associates UNQUALIFIED71Stephen Shaw
1023Antonio X KuskoUnited Kingdom2024-04-06Buckley Miller Wright UNQUALIFIED67Onyama Limba
1024Mujtaba X IturbideIndia2024-04-19Chapman, Ross E Esq QUALIFIED30Asiya Javayant
1025Antonio T SlusarskiSpain2024-04-23Chanay, Jeffrey A Esq RENEWAL50Onyama Limba
1026Faith H ShinkoUnited Kingdom2024-04-15Feltz Printing Service RENEWAL21Stephen Shaw
1027Leja R NestleItaly2024-04-10Feltz Printing Service NEGOTIATION39Ioni Bowcher
1028Stacey L DoeAustralia2024-04-16King, Christopher A Esq PROPOSAL93Amy Elsner
1029Chavez Y OldroydAustralia2024-04-14Buckley Miller Wright NEW65Onyama Limba
1030Aruna T InouyeSpain2024-04-04Chanay, Jeffrey A Esq UNQUALIFIED2Asiya Javayant
1031Aruna U NickaIndia2024-04-11Truhlar And Truhlar Attys PROPOSAL85Onyama Limba
1032Octavia N SergiRussia2024-04-25Chanay, Jeffrey A Esq UNQUALIFIED34Ioni Bowcher
1033Ashley G BologniaItaly2024-04-15Chemel, James L Cpa UNQUALIFIED52Anna Fali
1034Francesco B InouyeBrazil2024-04-05Truhlar And Truhlar Attys NEGOTIATION87Xuxue Feng
1035Tony J AlbaresFrance2024-04-03Benton, John B Jr PROPOSAL62Anna Fali
1036Jefferson Q PoquetteUnited Kingdom2024-04-06Printing Dimensions NEGOTIATION22Stephen Shaw
1037Aika C MorascaBrazil2024-04-04Rousseaux, Michael Esq QUALIFIED43Bernardo Dominic
1038Faith C RutaIndia2024-04-22Feiner Bros QUALIFIED18Ivan Magalhaes
1039Antonio J FlosiRussia2024-04-08Feltz Printing Service UNQUALIFIED93Stephen Shaw
1040Rodrigues G DoeCanada2024-04-26Chapman, Ross E Esq RENEWAL29Asiya Javayant
1041Jeanfrancois P MorascaBrazil2024-04-05Rousseaux, Michael Esq UNQUALIFIED18Elwin Sharvill
1042Morrow I FigeroaJapan2024-04-27Dorl, James J Esq NEGOTIATION18Anna Fali
1043Stacey Q FigeroaGermany2024-03-30Buckley Miller Wright PROPOSAL74Onyama Limba
1044Adams T GarufiArgentina2024-04-25Dorl, James J Esq QUALIFIED64Onyama Limba
1045Johnson L ShinkoJapan2024-04-15King, Christopher A Esq UNQUALIFIED74Asiya Javayant
1046Costa Q MarrierArgentina2024-04-16Rangoni Of Florence QUALIFIED83Stephen Shaw
1047Salvatore C MaletFrance2024-04-27Chanay, Jeffrey A Esq UNQUALIFIED71Stephen Shaw
1048Mujtaba L RutaBrazil2024-04-15Feiner Bros PROPOSAL19Ivan Magalhaes
1049James E FerenczFrance2024-04-25Rangoni Of Florence QUALIFIED73Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Darci M SaylorsSpainStephen Shaw PROPOSAL
Jones D CaldareraJapanAmy Elsner PROPOSAL
Alejandro M GlickJapanOnyama Limba QUALIFIED
Stacey F DarakjyIndiaIvan Magalhaes PROPOSAL
Isabel S FerenczUnited KingdomOnyama Limba RENEWAL
Salvatore R NickaIndiaIoni Bowcher NEGOTIATION
Adams T CampainIndiaIoni Bowcher QUALIFIED
Emily Y ShinkoSpainIvan Magalhaes PROPOSAL
Aditya P KolmetzGermanyIoni Bowcher RENEWAL
Nicolas F KuskoFranceAnna Fali NEW
James L VocelkaJapanStephen Shaw NEGOTIATION
Rodrigues C PerinItalyElwin Sharvill PROPOSAL
Costa G VocelkaItalyAmy Elsner PROPOSAL
Emily T RutaGermanyAnna Fali NEW
Francesco Z MorascaIndiaAmy Elsner PROPOSAL
Misaki N DilliardGermanyStephen Shaw RENEWAL
Smith C DoeItalyIoni Bowcher PROPOSAL
Munro Q FollerAustraliaAnna Fali UNQUALIFIED
Alejandro B BriddickIndiaAnna Fali NEW
Sinclair J BologniaItalyAnna Fali QUALIFIED
Misaki C SlusarskiGermanyBernardo Dominic NEGOTIATION
David F DarakjyCanadaOnyama Limba UNQUALIFIED
Tony E DilliardGermanyAsiya Javayant UNQUALIFIED
Murillo O KuskoArgentinaBernardo Dominic NEW
Juan X RulapaughBrazilAmy Elsner NEW
Nicolas J GauchoAustraliaStephen Shaw NEGOTIATION
Ashley Y DoeSpainStephen Shaw RENEWAL
Sinclair U StensethRussiaAsiya Javayant NEW
Sinclair I CaudyJapanOnyama Limba RENEWAL
Mujtaba S KolmetzJapanOnyama Limba NEW
Isabel I KolmetzArgentinaIoni Bowcher RENEWAL
Mayumi R MaletJapanStephen Shaw PROPOSAL
Aditya P VocelkaFranceOnyama Limba UNQUALIFIED
Darci H SaylorsArgentinaAnna Fali NEGOTIATION
Salvatore S FollerAustraliaElwin Sharvill NEGOTIATION
Maisha Y KolmetzJapanAnna Fali QUALIFIED
Mayumi N FollerRussiaAsiya Javayant NEGOTIATION
Jefferson H TollnerUnited KingdomStephen Shaw PROPOSAL
Sinclair F GillianSpainXuxue Feng RENEWAL
Munro Z RulapaughItalyXuxue Feng UNQUALIFIED
Mujtaba W RutaAustraliaIvan Magalhaes RENEWAL
Cody M FlosiIndiaStephen Shaw NEW
Alejandro H MarrierSpainXuxue Feng UNQUALIFIED
Silvio G StensethFranceElwin Sharvill PROPOSAL
Nicolas F MorascaCanadaIoni Bowcher NEGOTIATION
Mujtaba W StockhamItalyAsiya Javayant PROPOSAL
Izzy B SlusarskiArgentinaBernardo Dominic RENEWAL
Stacey Z FollerArgentinaElwin Sharvill PROPOSAL
Juan G BologniaCanadaOnyama Limba NEW
Leja R TollnerItalyAnna Fali QUALIFIED
Frozen Columns
Name
Julie Y Gaucho
Maisha F Nestle
Izzy A Maclead
Alejandro N Flosi
Wickens I Kolmetz
Octavia Y Garufi
Smith K Vocelka
Aika X Stockham
Stacey T Iturbide
Nicolas R Glick
Emily L Malet
Darci I Marrier
Alejandro I Ruta
Clifford V Ostrosky
Tony Q Perin
Murillo S Butt
Johnson R Glick
Clifford T Butt
Kadeem M Paprocki
Jefferson A Oldroyd
Kaitlin W Foller
Mayumi B Paprocki
Silvio B Malet
Aruna H Garufi
Octavia D Butt
Mayumi K Foller
Rodrigues Z Bowley
Antonio Z Figeroa
James I Stenseth
Maria V Poquette
Ricardo P Waycott
Arvin B Venere
Mujtaba D Kusko
Sinclair Z Oldroyd
Greenwood Q Rulapaugh
Sinclair E Chui
Antonio I Poquette
Aruna N Bowley
Jeanfrancois J Wieser
Octavia I Rulapaugh
Leja R Shinko
Ricardo V Bolognia
David C Briddick
Costa M Figeroa
Aruna N Albares
Leon Q Iturbide
Morrow G Rim
Johnson R Malet
Adams C Amigon
Julie I Glick
IdCountryDate
1000Spain2024-04-21
1001France2024-04-10
1002Italy2024-04-12
1003Australia2024-04-03
1004Spain2024-04-14
1005Canada2024-04-08
1006Russia2024-04-19
1007Spain2024-04-21
1008Canada2024-04-26
1009Germany2024-04-01
1010Argentina2024-04-02
1011Italy2024-04-24
1012Germany2024-04-15
1013Canada2024-04-25
1014Germany2024-04-14
1015Germany2024-04-26
1016Canada2024-04-25
1017Brazil2024-04-22
1018Russia2024-04-13
1019France2024-04-01
1020Germany2024-03-29
1021Russia2024-04-23
1022Germany2024-04-18
1023Japan2024-04-01
1024United Kingdom2024-04-22
1025Australia2024-04-26
1026Italy2024-04-10
1027Australia2024-04-17
1028Australia2024-04-19
1029France2024-04-17
1030Italy2024-04-07
1031Spain2024-04-16
1032Russia2024-03-31
1033India2024-04-10
1034United Kingdom2024-04-04
1035Brazil2024-04-16
1036Spain2024-04-04
1037Germany2024-04-17
1038Germany2024-04-26
1039Canada2024-04-20
1040Australia2024-04-27
1041Argentina2024-04-07
1042Italy2024-04-17
1043Argentina2024-04-15
1044Japan2024-04-26
1045Canada2024-04-23
1046Canada2024-04-26
1047Russia2024-04-19
1048Russia2024-03-30
1049Australia2024-04-02

On-Demand Data

NameIdCountryDate
Morrow U Royster1000Japan2024-04-03
Antonio N Figeroa1001Japan2024-03-30
Aika V Stenseth1002United Kingdom2024-04-21
Jefferson H Dilliard1003Germany2024-04-14
Kaitlin K Foller1004United Kingdom2024-04-25
Darci N Garufi1005Italy2024-03-31
Emily Z Stockham1006France2024-04-02
Stacey B Garufi1007Japan2024-04-24
Leja M Figeroa1008Italy2024-03-30
Ivar F Briddick1009Spain2024-04-01
Maria R Wieser1010United Kingdom2024-04-18
Kadeem O Doe1011Argentina2024-04-23
Adams M Garufi1012Russia2024-04-05
Aruna I Rim1013United Kingdom2024-04-13
Claire W Inouye1014United Kingdom2024-04-04
Jones W Figeroa1015France2024-04-08
Jefferson H Stenseth1016Japan2024-04-10
Mayumi J Maclead1017Spain2024-03-30
Aruna T Marrier1018France2024-04-13
Antonio K Dilliard1019United Kingdom2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams X MorascaFranceStephen Shaw NEW
Octavia N PaprockiJapanAmy Elsner PROPOSAL
Adams R CaldareraJapanXuxue Feng PROPOSAL
Jennifer O RimArgentinaBernardo Dominic NEGOTIATION
Maria E IturbideIndiaIvan Magalhaes PROPOSAL
Faith J MorascaFranceIoni Bowcher NEGOTIATION
James H FerenczBrazilAmy Elsner NEGOTIATION
Maria R FerenczFranceAnna Fali UNQUALIFIED
Jefferson N PerinRussiaAmy Elsner NEW
Adams Y ButtItalyStephen Shaw RENEWAL
Darci S VenereSpainAsiya Javayant NEW
Tony I OldroydSpainBernardo Dominic RENEWAL
Mujtaba I SchemmerCanadaStephen Shaw RENEWAL
Sinclair J KuskoUnited KingdomAnna Fali RENEWAL
Octavia G GauchoIndiaBernardo Dominic UNQUALIFIED
Kaitlin E CampainAustraliaOnyama Limba UNQUALIFIED
Rodrigues Z MorascaArgentinaAmy Elsner NEW
Jefferson M IturbideRussiaBernardo Dominic NEGOTIATION
Julie B PerinRussiaAmy Elsner QUALIFIED
Maisha M DarakjyRussiaAmy Elsner RENEWAL
Isabel L MarrierArgentinaIvan Magalhaes NEW
Salvatore N GillianSpainAsiya Javayant NEW
Maisha W CaldareraSpainIvan Magalhaes NEW
Maisha W SlusarskiCanadaOnyama Limba NEGOTIATION
Emily W WaycottIndiaAsiya Javayant UNQUALIFIED
Salvatore H MorascaItalyAnna Fali PROPOSAL
Izzy D MacleadCanadaAnna Fali NEGOTIATION
Jennifer C MarrierArgentinaIoni Bowcher NEW
Julie Z WieserRussiaBernardo Dominic RENEWAL
Ivar S SaylorsRussiaIvan Magalhaes RENEWAL
Aruna E IturbideBrazilAmy Elsner PROPOSAL
Claire I GauchoGermanyAnna Fali RENEWAL
Ivar S PoquetteGermanyAmy Elsner NEW
Jefferson S FollerAustraliaXuxue Feng PROPOSAL
Wickens D RoysterFranceXuxue Feng QUALIFIED
Izzy K ShinkoGermanyAsiya Javayant RENEWAL
Claire T DilliardRussiaStephen Shaw NEW
Aditya L MaletArgentinaAnna Fali RENEWAL
David S StockhamJapanOnyama Limba RENEWAL
Ashley V PoquetteBrazilXuxue Feng QUALIFIED

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