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
Jefferson N BriddickArgentinaAsiya Javayant QUALIFIED
Chavez V CampainRussiaAmy Elsner NEGOTIATION
Ashley L GarufiFranceAsiya Javayant NEGOTIATION
Maria Z GillianCanadaBernardo Dominic UNQUALIFIED
Nicolas Z MarrierArgentinaIvan Magalhaes NEGOTIATION
Alejandro B GarufiGermanyIvan Magalhaes QUALIFIED
Jeanfrancois N StensethJapanAmy Elsner UNQUALIFIED
Leja D KuskoIndiaXuxue Feng PROPOSAL
Kaitlin J NickaGermanyBernardo Dominic NEW
Mayumi S StensethBrazilStephen Shaw NEW
Emily R PoquetteAustraliaOnyama Limba NEGOTIATION
Octavia I WieserItalyIvan Magalhaes NEGOTIATION
Claire F RutaGermanyIvan Magalhaes NEGOTIATION
Jennifer R VocelkaFranceStephen Shaw QUALIFIED
Aditya M BologniaItalyStephen Shaw UNQUALIFIED
Francesco F StensethAustraliaXuxue Feng UNQUALIFIED
Deepesh Q NickaBrazilAsiya Javayant NEGOTIATION
Darci G InouyeSpainAmy Elsner QUALIFIED
Mayumi T VocelkaRussiaOnyama Limba QUALIFIED
Alejandro M FollerBrazilAmy Elsner NEGOTIATION
Mujtaba I ShinkoRussiaIvan Magalhaes RENEWAL
Alejandro T WieserUnited KingdomStephen Shaw RENEWAL
Octavia S WhobreyItalyIoni Bowcher UNQUALIFIED
Claire E IturbideArgentinaIvan Magalhaes NEGOTIATION
Nicolas H ShinkoArgentinaBernardo Dominic NEW
Costa G ChuiGermanyAsiya Javayant NEW
Jones F MorascaCanadaAmy Elsner PROPOSAL
Johnson C PerinBrazilOnyama Limba NEGOTIATION
Sinclair Z GillianCanadaIvan Magalhaes RENEWAL
Ivar S InouyeArgentinaXuxue Feng NEGOTIATION
Juan H CampainBrazilElwin Sharvill UNQUALIFIED
Antonio U BologniaCanadaXuxue Feng PROPOSAL
Maisha H DoeArgentinaIvan Magalhaes NEW
Rodrigues E GauchoGermanyAnna Fali NEGOTIATION
Claire A FerenczAustraliaIvan Magalhaes RENEWAL
Isabel S AlbaresItalyAsiya Javayant UNQUALIFIED
Chavez O MaletFranceXuxue Feng RENEWAL
Mayumi G RimSpainBernardo Dominic PROPOSAL
Aditya X RulapaughIndiaIoni Bowcher UNQUALIFIED
James E InouyeJapanStephen Shaw NEGOTIATION
Aika Q IturbideArgentinaBernardo Dominic UNQUALIFIED
Ivar A MorascaRussiaXuxue Feng NEGOTIATION
Munro A AmigonArgentinaOnyama Limba NEGOTIATION
Nicolas B WieserSpainAnna Fali UNQUALIFIED
David E BologniaSpainAnna Fali QUALIFIED
Aika C DarakjyIndiaElwin Sharvill QUALIFIED
Antonio I WhobreyBrazilAsiya Javayant QUALIFIED
Leja R BologniaGermanyAmy Elsner NEW
Francesco J ChuiBrazilStephen Shaw NEW
Silvio W OstroskyRussiaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Silvio Y NickaRussiaXuxue Feng RENEWAL
Salvatore R ShinkoJapanIoni Bowcher PROPOSAL
Johnson V AmigonAustraliaIoni Bowcher NEGOTIATION
David Q BowleyJapanAmy Elsner UNQUALIFIED
Ashley S SergiUnited KingdomBernardo Dominic PROPOSAL
Claire R DoeUnited KingdomAsiya Javayant PROPOSAL
Octavia Q PaprockiJapanIvan Magalhaes QUALIFIED
Darci P StockhamRussiaIvan Magalhaes QUALIFIED
Ashley X AlbaresBrazilAnna Fali UNQUALIFIED
Alejandro Z StensethFranceBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki Y FigeroaIndia2024-04-29King, Christopher A Esq PROPOSAL23Stephen Shaw
1001Silvio K GarufiItaly2024-04-28Buckley Miller Wright QUALIFIED45Elwin Sharvill
1002Jeanfrancois E OldroydAustralia2024-04-17Rangoni Of Florence UNQUALIFIED87Bernardo Dominic
1003Clifford A FigeroaUnited Kingdom2024-04-03Buckley Miller Wright NEW74Anna Fali
1004Tony R GillianIndia2024-04-24Feltz Printing Service NEW15Asiya Javayant
1005Octavia L SaylorsFrance2024-04-27Dorl, James J Esq QUALIFIED71Ivan Magalhaes
1006Kadeem K RimArgentina2024-04-04Rousseaux, Michael Esq QUALIFIED89Anna Fali
1007Costa T IturbideSpain2024-04-19Dorl, James J Esq NEGOTIATION14Xuxue Feng
1008David Q RimItaly2024-04-20Truhlar And Truhlar Attys QUALIFIED53Bernardo Dominic
1009Ashley I SergiJapan2024-04-15Chapman, Ross E Esq QUALIFIED2Amy Elsner
1010Aika L KuskoAustralia2024-04-29Chapman, Ross E Esq QUALIFIED1Asiya Javayant
1011Maisha B DarakjyFrance2024-04-15Feltz Printing Service RENEWAL89Amy Elsner
1012Stacey F PoquetteArgentina2024-04-26Chapman, Ross E Esq QUALIFIED77Elwin Sharvill
1013Stacey S ButtJapan2024-04-26Rousseaux, Michael Esq NEW11Xuxue Feng
1014Maria F BologniaArgentina2024-04-18Feltz Printing Service RENEWAL62Ivan Magalhaes
1015Isabel U ShinkoRussia2024-04-23Dorl, James J Esq NEGOTIATION83Stephen Shaw
1016James O GillianFrance2024-04-14Dorl, James J Esq RENEWAL65Anna Fali
1017Ivar B ShinkoIndia2024-04-21King, Christopher A Esq UNQUALIFIED26Xuxue Feng
1018Murillo R OldroydRussia2024-04-27Feiner Bros PROPOSAL53Elwin Sharvill
1019Maisha N SlusarskiItaly2024-04-22Printing Dimensions RENEWAL92Ivan Magalhaes
1020Faith T RoysterJapan2024-04-11Feiner Bros UNQUALIFIED56Asiya Javayant
1021Jennifer P AlbaresSpain2024-04-27Benton, John B Jr PROPOSAL35Ioni Bowcher
1022Emily C RoysterRussia2024-04-16Chemel, James L Cpa NEW68Ioni Bowcher
1023Aika Z FollerAustralia2024-04-18Printing Dimensions RENEWAL18Xuxue Feng
1024Sinclair J OstroskyCanada2024-04-14Chemel, James L Cpa UNQUALIFIED71Bernardo Dominic
1025Faith F MorascaGermany2024-04-08Chapman, Ross E Esq RENEWAL39Xuxue Feng
1026Juan S FollerJapan2024-04-14Benton, John B Jr PROPOSAL61Asiya Javayant
1027Maria U CaldareraSpain2024-04-20Morlong Associates NEGOTIATION7Ivan Magalhaes
1028Darci M RutaGermany2024-04-07Dorl, James J Esq PROPOSAL92Asiya Javayant
1029Arvin M StockhamArgentina2024-04-12Benton, John B Jr QUALIFIED97Asiya Javayant
1030Jennifer B MacleadRussia2024-04-16Chemel, James L Cpa NEGOTIATION51Ivan Magalhaes
1031Emily Q AlbaresRussia2024-04-13Buckley Miller Wright NEW57Bernardo Dominic
1032Ivar N BologniaArgentina2024-04-28Chemel, James L Cpa NEGOTIATION19Amy Elsner
1033Nicolas F GlickGermany2024-04-11Rangoni Of Florence UNQUALIFIED55Amy Elsner
1034Chavez O GauchoUnited Kingdom2024-04-26Benton, John B Jr NEGOTIATION65Amy Elsner
1035Kadeem R GauchoIndia2024-04-12Benton, John B Jr RENEWAL39Amy Elsner
1036Salvatore D WieserIndia2024-04-21Buckley Miller Wright UNQUALIFIED46Elwin Sharvill
1037Kadeem K PaprockiUnited Kingdom2024-04-20Chanay, Jeffrey A Esq NEGOTIATION13Elwin Sharvill
1038Jones R VenereArgentina2024-04-20Truhlar And Truhlar Attys UNQUALIFIED65Anna Fali
1039Aika W GauchoRussia2024-04-03Chapman, Ross E Esq NEGOTIATION84Bernardo Dominic
1040Cody H KuskoGermany2024-04-27Buckley Miller Wright RENEWAL34Ioni Bowcher
1041David M FlosiArgentina2024-04-16Rangoni Of Florence RENEWAL60Anna Fali
1042Antonio A FigeroaArgentina2024-04-03Rousseaux, Michael Esq NEW64Anna Fali
1043Ashley X CaldareraUnited Kingdom2024-04-23Chemel, James L Cpa NEW6Ioni Bowcher
1044Maisha H KuskoJapan2024-04-17Truhlar And Truhlar Attys UNQUALIFIED75Amy Elsner
1045Morrow D NestleUnited Kingdom2024-04-20Buckley Miller Wright RENEWAL13Onyama Limba
1046Leja L AlbaresJapan2024-04-08Chanay, Jeffrey A Esq RENEWAL50Anna Fali
1047Maria G GauchoIndia2024-03-31Chemel, James L Cpa PROPOSAL3Elwin Sharvill
1048Faith V AmigonFrance2024-04-04Dorl, James J Esq NEW56Ivan Magalhaes
1049Aika W TollnerFrance2024-04-05Rangoni Of Florence QUALIFIED77Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Leja H MacleadUnited KingdomIvan Magalhaes NEGOTIATION
Silvio G GauchoGermanyStephen Shaw NEW
Isabel Q SlusarskiIndiaStephen Shaw PROPOSAL
Maisha T MaletSpainOnyama Limba NEGOTIATION
Maisha H PerinFranceAnna Fali RENEWAL
Jeanfrancois Y NickaBrazilIvan Magalhaes RENEWAL
Kadeem N RulapaughItalyElwin Sharvill RENEWAL
Munro F SaylorsRussiaAnna Fali NEW
Johnson P PaprockiSpainBernardo Dominic UNQUALIFIED
Munro V StockhamBrazilXuxue Feng RENEWAL
Aika S MarrierItalyAmy Elsner QUALIFIED
Sinclair N GlickIndiaIvan Magalhaes QUALIFIED
Francesco N IturbideUnited KingdomBernardo Dominic UNQUALIFIED
Murillo T NestleRussiaStephen Shaw PROPOSAL
Chavez Q WieserRussiaXuxue Feng NEGOTIATION
Misaki S PoquetteIndiaElwin Sharvill PROPOSAL
Maria F CampainCanadaXuxue Feng NEW
Aruna V StensethBrazilElwin Sharvill NEW
Faith R ButtJapanXuxue Feng UNQUALIFIED
Jefferson I KuskoRussiaBernardo Dominic NEGOTIATION
Sinclair O MaletIndiaAnna Fali PROPOSAL
Francesco R TollnerItalyAmy Elsner RENEWAL
Leja D OstroskyBrazilBernardo Dominic NEW
Morrow S DoeBrazilAsiya Javayant QUALIFIED
Murillo Y MaletFranceBernardo Dominic NEW
Aditya F FollerUnited KingdomAnna Fali QUALIFIED
Arvin F StockhamUnited KingdomBernardo Dominic UNQUALIFIED
Alejandro H MorascaSpainElwin Sharvill UNQUALIFIED
Ivar D BologniaItalyOnyama Limba PROPOSAL
Darci P GauchoArgentinaIvan Magalhaes QUALIFIED
Juan V CampainCanadaAnna Fali PROPOSAL
Leja A StockhamAustraliaIvan Magalhaes NEW
Greenwood P ChuiIndiaIvan Magalhaes QUALIFIED
Mayumi U StockhamGermanyAmy Elsner RENEWAL
Deepesh Y BowleyRussiaIoni Bowcher QUALIFIED
Adams J FerenczSpainAmy Elsner RENEWAL
Leon R FlosiBrazilOnyama Limba NEGOTIATION
Jennifer M RulapaughIndiaBernardo Dominic PROPOSAL
Jeanfrancois X GauchoRussiaAnna Fali PROPOSAL
Cody M CampainUnited KingdomBernardo Dominic UNQUALIFIED
Leon S CaudyUnited KingdomIvan Magalhaes PROPOSAL
Greenwood X OstroskyBrazilOnyama Limba UNQUALIFIED
Isabel G DarakjyIndiaXuxue Feng PROPOSAL
Kadeem I BologniaCanadaStephen Shaw UNQUALIFIED
Sinclair I GillianAustraliaIvan Magalhaes RENEWAL
Arvin O GillianSpainAmy Elsner UNQUALIFIED
Morrow B RutaArgentinaIvan Magalhaes NEW
Mujtaba U NestleRussiaStephen Shaw QUALIFIED
Mayumi X MarrierFranceIoni Bowcher RENEWAL
Arvin T KolmetzCanadaIoni Bowcher PROPOSAL
Frozen Columns
Name
Adams Z Malet
Leja U Slusarski
Ricardo U Ferencz
Mayumi Q Royster
Antonio A Bolognia
Adams A Tollner
Sinclair Y Dilliard
Mayumi U Tollner
Kaitlin F Ostrosky
Kaitlin H Gillian
Costa Y Kusko
Salvatore H Ferencz
Cody S Darakjy
Ivar W Iturbide
Faith I Albares
Smith C Stockham
Smith P Kolmetz
Aika V Perin
Jennifer T Malet
Tony D Shinko
David O Sergi
Kaitlin G Venere
Munro X Paprocki
Arvin S Morasca
Clifford P Waycott
Octavia E Perin
Jennifer J Caldarera
Cody N Malet
Jennifer D Figeroa
Salvatore V Rim
Nicolas K Morasca
Jefferson F Poquette
Misaki W Paprocki
Murillo U Garufi
Isabel H Rulapaugh
Octavia G Wieser
Kaitlin W Gaucho
Maria Q Caudy
Kaitlin R Stenseth
Smith M Bowley
Silvio G Sergi
Alejandro O Shinko
Jones W Nicka
James B Briddick
Adams E Maclead
Murillo S Bolognia
Emily Y Iturbide
Darci S Gaucho
Jeanfrancois F Schemmer
Aruna F Tollner
IdCountryDate
1000Brazil2024-04-15
1001Australia2024-04-13
1002Spain2024-04-01
1003Italy2024-04-21
1004Australia2024-04-14
1005Australia2024-04-21
1006Argentina2024-04-02
1007Canada2024-04-12
1008Germany2024-04-13
1009United Kingdom2024-04-29
1010Russia2024-03-31
1011United Kingdom2024-04-28
1012Australia2024-04-28
1013Italy2024-04-08
1014Canada2024-04-07
1015Germany2024-04-05
1016Canada2024-04-07
1017Russia2024-04-02
1018France2024-04-10
1019United Kingdom2024-04-19
1020Russia2024-04-05
1021Canada2024-04-20
1022India2024-04-01
1023Brazil2024-04-23
1024Argentina2024-04-17
1025Russia2024-04-24
1026Australia2024-04-11
1027Germany2024-04-27
1028Spain2024-04-27
1029Argentina2024-04-17
1030Canada2024-04-02
1031Germany2024-04-20
1032Germany2024-04-13
1033United Kingdom2024-04-14
1034Italy2024-04-07
1035Spain2024-04-23
1036Brazil2024-04-01
1037Germany2024-04-27
1038Australia2024-04-09
1039Canada2024-04-16
1040India2024-04-10
1041France2024-04-09
1042Argentina2024-04-18
1043Argentina2024-04-14
1044United Kingdom2024-04-06
1045Germany2024-04-04
1046Argentina2024-04-04
1047Argentina2024-04-22
1048Spain2024-04-11
1049Japan2024-04-05

