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
Costa J StockhamAustraliaIvan Magalhaes UNQUALIFIED
Darci O FollerIndiaAnna Fali NEW
Cody V BriddickCanadaElwin Sharvill RENEWAL
Izzy J SergiJapanIoni Bowcher UNQUALIFIED
Jefferson R DilliardAustraliaBernardo Dominic PROPOSAL
James C ShinkoSpainIvan Magalhaes RENEWAL
Octavia H VenereArgentinaIvan Magalhaes PROPOSAL
Mujtaba I KuskoArgentinaXuxue Feng PROPOSAL
Leon W StockhamArgentinaAsiya Javayant NEW
Antonio C NickaIndiaIoni Bowcher NEGOTIATION
Jennifer T MaletRussiaIvan Magalhaes RENEWAL
Jones M PoquetteCanadaXuxue Feng NEGOTIATION
Johnson C IturbideCanadaIvan Magalhaes NEW
David B NickaAustraliaIoni Bowcher NEW
Emily M GauchoFranceIvan Magalhaes NEGOTIATION
Costa E InouyeAustraliaElwin Sharvill NEW
Rodrigues D OldroydRussiaAsiya Javayant NEW
Darci P StockhamJapanElwin Sharvill UNQUALIFIED
Clifford R MarrierJapanStephen Shaw PROPOSAL
Aditya L BowleyGermanyBernardo Dominic RENEWAL
Aditya W ChuiSpainIvan Magalhaes PROPOSAL
Munro E ChuiItalyStephen Shaw QUALIFIED
Ricardo N MorascaFranceIoni Bowcher RENEWAL
Stacey N CaudyJapanAmy Elsner UNQUALIFIED
Jefferson N NestleAustraliaIoni Bowcher NEGOTIATION
Ivar W OldroydIndiaAnna Fali NEGOTIATION
Greenwood G SergiAustraliaAsiya Javayant NEGOTIATION
Maria F SchemmerRussiaIoni Bowcher NEW
Antonio E WaycottIndiaIoni Bowcher UNQUALIFIED
Misaki C SergiGermanyIvan Magalhaes RENEWAL
Nicolas U CampainUnited KingdomBernardo Dominic QUALIFIED
Chavez U GlickBrazilIvan Magalhaes NEGOTIATION
Kaitlin G VenereCanadaOnyama Limba NEGOTIATION
Cody B DoeFranceIoni Bowcher NEGOTIATION
Deepesh R ShinkoAustraliaAnna Fali RENEWAL
Smith O BologniaAustraliaXuxue Feng QUALIFIED
David P DoeIndiaStephen Shaw UNQUALIFIED
Cody M RimRussiaBernardo Dominic NEGOTIATION
Jefferson T FlosiRussiaXuxue Feng PROPOSAL
Aika A MaletUnited KingdomXuxue Feng QUALIFIED
Juan F InouyeFranceStephen Shaw NEW
Maria F FigeroaRussiaAnna Fali QUALIFIED
Octavia C PaprockiUnited KingdomIoni Bowcher NEGOTIATION
Rodrigues U MacleadRussiaBernardo Dominic RENEWAL
Morrow Z CaudyCanadaIoni Bowcher UNQUALIFIED
Izzy A WieserSpainStephen Shaw RENEWAL
Deepesh R DoeJapanAsiya Javayant QUALIFIED
Stacey Y CaldareraCanadaAmy Elsner NEGOTIATION
Kaitlin P GauchoSpainElwin Sharvill NEGOTIATION
Kadeem P RoysterRussiaStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Alejandro D IturbideFranceStephen Shaw PROPOSAL
Maria M RimUnited KingdomIoni Bowcher RENEWAL
Ricardo X FollerRussiaAsiya Javayant QUALIFIED
Kaitlin F AlbaresBrazilXuxue Feng NEW
Munro O FigeroaAustraliaAsiya Javayant NEGOTIATION
Maisha J SlusarskiRussiaAnna Fali NEW
Aika V DilliardBrazilBernardo Dominic QUALIFIED
Julie U BriddickBrazilBernardo Dominic UNQUALIFIED
Mayumi S WaycottCanadaBernardo Dominic NEGOTIATION
Morrow F SchemmerJapanBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki P FigeroaRussia2024-05-10Buckley Miller Wright RENEWAL8Anna Fali
1001Emily G DilliardRussia2024-04-13Buckley Miller Wright NEGOTIATION4Stephen Shaw
1002Julie F FigeroaIndia2024-05-12Dorl, James J Esq UNQUALIFIED60Xuxue Feng
1003Arvin H RoysterJapan2024-05-01Chanay, Jeffrey A Esq PROPOSAL80Bernardo Dominic
1004Emily X NickaArgentina2024-05-09Feltz Printing Service RENEWAL21Ioni Bowcher
1005Jones N BriddickSpain2024-04-30Truhlar And Truhlar Attys UNQUALIFIED2Elwin Sharvill
1006Rodrigues Y SaylorsJapan2024-05-10Dorl, James J Esq NEGOTIATION55Elwin Sharvill
1007Tony M GlickGermany2024-04-20Buckley Miller Wright QUALIFIED64Onyama Limba
1008Cody G FigeroaUnited Kingdom2024-05-05Feiner Bros NEGOTIATION56Stephen Shaw
1009Johnson Q BowleyIndia2024-04-20Commercial Press RENEWAL13Stephen Shaw
1010Aruna W DoeFrance2024-05-05Buckley Miller Wright NEGOTIATION88Xuxue Feng
1011Cody D OstroskyGermany2024-05-02Commercial Press RENEWAL22Stephen Shaw
1012Octavia F GauchoJapan2024-04-26Rangoni Of Florence PROPOSAL32Bernardo Dominic
1013Salvatore O AlbaresIndia2024-05-06Printing Dimensions RENEWAL76Onyama Limba
1014David L CaldareraItaly2024-05-12Chemel, James L Cpa NEGOTIATION46Bernardo Dominic
1015Clifford H BriddickBrazil2024-05-10Rousseaux, Michael Esq QUALIFIED10Xuxue Feng
1016Chavez U FigeroaAustralia2024-04-26Chanay, Jeffrey A Esq NEGOTIATION56Anna Fali
1017Isabel R TollnerJapan2024-05-06Chemel, James L Cpa UNQUALIFIED81Onyama Limba
1018Sinclair X GlickFrance2024-04-26Commercial Press RENEWAL54Elwin Sharvill
1019Francesco H GlickSpain2024-05-10Commercial Press NEGOTIATION25Bernardo Dominic
1020Ivar B RimItaly2024-04-29Benton, John B Jr PROPOSAL27Elwin Sharvill
1021Ashley K PerinGermany2024-04-18Chanay, Jeffrey A Esq PROPOSAL13Elwin Sharvill
1022Leon X PoquetteJapan2024-04-20Chanay, Jeffrey A Esq UNQUALIFIED96Onyama Limba
1023Julie F AlbaresFrance2024-05-06Feltz Printing Service UNQUALIFIED28Onyama Limba
1024Leja E OldroydBrazil2024-04-20Feiner Bros UNQUALIFIED29Xuxue Feng
1025Deepesh P KuskoBrazil2024-04-21Commercial Press UNQUALIFIED43Anna Fali
1026Misaki W ChuiFrance2024-05-05Chanay, Jeffrey A Esq PROPOSAL52Ivan Magalhaes
1027Sinclair L RimCanada2024-04-24Chemel, James L Cpa UNQUALIFIED18Anna Fali
1028Julie C RimJapan2024-05-02Buckley Miller Wright RENEWAL5Ivan Magalhaes
1029Ricardo F RulapaughItaly2024-04-23Truhlar And Truhlar Attys UNQUALIFIED71Ivan Magalhaes
1030Misaki P InouyeArgentina2024-04-28Feltz Printing Service NEW31Stephen Shaw
1031Ashley S PoquetteArgentina2024-04-15Commercial Press NEW61Asiya Javayant
1032Ivar V RimAustralia2024-04-22Printing Dimensions NEGOTIATION92Stephen Shaw
1033Kaitlin O TollnerFrance2024-04-25King, Christopher A Esq NEGOTIATION38Onyama Limba
1034Smith S RoysterUnited Kingdom2024-04-28Benton, John B Jr UNQUALIFIED92Ivan Magalhaes
1035Misaki Y PoquetteCanada2024-04-24Feltz Printing Service NEW76Ioni Bowcher
1036Tony N DoeCanada2024-05-05Buckley Miller Wright RENEWAL51Onyama Limba
1037Cody W OstroskyJapan2024-05-05Chanay, Jeffrey A Esq NEW6Ivan Magalhaes
1038Leon F SlusarskiAustralia2024-05-03Rangoni Of Florence UNQUALIFIED32Onyama Limba
1039Sinclair P NestleGermany2024-05-08Dorl, James J Esq RENEWAL69Ioni Bowcher
1040Sinclair H PaprockiArgentina2024-05-03Chanay, Jeffrey A Esq PROPOSAL11Elwin Sharvill
1041Nicolas K KolmetzAustralia2024-05-12Dorl, James J Esq RENEWAL74Xuxue Feng
1042Rodrigues T WhobreyArgentina2024-04-19Rangoni Of Florence RENEWAL5Ivan Magalhaes
1043Isabel Z GauchoSpain2024-04-22Chapman, Ross E Esq NEGOTIATION53Asiya Javayant
1044David K FerenczSpain2024-04-24Rousseaux, Michael Esq RENEWAL46Bernardo Dominic
1045Greenwood S ButtBrazil2024-04-20King, Christopher A Esq NEGOTIATION1Stephen Shaw
1046Deepesh G MaletArgentina2024-05-09Feltz Printing Service NEW87Ioni Bowcher
1047Murillo B GauchoUnited Kingdom2024-05-08Truhlar And Truhlar Attys RENEWAL99Xuxue Feng
1048Jones B CampainBrazil2024-04-25Chapman, Ross E Esq RENEWAL49Ioni Bowcher
1049Greenwood E BowleyArgentina2024-04-28Truhlar And Truhlar Attys RENEWAL61Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Murillo X PaprockiGermanyBernardo Dominic QUALIFIED
Smith L RulapaughJapanElwin Sharvill NEGOTIATION
Deepesh M MacleadBrazilBernardo Dominic NEGOTIATION
Jeanfrancois B PerinArgentinaBernardo Dominic PROPOSAL
Ashley A GarufiAustraliaIvan Magalhaes NEGOTIATION
Julie Z VocelkaItalyIvan Magalhaes RENEWAL
Wickens A ShinkoFranceStephen Shaw QUALIFIED
Julie M RimJapanAmy Elsner NEGOTIATION
Maria Z GlickSpainOnyama Limba NEGOTIATION
Clifford W WhobreyRussiaAmy Elsner NEGOTIATION
James R CaudyRussiaXuxue Feng RENEWAL
Julie Z GarufiItalyAnna Fali PROPOSAL
Aditya P KuskoBrazilAsiya Javayant UNQUALIFIED
Francesco F StockhamCanadaStephen Shaw QUALIFIED
Salvatore Q BriddickSpainIoni Bowcher PROPOSAL
Stacey S GarufiCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois S TollnerIndiaElwin Sharvill QUALIFIED
Antonio D FlosiJapanXuxue Feng NEGOTIATION
Ashley K RimArgentinaXuxue Feng RENEWAL
Stacey U CampainAustraliaOnyama Limba NEGOTIATION
Silvio K DarakjyCanadaIoni Bowcher NEGOTIATION
Costa Z FlosiAustraliaAmy Elsner UNQUALIFIED
Leon H ButtUnited KingdomStephen Shaw NEW
Maisha J MorascaGermanyAnna Fali NEGOTIATION
Maria T WaycottCanadaStephen Shaw RENEWAL
Murillo Q MacleadBrazilStephen Shaw UNQUALIFIED
Nicolas N MorascaRussiaElwin Sharvill NEW
Deepesh Q WhobreyGermanyBernardo Dominic UNQUALIFIED
Sinclair G SaylorsUnited KingdomAsiya Javayant RENEWAL
Jefferson Z CaudyUnited KingdomIoni Bowcher PROPOSAL
Octavia Z SaylorsItalyStephen Shaw NEW
Ricardo C KuskoAustraliaAnna Fali NEGOTIATION
Leja T VenereIndiaAnna Fali QUALIFIED
James Y InouyeItalyIoni Bowcher RENEWAL
Costa W SergiJapanIvan Magalhaes PROPOSAL
David J BowleyAustraliaIoni Bowcher PROPOSAL
Ashley A InouyeItalyIvan Magalhaes QUALIFIED
Maisha H WieserIndiaStephen Shaw QUALIFIED
Cody D SchemmerSpainBernardo Dominic RENEWAL
Mayumi S DarakjyUnited KingdomAsiya Javayant UNQUALIFIED
Costa Y FlosiCanadaOnyama Limba UNQUALIFIED
Johnson A StensethAustraliaXuxue Feng NEGOTIATION
Izzy R SaylorsIndiaAmy Elsner NEW
Silvio J NickaAustraliaOnyama Limba UNQUALIFIED
Stacey U BowleyIndiaIoni Bowcher NEW
Munro L ChuiBrazilAsiya Javayant NEW
Julie N ButtRussiaElwin Sharvill NEW
Aditya Z MaletGermanyBernardo Dominic QUALIFIED
Johnson Q StensethCanadaOnyama Limba UNQUALIFIED
Murillo L SlusarskiFranceIvan Magalhaes QUALIFIED
Frozen Columns
Name
Izzy W Waycott
Leon F Marrier
Smith M Sergi
Jones O Royster
Ashley W Venere
Darci K Paprocki
Stacey N Caldarera
Smith Y Ruta
Stacey L Caudy
Leja J Campain
Aditya E Gillian
Rodrigues V Inouye
Jeanfrancois D Kolmetz
Ivar D Sergi
Nicolas M Tollner
Smith H Darakjy
Greenwood C Venere
Cody U Slusarski
Alejandro R Schemmer
Francesco P Marrier
Sinclair N Stenseth
Emily W Albares
Juan I Tollner
Izzy B Vocelka
Isabel V Caldarera
Ricardo H Dilliard
Clifford F Bowley
Wickens D Sergi
Leon O Ruta
Maisha S Gillian
Chavez W Venere
Arvin I Nestle
Juan C Inouye
Maria X Perin
Misaki Y Foller
Aruna D Malet
Ricardo R Gaucho
Salvatore H Malet
Jennifer O Foller
Murillo J Waycott
Tony Y Garufi
Izzy K Darakjy
Isabel D Ferencz
Jones G Schemmer
Salvatore K Gillian
Cody S Amigon
Misaki R Gaucho
Ricardo J Poquette
Julie R Maclead
Johnson L Waycott
IdCountryDate
1000Brazil2024-04-22
1001Australia2024-05-05
1002India2024-04-20
1003Australia2024-04-29
1004Australia2024-04-20
1005Canada2024-04-22
1006Germany2024-04-13
1007India2024-05-12
1008Australia2024-05-10
1009India2024-05-02
1010United Kingdom2024-04-28
1011Canada2024-05-04
1012Brazil2024-04-24
1013Italy2024-04-18
1014India2024-05-01
1015United Kingdom2024-04-15
1016India2024-04-26
1017Italy2024-05-11
1018Argentina2024-04-28
1019India2024-05-11
1020Japan2024-04-20
1021Spain2024-05-06
1022Canada2024-05-09
1023Australia2024-05-06
1024Australia2024-04-27
1025Japan2024-05-09
1026Australia2024-04-15
1027United Kingdom2024-05-06
1028Spain2024-04-16
1029India2024-04-14
1030Australia2024-04-29
1031Australia2024-05-07
1032Germany2024-05-04
1033Germany2024-05-08
1034Russia2024-05-05
1035Argentina2024-04-19
1036Australia2024-04-17
1037Germany2024-05-09
1038Japan2024-05-02
1039Italy2024-04-21
1040Australia2024-04-13
1041Russia2024-04-16
1042Spain2024-04-20
1043Spain2024-04-21
1044Japan2024-04-21
1045Italy2024-04-24
1046Russia2024-04-13
1047Italy2024-04-30
1048Argentina2024-04-29
1049Italy2024-04-15

