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
Mujtaba L NestleSpainStephen Shaw UNQUALIFIED
Nicolas H GillianBrazilAsiya Javayant UNQUALIFIED
Nicolas E FigeroaUnited KingdomIoni Bowcher QUALIFIED
Smith L MarrierJapanXuxue Feng QUALIFIED
Francesco X KolmetzGermanyXuxue Feng PROPOSAL
Antonio E GauchoUnited KingdomStephen Shaw UNQUALIFIED
Aditya Q VenereGermanyIoni Bowcher PROPOSAL
Izzy R TollnerUnited KingdomIvan Magalhaes UNQUALIFIED
Aika P FigeroaFranceOnyama Limba QUALIFIED
Juan G ChuiItalyAmy Elsner QUALIFIED
Aruna S CaldareraFranceStephen Shaw QUALIFIED
Jefferson Y KuskoUnited KingdomIvan Magalhaes UNQUALIFIED
Julie N FlosiFranceElwin Sharvill RENEWAL
James T OldroydArgentinaAmy Elsner NEW
Juan N SlusarskiArgentinaOnyama Limba QUALIFIED
Chavez X PoquetteFranceBernardo Dominic NEW
Mujtaba W GillianBrazilAsiya Javayant RENEWAL
Deepesh F ButtRussiaIvan Magalhaes UNQUALIFIED
Claire U GillianJapanStephen Shaw UNQUALIFIED
Sinclair C RulapaughUnited KingdomXuxue Feng PROPOSAL
Murillo F InouyeUnited KingdomAsiya Javayant PROPOSAL
Clifford C AmigonUnited KingdomAnna Fali UNQUALIFIED
Chavez M VocelkaRussiaAsiya Javayant QUALIFIED
Deepesh O FigeroaBrazilXuxue Feng QUALIFIED
Kadeem F BriddickSpainAmy Elsner NEGOTIATION
Deepesh K NickaBrazilAmy Elsner UNQUALIFIED
Jefferson Z GlickIndiaStephen Shaw NEW
Wickens B WieserCanadaAnna Fali UNQUALIFIED
Darci D StensethArgentinaOnyama Limba NEGOTIATION
Murillo L DilliardBrazilOnyama Limba QUALIFIED
Murillo I SaylorsIndiaElwin Sharvill NEGOTIATION
James V FerenczCanadaOnyama Limba QUALIFIED
James D RoysterBrazilXuxue Feng RENEWAL
Ricardo F FerenczUnited KingdomStephen Shaw NEW
David X VenereSpainAsiya Javayant RENEWAL
Aruna E FigeroaArgentinaIoni Bowcher UNQUALIFIED
Greenwood R RutaBrazilIoni Bowcher RENEWAL
Nicolas G BologniaUnited KingdomAsiya Javayant PROPOSAL
Ashley X MaletItalyXuxue Feng RENEWAL
Adams E RoysterIndiaStephen Shaw NEW
Alejandro R TollnerIndiaXuxue Feng PROPOSAL
Leon X AmigonRussiaAmy Elsner NEW
Francesco R CaldareraGermanyStephen Shaw NEW
Johnson J NestleAustraliaStephen Shaw RENEWAL
Octavia U OstroskyCanadaBernardo Dominic RENEWAL
Cody V SlusarskiArgentinaElwin Sharvill UNQUALIFIED
Adams Q SaylorsUnited KingdomAsiya Javayant NEGOTIATION
Greenwood R DoeAustraliaBernardo Dominic NEW
Maisha J MacleadSpainIoni Bowcher PROPOSAL
Rodrigues Z WieserFranceXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Morrow T TollnerBrazilXuxue Feng UNQUALIFIED
Munro J CaldareraBrazilIvan Magalhaes NEGOTIATION
Murillo A TollnerCanadaOnyama Limba UNQUALIFIED
Leon M RulapaughGermanyStephen Shaw QUALIFIED
Maisha L RulapaughRussiaAsiya Javayant PROPOSAL
Antonio B BowleyCanadaIoni Bowcher RENEWAL
Jefferson E CampainIndiaStephen Shaw RENEWAL
Octavia R VocelkaSpainOnyama Limba PROPOSAL
Leja Q PerinRussiaOnyama Limba PROPOSAL
Tony Q MarrierItalyBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood X CaldareraBrazil2024-05-17King, Christopher A Esq PROPOSAL48Stephen Shaw
1001Maisha E GlickCanada2024-05-13Chapman, Ross E Esq QUALIFIED19Asiya Javayant
1002Maisha I WhobreyFrance2024-05-15King, Christopher A Esq UNQUALIFIED46Asiya Javayant
1003Smith R VocelkaItaly2024-05-08Feiner Bros UNQUALIFIED86Xuxue Feng
1004Francesco R RimCanada2024-05-14King, Christopher A Esq NEW83Anna Fali
1005Adams T SlusarskiItaly2024-05-07Buckley Miller Wright RENEWAL64Amy Elsner
1006Julie C MorascaGermany2024-05-09Rangoni Of Florence NEW19Stephen Shaw
1007Aditya L BologniaAustralia2024-05-09Truhlar And Truhlar Attys NEW91Onyama Limba
1008Izzy U StensethArgentina2024-05-19Chemel, James L Cpa QUALIFIED92Onyama Limba
1009Ivar S PaprockiIndia2024-05-17Morlong Associates RENEWAL20Anna Fali
1010Leon E TollnerGermany2024-04-25Truhlar And Truhlar Attys RENEWAL5Anna Fali
1011Leja N WaycottArgentina2024-04-29Rangoni Of Florence NEGOTIATION73Stephen Shaw
1012Leja Y RoysterIndia2024-04-28Chemel, James L Cpa QUALIFIED75Elwin Sharvill
1013Leon I FigeroaJapan2024-04-27Dorl, James J Esq RENEWAL35Stephen Shaw
1014Salvatore Q PoquetteBrazil2024-05-20Morlong Associates NEGOTIATION88Bernardo Dominic
1015Ashley Q VocelkaItaly2024-05-20Truhlar And Truhlar Attys QUALIFIED1Anna Fali
1016Francesco S PoquetteGermany2024-05-17Feiner Bros RENEWAL60Bernardo Dominic
1017Jones B InouyeAustralia2024-04-29Chanay, Jeffrey A Esq QUALIFIED39Elwin Sharvill
1018Aika X NestleBrazil2024-05-20Benton, John B Jr NEGOTIATION90Ivan Magalhaes
1019Costa E KuskoBrazil2024-05-20Truhlar And Truhlar Attys UNQUALIFIED81Amy Elsner
1020Misaki U RoysterItaly2024-05-11Rousseaux, Michael Esq UNQUALIFIED40Xuxue Feng
1021Murillo T FollerJapan2024-05-03Feltz Printing Service NEW69Ioni Bowcher
1022Murillo W IturbideAustralia2024-05-18Printing Dimensions PROPOSAL46Ivan Magalhaes
1023Maisha D CampainRussia2024-05-16Dorl, James J Esq RENEWAL61Xuxue Feng
1024Claire Y OstroskyIndia2024-05-07Feltz Printing Service NEGOTIATION44Asiya Javayant
1025David D BologniaGermany2024-05-17Chanay, Jeffrey A Esq PROPOSAL35Asiya Javayant
1026Tony R BologniaFrance2024-04-29Chemel, James L Cpa RENEWAL97Onyama Limba
1027Francesco F TollnerBrazil2024-05-07King, Christopher A Esq UNQUALIFIED4Ioni Bowcher
1028Munro K KuskoAustralia2024-05-07Morlong Associates NEW13Ivan Magalhaes
1029Octavia D BowleyCanada2024-04-22Feltz Printing Service QUALIFIED93Onyama Limba
1030Smith K PerinAustralia2024-04-23Rousseaux, Michael Esq NEW11Anna Fali
1031Clifford G PaprockiJapan2024-05-06Morlong Associates UNQUALIFIED48Ioni Bowcher
1032Leja Y StensethJapan2024-04-28Morlong Associates RENEWAL64Amy Elsner
1033Deepesh V CampainBrazil2024-05-03Morlong Associates NEGOTIATION70Bernardo Dominic
1034Jennifer E SlusarskiRussia2024-05-10Truhlar And Truhlar Attys NEW37Anna Fali
1035Jones L KuskoItaly2024-04-29Rousseaux, Michael Esq UNQUALIFIED66Bernardo Dominic
1036Juan W RutaGermany2024-05-06Buckley Miller Wright NEW79Ivan Magalhaes
1037Darci F NestleIndia2024-05-05Commercial Press RENEWAL31Onyama Limba
1038Ricardo S ShinkoAustralia2024-05-19Feiner Bros UNQUALIFIED51Amy Elsner
1039Aika I VenereIndia2024-04-24Commercial Press NEGOTIATION58Onyama Limba
1040Silvio H StensethArgentina2024-05-01Truhlar And Truhlar Attys QUALIFIED92Ivan Magalhaes
1041Octavia I DilliardArgentina2024-04-24Feiner Bros NEW18Amy Elsner
1042Emily T RulapaughItaly2024-04-24Feltz Printing Service NEW75Onyama Limba
1043Julie K DoeJapan2024-05-12Benton, John B Jr PROPOSAL23Elwin Sharvill
1044Jefferson C ButtRussia2024-05-07Feiner Bros QUALIFIED24Ioni Bowcher
1045David B FlosiIndia2024-05-06Dorl, James J Esq NEGOTIATION97Xuxue Feng
1046Kaitlin Q BologniaBrazil2024-04-28Benton, John B Jr PROPOSAL11Ioni Bowcher
1047Ivar C InouyeGermany2024-05-04Feiner Bros PROPOSAL26Anna Fali
1048Munro X DoeIndia2024-05-06Benton, John B Jr NEGOTIATION56Xuxue Feng
1049Mujtaba U RoysterItaly2024-05-20Feltz Printing Service RENEWAL95Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Deepesh V DoeGermanyAnna Fali NEGOTIATION
Jefferson B MaletItalyOnyama Limba RENEWAL
Munro P VocelkaIndiaElwin Sharvill UNQUALIFIED
Munro B FlosiItalyAsiya Javayant NEGOTIATION
Salvatore R RutaJapanAmy Elsner UNQUALIFIED
Jefferson C SaylorsJapanIvan Magalhaes PROPOSAL
Salvatore B DilliardRussiaAmy Elsner UNQUALIFIED
Alejandro D MorascaCanadaAmy Elsner UNQUALIFIED
Julie U RimArgentinaIoni Bowcher PROPOSAL
Maisha C MorascaFranceIoni Bowcher UNQUALIFIED
Deepesh O BologniaJapanAnna Fali UNQUALIFIED
Arvin L VocelkaSpainAmy Elsner QUALIFIED
Clifford N WieserBrazilBernardo Dominic PROPOSAL
Cody I MaletCanadaXuxue Feng NEGOTIATION
Leja W TollnerArgentinaXuxue Feng NEW
Isabel V ChuiSpainXuxue Feng PROPOSAL
Jennifer X FigeroaItalyBernardo Dominic RENEWAL
Leon C CampainArgentinaAmy Elsner PROPOSAL
Alejandro U OldroydAustraliaElwin Sharvill UNQUALIFIED
Kadeem E OldroydCanadaXuxue Feng RENEWAL
Jefferson E ShinkoAustraliaAmy Elsner UNQUALIFIED
Tony S ShinkoFranceOnyama Limba NEGOTIATION
Maisha A RimRussiaIvan Magalhaes PROPOSAL
Darci G DarakjyGermanyStephen Shaw NEGOTIATION
David D ShinkoArgentinaIoni Bowcher QUALIFIED
Murillo G OldroydBrazilIoni Bowcher PROPOSAL
Leon J TollnerUnited KingdomXuxue Feng UNQUALIFIED
Aika J ChuiIndiaXuxue Feng NEGOTIATION
Ashley F WieserSpainBernardo Dominic RENEWAL
Aruna I RoysterItalyXuxue Feng QUALIFIED
Maisha D ChuiUnited KingdomAsiya Javayant RENEWAL
Ivar I BriddickGermanyIvan Magalhaes NEGOTIATION
Johnson D GauchoArgentinaStephen Shaw NEGOTIATION
Ricardo W IturbideCanadaAmy Elsner UNQUALIFIED
Ricardo K RoysterItalyBernardo Dominic NEGOTIATION
Sinclair N GarufiGermanyAnna Fali QUALIFIED
Adams T CampainJapanBernardo Dominic NEW
Mayumi R DarakjyAustraliaAsiya Javayant RENEWAL
Smith I SlusarskiIndiaIvan Magalhaes UNQUALIFIED
Emily P BologniaRussiaElwin Sharvill PROPOSAL
Clifford L PoquetteGermanyXuxue Feng RENEWAL
Nicolas N RoysterRussiaElwin Sharvill NEGOTIATION
Izzy W OstroskySpainIoni Bowcher PROPOSAL
Darci O BowleyIndiaIoni Bowcher QUALIFIED
Aika G GlickUnited KingdomAnna Fali PROPOSAL
Cody X InouyeItalyOnyama Limba QUALIFIED
Jennifer Z WaycottItalyIvan Magalhaes PROPOSAL
Jones V CampainSpainElwin Sharvill NEW
Johnson J FollerCanadaElwin Sharvill UNQUALIFIED
Francesco R AlbaresArgentinaIvan Magalhaes NEW
Frozen Columns
Name
Sinclair D Garufi
Costa O Figeroa
Mayumi Y Oldroyd
Izzy B Doe
Alejandro E Morasca
Francesco P Perin
Salvatore C Slusarski
Mayumi J Wieser
Johnson Y Ferencz
Wickens Q Marrier
Wickens W Stockham
Johnson T Rim
Aditya M Paprocki
Ashley T Glick
Wickens U Tollner
Mujtaba A Gaucho
Ricardo J Malet
Johnson I Doe
Misaki B Sergi
Faith K Malet
Mujtaba I Garufi
Smith B Stenseth
Cody T Morasca
Leja V Nicka
Chavez K Perin
Emily F Garufi
Antonio N Bolognia
Alejandro R Venere
Nicolas P Bolognia
Mujtaba T Caldarera
Silvio U Flosi
Faith U Waycott
Stacey L Vocelka
Jeanfrancois Q Vocelka
Aruna Z Vocelka
David Z Bowley
Nicolas D Rulapaugh
Wickens P Bowley
Kaitlin I Stockham
Wickens S Inouye
Stacey N Malet
Silvio M Waycott
Ricardo B Gillian
Wickens L Iturbide
Ivar K Rim
Clifford Q Butt
Clifford J Caldarera
Jeanfrancois X Darakjy
Salvatore F Bowley
Adams B Flosi
IdCountryDate
1000Russia2024-04-21
1001Germany2024-05-01
1002Italy2024-04-27
1003France2024-04-26
1004India2024-05-06
1005Brazil2024-05-17
1006Australia2024-04-28
1007Russia2024-05-15
1008Australia2024-05-20
1009Spain2024-04-22
1010Germany2024-05-09
1011Australia2024-05-07
1012Italy2024-05-11
1013Canada2024-04-29
1014Italy2024-04-27
1015Japan2024-05-08
1016Germany2024-05-08
1017Argentina2024-05-18
1018Canada2024-05-01
1019Russia2024-04-25
1020Japan2024-05-20
1021Canada2024-05-06
1022Spain2024-05-19
1023Germany2024-05-09
1024France2024-05-20
1025United Kingdom2024-04-22
1026Spain2024-05-10
1027Brazil2024-05-15
1028Australia2024-05-12
1029Japan2024-05-04
1030Australia2024-04-29
1031Russia2024-04-27
1032Australia2024-05-11
1033Japan2024-04-29
1034Germany2024-04-30
1035Japan2024-05-11
1036Canada2024-05-10
1037Germany2024-05-10
1038Argentina2024-05-12
1039Brazil2024-04-24
1040Canada2024-04-21
1041Italy2024-05-18
1042Germany2024-04-22
1043Japan2024-04-28
1044Italy2024-05-05
1045Germany2024-05-10
1046Argentina2024-05-19
1047Australia2024-05-04
1048Canada2024-05-20
1049Brazil2024-05-15

