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
Morrow L BologniaAustraliaElwin Sharvill RENEWAL
Kadeem K SchemmerGermanyStephen Shaw QUALIFIED
Stacey H FollerIndiaXuxue Feng PROPOSAL
Costa B SergiUnited KingdomIvan Magalhaes NEGOTIATION
Ricardo B RoysterArgentinaAsiya Javayant QUALIFIED
Smith Z GarufiAustraliaXuxue Feng NEGOTIATION
Smith C GauchoUnited KingdomAnna Fali QUALIFIED
Darci H VenereCanadaElwin Sharvill NEGOTIATION
Morrow B ButtFranceAmy Elsner NEGOTIATION
Clifford W DilliardSpainOnyama Limba RENEWAL
Tony Y KuskoBrazilBernardo Dominic NEGOTIATION
Julie C ShinkoJapanIoni Bowcher NEW
Antonio R NestleArgentinaStephen Shaw NEW
Costa S CaldareraItalyAnna Fali PROPOSAL
Julie B TollnerFranceXuxue Feng NEW
Silvio K ChuiBrazilAnna Fali NEGOTIATION
Kaitlin W PerinRussiaElwin Sharvill UNQUALIFIED
Tony N GarufiIndiaElwin Sharvill UNQUALIFIED
Misaki P InouyeUnited KingdomBernardo Dominic NEW
Juan L BologniaCanadaBernardo Dominic QUALIFIED
Antonio S SchemmerGermanyAnna Fali RENEWAL
Emily H SergiSpainStephen Shaw RENEWAL
David Q DilliardArgentinaXuxue Feng UNQUALIFIED
Alejandro O ChuiBrazilIoni Bowcher UNQUALIFIED
Ivar L PoquetteSpainAnna Fali UNQUALIFIED
Leja R PaprockiItalyOnyama Limba PROPOSAL
Kadeem S OldroydSpainIvan Magalhaes QUALIFIED
Izzy D AlbaresJapanAnna Fali QUALIFIED
Alejandro I WaycottGermanyBernardo Dominic NEW
Mayumi N AlbaresAustraliaStephen Shaw UNQUALIFIED
Morrow P RutaItalyAnna Fali NEGOTIATION
Francesco Z MorascaItalyElwin Sharvill UNQUALIFIED
Maria I GauchoJapanAmy Elsner PROPOSAL
Rodrigues R InouyeRussiaAmy Elsner UNQUALIFIED
Chavez Y ShinkoBrazilAsiya Javayant RENEWAL
Octavia D PoquetteBrazilAnna Fali NEGOTIATION
Maisha N PerinAustraliaAsiya Javayant QUALIFIED
Francesco Q ButtIndiaOnyama Limba RENEWAL
Misaki S ChuiItalyIvan Magalhaes NEW
Mayumi U TollnerCanadaOnyama Limba UNQUALIFIED
Johnson J NickaGermanyXuxue Feng QUALIFIED
Adams K InouyeFranceElwin Sharvill NEW
Cody X DoeRussiaBernardo Dominic QUALIFIED
Juan X RutaGermanyXuxue Feng UNQUALIFIED
Alejandro J FlosiArgentinaAnna Fali NEGOTIATION
Salvatore X OstroskyJapanAnna Fali NEGOTIATION
Ashley T IturbideIndiaElwin Sharvill QUALIFIED
Octavia S DoeUnited KingdomAmy Elsner PROPOSAL
Ricardo A FollerGermanyIoni Bowcher RENEWAL
Greenwood W MaletIndiaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Costa O VocelkaAustraliaIoni Bowcher NEW
Maria E StockhamAustraliaIoni Bowcher QUALIFIED
Jefferson J WaycottFranceElwin Sharvill RENEWAL
Jefferson Z DarakjyUnited KingdomAnna Fali NEGOTIATION
Emily E CaudyFranceElwin Sharvill QUALIFIED
Aruna C DoeRussiaIvan Magalhaes PROPOSAL
Alejandro I BologniaGermanyBernardo Dominic UNQUALIFIED
Ivar R SlusarskiBrazilBernardo Dominic PROPOSAL
Antonio Z TollnerUnited KingdomIvan Magalhaes NEGOTIATION
Octavia B SchemmerJapanXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci V ButtJapan2024-04-22Truhlar And Truhlar Attys QUALIFIED37Stephen Shaw
1001Mujtaba Z IturbideJapan2024-04-11Feltz Printing Service PROPOSAL70Bernardo Dominic
1002Darci Y SergiRussia2024-04-15Feiner Bros RENEWAL98Xuxue Feng
1003Tony U OstroskyAustralia2024-04-14Buckley Miller Wright RENEWAL91Anna Fali
1004Ashley W StensethUnited Kingdom2024-04-03Dorl, James J Esq RENEWAL27Onyama Limba
1005Murillo J StockhamJapan2024-04-07Feiner Bros UNQUALIFIED77Asiya Javayant
1006Jones F KolmetzSpain2024-04-06Chemel, James L Cpa NEW15Elwin Sharvill
1007Maisha C CampainFrance2024-04-06Commercial Press UNQUALIFIED91Stephen Shaw
1008Faith F MorascaItaly2024-04-22Feiner Bros NEW65Stephen Shaw
1009Silvio M SchemmerGermany2024-04-25Rousseaux, Michael Esq RENEWAL20Elwin Sharvill
1010David W MarrierBrazil2024-04-10Truhlar And Truhlar Attys UNQUALIFIED87Anna Fali
1011Alejandro M FerenczRussia2024-04-22Rangoni Of Florence NEGOTIATION12Bernardo Dominic
1012Leon H KuskoIndia2024-04-15King, Christopher A Esq UNQUALIFIED97Amy Elsner
1013David W RutaUnited Kingdom2024-04-21Chapman, Ross E Esq QUALIFIED64Bernardo Dominic
1014Darci Y StensethBrazil2024-04-22Commercial Press PROPOSAL53Amy Elsner
1015Costa B FollerAustralia2024-04-10Printing Dimensions UNQUALIFIED94Ivan Magalhaes
1016Mujtaba J CampainAustralia2024-04-23King, Christopher A Esq NEW44Asiya Javayant
1017Leon B SlusarskiGermany2024-04-08Rangoni Of Florence PROPOSAL58Xuxue Feng
1018Maisha L NickaItaly2024-04-12Chanay, Jeffrey A Esq PROPOSAL14Anna Fali
1019Leja N AlbaresFrance2024-04-28Buckley Miller Wright NEW72Onyama Limba
1020Adams C NickaCanada2024-04-28King, Christopher A Esq NEGOTIATION65Ioni Bowcher
1021Izzy W StockhamRussia2024-04-14Feiner Bros UNQUALIFIED21Amy Elsner
1022Clifford P SlusarskiCanada2024-04-04Printing Dimensions RENEWAL53Asiya Javayant
1023Aruna A SlusarskiSpain2024-04-24Commercial Press NEW67Bernardo Dominic
1024Jones D WieserArgentina2024-04-26Rangoni Of Florence UNQUALIFIED85Ioni Bowcher
1025Mayumi X FigeroaBrazil2024-04-02Buckley Miller Wright QUALIFIED4Amy Elsner
1026Munro D KuskoCanada2024-04-28Buckley Miller Wright NEGOTIATION50Bernardo Dominic
1027Claire R AmigonRussia2024-04-20Benton, John B Jr NEGOTIATION89Asiya Javayant
1028Costa G PoquetteIndia2024-04-12Dorl, James J Esq NEGOTIATION76Asiya Javayant
1029Jones J NestleAustralia2024-04-13Dorl, James J Esq NEW72Elwin Sharvill
1030Aika X MarrierGermany2024-04-21Chemel, James L Cpa UNQUALIFIED53Xuxue Feng
1031Leon J MorascaIndia2024-04-24Feiner Bros UNQUALIFIED8Xuxue Feng
1032Claire X SchemmerArgentina2024-04-03Buckley Miller Wright UNQUALIFIED71Xuxue Feng
1033Darci J SchemmerUnited Kingdom2024-04-05Rousseaux, Michael Esq UNQUALIFIED75Ivan Magalhaes
1034Silvio C OstroskyArgentina2024-04-28Rousseaux, Michael Esq QUALIFIED52Asiya Javayant
1035Silvio K CampainRussia2024-04-21Benton, John B Jr NEW44Asiya Javayant
1036Leja I AmigonGermany2024-04-05Feiner Bros NEW19Amy Elsner
1037Juan I PerinBrazil2024-04-24King, Christopher A Esq NEW65Ivan Magalhaes
1038Mayumi R RulapaughArgentina2024-04-22Chanay, Jeffrey A Esq UNQUALIFIED44Ioni Bowcher
1039Rodrigues N ButtSpain2024-04-19Benton, John B Jr NEW9Anna Fali
1040Adams L RimCanada2024-04-27King, Christopher A Esq RENEWAL83Ioni Bowcher
1041Maria V DarakjyIndia2024-04-13Printing Dimensions UNQUALIFIED21Ivan Magalhaes
1042Leja A MarrierJapan2024-04-06Buckley Miller Wright UNQUALIFIED2Xuxue Feng
1043Nicolas Y FollerUnited Kingdom2024-04-27Feltz Printing Service RENEWAL65Bernardo Dominic
1044Salvatore X SlusarskiCanada2024-04-08Buckley Miller Wright NEW74Xuxue Feng
1045Smith C FigeroaArgentina2024-04-27Feiner Bros NEW49Elwin Sharvill
1046Clifford C GarufiCanada2024-04-05Buckley Miller Wright NEW40Asiya Javayant
1047Leja J SergiFrance2024-04-30Dorl, James J Esq PROPOSAL98Amy Elsner
1048Deepesh X VenereCanada2024-04-19Rousseaux, Michael Esq NEGOTIATION57Stephen Shaw
1049Misaki A AlbaresArgentina2024-04-12Benton, John B Jr PROPOSAL90Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Deepesh U MaletItalyElwin Sharvill PROPOSAL
Kaitlin R RoysterGermanyXuxue Feng NEGOTIATION
Rodrigues V WaycottRussiaAmy Elsner PROPOSAL
Wickens D SaylorsBrazilOnyama Limba PROPOSAL
Emily O TollnerBrazilStephen Shaw UNQUALIFIED
Leon C CaldareraBrazilOnyama Limba NEGOTIATION
Jones L SergiUnited KingdomAsiya Javayant PROPOSAL
Juan W PerinAustraliaXuxue Feng UNQUALIFIED
Francesco G InouyeCanadaElwin Sharvill UNQUALIFIED
Ricardo L MacleadCanadaIvan Magalhaes NEGOTIATION
Mayumi O BriddickCanadaBernardo Dominic NEGOTIATION
Tony E StockhamJapanAsiya Javayant NEGOTIATION
Chavez A VenereArgentinaStephen Shaw NEW
Ricardo I KolmetzJapanIoni Bowcher UNQUALIFIED
Emily M FlosiSpainStephen Shaw NEGOTIATION
Greenwood Z GillianRussiaElwin Sharvill PROPOSAL
Faith E InouyeUnited KingdomAnna Fali NEW
Isabel H RutaItalyAmy Elsner RENEWAL
Izzy P MarrierIndiaOnyama Limba QUALIFIED
Claire O MorascaArgentinaAnna Fali NEGOTIATION
Jones K WieserRussiaIvan Magalhaes UNQUALIFIED
Arvin Y VenereItalyAsiya Javayant NEGOTIATION
James D NestleArgentinaStephen Shaw QUALIFIED
Emily O TollnerArgentinaIvan Magalhaes UNQUALIFIED
Costa K PerinSpainOnyama Limba UNQUALIFIED
Sinclair C ShinkoUnited KingdomElwin Sharvill NEW
Francesco C PaprockiItalyAnna Fali PROPOSAL
Mayumi F ShinkoRussiaAmy Elsner UNQUALIFIED
Kaitlin E CaudyBrazilAsiya Javayant NEW
Rodrigues S ShinkoUnited KingdomIoni Bowcher QUALIFIED
Deepesh L RutaSpainXuxue Feng NEW
Deepesh I DarakjyFranceElwin Sharvill NEW
Kaitlin E CampainAustraliaBernardo Dominic UNQUALIFIED
Munro T GarufiFranceOnyama Limba QUALIFIED
Antonio K BowleyFranceIoni Bowcher NEGOTIATION
Arvin G PaprockiJapanAmy Elsner PROPOSAL
Antonio W WieserRussiaBernardo Dominic NEGOTIATION
Octavia Y TollnerSpainXuxue Feng RENEWAL
Arvin U IturbideAustraliaElwin Sharvill UNQUALIFIED
Kaitlin J RulapaughIndiaAnna Fali PROPOSAL
Rodrigues Z FigeroaFranceIvan Magalhaes RENEWAL
Chavez J BologniaAustraliaXuxue Feng QUALIFIED
Jones T StensethBrazilAmy Elsner NEGOTIATION
Mujtaba Q NestleArgentinaXuxue Feng QUALIFIED
Wickens Y FollerIndiaXuxue Feng NEW
David R CaldareraRussiaAmy Elsner RENEWAL
Ivar E WhobreyCanadaIvan Magalhaes QUALIFIED
Alejandro N CaldareraGermanyIvan Magalhaes NEGOTIATION
Salvatore E RimSpainAnna Fali NEGOTIATION
Morrow Z InouyeSpainAsiya Javayant NEGOTIATION
Frozen Columns
Name
Morrow S Poquette
Adams N Tollner
Faith H Malet
Silvio Z Kolmetz
Darci Q Amigon
Francesco R Stockham
Ricardo Z Vocelka
Mayumi O Morasca
Jones W Whobrey
Adams F Royster
Ivar Z Albares
Jones L Darakjy
Kaitlin V Gaucho
Smith Z Kolmetz
Johnson T Rim
Maria E Paprocki
Octavia X Ferencz
Wickens K Amigon
Kaitlin V Inouye
Cody I Doe
Silvio E Iturbide
Johnson L Slusarski
Leja M Slusarski
Darci I Caldarera
Misaki W Tollner
Aruna K Bolognia
Morrow R Perin
Clifford C Flosi
Morrow P Rulapaugh
David H Maclead
Salvatore I Iturbide
Johnson K Marrier
Cody J Bowley
Kaitlin R Gaucho
Clifford G Schemmer
Rodrigues D Gillian
Murillo U Rulapaugh
Faith Q Vocelka
Ricardo Z Whobrey
Deepesh N Ostrosky
David L Inouye
Leon U Perin
Adams Q Malet
Johnson F Sergi
Izzy I Gaucho
Deepesh M Doe
Smith B Wieser
Mayumi Q Royster
Emily G Morasca
Jeanfrancois Z Darakjy
IdCountryDate
1000France2024-05-01
1001Canada2024-04-29
1002Brazil2024-04-23
1003Japan2024-04-09
1004Italy2024-04-26
1005Japan2024-04-06
1006France2024-04-26
1007Japan2024-04-25
1008Japan2024-04-24
1009Italy2024-04-23
1010Australia2024-04-28
1011United Kingdom2024-04-29
1012Russia2024-04-25
1013Italy2024-04-08
1014Australia2024-04-17
1015Italy2024-04-17
1016Russia2024-04-12
1017Spain2024-04-26
1018India2024-04-21
1019India2024-04-26
1020Italy2024-04-08
1021India2024-04-28
1022Germany2024-04-20
1023Japan2024-04-04
1024Germany2024-04-18
1025Argentina2024-04-30
1026Canada2024-04-03
1027India2024-04-30
1028Canada2024-04-25
1029Russia2024-04-26
1030India2024-04-10
1031Argentina2024-04-16
1032Argentina2024-04-25
1033Australia2024-04-04
1034Italy2024-04-08
1035India2024-04-10
1036United Kingdom2024-04-19
1037Spain2024-04-26
1038Canada2024-04-25
1039India2024-04-29
1040India2024-04-17
1041Canada2024-04-17
1042Brazil2024-04-07
1043United Kingdom2024-04-28
1044Italy2024-04-18
1045India2024-04-05
1046Australia2024-04-14
1047France2024-04-10
1048Brazil2024-04-29
1049Germany2024-04-04

