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
Tony G GlickBrazilIoni Bowcher UNQUALIFIED
Francesco W KolmetzGermanyStephen Shaw UNQUALIFIED
Francesco O CaudyIndiaAnna Fali UNQUALIFIED
Costa B SlusarskiArgentinaOnyama Limba PROPOSAL
Aruna Z SlusarskiSpainXuxue Feng QUALIFIED
Sinclair I StensethCanadaAnna Fali RENEWAL
Darci B DarakjyUnited KingdomAmy Elsner NEGOTIATION
Arvin X GlickFranceIoni Bowcher QUALIFIED
David J DoeUnited KingdomBernardo Dominic NEGOTIATION
Aika V DoeArgentinaXuxue Feng QUALIFIED
Izzy Q FollerItalyAsiya Javayant UNQUALIFIED
David E VenereFranceBernardo Dominic NEW
Johnson Y GillianSpainIvan Magalhaes UNQUALIFIED
Clifford Y MaletSpainIoni Bowcher RENEWAL
Chavez N DilliardBrazilIoni Bowcher PROPOSAL
Arvin N StockhamSpainIoni Bowcher NEGOTIATION
Leon G AlbaresUnited KingdomAmy Elsner NEGOTIATION
Alejandro G DarakjyRussiaIoni Bowcher QUALIFIED
Kadeem G OldroydSpainBernardo Dominic RENEWAL
Greenwood H GauchoCanadaStephen Shaw UNQUALIFIED
Maisha S CaudySpainElwin Sharvill RENEWAL
Arvin R GauchoSpainAmy Elsner NEW
Misaki G ButtUnited KingdomAsiya Javayant NEGOTIATION
Adams L GauchoFranceAmy Elsner UNQUALIFIED
Deepesh M KolmetzSpainBernardo Dominic QUALIFIED
Nicolas A BologniaJapanAmy Elsner QUALIFIED
Faith I TollnerBrazilAnna Fali UNQUALIFIED
Salvatore D FlosiAustraliaXuxue Feng NEGOTIATION
Greenwood C PaprockiRussiaStephen Shaw RENEWAL
Deepesh I MaletItalyElwin Sharvill UNQUALIFIED
Jefferson U IturbideRussiaAsiya Javayant NEW
Francesco L BowleySpainStephen Shaw NEW
Francesco M BowleySpainElwin Sharvill NEW
Alejandro U MaletBrazilStephen Shaw RENEWAL
Alejandro I VenereJapanOnyama Limba NEGOTIATION
Cody T MacleadCanadaBernardo Dominic NEGOTIATION
Francesco T NestleRussiaAsiya Javayant NEW
Jeanfrancois U KolmetzBrazilOnyama Limba RENEWAL
Adams P IturbideItalyAnna Fali RENEWAL
Sinclair I MaletCanadaIoni Bowcher PROPOSAL
Costa M RoysterRussiaElwin Sharvill PROPOSAL
Alejandro H FlosiAustraliaAnna Fali NEW
Julie Q AmigonArgentinaIoni Bowcher NEW
Deepesh V PaprockiBrazilBernardo Dominic RENEWAL
Izzy U SchemmerIndiaIvan Magalhaes NEW
Stacey S VocelkaSpainStephen Shaw UNQUALIFIED
David Q ShinkoItalyXuxue Feng RENEWAL
Sinclair D NickaGermanyElwin Sharvill QUALIFIED
Emily K MaletFranceBernardo Dominic NEW
Aruna X VenereIndiaXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Kadeem F VocelkaJapanElwin Sharvill NEW
Maria W PoquetteIndiaXuxue Feng UNQUALIFIED
Mayumi D CaudyArgentinaElwin Sharvill RENEWAL
Sinclair U InouyeRussiaStephen Shaw NEW
Sinclair A GlickAustraliaIoni Bowcher NEW
Wickens V GauchoAustraliaIvan Magalhaes NEW
James Z GarufiSpainAnna Fali NEW
David R FlosiUnited KingdomOnyama Limba QUALIFIED
Tony Z WaycottBrazilBernardo Dominic RENEWAL
Arvin R FollerBrazilElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika K KuskoGermany2024-04-12Feltz Printing Service UNQUALIFIED51Elwin Sharvill
1001Cody Z OstroskyIndia2024-04-18Morlong Associates UNQUALIFIED99Xuxue Feng
1002Maria F ChuiAustralia2024-04-09Chanay, Jeffrey A Esq PROPOSAL96Ivan Magalhaes
1003Adams X VenereRussia2024-04-20Benton, John B Jr UNQUALIFIED90Elwin Sharvill
1004Sinclair B WieserIndia2024-04-27Chemel, James L Cpa QUALIFIED62Amy Elsner
1005Alejandro I GlickIndia2024-04-13Feltz Printing Service NEW61Amy Elsner
1006Juan L OstroskyRussia2024-04-11Benton, John B Jr NEW17Asiya Javayant
1007Johnson N FlosiAustralia2024-03-31Feiner Bros NEGOTIATION13Elwin Sharvill
1008Silvio C FlosiArgentina2024-04-04Rousseaux, Michael Esq UNQUALIFIED9Anna Fali
1009Stacey B KolmetzGermany2024-04-10Printing Dimensions UNQUALIFIED96Elwin Sharvill
1010Munro C PaprockiJapan2024-04-03Chanay, Jeffrey A Esq UNQUALIFIED75Ivan Magalhaes
1011Salvatore V CaldareraJapan2024-04-10Chapman, Ross E Esq PROPOSAL29Bernardo Dominic
1012Isabel Z AlbaresUnited Kingdom2024-04-01King, Christopher A Esq NEW78Anna Fali
1013Ivar R MaletJapan2024-04-11Truhlar And Truhlar Attys NEGOTIATION43Elwin Sharvill
1014Ashley K NickaJapan2024-04-24Feltz Printing Service PROPOSAL65Amy Elsner
1015Claire G MarrierFrance2024-04-17Chanay, Jeffrey A Esq NEW48Xuxue Feng
1016Adams H NickaItaly2024-04-02Chemel, James L Cpa NEW81Stephen Shaw
1017Cody J WhobreyRussia2024-04-23Rangoni Of Florence PROPOSAL27Ivan Magalhaes
1018Johnson W RimJapan2024-04-01Truhlar And Truhlar Attys RENEWAL76Onyama Limba
1019Alejandro Y FlosiGermany2024-04-23Rousseaux, Michael Esq PROPOSAL67Stephen Shaw
1020Johnson I KolmetzUnited Kingdom2024-04-14Feiner Bros RENEWAL36Ivan Magalhaes
1021Aruna J InouyeIndia2024-04-26King, Christopher A Esq RENEWAL48Amy Elsner
1022Octavia D FerenczCanada2024-04-26Printing Dimensions UNQUALIFIED8Anna Fali
1023Sinclair T DilliardUnited Kingdom2024-04-14Chemel, James L Cpa NEGOTIATION62Anna Fali
1024Darci V WhobreyUnited Kingdom2024-04-11Printing Dimensions NEW57Xuxue Feng
1025Salvatore I FigeroaArgentina2024-04-10Feltz Printing Service RENEWAL47Bernardo Dominic
1026Julie U OstroskyItaly2024-04-19Morlong Associates QUALIFIED26Amy Elsner
1027Murillo Q MaletFrance2024-04-03Rangoni Of Florence NEGOTIATION62Stephen Shaw
1028Jefferson G KuskoFrance2024-04-02Rousseaux, Michael Esq QUALIFIED22Amy Elsner
1029Nicolas H MorascaGermany2024-04-28Dorl, James J Esq UNQUALIFIED35Stephen Shaw
1030Aditya L GarufiFrance2024-04-20Feltz Printing Service RENEWAL0Anna Fali
1031Ricardo X TollnerUnited Kingdom2024-04-14Chemel, James L Cpa PROPOSAL48Bernardo Dominic
1032Tony D WieserGermany2024-04-01Benton, John B Jr NEW65Ivan Magalhaes
1033Wickens D DarakjySpain2024-04-29Dorl, James J Esq QUALIFIED78Xuxue Feng
1034Salvatore F WaycottSpain2024-04-17Morlong Associates PROPOSAL0Ivan Magalhaes
1035Claire A NickaAustralia2024-04-20Benton, John B Jr QUALIFIED36Amy Elsner
1036Alejandro M MarrierUnited Kingdom2024-04-27Dorl, James J Esq UNQUALIFIED30Xuxue Feng
1037Jefferson D IturbideJapan2024-04-18King, Christopher A Esq QUALIFIED79Xuxue Feng
1038Deepesh L MaletAustralia2024-04-09Benton, John B Jr NEW55Ivan Magalhaes
1039Arvin E ShinkoJapan2024-04-20Printing Dimensions QUALIFIED74Ivan Magalhaes
1040Adams A GarufiSpain2024-04-23Dorl, James J Esq RENEWAL92Ioni Bowcher
1041Francesco H GillianJapan2024-04-09Truhlar And Truhlar Attys NEW14Ivan Magalhaes
1042Juan J OstroskyFrance2024-04-23Chanay, Jeffrey A Esq QUALIFIED92Ioni Bowcher
1043Cody V CaldareraSpain2024-03-31Printing Dimensions UNQUALIFIED41Onyama Limba
1044Kaitlin D CaldareraAustralia2024-04-24Printing Dimensions RENEWAL94Stephen Shaw
1045Nicolas D AlbaresAustralia2024-04-25Printing Dimensions NEGOTIATION70Elwin Sharvill
1046David O RutaGermany2024-04-27Chanay, Jeffrey A Esq NEW80Onyama Limba
1047Stacey U InouyeItaly2024-04-17Commercial Press QUALIFIED42Ioni Bowcher
1048Stacey M InouyeJapan2024-04-17Chemel, James L Cpa NEGOTIATION94Ioni Bowcher
1049Misaki J NestleItaly2024-04-22Benton, John B Jr RENEWAL34Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Tony Y OstroskyRussiaElwin Sharvill QUALIFIED
David O FerenczItalyAsiya Javayant NEW
Chavez J FollerItalyIvan Magalhaes RENEWAL
Johnson W AlbaresIndiaAmy Elsner UNQUALIFIED
Greenwood K AlbaresGermanyIoni Bowcher PROPOSAL
Kaitlin X GillianSpainStephen Shaw QUALIFIED
Misaki N SlusarskiCanadaElwin Sharvill PROPOSAL
Claire H AmigonRussiaAnna Fali UNQUALIFIED
Clifford K CaldareraBrazilBernardo Dominic QUALIFIED
Jeanfrancois Z GlickItalyOnyama Limba NEGOTIATION
Claire S TollnerIndiaIoni Bowcher NEW
Aditya N OstroskyGermanyElwin Sharvill RENEWAL
Deepesh M WaycottSpainStephen Shaw PROPOSAL
James M IturbideUnited KingdomAmy Elsner NEGOTIATION
Arvin B AlbaresGermanyStephen Shaw PROPOSAL
Octavia F InouyeItalyXuxue Feng NEW
Munro X RoysterIndiaAmy Elsner NEW
Izzy D CaldareraCanadaBernardo Dominic UNQUALIFIED
Clifford U FigeroaGermanyOnyama Limba NEGOTIATION
Smith I PaprockiAustraliaXuxue Feng UNQUALIFIED
Maria D SaylorsSpainAsiya Javayant UNQUALIFIED
Aditya W AlbaresBrazilIvan Magalhaes NEGOTIATION
Costa Z ChuiAustraliaElwin Sharvill QUALIFIED
Chavez C IturbideJapanAnna Fali PROPOSAL
Leon V ChuiUnited KingdomStephen Shaw QUALIFIED
Kadeem U MorascaBrazilOnyama Limba UNQUALIFIED
Salvatore K KolmetzIndiaAsiya Javayant UNQUALIFIED
Faith M StensethCanadaIoni Bowcher RENEWAL
Aditya P CampainJapanXuxue Feng UNQUALIFIED
Aruna J CaldareraFranceElwin Sharvill NEW
Murillo Y PerinIndiaAsiya Javayant PROPOSAL
Aruna W ShinkoBrazilElwin Sharvill NEW
Alejandro T InouyeArgentinaAmy Elsner PROPOSAL
Jennifer Q AmigonFranceXuxue Feng NEGOTIATION
Claire T VenereSpainElwin Sharvill PROPOSAL
Maria F GarufiBrazilIoni Bowcher PROPOSAL
Clifford B FerenczFranceIoni Bowcher NEGOTIATION
Morrow U NestleRussiaAmy Elsner NEW
Morrow G KuskoUnited KingdomIvan Magalhaes UNQUALIFIED
James Q GlickBrazilStephen Shaw UNQUALIFIED
Adams W SlusarskiAustraliaIvan Magalhaes NEW
Adams U GarufiFranceStephen Shaw NEGOTIATION
Francesco A FlosiFranceBernardo Dominic RENEWAL
Ashley U NestleRussiaIoni Bowcher QUALIFIED
Morrow W BriddickArgentinaIoni Bowcher PROPOSAL
Ricardo S MaletItalyOnyama Limba UNQUALIFIED
Johnson K GillianJapanIvan Magalhaes NEW
Chavez C GillianRussiaIoni Bowcher QUALIFIED
James B FlosiRussiaElwin Sharvill NEW
Antonio S SaylorsCanadaBernardo Dominic PROPOSAL
Frozen Columns
Name
Jeanfrancois G Figeroa
Smith E Chui
Jefferson Z Campain
Jones S Royster
Juan C Figeroa
Munro J Paprocki
David W Butt
Munro C Poquette
Salvatore V Malet
Deepesh Z Rim
Tony R Marrier
Izzy D Darakjy
Aditya S Briddick
Mujtaba O Whobrey
Alejandro Z Ostrosky
Aruna M Figeroa
Antonio K Paprocki
Emily Q Maclead
Darci H Stockham
Adams X Rim
Jones C Butt
Maria W Whobrey
Maisha P Ferencz
David M Flosi
Smith M Maclead
Francesco O Darakjy
Darci C Glick
Octavia L Caudy
Aditya M Campain
Wickens U Doe
Munro I Foller
Adams P Doe
Johnson M Schemmer
Salvatore Z Stockham
Rodrigues N Saylors
David I Ostrosky
Murillo C Darakjy
Salvatore Z Inouye
Leon O Sergi
Leon M Caudy
Misaki A Oldroyd
Ivar Y Bowley
Ivar V Chui
Maisha E Saylors
James B Nestle
Jefferson M Nicka
Maisha O Bowley
Chavez L Venere
Claire G Waycott
Sinclair M Butt
IdCountryDate
1000France2024-04-22
1001United Kingdom2024-04-28
1002Japan2024-04-17
1003Brazil2024-04-06
1004Japan2024-04-23
1005Italy2024-04-11
1006Spain2024-04-28
1007Canada2024-04-17
1008Brazil2024-04-14
1009Canada2024-04-06
1010Argentina2024-04-18
1011Russia2024-04-24
1012Canada2024-04-07
1013Spain2024-04-12
1014Australia2024-04-08
1015Japan2024-04-17
1016Brazil2024-04-08
1017Canada2024-04-21
1018Italy2024-04-27
1019Germany2024-04-04
1020Russia2024-04-22
1021Germany2024-04-20
1022India2024-04-10
1023Australia2024-04-19
1024Argentina2024-04-15
1025Australia2024-04-21
1026Brazil2024-04-14
1027Japan2024-04-18
1028Japan2024-04-27
1029United Kingdom2024-04-29
1030Russia2024-04-14
1031India2024-04-06
1032Italy2024-04-03
1033Australia2024-04-07
1034Italy2024-04-01
1035Japan2024-04-01
1036United Kingdom2024-04-12
1037Japan2024-04-10
1038Japan2024-04-29
1039Russia2024-04-27
1040Argentina2024-04-19
1041Germany2024-04-20
1042Japan2024-04-24
1043France2024-04-27
1044Italy2024-04-27
1045Japan2024-04-07
1046Spain2024-04-11
1047Italy2024-04-24
1048Italy2024-04-12
1049United Kingdom2024-04-24

