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
Aditya Z PaprockiItalyElwin Sharvill PROPOSAL
Jones M FerenczItalyElwin Sharvill RENEWAL
Ivar J NickaBrazilAnna Fali NEGOTIATION
Mujtaba Z BowleyGermanyBernardo Dominic RENEWAL
Mayumi G WaycottAustraliaIvan Magalhaes UNQUALIFIED
Munro D VocelkaIndiaBernardo Dominic NEW
Smith T MarrierUnited KingdomAmy Elsner PROPOSAL
Jennifer P GillianAustraliaOnyama Limba QUALIFIED
Deepesh X WieserAustraliaXuxue Feng UNQUALIFIED
Chavez B FigeroaUnited KingdomIoni Bowcher UNQUALIFIED
Ricardo C CampainFranceStephen Shaw RENEWAL
Alejandro I IturbideSpainAmy Elsner UNQUALIFIED
Aika A DilliardFranceAsiya Javayant NEGOTIATION
Nicolas T WhobreyCanadaIvan Magalhaes RENEWAL
Murillo T GauchoGermanyXuxue Feng QUALIFIED
Tony X StensethCanadaAsiya Javayant NEW
James H ButtAustraliaOnyama Limba NEW
Leja X RulapaughIndiaOnyama Limba NEW
Jones F WieserJapanXuxue Feng RENEWAL
Arvin G SaylorsRussiaStephen Shaw UNQUALIFIED
James H ButtCanadaIoni Bowcher UNQUALIFIED
Claire N KolmetzRussiaBernardo Dominic NEGOTIATION
Julie T MaletUnited KingdomIvan Magalhaes PROPOSAL
Stacey J RimFranceIoni Bowcher RENEWAL
Jeanfrancois G MaletAustraliaIoni Bowcher QUALIFIED
Misaki A DarakjyJapanBernardo Dominic PROPOSAL
Aika X ButtItalyAmy Elsner NEW
Juan L SergiUnited KingdomAnna Fali PROPOSAL
Maria T SergiAustraliaOnyama Limba RENEWAL
Emily Q RutaRussiaStephen Shaw NEGOTIATION
Arvin O DilliardIndiaAsiya Javayant QUALIFIED
Ashley Q BologniaIndiaAnna Fali NEGOTIATION
Nicolas Z TollnerFranceBernardo Dominic NEW
Tony T WaycottGermanyIvan Magalhaes NEW
Johnson R WaycottSpainAnna Fali NEW
Greenwood D IturbideBrazilAnna Fali RENEWAL
Deepesh E CaldareraAustraliaIoni Bowcher RENEWAL
Sinclair Q BriddickRussiaBernardo Dominic NEGOTIATION
Faith A SaylorsItalyOnyama Limba NEGOTIATION
Izzy Z ShinkoRussiaIvan Magalhaes NEW
James Z AmigonBrazilXuxue Feng PROPOSAL
Claire Q RutaRussiaStephen Shaw QUALIFIED
David M GarufiRussiaElwin Sharvill UNQUALIFIED
Francesco B GillianArgentinaIoni Bowcher NEW
Ricardo A DilliardJapanAmy Elsner RENEWAL
Nicolas G ButtUnited KingdomBernardo Dominic PROPOSAL
Salvatore W StockhamRussiaAsiya Javayant QUALIFIED
Kadeem Y RimRussiaIvan Magalhaes PROPOSAL
Leon E FerenczJapanIvan Magalhaes QUALIFIED
Tony D ChuiFranceIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie X MarrierArgentinaXuxue Feng QUALIFIED
Greenwood B PoquetteSpainBernardo Dominic UNQUALIFIED
Costa X SaylorsSpainStephen Shaw PROPOSAL
Kaitlin G ButtAustraliaAmy Elsner NEGOTIATION
Misaki U RoysterCanadaElwin Sharvill NEW
Nicolas C ChuiSpainElwin Sharvill NEW
Darci Q CampainFranceElwin Sharvill QUALIFIED
Emily G MaletCanadaIvan Magalhaes RENEWAL
Greenwood K GauchoSpainIvan Magalhaes UNQUALIFIED
Sinclair T ButtUnited KingdomIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh D BowleyBrazil2024-04-22Chanay, Jeffrey A Esq QUALIFIED92Ioni Bowcher
1001David V RoysterCanada2024-04-22Truhlar And Truhlar Attys PROPOSAL44Ioni Bowcher
1002Jennifer G MaletCanada2024-03-30Rousseaux, Michael Esq RENEWAL78Ioni Bowcher
1003Chavez J AlbaresCanada2024-04-19Chapman, Ross E Esq NEGOTIATION61Anna Fali
1004Rodrigues T SergiGermany2024-04-27Rousseaux, Michael Esq PROPOSAL21Asiya Javayant
1005Murillo H SergiFrance2024-04-17Morlong Associates UNQUALIFIED4Ioni Bowcher
1006Adams Y ChuiArgentina2024-04-16Morlong Associates NEW29Onyama Limba
1007Jefferson Z PerinSpain2024-03-30Printing Dimensions QUALIFIED35Amy Elsner
1008Jeanfrancois A PerinItaly2024-04-23Chanay, Jeffrey A Esq QUALIFIED16Ioni Bowcher
1009Claire C OstroskyArgentina2024-04-27Chapman, Ross E Esq NEGOTIATION97Ivan Magalhaes
1010Salvatore C CaudyCanada2024-04-19Chanay, Jeffrey A Esq RENEWAL93Anna Fali
1011Kadeem U SergiUnited Kingdom2024-04-06Commercial Press NEGOTIATION82Anna Fali
1012Juan X VocelkaFrance2024-04-25Feiner Bros NEW95Asiya Javayant
1013Deepesh G FigeroaSpain2024-04-17Chanay, Jeffrey A Esq NEW27Ioni Bowcher
1014Aruna B PerinAustralia2024-04-04Chanay, Jeffrey A Esq PROPOSAL78Stephen Shaw
1015Chavez U DilliardFrance2024-04-27King, Christopher A Esq NEW69Asiya Javayant
1016Murillo X MacleadBrazil2024-04-05Rousseaux, Michael Esq PROPOSAL7Onyama Limba
1017Darci T CaudySpain2024-04-16Benton, John B Jr QUALIFIED68Xuxue Feng
1018Cody O MarrierArgentina2024-03-30Chemel, James L Cpa NEW95Elwin Sharvill
1019Darci A SchemmerBrazil2024-04-02Dorl, James J Esq UNQUALIFIED45Asiya Javayant
1020Kaitlin J GillianRussia2024-04-01Chemel, James L Cpa NEW53Ivan Magalhaes
1021Chavez F ChuiSpain2024-03-29Buckley Miller Wright PROPOSAL28Amy Elsner
1022Darci V MaletAustralia2024-03-29King, Christopher A Esq RENEWAL76Ivan Magalhaes
1023Deepesh T BowleyGermany2024-04-08Dorl, James J Esq NEGOTIATION15Onyama Limba
1024Leja T FollerSpain2024-04-08Dorl, James J Esq QUALIFIED25Xuxue Feng
1025Mujtaba C DarakjyRussia2024-04-26Morlong Associates RENEWAL61Bernardo Dominic
1026Salvatore B NestleCanada2024-04-07Truhlar And Truhlar Attys UNQUALIFIED51Xuxue Feng
1027Julie P WieserArgentina2024-04-11Benton, John B Jr PROPOSAL39Xuxue Feng
1028Deepesh U RoysterItaly2024-04-12Rousseaux, Michael Esq PROPOSAL83Xuxue Feng
1029Costa L FlosiArgentina2024-04-25Chemel, James L Cpa UNQUALIFIED30Ioni Bowcher
1030Munro Q AlbaresRussia2024-04-03Chapman, Ross E Esq UNQUALIFIED11Anna Fali
1031Jennifer C MaletRussia2024-04-01King, Christopher A Esq QUALIFIED24Asiya Javayant
1032Salvatore X KolmetzArgentina2024-04-21Feltz Printing Service QUALIFIED20Anna Fali
1033Murillo Z DarakjyFrance2024-04-14Buckley Miller Wright NEW76Ioni Bowcher
1034Tony G NestleFrance2024-04-20Chapman, Ross E Esq QUALIFIED98Onyama Limba
1035Isabel E IturbideItaly2024-04-08Feltz Printing Service PROPOSAL98Onyama Limba
1036Aruna D AlbaresBrazil2024-04-14Chapman, Ross E Esq NEGOTIATION77Ioni Bowcher
1037Kadeem J SchemmerAustralia2024-04-03Chemel, James L Cpa QUALIFIED29Amy Elsner
1038Jefferson Z OstroskyIndia2024-04-10Rangoni Of Florence RENEWAL72Asiya Javayant
1039Octavia P CaldareraUnited Kingdom2024-03-29Truhlar And Truhlar Attys RENEWAL15Stephen Shaw
1040Stacey B CampainIndia2024-04-03Printing Dimensions PROPOSAL9Stephen Shaw
1041Isabel H MaletGermany2024-04-02Dorl, James J Esq NEGOTIATION67Elwin Sharvill
1042Smith C BowleyFrance2024-04-14Dorl, James J Esq PROPOSAL98Xuxue Feng
1043Chavez Q TollnerUnited Kingdom2024-04-11Printing Dimensions PROPOSAL39Ivan Magalhaes
1044Silvio D CampainIndia2024-04-25Chanay, Jeffrey A Esq UNQUALIFIED74Ioni Bowcher
1045Morrow X WhobreyItaly2024-04-24Morlong Associates PROPOSAL66Elwin Sharvill
1046Smith R BologniaArgentina2024-04-13Feiner Bros NEGOTIATION43Anna Fali
1047Stacey Q MarrierItaly2024-04-19Buckley Miller Wright NEW41Ivan Magalhaes
1048Francesco L IturbideItaly2024-04-06Chemel, James L Cpa PROPOSAL72Ivan Magalhaes
1049Mujtaba P RoysterRussia2024-04-14Rangoni Of Florence NEGOTIATION33Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Nicolas B CaldareraIndiaIoni Bowcher UNQUALIFIED
Greenwood C SchemmerAustraliaIoni Bowcher RENEWAL
Aruna Y PerinGermanyBernardo Dominic QUALIFIED
Izzy N WieserRussiaAmy Elsner NEW
Silvio B GauchoUnited KingdomBernardo Dominic UNQUALIFIED
Jefferson Z CaudyCanadaXuxue Feng RENEWAL
Greenwood R TollnerCanadaAnna Fali QUALIFIED
Tony Y RoysterArgentinaStephen Shaw NEGOTIATION
Cody G AlbaresCanadaAnna Fali RENEWAL
Jeanfrancois R SergiJapanOnyama Limba PROPOSAL
Leja X InouyeBrazilStephen Shaw PROPOSAL
Aruna O ShinkoIndiaStephen Shaw UNQUALIFIED
Misaki D DarakjyArgentinaStephen Shaw RENEWAL
Salvatore E MorascaFranceIvan Magalhaes PROPOSAL
Jennifer L PaprockiUnited KingdomOnyama Limba PROPOSAL
Isabel P BriddickCanadaXuxue Feng NEW
Misaki G VocelkaAustraliaIoni Bowcher RENEWAL
Izzy C GillianItalyElwin Sharvill RENEWAL
Tony M FigeroaRussiaXuxue Feng RENEWAL
Deepesh G BowleyBrazilIvan Magalhaes RENEWAL
Alejandro Q RoysterUnited KingdomAsiya Javayant QUALIFIED
Costa Z InouyeArgentinaElwin Sharvill PROPOSAL
Izzy X MacleadSpainOnyama Limba NEW
Maisha X InouyeGermanyIoni Bowcher NEW
Kadeem B GillianItalyElwin Sharvill PROPOSAL
Adams Q BriddickIndiaIvan Magalhaes RENEWAL
Izzy J FigeroaFranceBernardo Dominic UNQUALIFIED
Claire M TollnerBrazilAmy Elsner UNQUALIFIED
Murillo S NickaGermanyXuxue Feng RENEWAL
Izzy V PerinCanadaAnna Fali NEGOTIATION
Juan F FerenczRussiaXuxue Feng PROPOSAL
Alejandro X VocelkaSpainAsiya Javayant PROPOSAL
Arvin Y GillianSpainBernardo Dominic NEGOTIATION
Cody C RoysterRussiaOnyama Limba PROPOSAL
Claire E BologniaBrazilAsiya Javayant NEGOTIATION
Mayumi B FollerAustraliaBernardo Dominic UNQUALIFIED
Munro Y VenereFranceIoni Bowcher NEW
Smith Y DilliardRussiaAmy Elsner UNQUALIFIED
Rodrigues S TollnerGermanyIoni Bowcher PROPOSAL
Chavez Q KuskoArgentinaElwin Sharvill NEW
Maria C MaletAustraliaAnna Fali RENEWAL
Ricardo C RimUnited KingdomBernardo Dominic QUALIFIED
Aruna L GauchoBrazilIoni Bowcher PROPOSAL
Antonio I KuskoSpainAnna Fali NEW
Aditya X AmigonAustraliaOnyama Limba NEW
Maria X FigeroaIndiaAsiya Javayant QUALIFIED
Smith J SergiAustraliaIvan Magalhaes NEGOTIATION
Juan Q SaylorsRussiaAmy Elsner QUALIFIED
Nicolas X RutaFranceIvan Magalhaes QUALIFIED
Izzy S NickaUnited KingdomOnyama Limba NEGOTIATION
Frozen Columns
Name
Chavez K Morasca
Greenwood I Malet
Octavia K Ostrosky
David D Ferencz
Ashley D Maclead
Costa Q Campain
Johnson X Perin
Francesco Y Perin
Deepesh M Gaucho
Alejandro T Shinko
Octavia Z Slusarski
Smith Q Glick
Antonio C Garufi
Munro Y Nicka
Ricardo R Whobrey
Sinclair G Doe
Sinclair F Marrier
Deepesh D Stenseth
Francesco D Stockham
Arvin A Marrier
Cody A Garufi
Maria S Ostrosky
Maisha N Dilliard
Leja I Nicka
Silvio W Perin
Maisha A Saylors
Maria T Paprocki
Nicolas W Nestle
Leon B Ruta
Rodrigues F Wieser
Misaki G Glick
Wickens J Butt
Izzy X Darakjy
James M Butt
Juan U Saylors
Wickens N Marrier
Leja Q Amigon
James X Gillian
Faith M Nicka
Murillo D Flosi
Isabel U Inouye
Ashley R Slusarski
Aika P Oldroyd
Silvio J Inouye
Juan X Butt
Aika M Malet
Mayumi H Nicka
Adams C Kolmetz
Emily R Nicka
Darci T Caldarera
IdCountryDate
1000Italy2024-04-06
1001India2024-04-26
1002Russia2024-04-11
1003Brazil2024-03-31
1004Australia2024-04-17
1005Canada2024-04-16
1006France2024-04-21
1007France2024-04-05
1008Canada2024-04-13
1009Australia2024-04-22
1010Germany2024-04-22
1011Japan2024-04-19
1012India2024-04-18
1013Canada2024-04-02
1014Germany2024-04-26
1015Australia2024-03-29
1016India2024-04-03
1017Brazil2024-04-23
1018Spain2024-04-20
1019Germany2024-04-16
1020Argentina2024-04-17
1021Argentina2024-03-31
1022Japan2024-04-03
1023Germany2024-04-04
1024France2024-04-20
1025United Kingdom2024-04-20
1026Italy2024-04-25
1027Germany2024-04-27
1028Argentina2024-04-09
1029Spain2024-04-09
1030Argentina2024-04-01
1031Argentina2024-03-31
1032Canada2024-04-26
1033France2024-04-01
1034India2024-04-26
1035India2024-04-16
1036Brazil2024-04-27
1037Australia2024-04-06
1038France2024-04-07
1039Japan2024-04-13
1040United Kingdom2024-04-06
1041Germany2024-04-07
1042India2024-04-16
1043Brazil2024-04-18
1044United Kingdom2024-04-14
1045Russia2024-04-25
1046Brazil2024-04-20
1047Japan2024-04-24
1048Brazil2024-04-15
1049Spain2024-04-24

