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
Smith X FlosiFranceAmy Elsner NEW
Juan I IturbideRussiaAnna Fali UNQUALIFIED
Isabel E GarufiAustraliaAnna Fali PROPOSAL
Mujtaba Y StockhamItalyAnna Fali NEW
Costa Z RulapaughArgentinaAnna Fali NEW
James Z StockhamFranceElwin Sharvill NEGOTIATION
Alejandro W CaudyAustraliaBernardo Dominic NEGOTIATION
Aditya R ChuiBrazilXuxue Feng RENEWAL
Jennifer N AmigonItalyIoni Bowcher QUALIFIED
Mayumi I AmigonAustraliaBernardo Dominic RENEWAL
Julie H CampainSpainStephen Shaw NEW
Ivar C VenereCanadaAsiya Javayant NEGOTIATION
Francesco C ShinkoUnited KingdomAsiya Javayant RENEWAL
Isabel W AmigonArgentinaAmy Elsner NEGOTIATION
Ashley E ChuiBrazilAsiya Javayant UNQUALIFIED
Ivar L VocelkaIndiaBernardo Dominic NEGOTIATION
Tony R MarrierRussiaAsiya Javayant UNQUALIFIED
Smith G BowleyBrazilIoni Bowcher PROPOSAL
Greenwood Y MaletArgentinaElwin Sharvill RENEWAL
Munro N ChuiItalyOnyama Limba NEGOTIATION
Aika F CampainFranceElwin Sharvill PROPOSAL
Clifford I PaprockiCanadaIvan Magalhaes PROPOSAL
Murillo F KolmetzIndiaXuxue Feng PROPOSAL
Isabel E ShinkoIndiaXuxue Feng UNQUALIFIED
Octavia C BriddickUnited KingdomIvan Magalhaes NEW
Sinclair J MorascaRussiaAsiya Javayant RENEWAL
Wickens D VenereRussiaStephen Shaw PROPOSAL
Aika K RutaRussiaAsiya Javayant UNQUALIFIED
Jefferson E RimJapanIvan Magalhaes PROPOSAL
Murillo N SaylorsBrazilXuxue Feng RENEWAL
Maria S DilliardRussiaAnna Fali RENEWAL
Octavia Z MacleadFranceBernardo Dominic RENEWAL
Mayumi Y GlickRussiaAmy Elsner PROPOSAL
Leja V KolmetzSpainAmy Elsner RENEWAL
Chavez M PerinItalyIvan Magalhaes QUALIFIED
Jeanfrancois J OldroydRussiaOnyama Limba QUALIFIED
Cody H InouyeFranceOnyama Limba UNQUALIFIED
Salvatore R SlusarskiSpainOnyama Limba QUALIFIED
Clifford Q PoquetteArgentinaElwin Sharvill PROPOSAL
Maria I RoysterJapanIvan Magalhaes NEGOTIATION
Julie D PoquetteCanadaIvan Magalhaes NEW
Munro R AmigonBrazilElwin Sharvill NEW
Jefferson O SergiFranceOnyama Limba NEW
Clifford G DoeGermanyIoni Bowcher UNQUALIFIED
Mujtaba R MorascaBrazilBernardo Dominic RENEWAL
Francesco F SergiIndiaStephen Shaw NEGOTIATION
Izzy J CampainBrazilIvan Magalhaes NEW
Silvio L WieserGermanyXuxue Feng UNQUALIFIED
David J CaudyUnited KingdomElwin Sharvill QUALIFIED
Isabel V SchemmerJapanOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Adams B WhobreyIndiaIvan Magalhaes QUALIFIED
Jeanfrancois S WhobreyItalyAnna Fali PROPOSAL
Murillo D GauchoItalyOnyama Limba QUALIFIED
Isabel G StensethAustraliaElwin Sharvill NEGOTIATION
Octavia B GauchoJapanAmy Elsner NEGOTIATION
Deepesh H KuskoArgentinaAnna Fali RENEWAL
Silvio R StensethSpainAnna Fali UNQUALIFIED
Jones Y PerinItalyIvan Magalhaes QUALIFIED
Mayumi U FollerUnited KingdomIvan Magalhaes PROPOSAL
Alejandro U GauchoFranceAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio N MaletBrazil2024-04-10Chanay, Jeffrey A Esq UNQUALIFIED76Xuxue Feng
1001Aruna K WhobreySpain2024-05-03Buckley Miller Wright NEW37Elwin Sharvill
1002Misaki I CaldareraFrance2024-04-22Chapman, Ross E Esq NEGOTIATION22Xuxue Feng
1003Rodrigues V RimItaly2024-04-07Chapman, Ross E Esq PROPOSAL86Amy Elsner
1004Adams K NestleAustralia2024-04-11Rousseaux, Michael Esq PROPOSAL35Ivan Magalhaes
1005Nicolas L DilliardGermany2024-05-05Chapman, Ross E Esq RENEWAL13Elwin Sharvill
1006Salvatore W SlusarskiGermany2024-04-12Dorl, James J Esq UNQUALIFIED79Asiya Javayant
1007Aruna O FollerArgentina2024-04-19Benton, John B Jr NEGOTIATION10Asiya Javayant
1008Jennifer R PoquetteJapan2024-04-10Buckley Miller Wright NEGOTIATION65Bernardo Dominic
1009Alejandro T BologniaAustralia2024-05-05Feiner Bros RENEWAL54Stephen Shaw
1010Isabel B PaprockiFrance2024-04-30Feltz Printing Service QUALIFIED99Ioni Bowcher
1011Cody Q ChuiAustralia2024-04-14Commercial Press UNQUALIFIED40Ioni Bowcher
1012Ivar H IturbideCanada2024-04-18Benton, John B Jr NEGOTIATION57Amy Elsner
1013Leja P VenereUnited Kingdom2024-04-10Printing Dimensions NEGOTIATION99Elwin Sharvill
1014Claire V RutaItaly2024-04-13Feltz Printing Service PROPOSAL62Onyama Limba
1015Izzy N KolmetzCanada2024-04-22Benton, John B Jr NEGOTIATION53Anna Fali
1016Ashley W WieserFrance2024-04-15Benton, John B Jr RENEWAL51Onyama Limba
1017Kaitlin I SchemmerRussia2024-04-20Chemel, James L Cpa PROPOSAL31Onyama Limba
1018Costa J SlusarskiItaly2024-04-30Truhlar And Truhlar Attys QUALIFIED15Onyama Limba
1019Chavez U ChuiCanada2024-04-09Buckley Miller Wright PROPOSAL7Ivan Magalhaes
1020Faith Q VenereGermany2024-04-21Benton, John B Jr PROPOSAL78Bernardo Dominic
1021Johnson N MorascaItaly2024-05-01Commercial Press PROPOSAL44Elwin Sharvill
1022Jennifer P PaprockiAustralia2024-04-06Chanay, Jeffrey A Esq NEGOTIATION0Ivan Magalhaes
1023Francesco Y AlbaresItaly2024-04-10Dorl, James J Esq PROPOSAL45Asiya Javayant
1024Leja Y GauchoBrazil2024-04-09Dorl, James J Esq QUALIFIED97Stephen Shaw
1025Maria J TollnerJapan2024-05-05Feiner Bros NEW58Ioni Bowcher
1026Rodrigues E MarrierUnited Kingdom2024-04-16Chapman, Ross E Esq QUALIFIED26Xuxue Feng
1027Claire C MaletBrazil2024-04-26Chapman, Ross E Esq NEGOTIATION19Ioni Bowcher
1028Smith J GarufiCanada2024-04-21Chapman, Ross E Esq NEW95Anna Fali
1029Cody T OstroskyJapan2024-04-11Dorl, James J Esq QUALIFIED7Amy Elsner
1030Maria F WhobreyBrazil2024-05-01Feiner Bros QUALIFIED73Elwin Sharvill
1031Sinclair X RimBrazil2024-04-11Chapman, Ross E Esq RENEWAL26Ioni Bowcher
1032Maisha M TollnerAustralia2024-04-13Dorl, James J Esq UNQUALIFIED86Asiya Javayant
1033Jeanfrancois F WhobreyUnited Kingdom2024-04-06Chanay, Jeffrey A Esq PROPOSAL26Asiya Javayant
1034Wickens R RoysterArgentina2024-04-15Chemel, James L Cpa NEGOTIATION64Ivan Magalhaes
1035Adams A WhobreyRussia2024-04-16Rousseaux, Michael Esq NEW1Bernardo Dominic
1036Maisha G MacleadArgentina2024-05-02Buckley Miller Wright NEGOTIATION8Asiya Javayant
1037Tony S OstroskyRussia2024-04-09King, Christopher A Esq QUALIFIED0Stephen Shaw
1038Aika A CaudySpain2024-04-12Rousseaux, Michael Esq PROPOSAL63Elwin Sharvill
1039Juan I MaletAustralia2024-04-29Buckley Miller Wright QUALIFIED12Asiya Javayant
1040Leja U RimUnited Kingdom2024-04-15King, Christopher A Esq NEGOTIATION61Onyama Limba
1041Alejandro L ShinkoUnited Kingdom2024-04-07Feiner Bros UNQUALIFIED42Ivan Magalhaes
1042Jones X DilliardSpain2024-04-07Truhlar And Truhlar Attys UNQUALIFIED28Amy Elsner
1043Wickens W VenereCanada2024-04-30Morlong Associates QUALIFIED9Elwin Sharvill
1044Francesco X FerenczRussia2024-04-25Truhlar And Truhlar Attys PROPOSAL83Elwin Sharvill
1045Morrow G ChuiGermany2024-04-17Feltz Printing Service UNQUALIFIED42Anna Fali
1046Aditya D PerinRussia2024-04-18Commercial Press NEW31Stephen Shaw
1047Aika L InouyeSpain2024-04-28Morlong Associates NEW45Onyama Limba
1048James S FlosiGermany2024-04-11Truhlar And Truhlar Attys NEW77Ioni Bowcher
1049Maisha A TollnerJapan2024-04-27Chemel, James L Cpa QUALIFIED56Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Johnson B CampainGermanyXuxue Feng UNQUALIFIED
Greenwood O RoysterAustraliaXuxue Feng QUALIFIED
Julie F PaprockiArgentinaAsiya Javayant PROPOSAL
Cody X GarufiIndiaIvan Magalhaes RENEWAL
Cody X TollnerRussiaBernardo Dominic NEW
Salvatore J OldroydJapanAmy Elsner UNQUALIFIED
Silvio A OldroydUnited KingdomIoni Bowcher QUALIFIED
Stacey U StensethRussiaElwin Sharvill QUALIFIED
Leja O NickaJapanIoni Bowcher UNQUALIFIED
Alejandro O FerenczBrazilElwin Sharvill QUALIFIED
Wickens T SchemmerRussiaIoni Bowcher NEGOTIATION
Misaki M DarakjyCanadaAsiya Javayant QUALIFIED
Costa D MacleadRussiaAsiya Javayant NEW
Wickens A DilliardItalyAmy Elsner NEGOTIATION
Sinclair A GillianItalyElwin Sharvill UNQUALIFIED
Sinclair P BowleyJapanBernardo Dominic RENEWAL
Costa Z KuskoGermanyIvan Magalhaes NEGOTIATION
Wickens R VocelkaRussiaBernardo Dominic PROPOSAL
Izzy K OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Jones E BologniaAustraliaStephen Shaw RENEWAL
Johnson O KolmetzItalyStephen Shaw UNQUALIFIED
Aditya S SaylorsJapanXuxue Feng NEW
Rodrigues Y BowleySpainAsiya Javayant PROPOSAL
David E PoquetteFranceOnyama Limba PROPOSAL
Johnson G GlickSpainIvan Magalhaes NEGOTIATION
Silvio Z PaprockiJapanXuxue Feng NEGOTIATION
Julie T ButtUnited KingdomIoni Bowcher UNQUALIFIED
Mayumi U NickaRussiaIoni Bowcher RENEWAL
Wickens D CampainArgentinaIvan Magalhaes NEGOTIATION
Silvio I AmigonArgentinaElwin Sharvill NEGOTIATION
Octavia M PoquetteFranceAnna Fali RENEWAL
Arvin Y WieserIndiaOnyama Limba QUALIFIED
Juan F SergiArgentinaXuxue Feng RENEWAL
Smith V WhobreyBrazilElwin Sharvill UNQUALIFIED
Nicolas R KuskoJapanAsiya Javayant UNQUALIFIED
Wickens B CampainItalyStephen Shaw UNQUALIFIED
Leon F KuskoBrazilOnyama Limba UNQUALIFIED
Aditya T FlosiCanadaIvan Magalhaes PROPOSAL
Stacey O WieserItalyIoni Bowcher UNQUALIFIED
Kaitlin Z KolmetzSpainIoni Bowcher QUALIFIED
David Q KuskoArgentinaOnyama Limba RENEWAL
Misaki I OldroydIndiaAnna Fali PROPOSAL
Isabel Q OstroskyGermanyXuxue Feng PROPOSAL
Faith C MacleadIndiaAsiya Javayant NEW
Aditya P AlbaresJapanOnyama Limba UNQUALIFIED
Sinclair C SaylorsSpainAsiya Javayant RENEWAL
Morrow L FerenczBrazilOnyama Limba NEW
Murillo P MorascaBrazilXuxue Feng PROPOSAL
Misaki U ChuiGermanyElwin Sharvill NEGOTIATION
Jefferson W StensethSpainElwin Sharvill NEGOTIATION
Frozen Columns
Name
Faith K Figeroa
Maria B Kusko
Darci F Rulapaugh
Mayumi X Shinko
Ricardo Y Inouye
Sinclair W Sergi
Isabel X Stenseth
Chavez Y Nestle
Jennifer B Nicka
Mujtaba M Chui
Munro J Caudy
Maria M Wieser
Munro V Maclead
Darci B Briddick
Ricardo W Waycott
Cody T Venere
Leon H Caudy
Kadeem Q Ostrosky
Stacey C Bolognia
Sinclair O Paprocki
Faith V Kolmetz
Ashley A Saylors
Claire K Butt
Isabel E Shinko
Leon J Rulapaugh
Salvatore E Flosi
Morrow I Gaucho
Faith H Flosi
Tony H Whobrey
Faith Y Garufi
Chavez S Ruta
Izzy C Chui
Misaki X Iturbide
Ashley T Gillian
Stacey Z Garufi
Morrow H Caudy
Isabel J Doe
Ricardo B Saylors
Chavez I Malet
Smith R Albares
Salvatore V Ostrosky
Murillo Z Foller
Greenwood V Malet
Jeanfrancois C Ferencz
Deepesh T Ostrosky
Juan B Garufi
Arvin O Maclead
Mujtaba L Kusko
Darci X Rulapaugh
Deepesh Y Poquette
IdCountryDate
1000United Kingdom2024-04-18
1001Spain2024-04-24
1002Canada2024-04-09
1003Australia2024-04-07
1004India2024-04-08
1005Canada2024-04-09
1006Australia2024-04-21
1007Australia2024-05-05
1008Canada2024-04-22
1009Russia2024-04-29
1010Brazil2024-04-13
1011United Kingdom2024-04-28
1012Russia2024-04-14
1013Canada2024-04-11
1014United Kingdom2024-04-14
1015Brazil2024-04-23
1016Spain2024-04-28
1017India2024-05-01
1018France2024-05-02
1019Russia2024-04-30
1020Brazil2024-04-06
1021Australia2024-04-26
1022Japan2024-04-06
1023Argentina2024-04-22
1024Russia2024-04-30
1025Brazil2024-04-27
1026Canada2024-04-07
1027Brazil2024-04-07
1028India2024-04-22
1029Japan2024-05-04
1030Germany2024-05-01
1031United Kingdom2024-04-26
1032Canada2024-05-01
1033Argentina2024-05-01
1034United Kingdom2024-04-17
1035France2024-04-14
1036Brazil2024-04-14
1037Russia2024-05-01
1038Canada2024-04-22
1039India2024-04-27
1040Germany2024-04-07
1041Brazil2024-04-19
1042India2024-05-05
1043Spain2024-05-02
1044Brazil2024-05-02
1045France2024-05-01
1046France2024-04-10
1047Russia2024-04-06
1048United Kingdom2024-04-25
1049India2024-04-19