On-Demand Data

NameIdCountryDate
Clifford N Figeroa1000Russia2024-04-18
Izzy U Saylors1001Germany2024-04-02
Antonio T Paprocki1002India2024-04-27
Murillo X Maclead1003United Kingdom2024-04-07
Ricardo S Stenseth1004Japan2024-04-28
Ivar X Darakjy1005Russia2024-04-08
Aruna O Malet1006Australia2024-04-17
Costa P Iturbide1007Australia2024-04-12
Smith Q Glick1008India2024-04-14
Misaki Z Morasca1009Japan2024-04-16
Octavia X Paprocki1010Germany2024-04-10
Sinclair G Nestle1011United Kingdom2024-04-12
Wickens E Ferencz1012India2024-04-16
Kaitlin I Stenseth1013India2024-04-29
Tony V Bolognia1014Australia2024-04-13
Octavia L Albares1015France2024-04-26
Julie M Ruta1016Germany2024-04-17
Maisha T Gaucho1017Japan2024-04-29
Deepesh U Iturbide1018United Kingdom2024-04-06
Aruna D Shinko1019Russia2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson P StockhamSpainIoni Bowcher PROPOSAL
Ricardo A MaletRussiaAnna Fali PROPOSAL
Leja Z DoeSpainAnna Fali UNQUALIFIED
Maria R CampainRussiaXuxue Feng QUALIFIED
Deepesh D StockhamSpainElwin Sharvill NEW
Ivar B InouyeRussiaOnyama Limba RENEWAL
Antonio U WhobreyFranceXuxue Feng QUALIFIED
Sinclair C AlbaresGermanyIoni Bowcher UNQUALIFIED
Francesco Y ShinkoFranceIoni Bowcher RENEWAL
Jennifer F IturbideGermanyIoni Bowcher UNQUALIFIED
Maria M ButtCanadaIvan Magalhaes NEW
Ricardo V BologniaBrazilBernardo Dominic RENEWAL
Adams M CaudyArgentinaAsiya Javayant PROPOSAL
James E RulapaughItalyAnna Fali NEGOTIATION
Francesco O RutaAustraliaXuxue Feng RENEWAL
Faith J MaletArgentinaAsiya Javayant PROPOSAL
Murillo I PerinIndiaStephen Shaw NEGOTIATION
Tony P BriddickCanadaIoni Bowcher PROPOSAL
Faith A DilliardIndiaAsiya Javayant UNQUALIFIED
Juan L IturbideSpainStephen Shaw PROPOSAL
Aika P CaldareraRussiaXuxue Feng UNQUALIFIED
Kadeem J BowleyFranceStephen Shaw NEW
Arvin N PoquetteJapanIvan Magalhaes NEGOTIATION
David Y StensethFranceElwin Sharvill RENEWAL
Clifford K RulapaughBrazilStephen Shaw QUALIFIED
Leon W FerenczItalyIvan Magalhaes NEGOTIATION
Tony W StockhamSpainAsiya Javayant NEW
Munro P WaycottItalyOnyama Limba UNQUALIFIED
Munro U DoeItalyXuxue Feng QUALIFIED
Chavez H KolmetzSpainAnna Fali RENEWAL
Adams H MacleadItalyBernardo Dominic QUALIFIED
Emily X MacleadArgentinaBernardo Dominic UNQUALIFIED
Julie Z CaudyAustraliaStephen Shaw NEGOTIATION
Cody C StensethArgentinaXuxue Feng NEGOTIATION
Silvio S DilliardBrazilBernardo Dominic PROPOSAL
Isabel K PoquetteFranceXuxue Feng QUALIFIED
Jennifer B GlickRussiaXuxue Feng UNQUALIFIED
Morrow I ChuiArgentinaAmy Elsner QUALIFIED
Costa R DilliardItalyXuxue Feng QUALIFIED
Silvio C VenereSpainElwin Sharvill UNQUALIFIED

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