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
Maisha R GlickJapanIoni Bowcher PROPOSAL
Greenwood T ButtRussiaAnna Fali NEGOTIATION
Emily F KuskoAustraliaIvan Magalhaes PROPOSAL
Ashley J MorascaSpainElwin Sharvill NEW
Leja T CampainUnited KingdomXuxue Feng NEW
Isabel K ShinkoSpainAmy Elsner UNQUALIFIED
Maisha U BriddickItalyAmy Elsner RENEWAL
Chavez N VocelkaItalyStephen Shaw QUALIFIED
Emily B AlbaresSpainBernardo Dominic UNQUALIFIED
Wickens J PaprockiFranceIvan Magalhaes PROPOSAL
Cody H InouyeFranceBernardo Dominic PROPOSAL
Antonio X DilliardArgentinaBernardo Dominic RENEWAL
David I MacleadFranceStephen Shaw QUALIFIED
Aruna Y DilliardJapanAsiya Javayant UNQUALIFIED
Francesco O DarakjyJapanElwin Sharvill NEGOTIATION
Isabel X AmigonIndiaOnyama Limba RENEWAL
Isabel E FlosiAustraliaAsiya Javayant NEGOTIATION
Juan L DarakjyCanadaIvan Magalhaes QUALIFIED
Kadeem M BriddickFranceIvan Magalhaes UNQUALIFIED
Tony M FerenczFranceStephen Shaw NEW
Octavia G SchemmerCanadaAnna Fali NEW
Mujtaba K BriddickArgentinaXuxue Feng NEGOTIATION
Aditya D OldroydAustraliaBernardo Dominic RENEWAL
Arvin Y BowleyBrazilBernardo Dominic NEGOTIATION
Munro Z RutaIndiaBernardo Dominic NEW
Rodrigues Q FollerAustraliaElwin Sharvill PROPOSAL
Smith B CaldareraSpainXuxue Feng RENEWAL
Mayumi W GauchoGermanyBernardo Dominic QUALIFIED
Aruna B SlusarskiAustraliaIvan Magalhaes NEGOTIATION
Greenwood N FigeroaBrazilBernardo Dominic PROPOSAL
Deepesh N SaylorsGermanyOnyama Limba NEW
Deepesh U RulapaughArgentinaBernardo Dominic PROPOSAL
Arvin V StockhamItalyAnna Fali RENEWAL
Stacey B BowleyFranceAmy Elsner PROPOSAL
Francesco A RoysterFranceXuxue Feng UNQUALIFIED
Ashley P RimBrazilAnna Fali RENEWAL
Jones U NickaIndiaStephen Shaw NEGOTIATION
Kaitlin C RimAustraliaAsiya Javayant UNQUALIFIED
Jennifer A MarrierFranceIvan Magalhaes RENEWAL
Antonio H OldroydArgentinaBernardo Dominic NEW
Costa U WaycottFranceBernardo Dominic PROPOSAL
Aika L TollnerRussiaAsiya Javayant NEW
Aruna I OldroydAustraliaStephen Shaw NEW
Francesco Y VenereItalyElwin Sharvill QUALIFIED
Adams G MaletJapanStephen Shaw QUALIFIED
Murillo R MaletRussiaAsiya Javayant PROPOSAL
Misaki U AlbaresJapanAnna Fali NEGOTIATION
Nicolas S GlickSpainAsiya Javayant PROPOSAL
Silvio R ChuiSpainIoni Bowcher NEGOTIATION
Maisha A TollnerGermanyElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Mayumi B GlickRussiaElwin Sharvill PROPOSAL
Julie E PaprockiIndiaIvan Magalhaes RENEWAL
Ivar R MorascaSpainAnna Fali QUALIFIED
Alejandro D IturbideRussiaAsiya Javayant NEGOTIATION
Johnson B BologniaCanadaStephen Shaw PROPOSAL
Smith B RutaArgentinaStephen Shaw PROPOSAL
Nicolas D ChuiFranceAmy Elsner RENEWAL
Sinclair M SaylorsArgentinaXuxue Feng PROPOSAL
Chavez B GillianItalyAnna Fali NEGOTIATION
Antonio C GauchoUnited KingdomAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem S GarufiUnited Kingdom2024-04-30Rangoni Of Florence UNQUALIFIED91Elwin Sharvill
1001Aruna K MacleadBrazil2024-04-10Printing Dimensions UNQUALIFIED34Stephen Shaw
1002Tony Y FollerAustralia2024-04-27Feltz Printing Service RENEWAL7Elwin Sharvill
1003Isabel Y TollnerGermany2024-04-21Benton, John B Jr RENEWAL76Onyama Limba
1004Smith Q PerinFrance2024-04-21Commercial Press QUALIFIED62Xuxue Feng
1005James E RoysterFrance2024-04-30Chanay, Jeffrey A Esq UNQUALIFIED78Ivan Magalhaes
1006Morrow D WaycottBrazil2024-04-28Chapman, Ross E Esq NEGOTIATION75Asiya Javayant
1007Kadeem A RoysterIndia2024-04-11Rangoni Of Florence QUALIFIED75Stephen Shaw
1008David O PaprockiUnited Kingdom2024-05-02Chapman, Ross E Esq QUALIFIED23Asiya Javayant
1009Aruna K FollerItaly2024-05-05Rousseaux, Michael Esq NEW53Ioni Bowcher
1010Aruna D WieserFrance2024-04-26Rousseaux, Michael Esq NEGOTIATION89Anna Fali
1011Jefferson C RutaIndia2024-05-04Morlong Associates RENEWAL8Onyama Limba
1012Alejandro O SergiJapan2024-04-12Dorl, James J Esq NEGOTIATION82Anna Fali
1013Julie L RulapaughRussia2024-04-28Printing Dimensions PROPOSAL48Xuxue Feng
1014Adams N RutaFrance2024-04-21Truhlar And Truhlar Attys NEW94Ivan Magalhaes
1015Leja S SergiUnited Kingdom2024-04-06Buckley Miller Wright UNQUALIFIED11Onyama Limba
1016Sinclair A RimIndia2024-04-10Rangoni Of Florence PROPOSAL57Ivan Magalhaes
1017Faith W SaylorsRussia2024-04-15Truhlar And Truhlar Attys QUALIFIED78Xuxue Feng
1018Mayumi E ShinkoArgentina2024-05-01Dorl, James J Esq QUALIFIED89Xuxue Feng
1019Jeanfrancois L RimFrance2024-04-11Buckley Miller Wright NEW13Xuxue Feng
1020Cody M GauchoRussia2024-04-16Feiner Bros NEW36Onyama Limba
1021Aruna V ButtSpain2024-04-22Chemel, James L Cpa NEGOTIATION11Ivan Magalhaes
1022Ricardo F SaylorsFrance2024-05-04Rousseaux, Michael Esq UNQUALIFIED98Xuxue Feng
1023Julie T GlickFrance2024-04-21Benton, John B Jr QUALIFIED14Onyama Limba
1024Julie Z FollerAustralia2024-04-12Benton, John B Jr PROPOSAL79Anna Fali
1025James Q FerenczSpain2024-04-23Morlong Associates NEW23Stephen Shaw
1026Chavez C FerenczJapan2024-05-04Truhlar And Truhlar Attys RENEWAL23Bernardo Dominic
1027Nicolas D BologniaAustralia2024-05-01Rangoni Of Florence NEGOTIATION5Asiya Javayant
1028Salvatore Q OldroydBrazil2024-05-04Commercial Press UNQUALIFIED10Amy Elsner
1029Tony D AmigonCanada2024-04-29Morlong Associates UNQUALIFIED52Xuxue Feng
1030Octavia T ButtFrance2024-04-14King, Christopher A Esq QUALIFIED63Onyama Limba
1031Francesco C GlickUnited Kingdom2024-04-10Printing Dimensions RENEWAL86Amy Elsner
1032Juan C GlickRussia2024-04-24Benton, John B Jr NEGOTIATION30Bernardo Dominic
1033Alejandro A RoysterRussia2024-04-21Commercial Press NEGOTIATION89Anna Fali
1034Wickens U CampainSpain2024-04-12Chemel, James L Cpa NEGOTIATION59Anna Fali
1035Darci K AlbaresAustralia2024-04-24Benton, John B Jr QUALIFIED92Ivan Magalhaes
1036Juan B MaletFrance2024-04-11Chapman, Ross E Esq NEW63Ivan Magalhaes
1037Sinclair U ChuiSpain2024-04-22Commercial Press RENEWAL78Anna Fali
1038Ivar C FerenczSpain2024-04-22Buckley Miller Wright NEW41Bernardo Dominic
1039Antonio R WaycottJapan2024-04-16Buckley Miller Wright RENEWAL71Amy Elsner
1040Jefferson D ShinkoBrazil2024-04-17Commercial Press UNQUALIFIED37Elwin Sharvill
1041Leja U GarufiArgentina2024-04-27Dorl, James J Esq UNQUALIFIED6Elwin Sharvill
1042Johnson X SlusarskiItaly2024-05-02King, Christopher A Esq RENEWAL70Asiya Javayant
1043Aika S KolmetzFrance2024-04-17Printing Dimensions NEW36Asiya Javayant
1044Smith E SlusarskiGermany2024-04-07Rangoni Of Florence UNQUALIFIED18Bernardo Dominic
1045Jeanfrancois C GarufiAustralia2024-04-13Truhlar And Truhlar Attys QUALIFIED91Bernardo Dominic
1046Aditya U AmigonArgentina2024-04-28Benton, John B Jr NEW65Asiya Javayant
1047Adams K StensethJapan2024-04-30Dorl, James J Esq NEGOTIATION53Ivan Magalhaes
1048Arvin K SlusarskiIndia2024-04-08Chapman, Ross E Esq QUALIFIED48Ivan Magalhaes
1049Stacey E RimRussia2024-04-13Printing Dimensions QUALIFIED10Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Silvio B CaudySpainIvan Magalhaes PROPOSAL
Tony N FollerRussiaElwin Sharvill UNQUALIFIED
Maisha G RulapaughSpainAsiya Javayant RENEWAL
Aditya S SlusarskiUnited KingdomIvan Magalhaes UNQUALIFIED
Julie M DoeJapanOnyama Limba RENEWAL
Chavez U MarrierBrazilAnna Fali RENEWAL
Izzy U PoquetteArgentinaBernardo Dominic NEGOTIATION
Jeanfrancois M TollnerSpainAmy Elsner UNQUALIFIED
Salvatore D PerinArgentinaOnyama Limba PROPOSAL
Aditya B KolmetzItalyXuxue Feng PROPOSAL
Stacey L RulapaughFranceAmy Elsner QUALIFIED
Morrow N IturbideBrazilXuxue Feng UNQUALIFIED
Mayumi V RoysterFranceStephen Shaw PROPOSAL
Wickens I RoysterGermanyAnna Fali QUALIFIED
Tony T FlosiGermanyXuxue Feng RENEWAL
Jeanfrancois T DilliardItalyAmy Elsner PROPOSAL
Kadeem O NestleItalyIoni Bowcher NEW
Murillo B SaylorsSpainAsiya Javayant PROPOSAL
Costa M GillianFranceAsiya Javayant NEW
Emily R CaldareraItalyAnna Fali RENEWAL
Ashley O NestleCanadaXuxue Feng QUALIFIED
Salvatore J MaletSpainOnyama Limba PROPOSAL
Morrow M ButtBrazilAsiya Javayant NEGOTIATION
Chavez L OstroskyIndiaIoni Bowcher NEW
Greenwood T InouyeFranceIvan Magalhaes QUALIFIED
Emily F OstroskyRussiaAmy Elsner QUALIFIED
Faith F VocelkaRussiaAmy Elsner QUALIFIED
Alejandro D GlickArgentinaIvan Magalhaes NEW
Greenwood M BowleyArgentinaAmy Elsner NEGOTIATION
Mayumi V InouyeBrazilElwin Sharvill QUALIFIED
Aika B WieserGermanyStephen Shaw PROPOSAL
Misaki Y OldroydFranceIoni Bowcher NEGOTIATION
Aika J StockhamAustraliaXuxue Feng NEGOTIATION
Arvin D SaylorsAustraliaBernardo Dominic QUALIFIED
Leja D DarakjyRussiaIvan Magalhaes PROPOSAL
Mayumi O MorascaRussiaAnna Fali PROPOSAL
Jeanfrancois A KuskoFranceStephen Shaw NEW
Arvin A KolmetzAustraliaAmy Elsner NEW
Greenwood J BologniaSpainAsiya Javayant UNQUALIFIED
Ashley E SlusarskiFranceAmy Elsner NEGOTIATION
Chavez K FerenczArgentinaBernardo Dominic NEW
Maria J PerinGermanyElwin Sharvill NEGOTIATION
Faith A PoquetteSpainIvan Magalhaes NEW
Mayumi J SergiItalyBernardo Dominic UNQUALIFIED
Costa A MacleadGermanyAmy Elsner QUALIFIED
Wickens X ChuiAustraliaStephen Shaw NEGOTIATION
Octavia X MarrierBrazilStephen Shaw PROPOSAL
James L AmigonFranceIvan Magalhaes RENEWAL
Ivar T CaldareraItalyIvan Magalhaes PROPOSAL
David M OldroydGermanyAmy Elsner NEGOTIATION
Frozen Columns
Name
Aditya E Foller
Alejandro M Paprocki
Maisha J Caudy
Adams K Amigon
Jones R Glick
Clifford K Glick
Chavez I Nicka
Alejandro T Butt
Leon C Glick
Greenwood P Foller
Maisha B Nicka
Costa S Tollner
Greenwood R Saylors
Costa A Ferencz
Izzy K Marrier
Jeanfrancois B Venere
Wickens V Morasca
Murillo Q Sergi
Greenwood E Sergi
Izzy D Stockham
Octavia S Oldroyd
Ricardo T Glick
Mayumi W Gillian
Leja B Waycott
Octavia A Garufi
Ivar C Campain
Claire Z Malet
Silvio E Nestle
Chavez U Foller
Maisha C Flosi
Clifford G Albares
James O Rim
Aruna V Schemmer
Aika T Doe
Silvio Z Nestle
Jeanfrancois T Shinko
Julie R Saylors
Jennifer Q Gaucho
Antonio G Stenseth
Ashley R Kusko
Deepesh Q Stockham
Jones Y Paprocki
Mayumi T Iturbide
Morrow R Bolognia
Isabel I Nestle
Aditya U Foller
Rodrigues G Nicka
Julie Y Wieser
Costa A Vocelka
Aika V Saylors
IdCountryDate
1000United Kingdom2024-04-24
1001United Kingdom2024-04-14
1002Spain2024-04-19
1003Spain2024-05-02
1004Brazil2024-05-04
1005Germany2024-04-15
1006Argentina2024-04-22
1007United Kingdom2024-04-14
1008Japan2024-05-02
1009Russia2024-04-15
1010Germany2024-04-24
1011Brazil2024-04-18
1012Japan2024-04-11
1013India2024-04-20
1014Germany2024-04-10
1015Argentina2024-04-13
1016United Kingdom2024-04-17
1017Spain2024-04-12
1018France2024-04-18
1019Argentina2024-04-17
1020Russia2024-04-19
1021India2024-04-15
1022Argentina2024-04-28
1023Russia2024-04-11
1024Australia2024-05-05
1025Australia2024-04-07
1026Spain2024-04-06
1027Japan2024-04-15
1028Russia2024-04-26
1029Japan2024-05-04
1030Canada2024-05-02
1031India2024-05-05
1032Australia2024-04-20
1033France2024-04-08
1034United Kingdom2024-05-03
1035Spain2024-05-05
1036Russia2024-04-22
1037Russia2024-04-14
1038France2024-04-13
1039Germany2024-05-02
1040Brazil2024-05-02
1041Brazil2024-04-27
1042Italy2024-04-24
1043Japan2024-05-03
1044Brazil2024-04-17
1045Brazil2024-04-25
1046Brazil2024-05-04
1047Brazil2024-04-24
1048Argentina2024-04-10
1049Japan2024-04-18

