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
Isabel R CampainBrazilAnna Fali NEGOTIATION
Salvatore Q KuskoUnited KingdomAmy Elsner UNQUALIFIED
Wickens T GauchoGermanyBernardo Dominic RENEWAL
Francesco F RimIndiaXuxue Feng NEW
Isabel L FigeroaAustraliaOnyama Limba NEW
Juan N StockhamAustraliaAmy Elsner NEGOTIATION
Munro O PerinJapanAnna Fali QUALIFIED
Jefferson M FigeroaBrazilBernardo Dominic QUALIFIED
Jones T DarakjyAustraliaBernardo Dominic RENEWAL
Faith L WieserItalyAsiya Javayant UNQUALIFIED
Claire U WaycottItalyAmy Elsner UNQUALIFIED
Maria V WieserIndiaIoni Bowcher UNQUALIFIED
Kaitlin Z MorascaCanadaAnna Fali QUALIFIED
Leon W WieserGermanyStephen Shaw QUALIFIED
Tony B MacleadCanadaElwin Sharvill RENEWAL
Adams T RulapaughAustraliaOnyama Limba QUALIFIED
Juan Q AlbaresAustraliaIvan Magalhaes NEGOTIATION
Sinclair F AmigonArgentinaXuxue Feng NEW
Arvin P DilliardJapanAmy Elsner PROPOSAL
Misaki Q CaudyArgentinaAnna Fali QUALIFIED
Salvatore K SchemmerFranceOnyama Limba QUALIFIED
Francesco X NestleSpainAsiya Javayant RENEWAL
Kaitlin C SaylorsCanadaIoni Bowcher NEW
Arvin E GillianSpainIvan Magalhaes UNQUALIFIED
Claire X OldroydArgentinaStephen Shaw RENEWAL
Ivar Z NickaUnited KingdomIoni Bowcher QUALIFIED
Silvio A FigeroaIndiaElwin Sharvill NEGOTIATION
Chavez Q MaletItalyAmy Elsner UNQUALIFIED
David Y WhobreySpainAmy Elsner QUALIFIED
Sinclair O MarrierRussiaIoni Bowcher PROPOSAL
Claire P KolmetzItalyStephen Shaw NEGOTIATION
Leon Y CaudyItalyIoni Bowcher UNQUALIFIED
David R GillianAustraliaAsiya Javayant UNQUALIFIED
Deepesh F WhobreyIndiaStephen Shaw NEW
Salvatore A FollerItalyAnna Fali NEW
Isabel I SergiBrazilAmy Elsner PROPOSAL
Jones X PoquetteArgentinaIoni Bowcher NEW
Claire O RulapaughCanadaOnyama Limba NEW
Adams U PaprockiItalyOnyama Limba QUALIFIED
Ricardo F ButtItalyAmy Elsner QUALIFIED
Wickens E CaldareraAustraliaAsiya Javayant RENEWAL
Arvin U GauchoIndiaAmy Elsner UNQUALIFIED
Maisha R OldroydBrazilIoni Bowcher NEW
Kaitlin W ShinkoArgentinaAsiya Javayant UNQUALIFIED
Cody N BowleyBrazilStephen Shaw QUALIFIED
Rodrigues B BriddickGermanyElwin Sharvill NEW
Stacey P KuskoIndiaIoni Bowcher NEGOTIATION
Isabel W FigeroaCanadaBernardo Dominic PROPOSAL
Ashley N PaprockiIndiaXuxue Feng QUALIFIED
Murillo D WhobreyItalyOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Maria C SergiIndiaXuxue Feng UNQUALIFIED
Salvatore J IturbideSpainAmy Elsner NEW
Salvatore Z MaletArgentinaAnna Fali RENEWAL
Deepesh F GauchoFranceBernardo Dominic RENEWAL
Cody G GauchoRussiaAsiya Javayant PROPOSAL
Tony H ButtBrazilStephen Shaw QUALIFIED
Claire O MaletBrazilElwin Sharvill NEW
Chavez T PoquetteFranceAsiya Javayant RENEWAL
Jeanfrancois D RimItalyAmy Elsner NEW
Ricardo W WhobreyIndiaIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya C OstroskyArgentina2024-04-12Feltz Printing Service QUALIFIED87Amy Elsner
1001Cody X MaletUnited Kingdom2024-04-17Feltz Printing Service UNQUALIFIED50Ivan Magalhaes
1002Jones D PoquetteItaly2024-04-09Benton, John B Jr RENEWAL74Bernardo Dominic
1003Juan G CaldareraGermany2024-04-15Truhlar And Truhlar Attys RENEWAL4Amy Elsner
1004Mujtaba K WhobreyItaly2024-04-13Commercial Press NEW47Ioni Bowcher
1005Juan B BriddickItaly2024-04-27Feltz Printing Service NEW3Onyama Limba
1006Jennifer P GillianFrance2024-04-09King, Christopher A Esq NEGOTIATION16Amy Elsner
1007Jones Z DoeSpain2024-04-20Feltz Printing Service PROPOSAL11Ivan Magalhaes
1008Alejandro B FlosiGermany2024-04-28Morlong Associates QUALIFIED28Xuxue Feng
1009Clifford I SaylorsFrance2024-04-08Chapman, Ross E Esq PROPOSAL47Elwin Sharvill
1010Maria F NickaItaly2024-04-20Commercial Press NEGOTIATION93Xuxue Feng
1011Alejandro W SaylorsUnited Kingdom2024-04-26Chanay, Jeffrey A Esq NEGOTIATION18Onyama Limba
1012Munro J StockhamItaly2024-04-22Rousseaux, Michael Esq NEW10Ioni Bowcher
1013Deepesh I DarakjyGermany2024-04-04Feltz Printing Service QUALIFIED76Elwin Sharvill
1014Johnson T OldroydBrazil2024-04-25Rousseaux, Michael Esq NEW7Stephen Shaw
1015Sinclair W CaudyFrance2024-04-18Chanay, Jeffrey A Esq PROPOSAL47Onyama Limba
1016Maisha D SergiItaly2024-04-27Chapman, Ross E Esq UNQUALIFIED74Ioni Bowcher
1017Ivar F VocelkaGermany2024-04-06King, Christopher A Esq QUALIFIED83Bernardo Dominic
1018Jennifer A SlusarskiArgentina2024-04-16Commercial Press UNQUALIFIED69Bernardo Dominic
1019Greenwood K DilliardSpain2024-04-12Chapman, Ross E Esq NEGOTIATION79Stephen Shaw
1020Rodrigues A BowleyItaly2024-04-08Rousseaux, Michael Esq NEGOTIATION94Anna Fali
1021Mujtaba X RoysterIndia2024-04-23Truhlar And Truhlar Attys NEW12Anna Fali
1022Jones W ChuiAustralia2024-04-21Chapman, Ross E Esq QUALIFIED45Xuxue Feng
1023Greenwood K SlusarskiCanada2024-04-02Chemel, James L Cpa PROPOSAL47Bernardo Dominic
1024Misaki Y WhobreyAustralia2024-04-25Commercial Press NEGOTIATION52Asiya Javayant
1025Maisha K KolmetzSpain2024-04-26Dorl, James J Esq QUALIFIED16Bernardo Dominic
1026Ashley M PerinItaly2024-04-12Chanay, Jeffrey A Esq NEW88Onyama Limba
1027Munro S NestleBrazil2024-04-22Chanay, Jeffrey A Esq NEW41Onyama Limba
1028Stacey O SlusarskiArgentina2024-04-23Rangoni Of Florence NEGOTIATION73Elwin Sharvill
1029Clifford E BologniaArgentina2024-04-14Rangoni Of Florence PROPOSAL73Ioni Bowcher
1030Maria E RutaAustralia2024-04-02Chapman, Ross E Esq PROPOSAL84Stephen Shaw
1031Darci Z PerinIndia2024-04-06Buckley Miller Wright UNQUALIFIED79Ivan Magalhaes
1032Silvio X FlosiFrance2024-04-29Chanay, Jeffrey A Esq NEGOTIATION92Amy Elsner
1033Deepesh C BologniaBrazil2024-04-26Chapman, Ross E Esq NEGOTIATION7Ivan Magalhaes
1034Leja X DarakjyUnited Kingdom2024-04-12Rousseaux, Michael Esq NEGOTIATION42Stephen Shaw
1035Clifford U FlosiAustralia2024-04-26Buckley Miller Wright PROPOSAL82Bernardo Dominic
1036Aika M AmigonItaly2024-04-14Rangoni Of Florence QUALIFIED61Anna Fali
1037Jeanfrancois Z DilliardUnited Kingdom2024-04-16Buckley Miller Wright NEW35Onyama Limba
1038Tony B WaycottRussia2024-04-27Truhlar And Truhlar Attys PROPOSAL1Amy Elsner
1039Leon X MaletCanada2024-04-12Feltz Printing Service UNQUALIFIED39Onyama Limba
1040Rodrigues Q KolmetzAustralia2024-04-24Benton, John B Jr UNQUALIFIED75Ivan Magalhaes
1041Murillo A SlusarskiJapan2024-04-27Benton, John B Jr NEGOTIATION43Bernardo Dominic
1042Morrow E IturbideBrazil2024-04-09Buckley Miller Wright NEW65Onyama Limba
1043Jefferson K MaletSpain2024-04-23Dorl, James J Esq PROPOSAL89Asiya Javayant
1044Jeanfrancois P PoquetteUnited Kingdom2024-04-24Benton, John B Jr NEW0Xuxue Feng
1045Octavia Z StockhamIndia2024-04-03Feiner Bros RENEWAL8Bernardo Dominic
1046Jefferson D ChuiJapan2024-04-29Chanay, Jeffrey A Esq NEW29Amy Elsner
1047Juan F SaylorsGermany2024-04-28Commercial Press PROPOSAL57Ivan Magalhaes
1048Darci I PaprockiJapan2024-04-23Chanay, Jeffrey A Esq NEGOTIATION20Onyama Limba
1049Tony Y BowleyArgentina2024-04-06Chemel, James L Cpa PROPOSAL75Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Sinclair C WieserIndiaBernardo Dominic UNQUALIFIED
Jeanfrancois H SlusarskiGermanyBernardo Dominic PROPOSAL
Misaki S GauchoGermanyAnna Fali UNQUALIFIED
Mayumi D KuskoRussiaIvan Magalhaes NEGOTIATION
Deepesh A StensethGermanyXuxue Feng QUALIFIED
Rodrigues S OldroydJapanAsiya Javayant UNQUALIFIED
Maria N IturbideJapanElwin Sharvill NEW
Mayumi H PaprockiArgentinaAmy Elsner RENEWAL
Juan T ChuiGermanyBernardo Dominic QUALIFIED
Darci M GauchoIndiaIoni Bowcher NEGOTIATION
Ashley L GlickSpainXuxue Feng QUALIFIED
Juan S MaletArgentinaAsiya Javayant QUALIFIED
Nicolas A SergiGermanyStephen Shaw RENEWAL
Ivar T RoysterAustraliaOnyama Limba UNQUALIFIED
Aruna R WieserCanadaIoni Bowcher QUALIFIED
Jefferson Y StockhamFranceAmy Elsner NEGOTIATION
Tony D PaprockiArgentinaIvan Magalhaes RENEWAL
Aditya K MacleadAustraliaIvan Magalhaes RENEWAL
Jones Y MaletUnited KingdomAmy Elsner NEW
David N DilliardFranceAsiya Javayant QUALIFIED
Ivar R BowleyBrazilOnyama Limba PROPOSAL
Rodrigues Y ButtFranceAsiya Javayant NEGOTIATION
Salvatore E FigeroaIndiaStephen Shaw UNQUALIFIED
Leja N OstroskyUnited KingdomAsiya Javayant NEGOTIATION
Arvin Z FerenczUnited KingdomAsiya Javayant NEW
Maria L TollnerArgentinaAnna Fali NEGOTIATION
Stacey E DoeAustraliaAnna Fali QUALIFIED
Ashley P GlickCanadaXuxue Feng RENEWAL
Cody L StockhamAustraliaIoni Bowcher UNQUALIFIED
Stacey Z RoysterSpainBernardo Dominic UNQUALIFIED
Silvio V GillianArgentinaBernardo Dominic NEGOTIATION
Munro U BologniaBrazilAsiya Javayant PROPOSAL
Silvio M SchemmerBrazilAmy Elsner RENEWAL
Ashley I WhobreyBrazilXuxue Feng PROPOSAL
Maria W PoquetteSpainAsiya Javayant NEGOTIATION
Sinclair G NestleItalyAnna Fali QUALIFIED
Alejandro U GillianIndiaBernardo Dominic PROPOSAL
Francesco C SlusarskiFranceIvan Magalhaes UNQUALIFIED
Cody F RutaRussiaStephen Shaw NEW
David S AmigonBrazilElwin Sharvill RENEWAL
Aika T GillianUnited KingdomElwin Sharvill RENEWAL
Murillo P ChuiRussiaAnna Fali PROPOSAL
Misaki A DilliardRussiaStephen Shaw QUALIFIED
Greenwood S GlickArgentinaAnna Fali PROPOSAL
Isabel E CampainRussiaIvan Magalhaes PROPOSAL
Jennifer L SchemmerItalyOnyama Limba NEGOTIATION
Aditya G AlbaresSpainStephen Shaw NEW
Izzy T GauchoRussiaElwin Sharvill NEGOTIATION
Salvatore V PoquetteUnited KingdomAmy Elsner NEW
Wickens Y BowleyFranceAsiya Javayant PROPOSAL
Frozen Columns
Name
Julie P Wieser
Claire D Darakjy
Faith M Chui
Ricardo X Campain
Jennifer B Bolognia
Ivar P Ferencz
Arvin C Butt
Johnson H Gillian
Ricardo P Malet
Wickens Z Doe
Emily I Stockham
Jefferson K Bowley
Rodrigues Z Caudy
Alejandro L Figeroa
Munro L Glick
Ivar F Saylors
Kaitlin J Caldarera
Tony R Venere
Ivar J Briddick
Kaitlin Q Campain
Francesco E Bowley
Morrow O Bolognia
Leon X Darakjy
Ricardo T Nestle
Juan M Flosi
Ashley L Butt
Jeanfrancois B Waycott
Ashley U Morasca
Aditya P Caudy
Mayumi C Doe
Ashley V Malet
Mujtaba K Waycott
Clifford Y Waycott
Adams F Poquette
Maria Q Shinko
Ivar E Ostrosky
Faith V Dilliard
Sinclair T Morasca
Izzy H Caudy
Aditya K Ferencz
Leon Y Foller
Emily V Stenseth
Mujtaba H Stenseth
Mayumi O Flosi
Kaitlin G Glick
Smith O Ostrosky
Aruna R Bolognia
Isabel S Inouye
Murillo Y Glick
Ivar G Nicka
IdCountryDate
1000Australia2024-04-23
1001Japan2024-04-17
1002Australia2024-04-14
1003United Kingdom2024-04-06
1004India2024-04-06
1005Japan2024-04-17
1006Australia2024-04-30
1007Canada2024-04-11
1008Brazil2024-04-28
1009Spain2024-04-12
1010Argentina2024-04-26
1011Japan2024-04-01
1012Brazil2024-04-26
1013Italy2024-04-11
1014Spain2024-04-09
1015Germany2024-04-11
1016Brazil2024-04-25
1017Argentina2024-04-24
1018Italy2024-04-28
1019Australia2024-04-27
1020Australia2024-04-20
1021United Kingdom2024-04-23
1022Australia2024-04-19
1023Spain2024-04-06
1024Spain2024-04-09
1025Spain2024-04-03
1026Brazil2024-04-14
1027Brazil2024-04-28
1028Germany2024-04-07
1029France2024-04-21
1030France2024-04-06
1031France2024-04-06
1032India2024-04-04
1033Canada2024-04-02
1034Australia2024-04-20
1035Germany2024-04-03
1036Germany2024-04-27
1037Italy2024-04-19
1038United Kingdom2024-04-02
1039France2024-04-07
1040Russia2024-04-20
1041United Kingdom2024-04-19
1042Germany2024-04-06
1043Germany2024-04-01
1044Canada2024-04-25
1045Germany2024-04-23
1046Italy2024-04-21
1047Brazil2024-04-16
1048Spain2024-04-30
1049India2024-04-19

