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
Ashley F AmigonArgentinaIvan Magalhaes UNQUALIFIED
Jefferson M PerinJapanAsiya Javayant UNQUALIFIED
Kadeem O BowleyArgentinaAmy Elsner NEGOTIATION
Nicolas U PerinCanadaAnna Fali PROPOSAL
Claire O MaletRussiaStephen Shaw PROPOSAL
Octavia V ChuiUnited KingdomIoni Bowcher UNQUALIFIED
Ricardo Y WhobreySpainIoni Bowcher QUALIFIED
Costa X RulapaughItalyIvan Magalhaes UNQUALIFIED
Clifford U SergiFranceIvan Magalhaes QUALIFIED
Aruna F SaylorsArgentinaAmy Elsner NEW
Izzy E FigeroaBrazilElwin Sharvill NEGOTIATION
Morrow G TollnerJapanAmy Elsner PROPOSAL
Munro O FlosiCanadaAmy Elsner RENEWAL
Octavia G GarufiArgentinaAsiya Javayant PROPOSAL
Ivar C RutaItalyIvan Magalhaes PROPOSAL
Stacey T KolmetzBrazilStephen Shaw PROPOSAL
Aika J NickaBrazilIoni Bowcher RENEWAL
Tony Z WieserSpainOnyama Limba UNQUALIFIED
Alejandro B GarufiFranceElwin Sharvill NEW
Mujtaba L SergiRussiaAmy Elsner NEW
Ivar Y WieserBrazilIvan Magalhaes QUALIFIED
Darci G InouyeSpainOnyama Limba NEW
Clifford S FerenczUnited KingdomStephen Shaw UNQUALIFIED
Antonio L FollerFranceAnna Fali PROPOSAL
Silvio H SchemmerGermanyElwin Sharvill QUALIFIED
Silvio M SchemmerFranceStephen Shaw NEW
Johnson R FlosiArgentinaBernardo Dominic UNQUALIFIED
Leon H VenereBrazilElwin Sharvill RENEWAL
Jennifer O AmigonArgentinaElwin Sharvill NEW
Costa W FerenczFranceOnyama Limba UNQUALIFIED
Izzy D DarakjyGermanyStephen Shaw QUALIFIED
Johnson L FigeroaAustraliaIvan Magalhaes PROPOSAL
Tony C VocelkaIndiaIvan Magalhaes PROPOSAL
Stacey M MarrierUnited KingdomBernardo Dominic NEW
Aditya L GarufiAustraliaElwin Sharvill RENEWAL
Leja L NestleGermanyAsiya Javayant RENEWAL
Juan O OstroskyIndiaBernardo Dominic UNQUALIFIED
Deepesh B OldroydIndiaElwin Sharvill UNQUALIFIED
Jefferson E SaylorsItalyOnyama Limba RENEWAL
Jefferson V RoysterArgentinaStephen Shaw QUALIFIED
Silvio X AlbaresGermanyElwin Sharvill NEW
Mujtaba Q StensethArgentinaXuxue Feng RENEWAL
Stacey A CaldareraBrazilIvan Magalhaes NEW
James T StensethItalyAmy Elsner NEGOTIATION
Greenwood R MarrierJapanAnna Fali PROPOSAL
Francesco H StensethSpainOnyama Limba PROPOSAL
Misaki M GillianJapanAmy Elsner UNQUALIFIED
Aruna J IturbideBrazilAsiya Javayant QUALIFIED
Smith C ButtAustraliaAnna Fali PROPOSAL
Ashley N CaldareraFranceOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Octavia P WieserJapanStephen Shaw RENEWAL
Kadeem H InouyeJapanAmy Elsner NEW
Kaitlin B PoquetteUnited KingdomXuxue Feng UNQUALIFIED
Jones W AlbaresItalyIoni Bowcher NEGOTIATION
Francesco U PoquetteCanadaBernardo Dominic UNQUALIFIED
Tony J KuskoBrazilOnyama Limba RENEWAL
Ivar W KuskoGermanyBernardo Dominic RENEWAL
Rodrigues D RutaBrazilXuxue Feng NEGOTIATION
Ivar U CaldareraItalyXuxue Feng QUALIFIED
Claire E GarufiGermanyAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford O FollerGermany2024-04-17Dorl, James J Esq NEGOTIATION64Ioni Bowcher
1001Izzy A OstroskyJapan2024-05-13Benton, John B Jr PROPOSAL16Elwin Sharvill
1002Juan S CaldareraIndia2024-05-02Commercial Press RENEWAL41Ioni Bowcher
1003Jennifer K AmigonUnited Kingdom2024-04-26Chemel, James L Cpa QUALIFIED32Stephen Shaw
1004Jeanfrancois I AlbaresItaly2024-05-08Dorl, James J Esq RENEWAL94Xuxue Feng
1005Claire N AlbaresRussia2024-04-22Benton, John B Jr QUALIFIED54Bernardo Dominic
1006Aditya D DarakjySpain2024-04-30Chapman, Ross E Esq RENEWAL59Amy Elsner
1007Jeanfrancois B StockhamFrance2024-04-24Chemel, James L Cpa QUALIFIED73Anna Fali
1008Antonio Q CaldareraAustralia2024-05-05Buckley Miller Wright PROPOSAL12Elwin Sharvill
1009Rodrigues C VenereItaly2024-05-11Chemel, James L Cpa UNQUALIFIED39Onyama Limba
1010Aika A WieserFrance2024-05-06Feiner Bros PROPOSAL47Anna Fali
1011Arvin M MaletRussia2024-04-21Feltz Printing Service QUALIFIED87Elwin Sharvill
1012Izzy S InouyeRussia2024-04-16Commercial Press UNQUALIFIED47Asiya Javayant
1013Jeanfrancois S SergiFrance2024-04-20Benton, John B Jr PROPOSAL48Onyama Limba
1014Cody R MorascaJapan2024-05-04King, Christopher A Esq NEGOTIATION40Elwin Sharvill
1015Costa E NestleJapan2024-04-21Dorl, James J Esq PROPOSAL22Amy Elsner
1016Murillo U SergiSpain2024-05-01Commercial Press NEGOTIATION27Elwin Sharvill
1017Julie C OldroydAustralia2024-04-26Commercial Press NEW38Ioni Bowcher
1018Sinclair W MaletFrance2024-04-19Dorl, James J Esq RENEWAL40Bernardo Dominic
1019Sinclair W NickaFrance2024-04-21Morlong Associates RENEWAL15Stephen Shaw
1020Mujtaba K FerenczFrance2024-05-08Chanay, Jeffrey A Esq QUALIFIED22Amy Elsner
1021James N MaletArgentina2024-05-11Commercial Press UNQUALIFIED30Bernardo Dominic
1022Rodrigues V FollerAustralia2024-05-13Morlong Associates PROPOSAL63Amy Elsner
1023Leja A CampainAustralia2024-04-24Rangoni Of Florence RENEWAL98Anna Fali
1024Maisha M SchemmerBrazil2024-04-23Morlong Associates PROPOSAL87Bernardo Dominic
1025Darci K BologniaGermany2024-04-27Truhlar And Truhlar Attys NEW37Amy Elsner
1026Murillo N OldroydRussia2024-04-16Feiner Bros NEW71Ioni Bowcher
1027Julie J BriddickRussia2024-04-19Rangoni Of Florence UNQUALIFIED58Amy Elsner
1028Arvin V BologniaFrance2024-04-23Chanay, Jeffrey A Esq NEW78Elwin Sharvill
1029Smith N NickaCanada2024-05-14Dorl, James J Esq NEGOTIATION38Ioni Bowcher
1030Jefferson S KuskoCanada2024-05-07Buckley Miller Wright NEW7Bernardo Dominic
1031Juan Z CaudyIndia2024-04-21Rousseaux, Michael Esq NEGOTIATION53Ioni Bowcher
1032Greenwood M TollnerBrazil2024-04-27Morlong Associates RENEWAL54Asiya Javayant
1033Munro G MorascaJapan2024-05-15Rousseaux, Michael Esq PROPOSAL7Anna Fali
1034Smith H DilliardFrance2024-04-17Feltz Printing Service RENEWAL26Anna Fali
1035Costa F GlickIndia2024-05-12Benton, John B Jr UNQUALIFIED13Xuxue Feng
1036Faith L RimArgentina2024-05-13Commercial Press NEW92Elwin Sharvill
1037Arvin C PaprockiBrazil2024-05-02Truhlar And Truhlar Attys RENEWAL93Amy Elsner
1038Maisha P ChuiCanada2024-05-03Buckley Miller Wright QUALIFIED44Ivan Magalhaes
1039Arvin Z IturbideGermany2024-05-06Dorl, James J Esq RENEWAL24Bernardo Dominic
1040Julie N BowleySpain2024-05-02Truhlar And Truhlar Attys PROPOSAL59Anna Fali
1041Leon K RimJapan2024-04-21Benton, John B Jr NEW14Ivan Magalhaes
1042Francesco V FlosiFrance2024-04-27Truhlar And Truhlar Attys UNQUALIFIED43Anna Fali
1043Morrow K ChuiRussia2024-05-07Feltz Printing Service NEGOTIATION13Asiya Javayant
1044Aditya V BologniaItaly2024-04-17Rousseaux, Michael Esq NEGOTIATION13Bernardo Dominic
1045Sinclair F GauchoIndia2024-04-21Morlong Associates PROPOSAL0Xuxue Feng
1046Ricardo C ShinkoRussia2024-05-11Chemel, James L Cpa RENEWAL69Stephen Shaw
1047Faith Q RutaArgentina2024-05-02Chanay, Jeffrey A Esq NEGOTIATION90Anna Fali
1048Francesco O SergiJapan2024-05-14Rousseaux, Michael Esq PROPOSAL87Ivan Magalhaes
1049Johnson U SaylorsArgentina2024-05-12Rangoni Of Florence PROPOSAL48Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Mayumi H RutaItalyAmy Elsner QUALIFIED
Misaki P PaprockiIndiaElwin Sharvill NEW
Maisha S StensethGermanyOnyama Limba RENEWAL
Faith N WieserGermanyAnna Fali NEW
Francesco I NestleAustraliaBernardo Dominic UNQUALIFIED
Ivar Y PerinBrazilIvan Magalhaes QUALIFIED
Aditya A BologniaArgentinaBernardo Dominic UNQUALIFIED
Clifford L GauchoItalyElwin Sharvill QUALIFIED
Kadeem A MorascaIndiaXuxue Feng NEGOTIATION
Kadeem Q RulapaughCanadaAsiya Javayant UNQUALIFIED
Smith G IturbideSpainOnyama Limba QUALIFIED
Claire E OldroydUnited KingdomBernardo Dominic UNQUALIFIED
Aruna L ButtIndiaAmy Elsner PROPOSAL
Deepesh S WaycottAustraliaAsiya Javayant PROPOSAL
Jefferson A PerinBrazilElwin Sharvill RENEWAL
Octavia J DarakjyIndiaIvan Magalhaes PROPOSAL
Octavia Y CaudyCanadaAnna Fali NEGOTIATION
Costa K MaletFranceAnna Fali UNQUALIFIED
Aditya J ButtCanadaStephen Shaw NEW
Octavia K OstroskyRussiaIoni Bowcher RENEWAL
David T BowleyItalyAsiya Javayant NEGOTIATION
Darci Z KuskoItalyElwin Sharvill NEGOTIATION
Octavia H VocelkaRussiaOnyama Limba NEW
Kadeem J FollerRussiaStephen Shaw NEGOTIATION
Maria T GarufiItalyOnyama Limba NEW
Chavez W CaldareraAustraliaAnna Fali NEGOTIATION
Aditya V NickaAustraliaAsiya Javayant RENEWAL
Mujtaba U MaletUnited KingdomOnyama Limba QUALIFIED
David K RimIndiaIvan Magalhaes NEGOTIATION
Rodrigues C DilliardCanadaIoni Bowcher RENEWAL
Jennifer A SchemmerJapanBernardo Dominic UNQUALIFIED
Leon P TollnerItalyIvan Magalhaes QUALIFIED
Julie G OstroskyGermanyIoni Bowcher UNQUALIFIED
Izzy F PoquetteCanadaAsiya Javayant PROPOSAL
Arvin V FollerSpainIvan Magalhaes QUALIFIED
Cody W RulapaughItalyElwin Sharvill PROPOSAL
Chavez C OstroskyUnited KingdomXuxue Feng NEW
Izzy M FigeroaFranceXuxue Feng NEW
Izzy C GillianIndiaIvan Magalhaes QUALIFIED
Claire J SaylorsUnited KingdomBernardo Dominic QUALIFIED
Antonio O FigeroaGermanyIoni Bowcher RENEWAL
Jones I SaylorsUnited KingdomXuxue Feng QUALIFIED
Kaitlin V GauchoCanadaIvan Magalhaes PROPOSAL
Chavez L MarrierGermanyAsiya Javayant UNQUALIFIED
Alejandro N IturbideSpainIvan Magalhaes UNQUALIFIED
Cody B RulapaughAustraliaIoni Bowcher RENEWAL
Arvin P PaprockiBrazilIvan Magalhaes PROPOSAL
Aika D AmigonJapanAnna Fali NEW
Rodrigues Y WaycottRussiaElwin Sharvill NEGOTIATION
Aruna G FollerGermanyElwin Sharvill NEW
Frozen Columns
Name
Jefferson V Ruta
Jeanfrancois F Morasca
Costa G Foller
Leja Z Vocelka
Jeanfrancois U Paprocki
Murillo C Ostrosky
Greenwood S Campain
Sinclair H Bolognia
Darci N Kusko
Maria X Rim
Izzy M Rulapaugh
Silvio O Stenseth
Claire R Whobrey
Nicolas L Iturbide
Mayumi W Chui
Johnson Q Gaucho
Julie P Briddick
Tony G Ruta
Cody B Amigon
Ashley O Glick
Costa B Chui
Arvin L Ruta
Nicolas O Malet
Rodrigues Q Vocelka
Mujtaba J Malet
Julie D Caudy
Octavia L Waycott
Leon D Kolmetz
Murillo A Waycott
Jennifer X Tollner
Darci N Ostrosky
Alejandro L Morasca
Isabel I Iturbide
Octavia N Ruta
Johnson Q Malet
Juan I Poquette
Mujtaba G Marrier
Mayumi Z Sergi
Silvio I Iturbide
Arvin W Campain
Kadeem U Caldarera
Rodrigues Q Saylors
Antonio R Rim
Jennifer B Bolognia
Faith D Albares
Smith D Nestle
Faith F Amigon
Cody V Glick
Chavez M Oldroyd
Aditya Z Rulapaugh
IdCountryDate
1000Canada2024-04-20
1001Australia2024-05-01
1002Australia2024-04-22
1003Germany2024-04-30
1004India2024-04-18
1005Germany2024-04-20
1006Spain2024-05-03
1007Russia2024-05-13
1008Argentina2024-05-12
1009Australia2024-05-03
1010Japan2024-05-14
1011Russia2024-05-02
1012Canada2024-05-09
1013Brazil2024-05-11
1014Canada2024-04-26
1015Canada2024-05-13
1016Argentina2024-04-23
1017Germany2024-05-13
1018Spain2024-04-20
1019Germany2024-05-04
1020Australia2024-05-09
1021United Kingdom2024-05-04
1022Germany2024-05-11
1023Australia2024-05-04
1024France2024-04-28
1025India2024-04-25
1026France2024-05-08
1027Italy2024-05-03
1028Brazil2024-05-06
1029France2024-04-26
1030Australia2024-05-03
1031United Kingdom2024-05-09
1032Canada2024-05-05
1033Brazil2024-05-10
1034Italy2024-05-04
1035Russia2024-04-16
1036France2024-04-24
1037Germany2024-04-27
1038France2024-04-23
1039India2024-04-28
1040France2024-04-26
1041Brazil2024-05-08
1042France2024-04-30
1043Germany2024-05-04
1044Canada2024-04-26
1045Germany2024-04-27
1046Russia2024-04-23
1047Germany2024-04-18
1048Brazil2024-05-11
1049France2024-05-15

