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
Stacey Z PaprockiCanadaElwin Sharvill NEW
Leja E GillianUnited KingdomIoni Bowcher RENEWAL
Sinclair K KuskoFranceOnyama Limba QUALIFIED
Octavia D RutaBrazilAnna Fali UNQUALIFIED
Kadeem M PoquetteItalyAsiya Javayant NEW
Silvio P DilliardJapanBernardo Dominic PROPOSAL
Munro C PoquetteIndiaXuxue Feng UNQUALIFIED
Faith I DilliardUnited KingdomAmy Elsner RENEWAL
Rodrigues Z GarufiRussiaStephen Shaw UNQUALIFIED
Alejandro Q ShinkoArgentinaBernardo Dominic NEW
Tony V DarakjyCanadaOnyama Limba PROPOSAL
Leon G RulapaughAustraliaIvan Magalhaes QUALIFIED
Stacey G StensethCanadaBernardo Dominic NEGOTIATION
Juan I NickaRussiaXuxue Feng QUALIFIED
Mayumi S FerenczJapanAmy Elsner PROPOSAL
Costa S StensethUnited KingdomAnna Fali QUALIFIED
Adams V PerinRussiaStephen Shaw RENEWAL
Johnson H KolmetzBrazilElwin Sharvill PROPOSAL
Faith F WaycottUnited KingdomElwin Sharvill UNQUALIFIED
Leon F DilliardArgentinaElwin Sharvill PROPOSAL
Maisha L MaletJapanIvan Magalhaes UNQUALIFIED
Jennifer D GillianIndiaIoni Bowcher PROPOSAL
Chavez G StockhamGermanyBernardo Dominic UNQUALIFIED
Maria O FerenczAustraliaAnna Fali RENEWAL
Deepesh H MarrierSpainAnna Fali QUALIFIED
Clifford H ChuiJapanOnyama Limba RENEWAL
Maria A RutaArgentinaElwin Sharvill PROPOSAL
Murillo S CaldareraCanadaElwin Sharvill PROPOSAL
Cody P ButtAustraliaXuxue Feng UNQUALIFIED
Kaitlin O SlusarskiSpainAnna Fali RENEWAL
Leja Y FollerUnited KingdomStephen Shaw NEGOTIATION
Jones J ChuiBrazilElwin Sharvill QUALIFIED
Emily Y RutaFranceOnyama Limba NEW
Juan U ChuiSpainAsiya Javayant QUALIFIED
Aika T StockhamArgentinaIvan Magalhaes PROPOSAL
Misaki M CampainArgentinaElwin Sharvill UNQUALIFIED
Francesco G StensethFranceIoni Bowcher PROPOSAL
Misaki S MaletFranceOnyama Limba UNQUALIFIED
Wickens U TollnerUnited KingdomAmy Elsner NEW
Isabel A KuskoJapanAsiya Javayant QUALIFIED
Antonio H FigeroaBrazilStephen Shaw UNQUALIFIED
Munro F InouyeBrazilIoni Bowcher RENEWAL
Cody X WhobreyArgentinaBernardo Dominic NEGOTIATION
Emily J GillianAustraliaStephen Shaw RENEWAL
Ivar M KolmetzItalyOnyama Limba NEW
Alejandro U MaletArgentinaXuxue Feng NEGOTIATION
Silvio K DarakjyIndiaIoni Bowcher QUALIFIED
Cody C MarrierArgentinaIoni Bowcher RENEWAL
Greenwood K AlbaresAustraliaAnna Fali QUALIFIED
Jeanfrancois O AmigonArgentinaStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ashley D ButtGermanyStephen Shaw UNQUALIFIED
Francesco B InouyeIndiaIoni Bowcher RENEWAL
Arvin R OstroskyArgentinaOnyama Limba UNQUALIFIED
Isabel O BowleyRussiaIoni Bowcher QUALIFIED
Misaki C BowleyRussiaBernardo Dominic UNQUALIFIED
Munro G MarrierItalyAmy Elsner RENEWAL
Silvio F BologniaItalyIoni Bowcher RENEWAL
Julie X VocelkaCanadaElwin Sharvill QUALIFIED
Cody J TollnerJapanOnyama Limba PROPOSAL
Emily C VocelkaFranceXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro Z BriddickItaly2024-04-06Chemel, James L Cpa NEW97Amy Elsner
1001Kadeem C IturbideItaly2024-04-05Morlong Associates NEGOTIATION13Ivan Magalhaes
1002Wickens N DoeAustralia2024-04-22Printing Dimensions NEW32Amy Elsner
1003Jones U StensethJapan2024-04-20King, Christopher A Esq NEGOTIATION37Onyama Limba
1004Leja E KolmetzJapan2024-04-05Dorl, James J Esq UNQUALIFIED32Elwin Sharvill
1005James H SaylorsIndia2024-04-27Benton, John B Jr QUALIFIED6Onyama Limba
1006Johnson S FlosiGermany2024-04-05Commercial Press UNQUALIFIED1Amy Elsner
1007Mujtaba Q CaldareraIndia2024-04-02Feiner Bros QUALIFIED16Xuxue Feng
1008Octavia V SlusarskiArgentina2024-04-10Truhlar And Truhlar Attys NEW70Ivan Magalhaes
1009Nicolas N WhobreyBrazil2024-04-24Feltz Printing Service NEW53Ioni Bowcher
1010Leja J SlusarskiIndia2024-04-26Commercial Press UNQUALIFIED93Ioni Bowcher
1011Silvio R NickaCanada2024-04-13Printing Dimensions UNQUALIFIED95Ivan Magalhaes
1012Francesco J VenereArgentina2024-03-29Chapman, Ross E Esq PROPOSAL22Ivan Magalhaes
1013Alejandro Z VocelkaItaly2024-04-20Truhlar And Truhlar Attys UNQUALIFIED56Anna Fali
1014Ashley W PoquetteFrance2024-04-20Commercial Press UNQUALIFIED14Elwin Sharvill
1015Aruna I ChuiJapan2024-04-13Morlong Associates NEGOTIATION11Ivan Magalhaes
1016Jeanfrancois I MorascaSpain2024-04-27Benton, John B Jr PROPOSAL60Ivan Magalhaes
1017Aruna P RoysterBrazil2024-03-29Rangoni Of Florence QUALIFIED9Amy Elsner
1018Mujtaba Y OldroydSpain2024-04-16Truhlar And Truhlar Attys PROPOSAL36Xuxue Feng
1019James W MarrierCanada2024-04-03Benton, John B Jr PROPOSAL84Stephen Shaw
1020Faith L GauchoItaly2024-04-02Buckley Miller Wright RENEWAL48Xuxue Feng
1021Jennifer Q VocelkaFrance2024-04-13Rousseaux, Michael Esq QUALIFIED88Amy Elsner
1022David H BologniaJapan2024-04-26Rousseaux, Michael Esq NEGOTIATION72Xuxue Feng
1023Cody X GillianCanada2024-04-11Printing Dimensions NEGOTIATION56Asiya Javayant
1024Silvio I WaycottUnited Kingdom2024-04-16Benton, John B Jr PROPOSAL3Stephen Shaw
1025Tony S PoquetteCanada2024-04-15Commercial Press PROPOSAL54Onyama Limba
1026Rodrigues W MarrierArgentina2024-04-22Feltz Printing Service NEGOTIATION48Asiya Javayant
1027Wickens R OstroskyRussia2024-04-07Printing Dimensions RENEWAL25Onyama Limba
1028Aruna O MorascaItaly2024-04-27Feltz Printing Service UNQUALIFIED41Elwin Sharvill
1029Smith I NestleUnited Kingdom2024-04-24Morlong Associates UNQUALIFIED55Stephen Shaw
1030Misaki D TollnerItaly2024-04-23King, Christopher A Esq PROPOSAL53Asiya Javayant
1031Murillo W AlbaresCanada2024-04-01Printing Dimensions NEGOTIATION36Xuxue Feng
1032Alejandro A SchemmerRussia2024-04-04Truhlar And Truhlar Attys NEW97Ivan Magalhaes
1033Darci C FlosiBrazil2024-04-17Chanay, Jeffrey A Esq QUALIFIED83Ivan Magalhaes
1034Leon V KuskoIndia2024-04-14Morlong Associates NEW42Ivan Magalhaes
1035Silvio F CaudyFrance2024-04-11Chapman, Ross E Esq RENEWAL57Onyama Limba
1036Aika Q FlosiRussia2024-04-19Morlong Associates RENEWAL90Bernardo Dominic
1037Ivar A MarrierSpain2024-04-13King, Christopher A Esq UNQUALIFIED46Bernardo Dominic
1038Mujtaba Q GillianBrazil2024-04-23Commercial Press NEW48Onyama Limba
1039Octavia B StensethIndia2024-04-07Buckley Miller Wright NEGOTIATION25Stephen Shaw
1040Maisha X NestleGermany2024-04-02Rousseaux, Michael Esq RENEWAL78Amy Elsner
1041Aditya H ShinkoBrazil2024-04-25Benton, John B Jr PROPOSAL95Elwin Sharvill
1042Aditya A BriddickRussia2024-04-02Rousseaux, Michael Esq PROPOSAL56Bernardo Dominic
1043Cody S MaletAustralia2024-04-16Morlong Associates UNQUALIFIED87Ioni Bowcher
1044Morrow V SergiArgentina2024-04-10Dorl, James J Esq UNQUALIFIED25Ioni Bowcher
1045Tony V MarrierArgentina2024-04-20Truhlar And Truhlar Attys PROPOSAL54Elwin Sharvill
1046Morrow R AlbaresGermany2024-04-06Chemel, James L Cpa QUALIFIED41Stephen Shaw
1047Aruna Y RoysterArgentina2024-04-11Dorl, James J Esq NEGOTIATION81Asiya Javayant
1048Deepesh A KolmetzItaly2024-04-20Chapman, Ross E Esq NEW55Amy Elsner
1049Murillo O FigeroaGermany2024-04-03Chanay, Jeffrey A Esq RENEWAL82Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
David V FerenczFranceAnna Fali QUALIFIED
Silvio O ShinkoItalyIvan Magalhaes RENEWAL
Silvio L VocelkaJapanXuxue Feng NEW
Deepesh Q ShinkoFranceXuxue Feng UNQUALIFIED
Kaitlin B TollnerGermanyAnna Fali UNQUALIFIED
Deepesh O GauchoArgentinaStephen Shaw PROPOSAL
Clifford I BologniaCanadaIvan Magalhaes UNQUALIFIED
Francesco Q KolmetzCanadaElwin Sharvill QUALIFIED
Aruna I InouyeFranceElwin Sharvill UNQUALIFIED
Sinclair P DilliardCanadaElwin Sharvill RENEWAL
Tony R OldroydBrazilElwin Sharvill NEW
Misaki K WieserUnited KingdomBernardo Dominic NEW
David H DoeBrazilAmy Elsner UNQUALIFIED
Deepesh Y PoquetteArgentinaBernardo Dominic UNQUALIFIED
Maisha R NestleUnited KingdomOnyama Limba QUALIFIED
Jones E PoquetteAustraliaIvan Magalhaes QUALIFIED
Juan L RutaAustraliaAsiya Javayant PROPOSAL
Leon E NestleIndiaStephen Shaw NEW
Sinclair I OstroskyCanadaAmy Elsner UNQUALIFIED
Ashley G ButtUnited KingdomElwin Sharvill UNQUALIFIED
Stacey M RoysterFranceAnna Fali PROPOSAL
Sinclair B OldroydGermanyAsiya Javayant UNQUALIFIED
Claire Q BologniaRussiaIoni Bowcher NEGOTIATION
Munro O DoeSpainIoni Bowcher UNQUALIFIED
Nicolas V MaletRussiaAmy Elsner UNQUALIFIED
Costa O CaldareraItalyIvan Magalhaes PROPOSAL
Aditya A KolmetzItalyIoni Bowcher NEGOTIATION
Sinclair O TollnerCanadaAnna Fali UNQUALIFIED
Munro N RulapaughUnited KingdomElwin Sharvill PROPOSAL
Jeanfrancois D GarufiGermanyIoni Bowcher RENEWAL
Mujtaba W BriddickArgentinaElwin Sharvill UNQUALIFIED
Kadeem P DilliardSpainElwin Sharvill PROPOSAL
Ricardo T TollnerUnited KingdomXuxue Feng RENEWAL
Kadeem P BologniaAustraliaIvan Magalhaes NEW
Julie Z GauchoUnited KingdomOnyama Limba QUALIFIED
Maisha C KuskoSpainIoni Bowcher QUALIFIED
Jeanfrancois E SlusarskiRussiaOnyama Limba UNQUALIFIED
Greenwood X WieserSpainAsiya Javayant NEW
Sinclair W MaletCanadaIoni Bowcher RENEWAL
Ivar B KolmetzItalyAmy Elsner NEW
James K DilliardCanadaXuxue Feng UNQUALIFIED
Wickens K NestleArgentinaIvan Magalhaes QUALIFIED
Mujtaba U PaprockiSpainXuxue Feng UNQUALIFIED
Jones C MacleadJapanXuxue Feng NEW
Maisha D OstroskyJapanAmy Elsner PROPOSAL
Costa X CaldareraGermanyElwin Sharvill NEGOTIATION
Salvatore D MarrierSpainXuxue Feng UNQUALIFIED
Maisha E CaldareraJapanElwin Sharvill UNQUALIFIED
Claire K KolmetzCanadaIoni Bowcher UNQUALIFIED
Chavez E WhobreyBrazilBernardo Dominic PROPOSAL
Frozen Columns
Name
Antonio R Ferencz
Silvio S Whobrey
Julie V Saylors
Cody Q Caldarera
Clifford A Chui
Francesco O Gaucho
Aruna D Vocelka
Leon W Ostrosky
James M Foller
Jefferson O Nestle
Murillo L Whobrey
Ricardo L Flosi
Smith P Oldroyd
Greenwood O Gaucho
Murillo P Rulapaugh
Ricardo V Albares
Johnson N Morasca
Darci E Flosi
Ashley I Poquette
Mayumi Z Kusko
Ivar C Stockham
Aruna S Foller
Faith Q Royster
Stacey P Foller
Octavia J Paprocki
Deepesh J Garufi
Emily E Stenseth
Jones I Malet
Leon B Butt
Faith X Inouye
Mujtaba K Stockham
Mayumi Y Saylors
Jefferson N Stenseth
Francesco G Gillian
Morrow Z Inouye
Aditya E Saylors
Francesco Q Poquette
Kadeem L Kolmetz
Smith M Malet
Jeanfrancois Z Tollner
Isabel F Oldroyd
Mayumi D Darakjy
Kadeem L Ruta
Silvio Y Slusarski
Francesco G Nicka
Faith E Kolmetz
Alejandro G Vocelka
Jennifer I Campain
David T Campain
Aika Z Rulapaugh
IdCountryDate
1000Italy2024-04-09
1001Canada2024-04-03
1002Brazil2024-04-22
1003Germany2024-04-01
1004Brazil2024-04-05
1005Brazil2024-04-05
1006Germany2024-04-15
1007Italy2024-04-19
1008Brazil2024-04-15
1009Argentina2024-04-04
1010Canada2024-04-11
1011Russia2024-04-11
1012Russia2024-04-15
1013Germany2024-04-19
1014United Kingdom2024-04-03
1015Russia2024-04-14
1016Canada2024-04-10
1017United Kingdom2024-04-17
1018France2024-03-31
1019India2024-04-07
1020France2024-04-03
1021Japan2024-04-12
1022France2024-04-05
1023India2024-04-06
1024Russia2024-04-06
1025Italy2024-04-04
1026Italy2024-03-31
1027India2024-04-07
1028United Kingdom2024-03-31
1029Germany2024-03-31
1030Argentina2024-04-07
1031India2024-04-07
1032Brazil2024-04-14
1033United Kingdom2024-03-30
1034Russia2024-04-18
1035Germany2024-04-21
1036Brazil2024-03-31
1037Canada2024-04-15
1038Canada2024-04-02
1039Spain2024-04-11
1040Canada2024-04-19
1041Japan2024-04-12
1042United Kingdom2024-04-12
1043Brazil2024-03-30
1044Russia2024-04-19
1045Japan2024-04-05
1046Spain2024-04-13
1047Germany2024-04-10
1048India2024-04-27
1049Argentina2024-03-29