On-Demand Data

NameIdCountryDate
Murillo C Oldroyd1000Japan2024-05-02
Ivar T Malet1001Argentina2024-05-20
Misaki B Schemmer1002France2024-05-07
Kadeem L Stockham1003Australia2024-05-15
Isabel E Poquette1004Brazil2024-05-17
Wickens I Butt1005India2024-04-22
Leon D Oldroyd1006Russia2024-05-08
Isabel D Schemmer1007Germany2024-04-26
Clifford F Nicka1008India2024-05-07
Julie R Chui1009Germany2024-04-21
Stacey J Slusarski1010France2024-05-08
Johnson A Oldroyd1011Japan2024-05-06
Ivar H Campain1012Russia2024-05-19
David X Saylors1013Germany2024-05-17
Cody U Ruta1014Italy2024-05-12
Stacey N Oldroyd1015France2024-04-30
Antonio M Gillian1016Italy2024-05-03
Kaitlin U Stockham1017Italy2024-05-13
Aika W Malet1018United Kingdom2024-05-10
Jeanfrancois E Albares1019Italy2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo U BologniaSpainOnyama Limba NEGOTIATION
Sinclair B DoeSpainElwin Sharvill NEGOTIATION
Sinclair V InouyeRussiaAmy Elsner RENEWAL
Juan B AmigonBrazilElwin Sharvill PROPOSAL
David Y FlosiArgentinaBernardo Dominic PROPOSAL
Maisha B AmigonBrazilIoni Bowcher RENEWAL
Morrow A KuskoGermanyElwin Sharvill QUALIFIED
Johnson U RutaIndiaStephen Shaw NEGOTIATION
Jennifer X PaprockiBrazilBernardo Dominic RENEWAL
Deepesh S OldroydAustraliaAsiya Javayant NEW
Rodrigues W MaletArgentinaStephen Shaw QUALIFIED
Francesco F GillianJapanIvan Magalhaes NEGOTIATION
Ricardo E RoysterAustraliaIvan Magalhaes QUALIFIED
Maisha W CampainGermanyElwin Sharvill NEGOTIATION
Silvio I RulapaughGermanyOnyama Limba UNQUALIFIED
Leon I StockhamSpainXuxue Feng NEGOTIATION
Faith Y GlickJapanOnyama Limba RENEWAL
Jennifer X OstroskyIndiaAsiya Javayant NEGOTIATION
Tony O DoeJapanStephen Shaw NEGOTIATION
Munro T GauchoBrazilStephen Shaw NEW
Adams H CaudyAustraliaBernardo Dominic NEW
Juan B WieserCanadaStephen Shaw QUALIFIED
Morrow I IturbideGermanyBernardo Dominic NEGOTIATION
Jennifer X GillianIndiaElwin Sharvill RENEWAL
Mayumi R GarufiGermanyIvan Magalhaes UNQUALIFIED
Mayumi B NickaSpainAsiya Javayant NEW
Smith N RutaGermanyBernardo Dominic NEGOTIATION
Stacey T MaletBrazilStephen Shaw NEGOTIATION
Arvin D GillianAustraliaIoni Bowcher UNQUALIFIED
Emily D VenereUnited KingdomIoni Bowcher NEGOTIATION
Adams M CaldareraFranceIvan Magalhaes RENEWAL
Faith L FollerFranceAmy Elsner UNQUALIFIED
Faith T AlbaresItalyXuxue Feng NEW
Misaki J WieserRussiaAnna Fali NEW
Wickens C FigeroaBrazilElwin Sharvill NEGOTIATION
Jeanfrancois K TollnerRussiaOnyama Limba UNQUALIFIED
Clifford A MacleadUnited KingdomElwin Sharvill UNQUALIFIED
Antonio C WieserFranceIoni Bowcher NEW
Morrow M BriddickGermanyAnna Fali NEGOTIATION
Tony F GillianFranceAnna 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>