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
Jennifer V PerinIndiaIoni Bowcher RENEWAL
Jefferson P CampainItalyElwin Sharvill UNQUALIFIED
Morrow Z SaylorsUnited KingdomStephen Shaw QUALIFIED
Silvio Q RimAustraliaAnna Fali QUALIFIED
Deepesh R BologniaIndiaIvan Magalhaes RENEWAL
Francesco R NestleUnited KingdomIoni Bowcher PROPOSAL
Kaitlin O MacleadAustraliaAnna Fali PROPOSAL
Aditya P CaldareraRussiaXuxue Feng NEW
Sinclair C DarakjyFranceBernardo Dominic RENEWAL
Leon C FlosiGermanyAnna Fali QUALIFIED
Izzy F MaletIndiaXuxue Feng QUALIFIED
Chavez Y DoeArgentinaIvan Magalhaes QUALIFIED
Kaitlin G InouyeBrazilOnyama Limba NEW
James X StockhamItalyStephen Shaw UNQUALIFIED
Emily F MaletJapanOnyama Limba NEW
James Z VenereAustraliaAsiya Javayant NEGOTIATION
David C StockhamRussiaStephen Shaw NEGOTIATION
Ivar X MaletCanadaXuxue Feng NEW
Aruna X PaprockiRussiaOnyama Limba UNQUALIFIED
Octavia C GarufiFranceAmy Elsner RENEWAL
Kadeem I AmigonJapanOnyama Limba UNQUALIFIED
Stacey S KuskoIndiaXuxue Feng NEW
Maisha T VocelkaArgentinaAsiya Javayant NEGOTIATION
Jeanfrancois F CampainGermanyStephen Shaw UNQUALIFIED
Murillo M DoeItalyAmy Elsner NEW
Ivar V CaudyCanadaBernardo Dominic UNQUALIFIED
Morrow W StensethFranceXuxue Feng PROPOSAL
Chavez T CaldareraIndiaStephen Shaw NEW
Aditya X MaletAustraliaIvan Magalhaes NEW
Greenwood H RimItalyStephen Shaw UNQUALIFIED
Maisha J MarrierCanadaStephen Shaw UNQUALIFIED
Ashley M MarrierSpainElwin Sharvill PROPOSAL
Leja C GarufiArgentinaElwin Sharvill NEGOTIATION
Kadeem B ButtUnited KingdomStephen Shaw PROPOSAL
Maria I KolmetzGermanyAsiya Javayant NEGOTIATION
Ashley O WieserGermanyOnyama Limba NEW
Nicolas B MarrierFranceAmy Elsner NEGOTIATION
Johnson Y BowleyUnited KingdomIvan Magalhaes PROPOSAL
Jennifer K CampainUnited KingdomElwin Sharvill QUALIFIED
Ricardo Q PoquetteSpainAmy Elsner UNQUALIFIED
Costa R IturbideArgentinaStephen Shaw QUALIFIED
Rodrigues B RimFranceIvan Magalhaes NEGOTIATION
Julie X GlickGermanyOnyama Limba PROPOSAL
Aruna G SchemmerUnited KingdomAmy Elsner NEW
Jeanfrancois Q SchemmerIndiaAsiya Javayant NEGOTIATION
Octavia Z GarufiSpainOnyama Limba NEW
Jefferson W MorascaAustraliaIoni Bowcher PROPOSAL
Salvatore O WaycottAustraliaIvan Magalhaes UNQUALIFIED
Murillo D PoquetteGermanyAnna Fali QUALIFIED
Aditya R FerenczIndiaElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Isabel P FerenczGermanyElwin Sharvill UNQUALIFIED
Rodrigues P VocelkaGermanyBernardo Dominic PROPOSAL
Rodrigues P GillianIndiaStephen Shaw NEW
Octavia C SlusarskiGermanyOnyama Limba NEW
Wickens U SchemmerFranceBernardo Dominic QUALIFIED
Wickens U AlbaresBrazilBernardo Dominic PROPOSAL
Emily V DoeRussiaOnyama Limba PROPOSAL
Deepesh I GarufiCanadaOnyama Limba QUALIFIED
Jones G AlbaresBrazilAnna Fali RENEWAL
Adams D FlosiGermanyIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo X AmigonItaly2024-04-15Truhlar And Truhlar Attys NEGOTIATION62Bernardo Dominic
1001Tony H IturbideCanada2024-04-23Chapman, Ross E Esq NEGOTIATION76Bernardo Dominic
1002Clifford Z SergiUnited Kingdom2024-04-19Benton, John B Jr UNQUALIFIED77Anna Fali
1003Salvatore L BowleyRussia2024-04-22Chanay, Jeffrey A Esq NEW26Ivan Magalhaes
1004Kadeem X FollerAustralia2024-04-09Rangoni Of Florence UNQUALIFIED55Onyama Limba
1005Jennifer P CaldareraJapan2024-04-14Buckley Miller Wright QUALIFIED84Elwin Sharvill
1006Greenwood Q FerenczUnited Kingdom2024-04-24Printing Dimensions UNQUALIFIED30Amy Elsner
1007Adams P CaldareraIndia2024-04-10King, Christopher A Esq PROPOSAL66Ioni Bowcher
1008Misaki H FerenczArgentina2024-04-15Chemel, James L Cpa QUALIFIED99Stephen Shaw
1009Emily T StockhamItaly2024-04-07Chanay, Jeffrey A Esq UNQUALIFIED19Anna Fali
1010Johnson S RimFrance2024-04-29Chanay, Jeffrey A Esq PROPOSAL29Onyama Limba
1011Mujtaba Q NickaRussia2024-03-31Morlong Associates NEGOTIATION36Xuxue Feng
1012Mujtaba Y MarrierJapan2024-04-23Rangoni Of Florence PROPOSAL98Xuxue Feng
1013Maria F SergiUnited Kingdom2024-04-09Feltz Printing Service NEW67Asiya Javayant
1014Murillo H TollnerArgentina2024-04-03Chapman, Ross E Esq QUALIFIED99Xuxue Feng
1015Ashley B BowleyArgentina2024-04-14Commercial Press QUALIFIED7Xuxue Feng
1016Alejandro J BowleyUnited Kingdom2024-04-03Printing Dimensions RENEWAL45Ioni Bowcher
1017Chavez W CaudyJapan2024-04-12Morlong Associates QUALIFIED0Bernardo Dominic
1018Izzy L ChuiCanada2024-04-15Rangoni Of Florence NEGOTIATION91Onyama Limba
1019Munro E StensethFrance2024-04-23Morlong Associates NEW13Elwin Sharvill
1020Jeanfrancois N FlosiJapan2024-04-08Truhlar And Truhlar Attys PROPOSAL58Bernardo Dominic
1021Salvatore B DoeUnited Kingdom2024-04-08Rousseaux, Michael Esq RENEWAL47Amy Elsner
1022Jennifer A RutaJapan2024-04-29Benton, John B Jr RENEWAL56Anna Fali
1023Salvatore K FigeroaJapan2024-04-02Morlong Associates QUALIFIED52Anna Fali
1024Misaki N OldroydItaly2024-04-15Feiner Bros UNQUALIFIED97Asiya Javayant
1025Salvatore E GillianIndia2024-04-27Chapman, Ross E Esq NEW74Anna Fali
1026Stacey M AlbaresBrazil2024-04-09Chapman, Ross E Esq UNQUALIFIED46Asiya Javayant
1027Leja W InouyeBrazil2024-04-19Commercial Press QUALIFIED21Stephen Shaw
1028Misaki R SlusarskiItaly2024-04-03Benton, John B Jr UNQUALIFIED46Ioni Bowcher
1029Claire C NestleUnited Kingdom2024-04-14King, Christopher A Esq NEGOTIATION90Stephen Shaw
1030Aika V PoquetteIndia2024-04-21King, Christopher A Esq NEW9Onyama Limba
1031Aika L ButtAustralia2024-04-03Commercial Press NEGOTIATION94Ivan Magalhaes
1032Silvio Q DoeIndia2024-04-02Dorl, James J Esq RENEWAL33Onyama Limba
1033Aruna C GillianIndia2024-04-19Printing Dimensions PROPOSAL59Xuxue Feng
1034Francesco H DarakjyAustralia2024-04-23Printing Dimensions PROPOSAL83Asiya Javayant
1035Antonio P RimAustralia2024-04-21Dorl, James J Esq RENEWAL43Onyama Limba
1036Sinclair O FerenczItaly2024-04-25Buckley Miller Wright NEW19Anna Fali
1037Jeanfrancois B WieserSpain2024-04-22Dorl, James J Esq RENEWAL94Elwin Sharvill
1038Munro A MaletArgentina2024-04-13Commercial Press QUALIFIED52Elwin Sharvill
1039Murillo S FollerJapan2024-04-20Truhlar And Truhlar Attys UNQUALIFIED93Bernardo Dominic
1040Francesco E PoquetteRussia2024-04-27Commercial Press UNQUALIFIED29Elwin Sharvill
1041Costa S GauchoCanada2024-04-16Feltz Printing Service NEW3Ioni Bowcher
1042Stacey X StensethCanada2024-04-01Commercial Press NEGOTIATION6Onyama Limba
1043Leon W GillianArgentina2024-04-08Chanay, Jeffrey A Esq PROPOSAL52Ivan Magalhaes
1044Ashley D TollnerGermany2024-04-05Chanay, Jeffrey A Esq NEW54Ioni Bowcher
1045Mayumi W SchemmerSpain2024-04-29Chanay, Jeffrey A Esq PROPOSAL99Elwin Sharvill
1046Tony V WaycottAustralia2024-04-21Feltz Printing Service UNQUALIFIED91Elwin Sharvill
1047Adams R AmigonArgentina2024-04-20Printing Dimensions RENEWAL64Stephen Shaw
1048Aika Z RulapaughBrazil2024-04-11Benton, John B Jr PROPOSAL5Ivan Magalhaes
1049Tony L VocelkaAustralia2024-04-12Chanay, Jeffrey A Esq NEW16Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Arvin D MorascaRussiaIvan Magalhaes UNQUALIFIED
Morrow J GauchoCanadaElwin Sharvill PROPOSAL
Darci A OstroskySpainBernardo Dominic PROPOSAL
Adams J PoquetteFranceAmy Elsner NEGOTIATION
Claire M RoysterUnited KingdomStephen Shaw UNQUALIFIED
Alejandro X OldroydBrazilAnna Fali PROPOSAL
Darci Q MacleadBrazilAnna Fali UNQUALIFIED
Johnson A MaletFranceBernardo Dominic NEW
Octavia V RutaJapanOnyama Limba UNQUALIFIED
Izzy Y KolmetzBrazilBernardo Dominic RENEWAL
Cody Y WhobreyJapanOnyama Limba NEW
Antonio E WieserItalyAnna Fali NEGOTIATION
Clifford Z MarrierBrazilXuxue Feng UNQUALIFIED
Sinclair R InouyeItalyIoni Bowcher QUALIFIED
Leja G ShinkoIndiaXuxue Feng PROPOSAL
Aika V VocelkaSpainAnna Fali RENEWAL
Juan R KolmetzItalyXuxue Feng UNQUALIFIED
Cody H OstroskyBrazilOnyama Limba NEGOTIATION
Alejandro S WieserAustraliaElwin Sharvill NEGOTIATION
Darci J SchemmerFranceAnna Fali RENEWAL
Aika U NickaRussiaBernardo Dominic NEW
Cody Q StockhamGermanyBernardo Dominic NEGOTIATION
Misaki P CaldareraSpainBernardo Dominic PROPOSAL
Kadeem P StensethRussiaIoni Bowcher NEW
Julie H CaldareraArgentinaOnyama Limba UNQUALIFIED
Jones O FollerJapanAmy Elsner RENEWAL
Maria S StensethSpainIoni Bowcher UNQUALIFIED
Darci X CaudyGermanyAnna Fali RENEWAL
Octavia E RimCanadaStephen Shaw RENEWAL
Aditya Z WhobreyArgentinaIoni Bowcher NEGOTIATION
James A BologniaAustraliaAsiya Javayant QUALIFIED
Munro J PoquetteSpainOnyama Limba QUALIFIED
Johnson G AmigonItalyAnna Fali NEW
Chavez S BologniaUnited KingdomAsiya Javayant RENEWAL
Chavez V PoquetteRussiaElwin Sharvill UNQUALIFIED
Leon H SchemmerItalyAmy Elsner NEGOTIATION
Chavez O OldroydAustraliaXuxue Feng NEW
Kadeem L VenereCanadaXuxue Feng RENEWAL
Nicolas N WhobreyItalyXuxue Feng QUALIFIED
Silvio H PoquetteRussiaAnna Fali PROPOSAL
Smith H RimGermanyAnna Fali NEW
Emily F AlbaresArgentinaIvan Magalhaes NEW
Juan E SergiArgentinaIoni Bowcher RENEWAL
Arvin Y DoeItalyElwin Sharvill QUALIFIED
Emily J CaudyCanadaAnna Fali PROPOSAL
James P RoysterJapanIvan Magalhaes QUALIFIED
Darci C PoquetteSpainOnyama Limba QUALIFIED
Mujtaba F TollnerSpainAnna Fali QUALIFIED
James V RutaJapanAnna Fali RENEWAL
Francesco E WaycottJapanBernardo Dominic QUALIFIED
Frozen Columns
Name
Costa E Caldarera
Tony W Waycott
Jennifer R Oldroyd
Nicolas Q Gaucho
Maisha C Caldarera
Tony G Inouye
Smith U Foller
Sinclair P Shinko
Munro N Nestle
Morrow Y Tollner
Greenwood B Briddick
Juan U Dilliard
Kadeem S Royster
Arvin L Caudy
Stacey U Darakjy
Darci M Royster
Tony Q Foller
Aruna X Garufi
Kadeem V Rim
Francesco E Paprocki
Deepesh V Doe
Rodrigues S Dilliard
Darci T Inouye
Deepesh P Chui
Emily X Rulapaugh
Sinclair C Iturbide
Mayumi C Albares
Wickens L Oldroyd
James I Amigon
Clifford O Stenseth
Octavia H Morasca
Rodrigues G Rulapaugh
James C Ferencz
Aruna B Gillian
Chavez Z Kolmetz
Salvatore H Dilliard
Arvin R Flosi
Mayumi F Sergi
Antonio Z Ferencz
Jeanfrancois Z Poquette
Octavia X Tollner
Maria J Oldroyd
Smith R Campain
Silvio G Rim
Emily T Paprocki
Adams U Malet
Morrow W Whobrey
David W Nestle
Isabel K Garufi
Kadeem K Dilliard
IdCountryDate
1000Germany2024-04-22
1001Russia2024-04-14
1002United Kingdom2024-04-18
1003United Kingdom2024-04-09
1004Canada2024-04-12
1005France2024-04-28
1006Japan2024-04-02
1007France2024-04-12
1008United Kingdom2024-04-01
1009Argentina2024-04-06
1010Spain2024-04-14
1011Canada2024-04-13
1012Germany2024-04-21
1013India2024-04-25
1014India2024-04-05
1015Italy2024-04-23
1016Australia2024-04-06
1017Spain2024-04-10
1018Brazil2024-04-10
1019Germany2024-04-17
1020Russia2024-04-26
1021Italy2024-04-09
1022Japan2024-04-17
1023Canada2024-04-15
1024Brazil2024-04-19
1025Spain2024-04-09
1026Spain2024-04-16
1027Australia2024-04-28
1028Canada2024-04-13
1029Russia2024-04-03
1030Russia2024-04-04
1031Italy2024-04-22
1032Canada2024-04-14
1033Argentina2024-04-07
1034Spain2024-04-19
1035Brazil2024-04-16
1036India2024-04-10
1037Canada2024-04-21
1038Argentina2024-04-05
1039Japan2024-04-18
1040Russia2024-04-14
1041Germany2024-04-10
1042Spain2024-04-05
1043Russia2024-04-02
1044United Kingdom2024-04-03
1045Canada2024-03-31
1046Argentina2024-04-15
1047Italy2024-04-22
1048Argentina2024-04-23
1049Australia2024-04-07