On-Demand Data

NameIdCountryDate
Nicolas I Rim1000Brazil2024-04-06
Juan G Dilliard1001Canada2024-04-02
Jennifer A Kusko1002Australia2024-04-30
Wickens Q Venere1003Australia2024-04-18
James U Bowley1004France2024-04-12
Leon U Rulapaugh1005India2024-04-18
Isabel B Caudy1006Australia2024-04-03
Costa C Gillian1007Japan2024-04-02
Costa V Tollner1008Argentina2024-04-10
Leja C Ruta1009United Kingdom2024-04-18
Isabel J Stockham1010United Kingdom2024-04-26
Emily Q Kusko1011Russia2024-05-01
Izzy L Ostrosky1012Argentina2024-04-02
Smith U Ferencz1013Brazil2024-04-05
Maria F Venere1014Germany2024-04-21
Faith E Schemmer1015Germany2024-04-09
Morrow T Whobrey1016Spain2024-04-10
Arvin C Paprocki1017Italy2024-04-22
Arvin N Dilliard1018Germany2024-04-29
Kaitlin M Garufi1019Argentina2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro B FigeroaAustraliaXuxue Feng UNQUALIFIED
Sinclair M KuskoSpainBernardo Dominic NEW
Aruna Q ChuiJapanXuxue Feng NEGOTIATION
Maisha C GlickFranceElwin Sharvill PROPOSAL
Nicolas K RulapaughCanadaAsiya Javayant UNQUALIFIED
Francesco N WaycottRussiaXuxue Feng PROPOSAL
Rodrigues W WaycottSpainAmy Elsner NEGOTIATION
Wickens X PaprockiGermanyStephen Shaw PROPOSAL
Julie R MaletIndiaXuxue Feng QUALIFIED
Emily A MorascaBrazilElwin Sharvill NEW
Jones L RoysterUnited KingdomIoni Bowcher NEW
Wickens I SchemmerUnited KingdomOnyama Limba NEGOTIATION
Ivar K FlosiRussiaAnna Fali RENEWAL
Mayumi J SergiGermanyStephen Shaw QUALIFIED
Morrow Q CaldareraArgentinaAsiya Javayant QUALIFIED
Smith P GarufiCanadaIoni Bowcher UNQUALIFIED
Jefferson J MorascaFranceAmy Elsner UNQUALIFIED
Clifford H DarakjyJapanStephen Shaw NEW
Salvatore I GarufiFranceAsiya Javayant PROPOSAL
Aruna O ShinkoFranceIoni Bowcher QUALIFIED
Leon J GillianCanadaIoni Bowcher PROPOSAL
Ivar X MarrierJapanOnyama Limba NEGOTIATION
Silvio P PaprockiGermanyIvan Magalhaes NEW
Silvio H PerinCanadaAsiya Javayant UNQUALIFIED
Leon T SchemmerRussiaXuxue Feng NEGOTIATION
Cody G FlosiGermanyOnyama Limba UNQUALIFIED
Johnson I BowleySpainAnna Fali NEW
Costa W RoysterJapanBernardo Dominic NEW
Leja V MacleadJapanAnna Fali NEW
Jefferson D DoeCanadaIvan Magalhaes RENEWAL
Alejandro X GillianJapanOnyama Limba PROPOSAL
Ashley W SlusarskiAustraliaAsiya Javayant NEGOTIATION
Clifford X FollerFranceAnna Fali PROPOSAL
Darci O NickaGermanyXuxue Feng QUALIFIED
Ashley E GlickSpainBernardo Dominic RENEWAL
Isabel J ShinkoAustraliaXuxue Feng PROPOSAL
Leja F MaletJapanIvan Magalhaes QUALIFIED
Misaki M ShinkoItalyIoni Bowcher UNQUALIFIED
Johnson P CampainFranceOnyama Limba RENEWAL
Ricardo Q DarakjyRussiaAmy Elsner 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>