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 T TollnerGermanyIoni Bowcher UNQUALIFIED
Chavez V MarrierCanadaElwin Sharvill QUALIFIED
Murillo J StensethAustraliaIvan Magalhaes PROPOSAL
Jennifer V RoysterItalyAsiya Javayant PROPOSAL
Maria U RimUnited KingdomAnna Fali UNQUALIFIED
Mayumi A VenereFranceOnyama Limba QUALIFIED
David V CaudyRussiaStephen Shaw NEGOTIATION
Ricardo T MarrierItalyAmy Elsner NEGOTIATION
Mayumi S IturbideArgentinaBernardo Dominic UNQUALIFIED
Kadeem N StensethGermanyBernardo Dominic NEW
Sinclair J GarufiCanadaXuxue Feng PROPOSAL
Maisha Q WieserUnited KingdomIoni Bowcher NEW
Leja D WieserUnited KingdomAnna Fali NEW
Juan N AlbaresArgentinaAmy Elsner NEW
Antonio L BowleyCanadaIvan Magalhaes PROPOSAL
Ashley R FigeroaCanadaIvan Magalhaes NEW
Jones Y GillianSpainIvan Magalhaes RENEWAL
Juan K GauchoUnited KingdomIoni Bowcher QUALIFIED
Ivar Z MaletGermanyXuxue Feng PROPOSAL
Maisha G GlickArgentinaOnyama Limba PROPOSAL
Murillo S ShinkoRussiaBernardo Dominic QUALIFIED
Smith P MarrierBrazilStephen Shaw NEW
Leja M AmigonCanadaBernardo Dominic NEGOTIATION
Ivar Z StockhamUnited KingdomAmy Elsner QUALIFIED
Aruna J PerinUnited KingdomIoni Bowcher QUALIFIED
Misaki K ShinkoGermanyAnna Fali UNQUALIFIED
Nicolas A GlickItalyAmy Elsner QUALIFIED
Maria K FlosiIndiaXuxue Feng NEGOTIATION
Salvatore H SergiArgentinaStephen Shaw PROPOSAL
Jennifer K GlickIndiaIvan Magalhaes NEGOTIATION
Munro M RimIndiaStephen Shaw NEGOTIATION
Smith Q ShinkoCanadaAsiya Javayant PROPOSAL
Julie V MacleadUnited KingdomOnyama Limba QUALIFIED
Jennifer S WieserCanadaXuxue Feng QUALIFIED
Morrow W CaldareraFranceAsiya Javayant PROPOSAL
Leja S WieserItalyStephen Shaw NEW
Stacey Y VocelkaArgentinaBernardo Dominic PROPOSAL
Deepesh J CaldareraFranceXuxue Feng UNQUALIFIED
Faith H BowleySpainIvan Magalhaes NEW
Clifford U ChuiAustraliaStephen Shaw UNQUALIFIED
Kaitlin Q FlosiCanadaIvan Magalhaes RENEWAL
Jennifer P BowleyUnited KingdomAsiya Javayant NEW
Smith A PaprockiSpainElwin Sharvill PROPOSAL
Francesco T BriddickIndiaOnyama Limba UNQUALIFIED
Nicolas V BowleyGermanyStephen Shaw UNQUALIFIED
Alejandro A WieserCanadaStephen Shaw UNQUALIFIED
Deepesh P PaprockiIndiaAmy Elsner NEW
Nicolas O SchemmerAustraliaIoni Bowcher NEGOTIATION
Mayumi N BriddickRussiaStephen Shaw NEW
Kadeem K MacleadAustraliaElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Murillo U SlusarskiCanadaOnyama Limba RENEWAL
Jennifer K ChuiIndiaElwin Sharvill NEGOTIATION
Sinclair G MaletFranceAnna Fali PROPOSAL
Maisha X SlusarskiBrazilAmy Elsner NEW
Julie F MacleadCanadaAsiya Javayant NEW
Claire B VocelkaJapanXuxue Feng QUALIFIED
Johnson G FigeroaArgentinaAmy Elsner PROPOSAL
Emily V NestleCanadaIvan Magalhaes UNQUALIFIED
Leja R GlickArgentinaAmy Elsner RENEWAL
Jennifer J MorascaRussiaOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie C GauchoBrazil2024-03-26Chapman, Ross E Esq UNQUALIFIED56Ivan Magalhaes
1001David H PoquetteGermany2024-03-24Feltz Printing Service NEW84Stephen Shaw
1002Sinclair Z FollerCanada2024-04-11King, Christopher A Esq UNQUALIFIED8Bernardo Dominic
1003Adams L FigeroaIndia2024-04-19Truhlar And Truhlar Attys UNQUALIFIED66Ivan Magalhaes
1004Morrow W OstroskyIndia2024-03-31King, Christopher A Esq PROPOSAL43Elwin Sharvill
1005Claire L CaudyRussia2024-04-08Chapman, Ross E Esq RENEWAL68Elwin Sharvill
1006Alejandro O NestleArgentina2024-04-05Chapman, Ross E Esq NEGOTIATION14Elwin Sharvill
1007Maisha I TollnerFrance2024-03-22Dorl, James J Esq PROPOSAL79Stephen Shaw
1008Clifford M RimIndia2024-04-11Chemel, James L Cpa PROPOSAL53Asiya Javayant
1009David S MacleadAustralia2024-04-09Feltz Printing Service RENEWAL22Anna Fali
1010Jones G RimArgentina2024-03-24Rangoni Of Florence PROPOSAL65Ivan Magalhaes
1011Nicolas C CaudyUnited Kingdom2024-04-17Truhlar And Truhlar Attys NEGOTIATION95Ioni Bowcher
1012Faith B MaletUnited Kingdom2024-04-12Dorl, James J Esq NEW21Onyama Limba
1013Misaki I NestleFrance2024-04-14Truhlar And Truhlar Attys PROPOSAL38Amy Elsner
1014Stacey J NestleJapan2024-03-28Rousseaux, Michael Esq RENEWAL54Ivan Magalhaes
1015Octavia H AlbaresSpain2024-03-28Printing Dimensions NEGOTIATION81Asiya Javayant
1016Jones X RutaAustralia2024-03-29Dorl, James J Esq NEW44Asiya Javayant
1017Kadeem W KolmetzCanada2024-04-13Chanay, Jeffrey A Esq RENEWAL98Amy Elsner
1018Leja N StensethCanada2024-03-27Rousseaux, Michael Esq NEGOTIATION7Xuxue Feng
1019Antonio D PoquetteItaly2024-04-05Rousseaux, Michael Esq UNQUALIFIED65Elwin Sharvill
1020Wickens B RoysterSpain2024-04-04Buckley Miller Wright NEW97Ivan Magalhaes
1021James Z BriddickIndia2024-04-15Feiner Bros NEW67Amy Elsner
1022Julie X GauchoSpain2024-04-04Dorl, James J Esq QUALIFIED84Asiya Javayant
1023Stacey C AmigonIndia2024-04-04Feltz Printing Service NEGOTIATION60Anna Fali
1024Leja V DoeIndia2024-03-23Buckley Miller Wright QUALIFIED27Ivan Magalhaes
1025Alejandro M MorascaArgentina2024-04-09Commercial Press UNQUALIFIED81Elwin Sharvill
1026Maisha E DarakjyJapan2024-03-31Chapman, Ross E Esq NEW29Stephen Shaw
1027Wickens X SaylorsUnited Kingdom2024-04-08Printing Dimensions NEGOTIATION82Elwin Sharvill
1028Tony B SaylorsGermany2024-04-18Rousseaux, Michael Esq UNQUALIFIED19Anna Fali
1029Ivar G OldroydArgentina2024-04-03Rangoni Of Florence RENEWAL41Amy Elsner
1030Morrow B StensethAustralia2024-04-09Dorl, James J Esq NEGOTIATION42Ioni Bowcher
1031Wickens K KuskoItaly2024-04-12Chemel, James L Cpa PROPOSAL76Onyama Limba
1032Stacey F ShinkoCanada2024-04-18Morlong Associates RENEWAL25Xuxue Feng
1033Jeanfrancois X ShinkoGermany2024-04-17Feiner Bros QUALIFIED18Bernardo Dominic
1034Wickens U RutaJapan2024-04-09Chemel, James L Cpa PROPOSAL4Asiya Javayant
1035Wickens Z MorascaCanada2024-03-27Rangoni Of Florence QUALIFIED31Ivan Magalhaes
1036Maria J StockhamItaly2024-04-07Chapman, Ross E Esq PROPOSAL23Xuxue Feng
1037Juan E RutaGermany2024-04-04Dorl, James J Esq UNQUALIFIED55Onyama Limba
1038Mayumi J BowleyGermany2024-03-27Feltz Printing Service QUALIFIED63Bernardo Dominic
1039Maria C NickaArgentina2024-03-23Feltz Printing Service NEGOTIATION22Bernardo Dominic
1040Silvio E DarakjyFrance2024-04-10King, Christopher A Esq NEGOTIATION43Xuxue Feng
1041Aditya M SchemmerArgentina2024-04-05Rousseaux, Michael Esq NEGOTIATION92Stephen Shaw
1042Tony V FigeroaItaly2024-04-06Commercial Press NEW78Ivan Magalhaes
1043Chavez R DilliardJapan2024-03-21Rangoni Of Florence RENEWAL61Amy Elsner
1044Ricardo N AmigonSpain2024-04-18Commercial Press NEW58Elwin Sharvill
1045Kadeem V InouyeArgentina2024-04-17Morlong Associates RENEWAL44Bernardo Dominic
1046Costa F GillianBrazil2024-04-11Commercial Press PROPOSAL73Asiya Javayant
1047Claire N WieserItaly2024-04-15Feiner Bros UNQUALIFIED30Amy Elsner
1048Munro F RoysterIndia2024-04-01King, Christopher A Esq RENEWAL74Xuxue Feng
1049Smith C RulapaughArgentina2024-04-06Feiner Bros NEGOTIATION57Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Juan C ShinkoIndiaAsiya Javayant NEGOTIATION
Adams U InouyeRussiaXuxue Feng QUALIFIED
Kaitlin S FlosiFranceAnna Fali NEW
Wickens W GauchoArgentinaAnna Fali QUALIFIED
Ashley G SchemmerCanadaIvan Magalhaes UNQUALIFIED
Munro O CaldareraFranceStephen Shaw NEW
Emily C MaletSpainAnna Fali NEW
Aika W BriddickArgentinaElwin Sharvill NEGOTIATION
Salvatore Z IturbideRussiaStephen Shaw NEW
Jones A BriddickUnited KingdomAsiya Javayant RENEWAL
Kadeem J BologniaArgentinaIoni Bowcher RENEWAL
Wickens S InouyeItalyXuxue Feng RENEWAL
Adams H MacleadFranceIvan Magalhaes RENEWAL
Faith G PerinGermanyXuxue Feng PROPOSAL
Darci Q CaudyIndiaAnna Fali QUALIFIED
Jones Q ButtAustraliaStephen Shaw NEGOTIATION
Rodrigues O SchemmerUnited KingdomBernardo Dominic NEW
Aika X StockhamGermanyXuxue Feng RENEWAL
James T RutaGermanyAnna Fali NEGOTIATION
Jeanfrancois I NestleSpainAnna Fali NEGOTIATION
Francesco V BriddickGermanyIoni Bowcher NEW
Kadeem X StensethJapanAnna Fali RENEWAL
Emily N ShinkoRussiaOnyama Limba PROPOSAL
Silvio L VocelkaIndiaIoni Bowcher RENEWAL
Stacey F FigeroaCanadaAnna Fali PROPOSAL
Munro Y MarrierCanadaIvan Magalhaes UNQUALIFIED
Emily D MarrierGermanyAmy Elsner QUALIFIED
Faith I DarakjyIndiaIvan Magalhaes UNQUALIFIED
Chavez N KolmetzJapanAmy Elsner QUALIFIED
Kadeem V OstroskyBrazilAmy Elsner UNQUALIFIED
Clifford V CaldareraUnited KingdomAnna Fali UNQUALIFIED
Salvatore Q SchemmerSpainIvan Magalhaes NEW
Faith Z GarufiBrazilElwin Sharvill PROPOSAL
Chavez N WhobreySpainAsiya Javayant QUALIFIED
Munro O StensethGermanyAnna Fali RENEWAL
Ivar A FollerFranceIoni Bowcher UNQUALIFIED
Maisha N FollerJapanBernardo Dominic PROPOSAL
Wickens W RulapaughBrazilIvan Magalhaes NEW
Isabel K RulapaughRussiaOnyama Limba NEGOTIATION
Leon G MarrierRussiaXuxue Feng NEGOTIATION
Sinclair N DarakjyIndiaAnna Fali PROPOSAL
Ricardo C AlbaresAustraliaIvan Magalhaes UNQUALIFIED
Adams D OstroskySpainBernardo Dominic RENEWAL
David E DarakjyItalyXuxue Feng PROPOSAL
Kaitlin N CaudySpainAnna Fali UNQUALIFIED
Maria F RutaBrazilBernardo Dominic NEW
Deepesh X DilliardUnited KingdomIoni Bowcher UNQUALIFIED
Ashley J PoquetteJapanAnna Fali PROPOSAL
Octavia D DarakjyBrazilOnyama Limba PROPOSAL
Maisha G InouyeItalyAsiya Javayant QUALIFIED
Frozen Columns
Name
Emily S Butt
Tony I Inouye
Murillo O Gaucho
Jennifer V Figeroa
Julie A Caldarera
Juan B Foller
Julie S Albares
Cody O Saylors
Francesco N Darakjy
Ashley S Whobrey
Octavia Z Foller
Antonio M Briddick
Clifford K Royster
Claire E Sergi
Leon P Schemmer
Wickens N Flosi
Silvio Q Butt
Cody N Amigon
Alejandro K Campain
Jeanfrancois N Briddick
Alejandro V Kusko
Faith S Doe
Mayumi V Rulapaugh
Antonio C Doe
Munro B Stockham
Chavez V Nicka
Ricardo Q Darakjy
Aditya R Paprocki
Kadeem J Bolognia
Darci C Albares
Francesco R Kolmetz
Deepesh D Kolmetz
Kadeem C Flosi
Kadeem I Rulapaugh
Tony T Schemmer
Adams M Caudy
Misaki J Malet
Johnson X Morasca
Juan G Saylors
Morrow N Stenseth
Misaki U Flosi
Greenwood C Ostrosky
Aika R Malet
Murillo Y Gillian
Johnson I Butt
Aruna Q Kusko
Sinclair J Figeroa
Salvatore O Malet
Kaitlin J Caldarera
Wickens N Darakjy
IdCountryDate
1000Argentina2024-03-30
1001United Kingdom2024-04-02
1002Argentina2024-04-05
1003Australia2024-03-25
1004Brazil2024-04-18
1005Brazil2024-04-13
1006Canada2024-04-15
1007India2024-03-29
1008Italy2024-04-11
1009France2024-04-02
1010Spain2024-03-29
1011Russia2024-03-29
1012United Kingdom2024-03-21
1013Argentina2024-04-09
1014Spain2024-03-30
1015Australia2024-04-11
1016United Kingdom2024-04-10
1017Spain2024-04-04
1018Japan2024-04-13
1019Germany2024-04-05
1020France2024-03-21
1021Italy2024-04-03
1022France2024-04-02
1023France2024-04-01
1024Italy2024-03-24
1025India2024-04-03
1026Germany2024-04-04
1027Germany2024-04-05
1028India2024-03-21
1029Russia2024-03-23
1030Canada2024-04-08
1031Italy2024-04-14
1032Russia2024-04-10
1033Russia2024-03-29
1034Argentina2024-04-09
1035Italy2024-04-09
1036Australia2024-04-04
1037Brazil2024-03-25
1038Japan2024-03-24
1039United Kingdom2024-03-24
1040Argentina2024-04-05
1041Australia2024-03-30
1042Australia2024-03-22
1043Australia2024-03-25
1044Japan2024-04-03
1045Spain2024-04-10
1046Argentina2024-04-05
1047Canada2024-04-05
1048Japan2024-04-01
1049Spain2024-04-14