On-Demand Data

NameIdCountryDate
Izzy L Stockham1000Argentina2024-04-10
Octavia M Poquette1001Australia2024-04-29
Izzy C Bolognia1002Argentina2024-04-05
Ricardo T Bolognia1003Spain2024-04-01
Silvio Q Figeroa1004Germany2024-04-08
Darci L Caldarera1005Russia2024-04-11
Costa E Ostrosky1006India2024-04-27
Ashley W Maclead1007Japan2024-04-15
Juan U Shinko1008Japan2024-04-25
Ashley P Figeroa1009Argentina2024-04-02
Octavia O Oldroyd1010Canada2024-04-25
Munro D Maclead1011Russia2024-04-03
Nicolas R Amigon1012France2024-04-25
Ricardo D Darakjy1013India2024-04-17
Ricardo L Tollner1014France2024-04-24
Jefferson Q Wieser1015France2024-04-24
Ivar M Foller1016Spain2024-04-06
David Q Glick1017Germany2024-04-14
Antonio O Glick1018France2024-04-24
Munro H Oldroyd1019Germany2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody A BowleyFranceBernardo Dominic UNQUALIFIED
Jeanfrancois J MorascaItalyBernardo Dominic UNQUALIFIED
Jennifer F VenereRussiaAnna Fali NEGOTIATION
Arvin M ChuiRussiaIvan Magalhaes NEW
Leja W GlickBrazilIvan Magalhaes PROPOSAL
Kaitlin B IturbideUnited KingdomBernardo Dominic NEGOTIATION
Morrow X AlbaresFranceIoni Bowcher QUALIFIED
Greenwood C DoeSpainIvan Magalhaes NEGOTIATION
Chavez P OstroskyGermanyStephen Shaw NEGOTIATION
Maria Z BologniaCanadaBernardo Dominic NEW
Adams R GauchoUnited KingdomAsiya Javayant PROPOSAL
Claire E FollerJapanXuxue Feng NEW
Costa N SergiGermanyAnna Fali NEW
Darci Y KolmetzIndiaAsiya Javayant QUALIFIED
Claire O InouyeJapanAnna Fali QUALIFIED
Jennifer I CampainArgentinaBernardo Dominic NEW
Alejandro H SergiAustraliaBernardo Dominic RENEWAL
Kadeem A KuskoGermanyIoni Bowcher RENEWAL
Munro H DilliardJapanOnyama Limba RENEWAL
Salvatore B FlosiAustraliaIvan Magalhaes PROPOSAL
Antonio A NestleIndiaBernardo Dominic QUALIFIED
Juan P GlickItalyAsiya Javayant RENEWAL
Ivar J IturbideGermanyIvan Magalhaes PROPOSAL
Maria H KolmetzSpainStephen Shaw NEGOTIATION
Arvin L AlbaresSpainIvan Magalhaes QUALIFIED
Kadeem Z VocelkaCanadaStephen Shaw NEGOTIATION
Leon C NestleAustraliaXuxue Feng UNQUALIFIED
Adams S GarufiItalyIoni Bowcher UNQUALIFIED
Kaitlin L WieserSpainXuxue Feng UNQUALIFIED
Aruna V SaylorsSpainOnyama Limba NEGOTIATION
Jennifer S ChuiRussiaOnyama Limba NEGOTIATION
Alejandro N CaldareraUnited KingdomElwin Sharvill PROPOSAL
Adams K ButtItalyXuxue Feng QUALIFIED
Nicolas A StockhamGermanyElwin Sharvill NEGOTIATION
Sinclair F FollerItalyBernardo Dominic PROPOSAL
Aika T DilliardFranceOnyama Limba UNQUALIFIED
Morrow Q SchemmerBrazilStephen Shaw UNQUALIFIED
Isabel F GlickSpainStephen Shaw UNQUALIFIED
Aruna R AlbaresUnited KingdomAnna Fali RENEWAL
Kaitlin O AlbaresGermanyXuxue Feng 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>