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
Leon A ChuiItalyXuxue Feng RENEWAL
Sinclair C WieserUnited KingdomIoni Bowcher UNQUALIFIED
Kadeem U WhobreySpainIoni Bowcher NEW
Alejandro C MacleadItalyAsiya Javayant RENEWAL
Jeanfrancois A PoquetteArgentinaAnna Fali PROPOSAL
Misaki W PaprockiFranceOnyama Limba PROPOSAL
Smith Y VocelkaJapanAsiya Javayant NEGOTIATION
Wickens D GauchoGermanyAnna Fali QUALIFIED
Aika L CaldareraGermanyOnyama Limba NEW
Silvio S RutaBrazilXuxue Feng UNQUALIFIED
Tony M OldroydCanadaElwin Sharvill NEGOTIATION
Silvio B MorascaRussiaElwin Sharvill PROPOSAL
Leja F CaldareraFranceOnyama Limba NEW
Stacey N SlusarskiRussiaBernardo Dominic NEGOTIATION
Maisha W SaylorsUnited KingdomAsiya Javayant QUALIFIED
Izzy T FlosiArgentinaStephen Shaw QUALIFIED
Cody M VenereArgentinaOnyama Limba RENEWAL
Johnson Q ChuiCanadaIoni Bowcher NEW
Mayumi G CaldareraArgentinaElwin Sharvill QUALIFIED
Clifford L OstroskyAustraliaAmy Elsner NEW
Kaitlin N CampainRussiaElwin Sharvill RENEWAL
Jeanfrancois L DoeGermanyAmy Elsner QUALIFIED
Murillo P ButtBrazilAmy Elsner QUALIFIED
Morrow U VenereUnited KingdomAmy Elsner RENEWAL
Jefferson L MacleadFranceOnyama Limba NEW
James V RoysterBrazilIvan Magalhaes RENEWAL
Ricardo P PerinUnited KingdomBernardo Dominic NEW
Aditya K KuskoArgentinaAnna Fali RENEWAL
Francesco B FigeroaSpainAsiya Javayant PROPOSAL
Munro X OldroydFranceAnna Fali RENEWAL
Octavia H GlickIndiaStephen Shaw NEW
Morrow I KolmetzIndiaAnna Fali PROPOSAL
Jeanfrancois M OldroydRussiaIvan Magalhaes RENEWAL
Octavia G GillianCanadaAsiya Javayant NEW
Julie Y RimJapanStephen Shaw PROPOSAL
Ashley D BriddickBrazilIvan Magalhaes QUALIFIED
Claire E CaldareraCanadaXuxue Feng RENEWAL
Antonio H GillianArgentinaAnna Fali UNQUALIFIED
Ashley Q BriddickItalyIvan Magalhaes PROPOSAL
Greenwood U OldroydGermanyStephen Shaw QUALIFIED
Misaki T RoysterIndiaIvan Magalhaes NEGOTIATION
Leon A BriddickItalyIoni Bowcher QUALIFIED
Izzy J IturbideAustraliaAnna Fali QUALIFIED
Izzy B OldroydFranceAsiya Javayant PROPOSAL
Stacey I OldroydBrazilOnyama Limba NEW
Izzy S MaletItalyStephen Shaw QUALIFIED
Adams E CaldareraIndiaAnna Fali QUALIFIED
Maisha F ChuiCanadaAsiya Javayant QUALIFIED
Clifford H RulapaughSpainAnna Fali NEGOTIATION
Munro N KuskoJapanXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Stacey D NickaCanadaAmy Elsner RENEWAL
Octavia I RimJapanXuxue Feng UNQUALIFIED
Mayumi O TollnerItalyAmy Elsner RENEWAL
Aruna K GillianFranceStephen Shaw NEW
Faith O WieserFranceXuxue Feng RENEWAL
Juan T CampainUnited KingdomIoni Bowcher RENEWAL
Ashley H RoysterIndiaAnna Fali UNQUALIFIED
Aditya I RoysterArgentinaBernardo Dominic PROPOSAL
Aruna S GarufiItalyIvan Magalhaes UNQUALIFIED
James I ChuiCanadaIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja K ButtIndia2024-05-04Buckley Miller Wright UNQUALIFIED8Xuxue Feng
1001Ricardo F RutaGermany2024-04-27Truhlar And Truhlar Attys RENEWAL42Ioni Bowcher
1002Smith U SlusarskiGermany2024-05-06Chapman, Ross E Esq PROPOSAL49Xuxue Feng
1003Rodrigues W WaycottAustralia2024-05-03Benton, John B Jr RENEWAL39Amy Elsner
1004Alejandro N VocelkaArgentina2024-04-25Printing Dimensions PROPOSAL67Asiya Javayant
1005Ricardo E NestleIndia2024-04-17King, Christopher A Esq NEW65Ioni Bowcher
1006Maisha A DilliardFrance2024-04-18Feiner Bros NEW17Onyama Limba
1007Misaki Z NickaGermany2024-04-14Chapman, Ross E Esq QUALIFIED75Ivan Magalhaes
1008Maisha P RimJapan2024-04-14Dorl, James J Esq NEW92Asiya Javayant
1009Leja Q ShinkoCanada2024-04-22Buckley Miller Wright QUALIFIED83Onyama Limba
1010Ricardo J TollnerAustralia2024-04-19Printing Dimensions QUALIFIED57Elwin Sharvill
1011Kaitlin Y GillianIndia2024-05-01Benton, John B Jr NEW97Ivan Magalhaes
1012Johnson Q BowleyCanada2024-05-04Printing Dimensions NEGOTIATION31Asiya Javayant
1013Ivar L NickaGermany2024-05-03Commercial Press QUALIFIED28Asiya Javayant
1014Emily B GarufiFrance2024-05-06Commercial Press UNQUALIFIED11Anna Fali
1015Izzy S InouyeBrazil2024-05-01Buckley Miller Wright NEGOTIATION41Xuxue Feng
1016Munro L FigeroaItaly2024-04-25Feiner Bros UNQUALIFIED30Ioni Bowcher
1017Claire B CaudyGermany2024-04-18Commercial Press NEW9Bernardo Dominic
1018Chavez I CampainSpain2024-04-24Truhlar And Truhlar Attys PROPOSAL93Onyama Limba
1019Leja B BowleyUnited Kingdom2024-04-24Dorl, James J Esq NEGOTIATION6Bernardo Dominic
1020Ashley F PaprockiFrance2024-04-24Printing Dimensions UNQUALIFIED46Stephen Shaw
1021Murillo G BriddickArgentina2024-04-11Rangoni Of Florence RENEWAL68Stephen Shaw
1022Silvio M CaudySpain2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED93Ivan Magalhaes
1023Izzy I BologniaItaly2024-05-02Feltz Printing Service UNQUALIFIED73Amy Elsner
1024Alejandro I SergiSpain2024-05-02Commercial Press RENEWAL20Onyama Limba
1025Chavez F NestleUnited Kingdom2024-04-28Buckley Miller Wright UNQUALIFIED4Stephen Shaw
1026Aruna B ChuiBrazil2024-04-14Morlong Associates RENEWAL97Elwin Sharvill
1027Aika Y SaylorsUnited Kingdom2024-04-27Rousseaux, Michael Esq QUALIFIED15Elwin Sharvill
1028Greenwood M BriddickIndia2024-04-23King, Christopher A Esq NEW86Ioni Bowcher
1029Jennifer W PaprockiGermany2024-05-03Benton, John B Jr UNQUALIFIED64Ivan Magalhaes
1030Francesco U BologniaBrazil2024-04-14Feiner Bros QUALIFIED33Bernardo Dominic
1031Chavez Q PaprockiItaly2024-04-17Rangoni Of Florence RENEWAL34Ivan Magalhaes
1032Octavia Q IturbideBrazil2024-04-19Feltz Printing Service PROPOSAL68Onyama Limba
1033Smith K MaletCanada2024-04-16Feiner Bros QUALIFIED34Ioni Bowcher
1034Murillo P DilliardUnited Kingdom2024-04-29Commercial Press RENEWAL34Asiya Javayant
1035Kaitlin J OldroydArgentina2024-04-23Feltz Printing Service RENEWAL76Xuxue Feng
1036Leon V DilliardAustralia2024-05-02Chemel, James L Cpa RENEWAL82Onyama Limba
1037Mayumi U FlosiItaly2024-04-09Printing Dimensions QUALIFIED85Bernardo Dominic
1038Chavez H FigeroaBrazil2024-04-12Feltz Printing Service QUALIFIED20Bernardo Dominic
1039Leja G FlosiItaly2024-04-29Chapman, Ross E Esq QUALIFIED44Elwin Sharvill
1040Cody U CaldareraCanada2024-04-24Rangoni Of Florence UNQUALIFIED90Ioni Bowcher
1041Greenwood H PaprockiIndia2024-05-01Morlong Associates NEGOTIATION62Anna Fali
1042Aruna R FollerUnited Kingdom2024-04-30Buckley Miller Wright NEW61Bernardo Dominic
1043Morrow P PoquetteSpain2024-04-14Rangoni Of Florence NEW72Ioni Bowcher
1044Tony Q NickaGermany2024-04-21Printing Dimensions PROPOSAL99Asiya Javayant
1045Emily S MacleadArgentina2024-04-21Truhlar And Truhlar Attys NEW77Onyama Limba
1046Octavia A CaudyJapan2024-04-10Feltz Printing Service NEGOTIATION8Stephen Shaw
1047Kaitlin H FlosiUnited Kingdom2024-04-15Rangoni Of Florence RENEWAL97Elwin Sharvill
1048Aditya Y FerenczSpain2024-04-13Chapman, Ross E Esq UNQUALIFIED43Ioni Bowcher
1049Kadeem V FlosiAustralia2024-04-28Commercial Press PROPOSAL30Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Nicolas D MorascaIndiaElwin Sharvill NEW
Clifford E GillianCanadaAmy Elsner RENEWAL
Greenwood Q PaprockiItalyAsiya Javayant RENEWAL
Adams M RulapaughBrazilIvan Magalhaes RENEWAL
Tony G DilliardSpainAmy Elsner QUALIFIED
Nicolas U GarufiFranceIoni Bowcher NEGOTIATION
Sinclair Y RulapaughSpainStephen Shaw QUALIFIED
Izzy U MaletItalyStephen Shaw UNQUALIFIED
Costa P WieserGermanyXuxue Feng QUALIFIED
Adams U GillianIndiaOnyama Limba NEW
Morrow H VenereGermanyXuxue Feng UNQUALIFIED
Leja S IturbideItalyStephen Shaw QUALIFIED
Salvatore P ChuiSpainBernardo Dominic QUALIFIED
Leja B MarrierUnited KingdomStephen Shaw UNQUALIFIED
Stacey D DarakjyIndiaElwin Sharvill UNQUALIFIED
Morrow F GlickAustraliaIoni Bowcher QUALIFIED
Jeanfrancois U TollnerCanadaIoni Bowcher QUALIFIED
Leon D VocelkaJapanAmy Elsner UNQUALIFIED
Darci V PaprockiBrazilElwin Sharvill QUALIFIED
Tony S BowleyGermanyBernardo Dominic NEW
Greenwood S PoquetteAustraliaAmy Elsner UNQUALIFIED
Antonio T SaylorsGermanyBernardo Dominic QUALIFIED
Leon W MaletArgentinaAmy Elsner NEGOTIATION
Kadeem U MarrierBrazilAsiya Javayant NEGOTIATION
Costa L SchemmerArgentinaIoni Bowcher RENEWAL
Darci K PaprockiAustraliaElwin Sharvill NEGOTIATION
Claire M DoeArgentinaStephen Shaw PROPOSAL
Johnson F StensethAustraliaStephen Shaw RENEWAL
Mujtaba J GauchoAustraliaAmy Elsner QUALIFIED
Misaki X ChuiFranceAmy Elsner UNQUALIFIED
Smith E CaldareraIndiaStephen Shaw UNQUALIFIED
Smith V BowleyItalyIoni Bowcher PROPOSAL
Jones H InouyeAustraliaAsiya Javayant QUALIFIED
Maria O MacleadGermanyOnyama Limba PROPOSAL
Morrow Z OstroskyIndiaElwin Sharvill PROPOSAL
Johnson D AmigonCanadaAmy Elsner UNQUALIFIED
Octavia J StockhamJapanXuxue Feng PROPOSAL
Jeanfrancois D MaletFranceIvan Magalhaes UNQUALIFIED
Adams K StensethAustraliaElwin Sharvill NEW
Nicolas Y MaletArgentinaOnyama Limba NEGOTIATION
Alejandro I FigeroaJapanElwin Sharvill NEGOTIATION
David J PerinJapanAnna Fali NEW
Rodrigues Q SlusarskiBrazilStephen Shaw NEGOTIATION
Izzy Q BowleyCanadaAnna Fali QUALIFIED
Aruna H MarrierJapanAsiya Javayant UNQUALIFIED
Stacey O OstroskyItalyAsiya Javayant PROPOSAL
Adams Q CaudyFranceAnna Fali UNQUALIFIED
Jones R StensethSpainOnyama Limba NEW
Kaitlin S DarakjyIndiaXuxue Feng NEW
Sinclair J PaprockiFranceStephen Shaw QUALIFIED
Frozen Columns
Name
Izzy A Darakjy
James M Oldroyd
Silvio R Dilliard
Cody H Albares
Smith Y Royster
Faith D Perin
Smith M Nicka
Silvio N Perin
David Y Poquette
Aika G Amigon
Darci G Stockham
Claire S Albares
Ashley J Schemmer
Ashley L Whobrey
Tony X Figeroa
Leja O Flosi
Jeanfrancois G Darakjy
Jeanfrancois W Stockham
Aruna Q Saylors
Wickens N Saylors
Morrow A Morasca
Jones J Royster
Alejandro A Tollner
Johnson N Tollner
Jennifer Y Chui
Greenwood Y Venere
Sinclair T Ostrosky
Maisha N Paprocki
Greenwood Q Doe
Ivar Y Whobrey
James C Malet
Francesco Q Flosi
Smith S Flosi
Cody Z Figeroa
Ivar F Butt
Ivar A Gillian
Costa J Albares
Arvin D Figeroa
Morrow C Campain
Johnson L Doe
Emily I Morasca
Mayumi V Nestle
Darci H Albares
Kaitlin D Malet
Stacey M Nestle
Julie D Darakjy
Nicolas Q Poquette
Adams Q Malet
Darci W Saylors
Arvin X Kusko
IdCountryDate
1000France2024-04-21
1001Germany2024-04-16
1002India2024-04-14
1003Brazil2024-04-18
1004France2024-04-24
1005Brazil2024-04-21
1006Brazil2024-05-05
1007Japan2024-04-28
1008Canada2024-04-11
1009United Kingdom2024-04-20
1010India2024-05-01
1011Spain2024-04-21
1012Germany2024-04-13
1013Brazil2024-05-03
1014United Kingdom2024-04-16
1015Spain2024-05-01
1016Russia2024-05-05
1017Japan2024-04-12
1018Germany2024-04-29
1019Argentina2024-04-21
1020Brazil2024-04-24
1021Japan2024-04-13
1022United Kingdom2024-04-24
1023Argentina2024-04-08
1024Canada2024-05-06
1025Italy2024-04-26
1026Germany2024-05-01
1027Australia2024-04-23
1028India2024-04-24
1029Canada2024-04-26
1030Brazil2024-05-03
1031Russia2024-04-25
1032Canada2024-04-29
1033Argentina2024-04-30
1034Spain2024-05-04
1035Russia2024-04-14
1036France2024-05-05
1037Italy2024-05-03
1038France2024-04-08
1039Russia2024-05-02
1040Australia2024-04-09
1041Germany2024-04-11
1042Spain2024-04-28
1043Spain2024-04-30
1044Canada2024-05-04
1045Japan2024-04-14
1046India2024-04-16
1047Brazil2024-04-14
1048France2024-04-23
1049Germany2024-05-03