On-Demand Data

NameIdCountryDate
Deepesh S Stenseth1000Italy2024-04-02
Jones J Flosi1001Brazil2024-04-10
Jennifer H Glick1002Spain2024-03-21
Costa W Whobrey1003Spain2024-04-18
Smith M Rim1004Italy2024-03-27
Greenwood T Poquette1005Canada2024-03-27
Maria J Schemmer1006Brazil2024-03-26
Maria U Caldarera1007United Kingdom2024-04-08
Misaki T Sergi1008Australia2024-03-21
Costa G Garufi1009France2024-04-05
Ricardo F Gaucho1010Australia2024-03-21
Isabel D Kolmetz1011Russia2024-03-26
Ivar P Gaucho1012Brazil2024-04-04
Emily D Royster1013Italy2024-03-27
Maria Z Amigon1014Japan2024-03-22
Jones R Saylors1015Russia2024-04-07
Greenwood T Rim1016Canada2024-04-14
Jefferson D Rim1017Brazil2024-04-06
Nicolas X Doe1018Brazil2024-03-30
Maria Q Wieser1019Japan2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon K BowleyJapanStephen Shaw UNQUALIFIED
Murillo Q KuskoAustraliaBernardo Dominic NEW
Tony Y SaylorsCanadaIvan Magalhaes QUALIFIED
Adams A SchemmerBrazilAnna Fali PROPOSAL
Morrow A GauchoBrazilIvan Magalhaes QUALIFIED
Francesco R WaycottUnited KingdomStephen Shaw PROPOSAL
Arvin Y OstroskyRussiaAmy Elsner QUALIFIED
Aika I InouyeRussiaElwin Sharvill NEW
Murillo L ChuiIndiaAmy Elsner NEW
Claire P DilliardAustraliaOnyama Limba NEGOTIATION
David J SchemmerRussiaIvan Magalhaes NEGOTIATION
Kaitlin L NickaSpainOnyama Limba QUALIFIED
Julie H SaylorsJapanBernardo Dominic PROPOSAL
Maria U FigeroaGermanyStephen Shaw NEW
Jefferson B MaletGermanyIvan Magalhaes QUALIFIED
Maria Q MaletUnited KingdomAmy Elsner NEGOTIATION
Johnson Q StensethItalyOnyama Limba PROPOSAL
Faith I DarakjyItalyAsiya Javayant NEGOTIATION
Sinclair V CaldareraItalyAsiya Javayant PROPOSAL
Julie K NestleCanadaAsiya Javayant RENEWAL
Leon B BriddickSpainAsiya Javayant RENEWAL
Kadeem U MarrierBrazilIoni Bowcher QUALIFIED
Darci P RulapaughCanadaStephen Shaw QUALIFIED
Kaitlin B ShinkoItalyIvan Magalhaes PROPOSAL
Arvin B KolmetzArgentinaStephen Shaw NEGOTIATION
Ricardo Y PerinArgentinaIoni Bowcher PROPOSAL
Leon K PaprockiRussiaAnna Fali PROPOSAL
Claire U RimArgentinaIvan Magalhaes QUALIFIED
Greenwood U MaletFranceElwin Sharvill NEGOTIATION
Nicolas U CaldareraItalyAsiya Javayant NEW
Izzy X NickaIndiaXuxue Feng NEW
Leja B NickaSpainElwin Sharvill NEGOTIATION
Juan U WieserBrazilXuxue Feng RENEWAL
Izzy I IturbideRussiaXuxue Feng NEW
Isabel N FigeroaBrazilElwin Sharvill PROPOSAL
Kaitlin N ButtJapanBernardo Dominic RENEWAL
Cody B GillianIndiaIoni Bowcher QUALIFIED
Alejandro V RutaGermanyStephen Shaw QUALIFIED
Kadeem Y MacleadRussiaIvan Magalhaes PROPOSAL
Juan G PerinSpainAnna Fali 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>