On-Demand Data

NameIdCountryDate
Mayumi L Perin1000Brazil2024-05-03
Chavez T Stenseth1001Argentina2024-05-01
Octavia M Gaucho1002Australia2024-05-12
Claire D Caldarera1003Japan2024-05-06
Leon E Nestle1004Canada2024-04-25
Jeanfrancois H Glick1005Argentina2024-04-21
Kadeem K Paprocki1006Russia2024-04-25
Ivar N Venere1007Russia2024-05-06
Johnson Z Rim1008Japan2024-04-26
Rodrigues X Gillian1009Italy2024-04-22
Jones S Malet1010Germany2024-04-25
Julie A Nestle1011Canada2024-04-27
Izzy F Glick1012Canada2024-04-27
Munro T Gillian1013Italy2024-05-09
Johnson X Campain1014Argentina2024-04-27
Ricardo F Malet1015Australia2024-04-16
Maisha P Ferencz1016France2024-04-18
Aditya H Bowley1017Russia2024-04-21
Emily I Inouye1018India2024-04-28
Alejandro A Paprocki1019France2024-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco U DarakjySpainXuxue Feng NEW
Maria Q FigeroaCanadaAnna Fali NEW
Izzy K MaletFranceElwin Sharvill PROPOSAL
Mayumi I OstroskyIndiaAnna Fali PROPOSAL
Jennifer G WaycottArgentinaIvan Magalhaes NEGOTIATION
Aika D MorascaCanadaAnna Fali NEW
Claire C GillianAustraliaAmy Elsner UNQUALIFIED
Darci B FlosiFranceStephen Shaw NEW
Ricardo K CaudyRussiaStephen Shaw PROPOSAL
Munro T SaylorsSpainBernardo Dominic UNQUALIFIED
Mayumi E AmigonRussiaAnna Fali QUALIFIED
Johnson P StockhamCanadaXuxue Feng NEW
Ivar L RulapaughGermanyElwin Sharvill UNQUALIFIED
Emily T GarufiRussiaIvan Magalhaes NEGOTIATION
Jefferson F MacleadItalyStephen Shaw NEGOTIATION
Kaitlin K FerenczRussiaIoni Bowcher RENEWAL
Adams C MacleadBrazilAnna Fali NEGOTIATION
Emily A SchemmerJapanAsiya Javayant NEW
Clifford P PoquetteUnited KingdomIoni Bowcher RENEWAL
Faith Z AlbaresJapanAmy Elsner PROPOSAL
Leja W WhobreyIndiaAmy Elsner NEW
Misaki M NestleGermanyBernardo Dominic UNQUALIFIED
Maria Q CaudyAustraliaOnyama Limba NEGOTIATION
Ivar N IturbideIndiaAmy Elsner RENEWAL
Leja B PoquetteFranceAnna Fali RENEWAL
Salvatore K RimGermanyAnna Fali PROPOSAL
Mayumi I TollnerBrazilAnna Fali QUALIFIED
Munro E BowleyRussiaOnyama Limba UNQUALIFIED
Munro R KolmetzRussiaXuxue Feng UNQUALIFIED
David S BriddickRussiaOnyama Limba RENEWAL
Ricardo G GlickAustraliaIoni Bowcher NEGOTIATION
Claire D AlbaresAustraliaAmy Elsner NEW
Rodrigues F SlusarskiUnited KingdomAmy Elsner PROPOSAL
Kaitlin S DarakjyAustraliaAmy Elsner NEW
Wickens A WieserUnited KingdomIoni Bowcher NEGOTIATION
Deepesh N GarufiJapanAmy Elsner RENEWAL
Ivar O RimSpainIvan Magalhaes RENEWAL
Cody S BriddickCanadaIvan Magalhaes RENEWAL
Francesco B TollnerArgentinaAmy Elsner RENEWAL
Mayumi G ButtIndiaAnna 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>