On-Demand Data

NameIdCountryDate
Chavez O Chui1000Canada2024-05-05
Aditya P Waycott1001Spain2024-04-30
Jefferson N Flosi1002Italy2024-05-02
Morrow B Schemmer1003United Kingdom2024-04-19
Maisha F Marrier1004Japan2024-05-02
Aika P Royster1005Spain2024-04-17
Munro L Chui1006United Kingdom2024-04-17
Aika I Albares1007Brazil2024-05-03
Jeanfrancois D Briddick1008Australia2024-05-04
Antonio L Butt1009Russia2024-04-20
Jeanfrancois O Stenseth1010Australia2024-05-09
Mujtaba I Caldarera1011India2024-04-26
Ricardo X Inouye1012India2024-05-15
Francesco O Figeroa1013Russia2024-04-29
Aditya Y Glick1014India2024-04-16
David U Vocelka1015Italy2024-05-02
Misaki W Ruta1016Germany2024-04-17
Smith I Caudy1017Spain2024-04-24
Emily L Saylors1018Canada2024-04-26
Claire T Wieser1019Australia2024-05-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois G WhobreyArgentinaAsiya Javayant UNQUALIFIED
Claire L StockhamIndiaIvan Magalhaes RENEWAL
Chavez V SaylorsUnited KingdomElwin Sharvill QUALIFIED
Stacey T MaletJapanOnyama Limba UNQUALIFIED
Chavez U IturbideSpainIoni Bowcher RENEWAL
Maria S PoquetteIndiaBernardo Dominic NEW
Izzy K RimItalyIvan Magalhaes NEGOTIATION
Ricardo Q RutaUnited KingdomIvan Magalhaes RENEWAL
Faith L PaprockiFranceAsiya Javayant QUALIFIED
Deepesh E BriddickGermanyXuxue Feng NEW
Arvin J DilliardCanadaOnyama Limba NEGOTIATION
Isabel R MaletUnited KingdomStephen Shaw QUALIFIED
Salvatore S GarufiGermanyBernardo Dominic NEW
Jefferson P FerenczIndiaXuxue Feng PROPOSAL
Nicolas E ShinkoIndiaIoni Bowcher QUALIFIED
Aika A MacleadArgentinaAnna Fali UNQUALIFIED
Jones A AmigonUnited KingdomIoni Bowcher NEGOTIATION
Darci R WieserRussiaStephen Shaw QUALIFIED
Johnson K NickaBrazilXuxue Feng UNQUALIFIED
Kadeem V PoquetteIndiaElwin Sharvill PROPOSAL
Munro Y SlusarskiJapanStephen Shaw PROPOSAL
Chavez S BowleyGermanyAnna Fali UNQUALIFIED
Aruna V InouyeItalyBernardo Dominic NEGOTIATION
Isabel J WieserBrazilBernardo Dominic UNQUALIFIED
Morrow W VenereGermanyIvan Magalhaes QUALIFIED
Octavia D SlusarskiItalyStephen Shaw RENEWAL
Cody X DarakjyIndiaStephen Shaw RENEWAL
Kaitlin Y GauchoAustraliaElwin Sharvill UNQUALIFIED
David V DilliardJapanBernardo Dominic NEGOTIATION
Munro M ShinkoCanadaAnna Fali NEGOTIATION
Smith I DilliardUnited KingdomIoni Bowcher RENEWAL
Smith H DoeSpainAsiya Javayant NEW
Chavez S AmigonItalyOnyama Limba QUALIFIED
Darci C WaycottBrazilAnna Fali PROPOSAL
Sinclair D FlosiRussiaOnyama Limba QUALIFIED
Greenwood Q FerenczJapanOnyama Limba PROPOSAL
Stacey W WaycottRussiaIoni Bowcher PROPOSAL
Aditya Z MaletRussiaOnyama Limba RENEWAL
Jones R NestleBrazilAsiya Javayant UNQUALIFIED
Wickens Q AlbaresRussiaXuxue Feng 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>