On-Demand Data

NameIdCountryDate
Murillo W Bolognia1000France2024-05-03
Claire K Bowley1001Brazil2024-04-11
Jones H Rulapaugh1002Brazil2024-04-21
David I Dilliard1003India2024-04-30
Francesco S Poquette1004United Kingdom2024-05-02
Cody T Oldroyd1005Argentina2024-04-15
Jefferson B Ferencz1006Argentina2024-04-25
Mayumi M Gaucho1007Canada2024-05-04
Kadeem D Rim1008Australia2024-04-24
Arvin D Figeroa1009Canada2024-04-21
Salvatore K Saylors1010Japan2024-04-18
Francesco P Slusarski1011Spain2024-05-05
Cody Y Caudy1012Spain2024-05-04
Wickens A Maclead1013Japan2024-04-30
Wickens J Dilliard1014Canada2024-04-28
Clifford U Kolmetz1015Canada2024-04-10
Antonio Z Schemmer1016Argentina2024-05-01
Smith E Inouye1017Argentina2024-04-27
Ashley X Royster1018Canada2024-04-18
Adams P Ostrosky1019Italy2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas S CampainFranceElwin Sharvill NEW
Ashley Z PaprockiCanadaElwin Sharvill PROPOSAL
Emily A ChuiArgentinaIvan Magalhaes QUALIFIED
Faith E MaletUnited KingdomAsiya Javayant RENEWAL
Faith Q ShinkoAustraliaStephen Shaw NEW
Aditya D InouyeUnited KingdomBernardo Dominic UNQUALIFIED
James D StockhamAustraliaAnna Fali QUALIFIED
Sinclair A FollerUnited KingdomIvan Magalhaes RENEWAL
Greenwood G MarrierAustraliaOnyama Limba RENEWAL
David G MaletUnited KingdomAmy Elsner PROPOSAL
Arvin D PoquetteAustraliaOnyama Limba UNQUALIFIED
Leja D FlosiFranceAmy Elsner QUALIFIED
Antonio E MarrierUnited KingdomBernardo Dominic RENEWAL
Rodrigues I FollerUnited KingdomOnyama Limba RENEWAL
Tony D PoquetteUnited KingdomIvan Magalhaes PROPOSAL
Cody F FerenczJapanXuxue Feng QUALIFIED
Mayumi N RutaSpainStephen Shaw PROPOSAL
Jeanfrancois L DilliardIndiaIoni Bowcher UNQUALIFIED
Stacey B RimAustraliaOnyama Limba RENEWAL
Aika M BowleySpainAnna Fali NEGOTIATION
Aruna J WaycottIndiaAsiya Javayant PROPOSAL
Murillo D InouyeCanadaOnyama Limba NEW
Sinclair V CaldareraUnited KingdomAsiya Javayant QUALIFIED
Antonio K PerinUnited KingdomOnyama Limba NEW
Maisha U GlickIndiaBernardo Dominic PROPOSAL
Kaitlin Q FigeroaAustraliaStephen Shaw NEW
Aruna H MacleadIndiaAsiya Javayant NEGOTIATION
Jefferson T GlickIndiaIvan Magalhaes RENEWAL
Izzy S KolmetzItalyAmy Elsner PROPOSAL
Julie Y IturbideBrazilElwin Sharvill UNQUALIFIED
Tony G MarrierFranceAnna Fali NEGOTIATION
Leon L NickaJapanOnyama Limba QUALIFIED
Murillo E TollnerFranceBernardo Dominic QUALIFIED
Emily P CaldareraIndiaStephen Shaw QUALIFIED
Salvatore D FollerIndiaBernardo Dominic UNQUALIFIED
Mayumi X KolmetzAustraliaBernardo Dominic QUALIFIED
Ricardo S StockhamArgentinaBernardo Dominic UNQUALIFIED
Kaitlin S FigeroaBrazilAmy Elsner QUALIFIED
Julie Y GauchoItalyElwin Sharvill NEW
Alejandro A MaletGermanyIvan Magalhaes PROPOSAL

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