On-Demand Data

NameIdCountryDate
Darci B Paprocki1000Argentina2024-04-16
Jeanfrancois A Tollner1001Italy2024-04-17
Murillo W Poquette1002Japan2024-04-11
Aruna T Figeroa1003Italy2024-04-10
Maria L Shinko1004Italy2024-04-11
Jefferson U Dilliard1005Italy2024-04-21
Costa R Poquette1006Argentina2024-04-16
Morrow C Bowley1007Brazil2024-04-13
Morrow G Wieser1008France2024-03-31
Octavia X Campain1009Germany2024-04-03
Isabel J Malet1010India2024-04-09
Smith A Rulapaugh1011Canada2024-04-14
Murillo T Flosi1012Italy2024-04-26
Rodrigues T Morasca1013Canada2024-04-29
Alejandro M Campain1014Russia2024-04-11
Adams H Caudy1015Canada2024-04-26
Jones V Iturbide1016United Kingdom2024-04-21
Jeanfrancois F Caldarera1017Brazil2024-04-14
Claire T Royster1018Italy2024-03-31
Jennifer B Caldarera1019United Kingdom2024-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin G OstroskyUnited KingdomAmy Elsner PROPOSAL
Kaitlin X FlosiArgentinaIvan Magalhaes QUALIFIED
Octavia P DarakjyItalyAsiya Javayant RENEWAL
Greenwood X SergiItalyAsiya Javayant NEW
David B OstroskyFranceAsiya Javayant NEGOTIATION
Isabel M RimFranceIvan Magalhaes QUALIFIED
Jefferson S MarrierJapanIoni Bowcher QUALIFIED
Faith O DarakjyJapanBernardo Dominic UNQUALIFIED
Maisha D DarakjyAustraliaAnna Fali RENEWAL
Juan M MacleadAustraliaElwin Sharvill RENEWAL
Sinclair E StensethSpainElwin Sharvill NEGOTIATION
Arvin B ButtAustraliaOnyama Limba NEW
Wickens A StockhamRussiaIvan Magalhaes RENEWAL
Antonio B StockhamIndiaOnyama Limba QUALIFIED
Clifford Q CampainSpainXuxue Feng NEW
Rodrigues H CaudyJapanIoni Bowcher NEW
Francesco U CaudyFranceAsiya Javayant NEW
Kaitlin P PoquetteAustraliaXuxue Feng NEW
Murillo U BologniaJapanAsiya Javayant QUALIFIED
Jeanfrancois T NestleAustraliaAmy Elsner QUALIFIED
Smith R FollerIndiaStephen Shaw UNQUALIFIED
Darci B PerinBrazilAmy Elsner NEGOTIATION
Adams Y GlickGermanyAnna Fali QUALIFIED
Tony A SchemmerSpainAnna Fali NEGOTIATION
Emily S CampainAustraliaIoni Bowcher PROPOSAL
Jeanfrancois L MaletBrazilAsiya Javayant QUALIFIED
Octavia D FigeroaBrazilAnna Fali RENEWAL
Leja A CampainGermanyAsiya Javayant RENEWAL
Mujtaba W VenereAustraliaOnyama Limba NEGOTIATION
Kaitlin J PaprockiFranceStephen Shaw UNQUALIFIED
Deepesh S BriddickSpainIoni Bowcher NEGOTIATION
Murillo X StensethFranceXuxue Feng NEW
Wickens U AmigonJapanBernardo Dominic PROPOSAL
Antonio P ButtGermanyElwin Sharvill NEW
Alejandro O BologniaUnited KingdomAnna Fali PROPOSAL
Izzy Z GillianFranceIoni Bowcher RENEWAL
Chavez N StockhamRussiaIvan Magalhaes NEGOTIATION
Chavez A MacleadBrazilIvan Magalhaes UNQUALIFIED
Munro N TollnerJapanOnyama Limba PROPOSAL
Ricardo E WhobreyRussiaStephen Shaw 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>