On-Demand Data

NameIdCountryDate
Antonio P Inouye1000United Kingdom2024-04-18
Faith A Whobrey1001Canada2024-04-26
Morrow R Foller1002Russia2024-04-25
Darci N Bolognia1003Canada2024-04-24
Jennifer Q Nicka1004Japan2024-04-10
Jefferson A Malet1005Italy2024-04-24
Misaki B Dilliard1006Brazil2024-04-15
Cody X Ruta1007France2024-04-16
Costa F Dilliard1008Spain2024-04-13
Maria P Waycott1009Canada2024-04-27
Tony L Malet1010United Kingdom2024-04-26
Francesco B Caudy1011Brazil2024-04-15
Rodrigues K Malet1012Canada2024-04-12
David W Oldroyd1013Canada2024-04-17
Arvin U Nicka1014Russia2024-04-05
Misaki M Flosi1015Brazil2024-04-24
Arvin E Caudy1016Japan2024-04-07
David C Chui1017Brazil2024-04-13
Chavez E Flosi1018Canada2024-04-07
Kadeem C Shinko1019Canada2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire Q MarrierSpainIoni Bowcher RENEWAL
Julie X MaletArgentinaXuxue Feng QUALIFIED
Izzy K DoeFranceXuxue Feng NEGOTIATION
Faith P StensethCanadaOnyama Limba NEGOTIATION
Ricardo Q VocelkaJapanAsiya Javayant NEW
Ivar X OldroydBrazilStephen Shaw UNQUALIFIED
Kaitlin B WaycottAustraliaIvan Magalhaes RENEWAL
Aditya I StockhamSpainIoni Bowcher RENEWAL
Emily V GillianArgentinaAsiya Javayant PROPOSAL
Deepesh W StensethIndiaElwin Sharvill RENEWAL
Ivar N FerenczGermanyIvan Magalhaes NEGOTIATION
Darci T GauchoCanadaBernardo Dominic UNQUALIFIED
Jennifer H StockhamRussiaBernardo Dominic QUALIFIED
Antonio Z ChuiFranceBernardo Dominic NEGOTIATION
Faith T BologniaGermanyAsiya Javayant QUALIFIED
Mujtaba F BowleyArgentinaAmy Elsner RENEWAL
Mayumi N RimUnited KingdomIoni Bowcher UNQUALIFIED
Arvin N NickaBrazilBernardo Dominic UNQUALIFIED
Mayumi A ButtItalyElwin Sharvill PROPOSAL
Deepesh J GarufiIndiaAmy Elsner NEW
Jones D RutaJapanOnyama Limba NEGOTIATION
Maria U BowleySpainAmy Elsner NEW
Antonio X CampainFranceAnna Fali PROPOSAL
Jennifer P WieserIndiaAmy Elsner UNQUALIFIED
Costa Y SergiCanadaElwin Sharvill NEGOTIATION
Jones G ButtBrazilElwin Sharvill NEW
Arvin C NickaUnited KingdomBernardo Dominic PROPOSAL
Deepesh G WieserRussiaStephen Shaw NEGOTIATION
Ivar G VenereRussiaAsiya Javayant RENEWAL
Ivar S MarrierRussiaAnna Fali NEW
Adams L FollerGermanyOnyama Limba QUALIFIED
Misaki M GauchoFranceXuxue Feng NEGOTIATION
Cody S StockhamBrazilAnna Fali UNQUALIFIED
Costa E GlickUnited KingdomStephen Shaw NEW
Deepesh G CaudyUnited KingdomIoni Bowcher RENEWAL
Jones R WhobreyJapanAsiya Javayant PROPOSAL
Stacey G AlbaresArgentinaStephen Shaw UNQUALIFIED
Munro Q RimIndiaXuxue Feng NEW
Antonio F VocelkaCanadaElwin Sharvill QUALIFIED
Mujtaba L BriddickRussiaIvan 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>