On-Demand Data

NameIdCountryDate
Morrow I Whobrey1000Australia2024-04-10
Isabel V Schemmer1001Russia2024-04-14
Munro D Glick1002Italy2024-04-26
Leon F Campain1003Spain2024-04-06
Murillo V Ostrosky1004Canada2024-04-14
Jefferson V Rim1005Italy2024-04-24
Leja Z Ruta1006Brazil2024-04-07
Nicolas A Butt1007France2024-04-07
Izzy B Doe1008Argentina2024-04-10
Stacey J Oldroyd1009France2024-04-09
Munro P Campain1010Brazil2024-04-26
Silvio P Inouye1011Argentina2024-04-20
Stacey V Doe1012Russia2024-04-19
Octavia G Campain1013Argentina2024-04-18
Ashley N Foller1014Russia2024-04-21
Claire J Amigon1015Argentina2024-04-19
Deepesh W Vocelka1016France2024-04-22
Greenwood E Butt1017Japan2024-05-02
Deepesh P Malet1018France2024-04-19
David K Tollner1019Japan2024-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez F RulapaughIndiaOnyama Limba PROPOSAL
Mujtaba Y RoysterItalyAmy Elsner PROPOSAL
Deepesh L SaylorsFranceElwin Sharvill RENEWAL
Juan Q AlbaresArgentinaOnyama Limba UNQUALIFIED
Leon N GlickArgentinaIvan Magalhaes QUALIFIED
David E MorascaGermanyStephen Shaw PROPOSAL
Aruna J MaletRussiaElwin Sharvill QUALIFIED
Ivar J VocelkaIndiaBernardo Dominic UNQUALIFIED
Smith H InouyeGermanyElwin Sharvill NEGOTIATION
Emily Z CaldareraIndiaAsiya Javayant PROPOSAL
Octavia Q WieserIndiaStephen Shaw RENEWAL
Aika K BowleyItalyOnyama Limba NEGOTIATION
Emily E PerinRussiaAsiya Javayant RENEWAL
Kadeem H VenereCanadaAnna Fali QUALIFIED
Costa P RulapaughAustraliaIvan Magalhaes NEW
Jefferson V CaldareraIndiaBernardo Dominic NEW
Chavez T NestleAustraliaIoni Bowcher PROPOSAL
Isabel H GillianGermanyBernardo Dominic PROPOSAL
Jennifer D ButtFranceOnyama Limba PROPOSAL
Jones Z KolmetzSpainIvan Magalhaes QUALIFIED
Jennifer R MorascaItalyAsiya Javayant UNQUALIFIED
Ricardo K DilliardFranceAmy Elsner NEW
Maria M SaylorsAustraliaStephen Shaw PROPOSAL
Izzy L FollerRussiaOnyama Limba PROPOSAL
Francesco M AmigonGermanyXuxue Feng QUALIFIED
Juan L SchemmerCanadaBernardo Dominic RENEWAL
Deepesh I ShinkoFranceOnyama Limba PROPOSAL
Clifford X AlbaresSpainAsiya Javayant PROPOSAL
Clifford D StensethJapanElwin Sharvill NEW
Chavez D ShinkoJapanBernardo Dominic QUALIFIED
Ricardo M MacleadJapanAmy Elsner QUALIFIED
Morrow T BologniaJapanAmy Elsner NEW
Wickens J InouyeFranceBernardo Dominic QUALIFIED
Jeanfrancois D VenereSpainAsiya Javayant QUALIFIED
Misaki C AmigonUnited KingdomAsiya Javayant NEW
Maria A BriddickRussiaAsiya Javayant UNQUALIFIED
Nicolas P AlbaresFranceAsiya Javayant NEGOTIATION
Aika D MorascaJapanIvan Magalhaes UNQUALIFIED
Murillo A KuskoArgentinaAsiya Javayant NEW
Jefferson O GillianGermanyIvan Magalhaes NEGOTIATION

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