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 N WieserCanadaElwin Sharvill QUALIFIED
Ivar N MaletItalyOnyama Limba RENEWAL
Claire I ButtRussiaXuxue Feng NEW
Aruna F GarufiBrazilXuxue Feng UNQUALIFIED
Adams F MaletSpainAsiya Javayant UNQUALIFIED
Sinclair G KolmetzRussiaAnna Fali PROPOSAL
Mujtaba I NickaUnited KingdomOnyama Limba NEGOTIATION
Aika V AlbaresArgentinaIoni Bowcher NEW
James X FerenczAustraliaBernardo Dominic PROPOSAL
Juan K FigeroaSpainAnna Fali PROPOSAL
Morrow I GauchoJapanOnyama Limba RENEWAL
Jones K PaprockiIndiaElwin Sharvill NEGOTIATION
David F FigeroaItalyIoni Bowcher PROPOSAL
Ashley I VenereSpainXuxue Feng QUALIFIED
Aruna M RutaIndiaAsiya Javayant PROPOSAL
Aika T FollerUnited KingdomOnyama Limba NEGOTIATION
Emily N WieserIndiaAnna Fali UNQUALIFIED
Clifford Q ChuiSpainAsiya Javayant NEW
Misaki N BriddickAustraliaIoni Bowcher NEGOTIATION
Alejandro B CampainUnited KingdomXuxue Feng PROPOSAL
Maria L MarrierIndiaBernardo Dominic NEGOTIATION
Munro W CaudyJapanAmy Elsner NEGOTIATION
Octavia A FerenczItalyAmy Elsner QUALIFIED
Ricardo W StockhamFranceXuxue Feng RENEWAL
Francesco E MaletBrazilAsiya Javayant PROPOSAL
Ashley L NestleIndiaOnyama Limba NEGOTIATION
Ashley K NickaJapanOnyama Limba QUALIFIED
Aditya F WhobreyBrazilAnna Fali RENEWAL
Costa P CaldareraFranceIoni Bowcher UNQUALIFIED
Jennifer U MaletUnited KingdomBernardo Dominic QUALIFIED
Munro S AlbaresIndiaXuxue Feng NEW
Aruna C OldroydIndiaOnyama Limba RENEWAL
Morrow N CampainAustraliaXuxue Feng NEW
Deepesh L WhobreySpainAnna Fali UNQUALIFIED
Kaitlin U SchemmerSpainStephen Shaw NEGOTIATION
Faith S StockhamArgentinaStephen Shaw NEW
Mujtaba Z PaprockiGermanyAsiya Javayant QUALIFIED
Octavia E NestleJapanAmy Elsner NEGOTIATION
Johnson X BologniaCanadaBernardo Dominic QUALIFIED
Jefferson M WaycottJapanElwin Sharvill PROPOSAL
Maria Y StockhamFranceIoni Bowcher NEW
Chavez E WaycottUnited KingdomOnyama Limba RENEWAL
Tony N OldroydItalyAmy Elsner RENEWAL
Smith D MorascaItalyIvan Magalhaes UNQUALIFIED
Aditya M RimArgentinaAnna Fali NEGOTIATION
Juan B CaldareraGermanyAmy Elsner UNQUALIFIED
Sinclair H DoeBrazilOnyama Limba QUALIFIED
Octavia Z CampainIndiaAsiya Javayant NEGOTIATION
Cody F BologniaUnited KingdomXuxue Feng NEW
Aika F FerenczArgentinaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mujtaba Z MaletGermanyIvan Magalhaes NEW
Murillo Z CaudyBrazilOnyama Limba NEGOTIATION
Kaitlin H MaletAustraliaIoni Bowcher RENEWAL
Johnson P GauchoIndiaOnyama Limba NEW
Faith L DarakjyItalyIoni Bowcher QUALIFIED
Rodrigues A StensethSpainBernardo Dominic UNQUALIFIED
Faith F ButtAustraliaAnna Fali PROPOSAL
Clifford N KuskoIndiaAsiya Javayant PROPOSAL
Clifford Z RimGermanyStephen Shaw NEGOTIATION
Maria W GarufiRussiaBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci I DoeFrance2024-04-16Rousseaux, Michael Esq RENEWAL28Anna Fali
1001Salvatore E PerinSpain2024-04-25Commercial Press NEW0Stephen Shaw
1002Smith E PerinIndia2024-04-26King, Christopher A Esq PROPOSAL79Anna Fali
1003Cody L RoysterItaly2024-04-04Commercial Press UNQUALIFIED82Bernardo Dominic
1004Aruna X BologniaFrance2024-04-06Buckley Miller Wright PROPOSAL23Xuxue Feng
1005Greenwood P TollnerUnited Kingdom2024-04-14Buckley Miller Wright RENEWAL69Onyama Limba
1006Jeanfrancois L ButtIndia2024-04-20Truhlar And Truhlar Attys UNQUALIFIED48Elwin Sharvill
1007Claire A NestleCanada2024-04-25Rangoni Of Florence NEW84Asiya Javayant
1008Isabel X FollerIndia2024-04-03Chemel, James L Cpa UNQUALIFIED4Ioni Bowcher
1009Jones S KolmetzArgentina2024-04-13King, Christopher A Esq RENEWAL14Anna Fali
1010Cody M BowleyFrance2024-04-07King, Christopher A Esq UNQUALIFIED34Xuxue Feng
1011Juan R SergiArgentina2024-04-15Chemel, James L Cpa RENEWAL89Asiya Javayant
1012Aika B SaylorsUnited Kingdom2024-04-17Chapman, Ross E Esq RENEWAL52Onyama Limba
1013Stacey J InouyeBrazil2024-04-14Rousseaux, Michael Esq UNQUALIFIED40Asiya Javayant
1014Misaki T CaldareraItaly2024-04-27Printing Dimensions NEGOTIATION12Asiya Javayant
1015Chavez F MarrierUnited Kingdom2024-04-06Dorl, James J Esq NEGOTIATION79Elwin Sharvill
1016Faith R StensethJapan2024-04-23Commercial Press NEW80Bernardo Dominic
1017Alejandro Y GillianGermany2024-04-11Buckley Miller Wright NEW82Asiya Javayant
1018Kaitlin Y StensethCanada2024-04-11Chemel, James L Cpa PROPOSAL7Elwin Sharvill
1019Jeanfrancois R AlbaresUnited Kingdom2024-04-03Rangoni Of Florence PROPOSAL22Xuxue Feng
1020Munro B DarakjyAustralia2024-04-12Morlong Associates UNQUALIFIED20Bernardo Dominic
1021Silvio M SlusarskiSpain2024-03-31Feiner Bros QUALIFIED60Ivan Magalhaes
1022Aditya Q RutaCanada2024-04-21Buckley Miller Wright NEW19Bernardo Dominic
1023Leon G NestleSpain2024-04-24Dorl, James J Esq UNQUALIFIED14Ioni Bowcher
1024Jeanfrancois C FerenczUnited Kingdom2024-04-25Commercial Press QUALIFIED71Anna Fali
1025Maria Q MaletAustralia2024-04-22Feiner Bros PROPOSAL94Bernardo Dominic
1026Kaitlin C DarakjyGermany2024-04-29Feltz Printing Service PROPOSAL2Amy Elsner
1027Aditya Z GillianJapan2024-04-10Chemel, James L Cpa PROPOSAL49Onyama Limba
1028Murillo R RulapaughBrazil2024-04-08Commercial Press PROPOSAL37Amy Elsner
1029Clifford G StensethItaly2024-04-17Chapman, Ross E Esq NEW23Onyama Limba
1030Kaitlin J AmigonFrance2024-04-21Printing Dimensions RENEWAL8Asiya Javayant
1031Izzy L BologniaUnited Kingdom2024-04-03Buckley Miller Wright PROPOSAL39Anna Fali
1032James R OstroskyRussia2024-04-21Rangoni Of Florence RENEWAL44Amy Elsner
1033Murillo Q RoysterCanada2024-04-11Benton, John B Jr UNQUALIFIED43Ioni Bowcher
1034Morrow I SaylorsCanada2024-04-07Dorl, James J Esq QUALIFIED54Elwin Sharvill
1035Claire I PoquetteFrance2024-04-11Chapman, Ross E Esq NEW27Bernardo Dominic
1036Ashley H CaldareraGermany2024-04-12Feiner Bros NEW32Stephen Shaw
1037Mujtaba A AmigonCanada2024-04-10Chanay, Jeffrey A Esq QUALIFIED74Xuxue Feng
1038Darci K ButtRussia2024-04-08Dorl, James J Esq RENEWAL11Ivan Magalhaes
1039Ricardo T StensethArgentina2024-04-12Chemel, James L Cpa RENEWAL4Elwin Sharvill
1040Emily B ShinkoGermany2024-04-21Truhlar And Truhlar Attys NEW33Amy Elsner
1041Alejandro H VenereIndia2024-04-23Rangoni Of Florence NEGOTIATION91Onyama Limba
1042Izzy O NickaJapan2024-04-18Chemel, James L Cpa PROPOSAL25Stephen Shaw
1043Alejandro F MaletBrazil2024-04-27Printing Dimensions UNQUALIFIED64Bernardo Dominic
1044Murillo N NickaSpain2024-04-21Printing Dimensions UNQUALIFIED3Asiya Javayant
1045Alejandro M ChuiAustralia2024-04-22Chemel, James L Cpa UNQUALIFIED34Elwin Sharvill
1046Deepesh B SaylorsSpain2024-04-17Chapman, Ross E Esq PROPOSAL65Amy Elsner
1047Nicolas P MarrierJapan2024-04-03Chemel, James L Cpa NEGOTIATION34Asiya Javayant
1048Costa D StockhamCanada2024-04-26King, Christopher A Esq PROPOSAL86Asiya Javayant
1049Ricardo B SlusarskiJapan2024-04-17Benton, John B Jr NEW52Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Stacey B PaprockiJapanAsiya Javayant UNQUALIFIED
Mujtaba P OstroskyRussiaElwin Sharvill RENEWAL
Ivar T BriddickBrazilElwin Sharvill RENEWAL
Aika V WhobreyArgentinaOnyama Limba PROPOSAL
Adams O RimAustraliaBernardo Dominic NEGOTIATION
Isabel O StockhamIndiaElwin Sharvill NEW
Claire K ShinkoRussiaIvan Magalhaes PROPOSAL
Maria N SergiIndiaXuxue Feng RENEWAL
Costa J WaycottItalyAnna Fali QUALIFIED
Rodrigues F IturbideUnited KingdomIoni Bowcher QUALIFIED
James E ChuiIndiaStephen Shaw NEW
Ricardo F StensethIndiaElwin Sharvill PROPOSAL
Antonio X RulapaughBrazilAmy Elsner QUALIFIED
Arvin R AlbaresIndiaAsiya Javayant NEGOTIATION
Izzy Z BowleySpainAnna Fali PROPOSAL
Mujtaba S SlusarskiSpainAmy Elsner UNQUALIFIED
Deepesh J ButtSpainElwin Sharvill QUALIFIED
Julie R WhobreyJapanAnna Fali QUALIFIED
Leja R DarakjyRussiaStephen Shaw NEGOTIATION
Isabel Q TollnerJapanAnna Fali NEGOTIATION
Kadeem D FlosiItalyIoni Bowcher PROPOSAL
Cody M NestleSpainAmy Elsner UNQUALIFIED
Darci T FlosiIndiaElwin Sharvill QUALIFIED
Stacey M StockhamArgentinaIvan Magalhaes UNQUALIFIED
Juan Y OldroydItalyAmy Elsner NEGOTIATION
Jennifer X RimCanadaAmy Elsner PROPOSAL
Leja N NickaRussiaIoni Bowcher NEGOTIATION
Mayumi C NestleJapanAmy Elsner NEW
Costa Q BologniaAustraliaOnyama Limba PROPOSAL
Ashley M BologniaRussiaOnyama Limba QUALIFIED
Stacey S StockhamGermanyStephen Shaw NEGOTIATION
James W GillianAustraliaBernardo Dominic PROPOSAL
Faith V FigeroaSpainIvan Magalhaes NEGOTIATION
Mujtaba P SchemmerCanadaIoni Bowcher PROPOSAL
Aditya X PoquetteGermanyXuxue Feng RENEWAL
Munro V PaprockiAustraliaAsiya Javayant PROPOSAL
Murillo Z WhobreySpainStephen Shaw NEW
Adams R GauchoAustraliaOnyama Limba NEGOTIATION
Ashley X PaprockiJapanAsiya Javayant NEW
Faith W MaletIndiaStephen Shaw NEGOTIATION
Munro X CaldareraArgentinaAnna Fali NEW
Aruna R CampainIndiaStephen Shaw NEGOTIATION
Misaki Q DoeJapanIoni Bowcher UNQUALIFIED
Rodrigues H BriddickItalyAsiya Javayant QUALIFIED
Clifford A CampainGermanyAsiya Javayant NEGOTIATION
Silvio Q WaycottIndiaAmy Elsner UNQUALIFIED
Nicolas O BriddickAustraliaXuxue Feng UNQUALIFIED
Emily Y PaprockiCanadaBernardo Dominic QUALIFIED
Jennifer P DarakjyUnited KingdomAsiya Javayant RENEWAL
Salvatore U ButtArgentinaAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Francesco H Royster
Mayumi Q Chui
Julie V Morasca
Kadeem A Ruta
Deepesh U Gillian
Sinclair W Nestle
Cody J Malet
Jeanfrancois V Butt
Costa O Waycott
Cody Q Nicka
Mayumi Y Poquette
Rodrigues P Inouye
Mujtaba P Gillian
Cody M Rulapaugh
Alejandro O Whobrey
Julie N Ferencz
Darci H Stenseth
Leja F Morasca
Munro J Briddick
Wickens G Bolognia
Tony J Butt
Ricardo L Slusarski
Morrow D Malet
Antonio I Maclead
James X Stenseth
Francesco N Oldroyd
Deepesh D Gillian
Maisha A Bolognia
Wickens N Saylors
Murillo L Kolmetz
Murillo L Flosi
Sinclair C Bolognia
Ivar G Shinko
Adams K Darakjy
Adams Y Caldarera
Kadeem B Slusarski
James V Whobrey
Ashley R Royster
Murillo H Darakjy
Cody N Amigon
Stacey N Schemmer
Misaki A Paprocki
Tony M Poquette
Costa I Poquette
Ricardo F Saylors
Clifford O Kolmetz
Leon O Caldarera
Kadeem J Nestle
Tony E Vocelka
Ivar D Caudy
IdCountryDate
1000Russia2024-04-29
1001Australia2024-04-27
1002Italy2024-04-03
1003Spain2024-04-06
1004Germany2024-04-20
1005Italy2024-04-11
1006United Kingdom2024-04-10
1007Russia2024-04-01
1008Italy2024-04-12
1009United Kingdom2024-04-03
1010Japan2024-04-10
1011Italy2024-04-03
1012France2024-04-01
1013Italy2024-04-08
1014Russia2024-04-20
1015Germany2024-04-10
1016Canada2024-04-28
1017Germany2024-04-04
1018Italy2024-04-29
1019India2024-04-29
1020Russia2024-04-27
1021Spain2024-04-28
1022Germany2024-04-25
1023Germany2024-04-05
1024Italy2024-04-02
1025Canada2024-04-18
1026Argentina2024-04-20
1027Germany2024-04-28
1028Italy2024-04-26
1029Argentina2024-04-24
1030Italy2024-04-16
1031France2024-04-19
1032India2024-04-10
1033Canada2024-04-05
1034United Kingdom2024-04-25
1035Italy2024-04-12
1036Argentina2024-04-10
1037Brazil2024-04-29
1038Spain2024-04-09
1039Canada2024-04-25
1040Russia2024-04-10
1041United Kingdom2024-04-15
1042Brazil2024-04-09
1043Italy2024-04-27
1044France2024-04-08
1045Australia2024-04-18
1046Germany2024-04-07
1047Australia2024-04-23
1048France2024-04-07
1049Russia2024-04-28