On-Demand Data

NameIdCountryDate
Clifford V Oldroyd1000United Kingdom2024-04-18
Silvio W Briddick1001Argentina2024-04-08
Julie E Venere1002Argentina2024-04-30
Misaki C Tollner1003Japan2024-05-04
Francesco P Malet1004Spain2024-04-13
Izzy H Tollner1005Argentina2024-05-02
Julie G Nestle1006Australia2024-04-15
Leja L Bowley1007France2024-05-02
Mayumi R Bowley1008Spain2024-04-08
Morrow W Ruta1009Japan2024-04-13
Clifford Y Whobrey1010Germany2024-04-11
Munro W Inouye1011Russia2024-04-12
James F Doe1012Spain2024-04-12
Julie V Vocelka1013Brazil2024-05-03
Aditya N Inouye1014Argentina2024-04-13
Maisha M Bowley1015Brazil2024-04-12
Maisha G Caudy1016Italy2024-04-21
Mujtaba P Marrier1017Spain2024-04-21
Mayumi C Doe1018Brazil2024-04-22
James B Venere1019Canada2024-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer K StensethRussiaIoni Bowcher NEW
Johnson S SchemmerBrazilXuxue Feng QUALIFIED
Aditya D SergiItalyIoni Bowcher QUALIFIED
Aditya J TollnerIndiaAsiya Javayant RENEWAL
Wickens B ShinkoFranceXuxue Feng PROPOSAL
Jeanfrancois D MarrierBrazilIvan Magalhaes PROPOSAL
Isabel V WieserFranceIvan Magalhaes UNQUALIFIED
Jones N DarakjyBrazilBernardo Dominic RENEWAL
Costa U MaletUnited KingdomXuxue Feng RENEWAL
Antonio Z CaudyAustraliaIoni Bowcher NEGOTIATION
Mayumi Q DilliardSpainStephen Shaw UNQUALIFIED
Jennifer L FollerBrazilBernardo Dominic UNQUALIFIED
David C PoquetteCanadaIvan Magalhaes NEW
Mujtaba P NickaBrazilOnyama Limba NEGOTIATION
Ashley I TollnerGermanyBernardo Dominic PROPOSAL
Maria N CaudyAustraliaAmy Elsner PROPOSAL
Mayumi C DilliardAustraliaBernardo Dominic UNQUALIFIED
Alejandro W VenereBrazilAnna Fali NEGOTIATION
Arvin V RutaJapanIoni Bowcher NEGOTIATION
Sinclair L PerinBrazilIoni Bowcher NEGOTIATION
Aditya E MaletItalyAmy Elsner PROPOSAL
Aruna D SergiFranceIoni Bowcher PROPOSAL
Maria C WhobreyJapanOnyama Limba PROPOSAL
Rodrigues U DilliardSpainXuxue Feng PROPOSAL
David J GlickRussiaXuxue Feng RENEWAL
Johnson M AmigonIndiaBernardo Dominic UNQUALIFIED
Emily P CampainItalyElwin Sharvill QUALIFIED
Misaki D GarufiRussiaAnna Fali NEGOTIATION
Maria Z BologniaFranceIoni Bowcher NEGOTIATION
Jefferson W GauchoUnited KingdomOnyama Limba NEW
Nicolas D MacleadRussiaOnyama Limba UNQUALIFIED
Sinclair D FollerSpainXuxue Feng PROPOSAL
Maria R SchemmerUnited KingdomStephen Shaw PROPOSAL
Ricardo Z CaldareraIndiaAmy Elsner RENEWAL
Mayumi M NickaFranceStephen Shaw NEW
Maria G TollnerBrazilIvan Magalhaes UNQUALIFIED
Octavia Q VenereRussiaBernardo Dominic QUALIFIED
Ashley R DarakjyCanadaAnna Fali NEGOTIATION
Octavia B CaudyAustraliaStephen Shaw PROPOSAL
Greenwood M CampainRussiaIvan Magalhaes NEW

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