On-Demand Data

NameIdCountryDate
Aika Z Saylors1000Australia2024-04-20
Ricardo I Venere1001Australia2024-04-25
Chavez G Iturbide1002Japan2024-04-26
Aika B Bolognia1003Canada2024-04-14
Ivar J Dilliard1004Argentina2024-04-01
Smith F Sergi1005India2024-04-27
Nicolas H Foller1006Spain2024-03-30
Leon V Iturbide1007Spain2024-04-19
James G Chui1008Canada2024-04-21
Darci K Bolognia1009France2024-04-18
Silvio M Chui1010Spain2024-04-11
Kadeem W Garufi1011France2024-04-18
Stacey I Poquette1012India2024-04-25
Jennifer V Foller1013Russia2024-04-02
Rodrigues Z Nestle1014Australia2024-04-12
Smith J Malet1015Canada2024-04-05
Mayumi P Paprocki1016Germany2024-04-14
Juan F Maclead1017Australia2024-04-25
Cody X Nicka1018United Kingdom2024-04-16
Ivar U Wieser1019Argentina2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin N OstroskySpainAmy Elsner PROPOSAL
Misaki K DarakjyIndiaStephen Shaw NEGOTIATION
David X DoeUnited KingdomBernardo Dominic RENEWAL
Murillo N KolmetzArgentinaXuxue Feng UNQUALIFIED
Costa P ButtUnited KingdomAmy Elsner UNQUALIFIED
Clifford E KolmetzBrazilXuxue Feng RENEWAL
Maisha Z BriddickArgentinaStephen Shaw NEGOTIATION
Johnson Q ButtSpainAmy Elsner UNQUALIFIED
Emily T WhobreyAustraliaAmy Elsner RENEWAL
Julie N StensethJapanOnyama Limba NEW
Aika A ChuiBrazilOnyama Limba RENEWAL
Ivar X RimCanadaIoni Bowcher NEGOTIATION
Jones T FlosiArgentinaBernardo Dominic RENEWAL
Jones X MaletGermanyOnyama Limba UNQUALIFIED
Cody Y RoysterCanadaIoni Bowcher PROPOSAL
Stacey L IturbideCanadaAsiya Javayant PROPOSAL
Smith O RimBrazilXuxue Feng UNQUALIFIED
Stacey H SchemmerJapanXuxue Feng QUALIFIED
Antonio G TollnerItalyAmy Elsner PROPOSAL
Aruna A DoeJapanAnna Fali NEW
Maisha M RimBrazilOnyama Limba RENEWAL
Alejandro R GillianCanadaIoni Bowcher RENEWAL
Jeanfrancois F GauchoGermanyIoni Bowcher QUALIFIED
Misaki F OldroydCanadaAmy Elsner UNQUALIFIED
Octavia Q BriddickSpainIoni Bowcher QUALIFIED
Salvatore Q MaletItalyAnna Fali QUALIFIED
David S WieserSpainStephen Shaw NEGOTIATION
Ricardo I FigeroaJapanXuxue Feng PROPOSAL
Alejandro X RutaGermanyBernardo Dominic NEW
Mayumi Q MarrierAustraliaIoni Bowcher UNQUALIFIED
Salvatore D MorascaGermanyXuxue Feng QUALIFIED
Darci V RulapaughUnited KingdomAmy Elsner PROPOSAL
Murillo I NestleFranceBernardo Dominic NEW
Alejandro G RulapaughRussiaAsiya Javayant PROPOSAL
Arvin X MaletSpainIoni Bowcher NEW
Francesco K GauchoJapanStephen Shaw NEGOTIATION
Isabel C WieserAustraliaIoni Bowcher PROPOSAL
Jones L DoeAustraliaAmy Elsner NEW
Emily Y WhobreySpainStephen Shaw NEW
Mujtaba D MorascaCanadaBernardo Dominic QUALIFIED

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