On-Demand Data

NameIdCountryDate
Jones S Campain1000Italy2024-04-18
Munro A Darakjy1001Australia2024-04-02
Maria I Butt1002Argentina2024-04-11
Alejandro R Albares1003Spain2024-04-14
Juan B Garufi1004Italy2024-04-16
James G Maclead1005Argentina2024-04-05
Wickens L Darakjy1006France2024-04-13
Ashley Q Inouye1007Russia2024-04-16
Misaki F Shinko1008Italy2024-04-09
Leja J Flosi1009France2024-04-03
Alejandro N Kusko1010United Kingdom2024-04-10
Aruna M Chui1011India2024-04-13
Juan H Briddick1012Germany2024-04-25
Morrow Q Stockham1013Russia2024-03-29
Aditya M Campain1014Italy2024-04-09
Emily J Nicka1015United Kingdom2024-04-12
Murillo N Chui1016Japan2024-04-18
Ivar F Royster1017Australia2024-04-10
Nicolas L Caudy1018Spain2024-03-29
Antonio D Butt1019Italy2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco S CaudyIndiaElwin Sharvill NEW
Juan B FollerBrazilAnna Fali NEW
Aika I WieserIndiaAnna Fali PROPOSAL
Jeanfrancois P DarakjyGermanyAsiya Javayant QUALIFIED
Claire E RimAustraliaAsiya Javayant NEW
Julie M NickaAustraliaIoni Bowcher NEW
Adams G BologniaAustraliaIvan Magalhaes NEW
Ricardo L AmigonCanadaIvan Magalhaes PROPOSAL
Salvatore C MorascaArgentinaAnna Fali NEGOTIATION
Kadeem I MorascaGermanyXuxue Feng PROPOSAL
Munro R NestleGermanyAsiya Javayant QUALIFIED
Munro D RimArgentinaElwin Sharvill RENEWAL
Clifford K PoquetteCanadaStephen Shaw QUALIFIED
Ricardo P GillianSpainStephen Shaw QUALIFIED
Misaki E DarakjySpainIvan Magalhaes QUALIFIED
Izzy F DarakjyGermanyXuxue Feng UNQUALIFIED
Izzy X VenereRussiaElwin Sharvill NEW
Aruna P RulapaughItalyIvan Magalhaes NEGOTIATION
Chavez E PoquetteUnited KingdomBernardo Dominic QUALIFIED
Francesco X CaudyItalyStephen Shaw NEGOTIATION
Sinclair R GarufiFranceIvan Magalhaes NEGOTIATION
Aika N TollnerSpainOnyama Limba NEW
Misaki F WieserUnited KingdomBernardo Dominic RENEWAL
Costa R BologniaAustraliaBernardo Dominic NEW
Silvio F OldroydBrazilAsiya Javayant NEGOTIATION
Emily O WieserItalyAsiya Javayant UNQUALIFIED
Leon B InouyeSpainElwin Sharvill PROPOSAL
Ricardo U OstroskyUnited KingdomAnna Fali UNQUALIFIED
Alejandro M PaprockiAustraliaIvan Magalhaes NEW
Jefferson X OldroydAustraliaIvan Magalhaes NEW
Alejandro S BowleyFranceIoni Bowcher NEW
Cody J MaletCanadaOnyama Limba QUALIFIED
Cody A RoysterArgentinaStephen Shaw QUALIFIED
Maisha N BowleyUnited KingdomIoni Bowcher NEW
Chavez A AmigonGermanyAsiya Javayant NEGOTIATION
Morrow Y NickaGermanyBernardo Dominic QUALIFIED
Jeanfrancois U GillianUnited KingdomAmy Elsner NEW
Maria L RoysterIndiaXuxue Feng NEW
Morrow N PoquetteAustraliaAmy Elsner QUALIFIED
Johnson M TollnerIndiaIvan Magalhaes 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>