On-Demand Data

NameIdCountryDate
Darci L Bolognia1000Germany2024-04-21
Costa V Albares1001Canada2024-04-14
Maria W Vocelka1002Germany2024-04-25
Emily V Caldarera1003Spain2024-04-08
Munro J Bolognia1004France2024-04-03
Rodrigues X Bowley1005Australia2024-04-07
Stacey Z Wieser1006Japan2024-04-16
Izzy V Gaucho1007Germany2024-04-28
Cody P Maclead1008United Kingdom2024-04-18
Isabel L Inouye1009Canada2024-04-07
Claire M Chui1010Canada2024-04-27
Izzy M Dilliard1011Canada2024-04-29
Maisha A Rim1012India2024-04-27
Antonio Z Amigon1013Argentina2024-04-13
Aruna I Foller1014Germany2024-04-15
Ricardo A Malet1015Canada2024-04-10
Maisha X Ruta1016United Kingdom2024-04-12
Alejandro M Vocelka1017Argentina2024-04-02
Maisha E Butt1018Italy2024-04-13
Kadeem C Foller1019Japan2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens Z VocelkaIndiaIoni Bowcher RENEWAL
Smith F OldroydIndiaAnna Fali QUALIFIED
Jennifer W BriddickBrazilIoni Bowcher NEW
Arvin Q OldroydCanadaAmy Elsner QUALIFIED
Emily X DoeBrazilBernardo Dominic NEGOTIATION
Nicolas B CaudyRussiaStephen Shaw QUALIFIED
Ashley G FollerCanadaIvan Magalhaes UNQUALIFIED
Silvio O IturbideRussiaOnyama Limba UNQUALIFIED
Arvin D VenereFranceAsiya Javayant RENEWAL
Costa F InouyeArgentinaStephen Shaw UNQUALIFIED
Alejandro Z VocelkaGermanyBernardo Dominic NEGOTIATION
Munro R DoeIndiaXuxue Feng NEW
Sinclair L GillianUnited KingdomStephen Shaw NEGOTIATION
Juan U StensethArgentinaStephen Shaw PROPOSAL
Cody O NickaAustraliaStephen Shaw NEW
Jefferson I RutaBrazilXuxue Feng NEW
Antonio B KuskoFranceElwin Sharvill NEGOTIATION
Chavez N StockhamSpainBernardo Dominic QUALIFIED
Claire G SergiUnited KingdomIvan Magalhaes NEGOTIATION
Maisha J NestleItalyAnna Fali RENEWAL
Misaki Z BriddickAustraliaAmy Elsner PROPOSAL
Ricardo N CaldareraJapanElwin Sharvill UNQUALIFIED
Adams A InouyeSpainXuxue Feng UNQUALIFIED
Isabel O PerinUnited KingdomIoni Bowcher UNQUALIFIED
Juan Q PaprockiAustraliaElwin Sharvill NEGOTIATION
Juan A MaletRussiaElwin Sharvill RENEWAL
Costa V MaletArgentinaIoni Bowcher PROPOSAL
Ricardo F WaycottArgentinaXuxue Feng NEGOTIATION
Greenwood M ChuiIndiaAsiya Javayant NEW
Costa Q BologniaRussiaIvan Magalhaes QUALIFIED
Ivar D ChuiFranceIvan Magalhaes NEW
Costa W KolmetzFranceAmy Elsner QUALIFIED
Darci W ShinkoBrazilXuxue Feng NEGOTIATION
James C RulapaughArgentinaAnna Fali QUALIFIED
Mayumi S FlosiAustraliaAmy Elsner NEGOTIATION
Kaitlin N WhobreyRussiaElwin Sharvill UNQUALIFIED
Leja B CaldareraItalyIoni Bowcher NEW
Stacey J PoquetteIndiaIvan Magalhaes NEW
Maria K GauchoCanadaIoni Bowcher PROPOSAL
Octavia J SaylorsUnited KingdomStephen Shaw 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>