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
Silvio Z OldroydGermanyOnyama Limba RENEWAL
Murillo D FigeroaBrazilStephen Shaw QUALIFIED
Misaki Z RulapaughItalyXuxue Feng QUALIFIED
Julie N FlosiArgentinaXuxue Feng PROPOSAL
Nicolas T RimSpainStephen Shaw RENEWAL
Tony N PoquetteGermanyIoni Bowcher NEW
James M BologniaUnited KingdomAmy Elsner QUALIFIED
Misaki P PaprockiAustraliaOnyama Limba UNQUALIFIED
Jones J InouyeUnited KingdomBernardo Dominic NEW
Smith E CaudyFranceOnyama Limba NEW
Murillo R GauchoIndiaXuxue Feng NEGOTIATION
Isabel E CampainItalyAsiya Javayant UNQUALIFIED
Leon U DarakjyAustraliaAmy Elsner NEGOTIATION
Jennifer Y RutaItalyAmy Elsner RENEWAL
Kaitlin A OldroydSpainIoni Bowcher QUALIFIED
Francesco D MacleadRussiaAnna Fali QUALIFIED
Maria W OstroskyGermanyAsiya Javayant UNQUALIFIED
Jeanfrancois D AmigonSpainAmy Elsner QUALIFIED
Maisha P MaletAustraliaBernardo Dominic UNQUALIFIED
Kaitlin R NickaIndiaAmy Elsner PROPOSAL
Francesco I WaycottUnited KingdomAnna Fali PROPOSAL
Kadeem R MarrierSpainAnna Fali NEW
Emily U BriddickArgentinaBernardo Dominic NEGOTIATION
Francesco L DilliardItalyAmy Elsner PROPOSAL
Leon T MaletSpainOnyama Limba UNQUALIFIED
Nicolas X DoeIndiaAsiya Javayant QUALIFIED
Alejandro F SlusarskiGermanyIvan Magalhaes UNQUALIFIED
Octavia O CaudyBrazilAnna Fali PROPOSAL
Tony C GlickBrazilStephen Shaw PROPOSAL
Julie V DarakjyItalyAsiya Javayant NEW
Aditya X DoeJapanAsiya Javayant PROPOSAL
Claire Q InouyeSpainAnna Fali NEGOTIATION
Tony T IturbideJapanStephen Shaw PROPOSAL
Mujtaba N RulapaughRussiaIoni Bowcher NEGOTIATION
Ashley N GarufiJapanAmy Elsner NEW
Murillo G MarrierUnited KingdomXuxue Feng RENEWAL
Izzy B KuskoCanadaIvan Magalhaes RENEWAL
Tony V OstroskyBrazilXuxue Feng QUALIFIED
Alejandro K AlbaresItalyXuxue Feng QUALIFIED
Aruna D BriddickBrazilAmy Elsner UNQUALIFIED
Kaitlin A MaletFranceAnna Fali NEW
Ashley W ChuiSpainIoni Bowcher RENEWAL
Ivar O NickaItalyAsiya Javayant NEW
Stacey F StockhamIndiaAmy Elsner RENEWAL
Kadeem D DoeSpainOnyama Limba NEGOTIATION
Salvatore I VenereItalyStephen Shaw NEW
Ashley B BriddickGermanyAnna Fali RENEWAL
Deepesh M NickaIndiaIvan Magalhaes RENEWAL
Ricardo H FigeroaArgentinaIoni Bowcher NEW
Adams Y SaylorsAustraliaElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Maisha A CaldareraSpainStephen Shaw NEW
Aruna R PaprockiBrazilStephen Shaw NEGOTIATION
Clifford Q NestleGermanyBernardo Dominic NEGOTIATION
Silvio J GlickCanadaElwin Sharvill PROPOSAL
James R VenereJapanStephen Shaw PROPOSAL
Misaki P TollnerSpainOnyama Limba RENEWAL
James I NestleAustraliaOnyama Limba PROPOSAL
Misaki Q GauchoItalyOnyama Limba NEW
Mujtaba Z KolmetzSpainXuxue Feng PROPOSAL
Francesco R SlusarskiSpainStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika M ButtRussia2024-04-23Rangoni Of Florence UNQUALIFIED48Stephen Shaw
1001Antonio O MarrierSpain2024-04-19Benton, John B Jr RENEWAL89Bernardo Dominic
1002Jennifer L AmigonGermany2024-04-12Rangoni Of Florence PROPOSAL24Ivan Magalhaes
1003Kaitlin K BowleyAustralia2024-04-17Truhlar And Truhlar Attys NEW76Elwin Sharvill
1004Alejandro F WieserFrance2024-04-02Buckley Miller Wright PROPOSAL86Amy Elsner
1005Aditya G VenereAustralia2024-04-16Rousseaux, Michael Esq PROPOSAL62Bernardo Dominic
1006Sinclair P GarufiFrance2024-04-01Truhlar And Truhlar Attys PROPOSAL24Onyama Limba
1007Silvio H CaldareraBrazil2024-04-19Rangoni Of Florence RENEWAL71Bernardo Dominic
1008Silvio G GillianGermany2024-04-08Chanay, Jeffrey A Esq NEW52Anna Fali
1009Kaitlin L DilliardSpain2024-04-13Feiner Bros NEW58Stephen Shaw
1010Emily G CampainSpain2024-03-29Benton, John B Jr RENEWAL9Onyama Limba
1011Wickens R PerinRussia2024-04-11Truhlar And Truhlar Attys UNQUALIFIED25Onyama Limba
1012Francesco B ButtUnited Kingdom2024-03-30Buckley Miller Wright PROPOSAL11Ivan Magalhaes
1013Nicolas J CaldareraArgentina2024-04-16Chanay, Jeffrey A Esq UNQUALIFIED20Ivan Magalhaes
1014Tony H SaylorsAustralia2024-04-18King, Christopher A Esq UNQUALIFIED72Anna Fali
1015Leon B PoquetteIndia2024-04-18King, Christopher A Esq QUALIFIED20Stephen Shaw
1016Maria H BologniaIndia2024-04-26Buckley Miller Wright UNQUALIFIED24Stephen Shaw
1017Maria A AlbaresCanada2024-04-16Dorl, James J Esq RENEWAL69Onyama Limba
1018Jennifer F SergiGermany2024-04-05King, Christopher A Esq NEW80Onyama Limba
1019Rodrigues L ChuiGermany2024-04-21Rangoni Of Florence QUALIFIED22Elwin Sharvill
1020Silvio L PerinJapan2024-04-07Buckley Miller Wright PROPOSAL89Amy Elsner
1021Kadeem H MorascaSpain2024-04-14Morlong Associates NEGOTIATION66Onyama Limba
1022Deepesh A ChuiArgentina2024-04-23Feltz Printing Service PROPOSAL79Anna Fali
1023Smith N DilliardItaly2024-04-20Rousseaux, Michael Esq PROPOSAL7Bernardo Dominic
1024Morrow Q SergiCanada2024-03-31Dorl, James J Esq QUALIFIED49Xuxue Feng
1025Aruna A FerenczFrance2024-03-30Feltz Printing Service PROPOSAL94Asiya Javayant
1026Sinclair T NickaGermany2024-04-19Morlong Associates PROPOSAL70Asiya Javayant
1027Aruna W RoysterItaly2024-04-25Chanay, Jeffrey A Esq PROPOSAL16Ioni Bowcher
1028Jefferson A DarakjyJapan2024-04-07Commercial Press UNQUALIFIED4Amy Elsner
1029Juan T VenereSpain2024-04-22Morlong Associates PROPOSAL99Elwin Sharvill
1030Kaitlin K OstroskyRussia2024-04-02Dorl, James J Esq NEW78Amy Elsner
1031Smith D KolmetzGermany2024-04-18Commercial Press NEW74Onyama Limba
1032Sinclair M GillianItaly2024-03-30Chemel, James L Cpa RENEWAL64Bernardo Dominic
1033Tony L StensethJapan2024-04-01Rousseaux, Michael Esq NEGOTIATION32Onyama Limba
1034Arvin M DoeSpain2024-04-10King, Christopher A Esq PROPOSAL21Onyama Limba
1035Morrow A GlickGermany2024-03-31Dorl, James J Esq NEGOTIATION90Bernardo Dominic
1036Chavez A OstroskyAustralia2024-04-07Chanay, Jeffrey A Esq UNQUALIFIED5Ioni Bowcher
1037Jennifer B WhobreyUnited Kingdom2024-04-09Benton, John B Jr PROPOSAL67Anna Fali
1038Faith H StockhamSpain2024-04-23Morlong Associates NEW25Stephen Shaw
1039Deepesh W InouyeArgentina2024-04-07Buckley Miller Wright UNQUALIFIED47Bernardo Dominic
1040Darci A FlosiJapan2024-04-15Buckley Miller Wright PROPOSAL26Xuxue Feng
1041Morrow J GarufiAustralia2024-04-07Chanay, Jeffrey A Esq NEGOTIATION69Ioni Bowcher
1042Octavia A DarakjyCanada2024-04-24Benton, John B Jr UNQUALIFIED43Ivan Magalhaes
1043Salvatore V RoysterUnited Kingdom2024-04-15Truhlar And Truhlar Attys UNQUALIFIED51Xuxue Feng
1044Faith V OldroydRussia2024-04-08Rangoni Of Florence PROPOSAL5Asiya Javayant
1045Juan Y RulapaughRussia2024-04-23Dorl, James J Esq UNQUALIFIED95Anna Fali
1046Juan R ChuiArgentina2024-04-01Chemel, James L Cpa RENEWAL21Elwin Sharvill
1047Silvio I ShinkoFrance2024-04-26Chapman, Ross E Esq NEGOTIATION37Ioni Bowcher
1048Clifford W PerinFrance2024-04-05Chemel, James L Cpa UNQUALIFIED47Ioni Bowcher
1049Morrow S RutaAustralia2024-04-08Feltz Printing Service NEW2Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Ricardo X RulapaughItalyOnyama Limba QUALIFIED
Ricardo H MaletIndiaBernardo Dominic RENEWAL
Aruna U GlickArgentinaAnna Fali RENEWAL
Deepesh R TollnerAustraliaStephen Shaw RENEWAL
Maisha B StockhamArgentinaXuxue Feng QUALIFIED
Murillo B FlosiIndiaXuxue Feng UNQUALIFIED
Darci D WieserItalyElwin Sharvill RENEWAL
Sinclair I MacleadArgentinaIvan Magalhaes PROPOSAL
Morrow L SchemmerCanadaStephen Shaw UNQUALIFIED
Johnson U MaletJapanAsiya Javayant QUALIFIED
Munro C GlickCanadaBernardo Dominic NEW
David A WieserRussiaAnna Fali RENEWAL
Darci G MaletIndiaBernardo Dominic RENEWAL
Cody C MarrierUnited KingdomElwin Sharvill NEGOTIATION
Jones W AmigonAustraliaElwin Sharvill RENEWAL
Arvin T StensethSpainStephen Shaw UNQUALIFIED
Wickens H ButtJapanIoni Bowcher RENEWAL
David D KolmetzJapanXuxue Feng RENEWAL
Jefferson G NestleAustraliaAsiya Javayant PROPOSAL
Ivar J FlosiIndiaAmy Elsner UNQUALIFIED
Ivar M NestleUnited KingdomBernardo Dominic RENEWAL
Adams A AlbaresAustraliaAnna Fali PROPOSAL
Salvatore H BriddickJapanAmy Elsner NEW
Morrow L CaldareraJapanXuxue Feng QUALIFIED
Wickens T KuskoIndiaOnyama Limba NEGOTIATION
Johnson F DilliardUnited KingdomElwin Sharvill NEGOTIATION
Izzy P GarufiFranceXuxue Feng RENEWAL
Francesco A MaletRussiaIvan Magalhaes PROPOSAL
Maria Z AmigonRussiaStephen Shaw PROPOSAL
Maria U SaylorsUnited KingdomStephen Shaw PROPOSAL
Julie W KuskoJapanIvan Magalhaes NEW
Cody B AmigonAustraliaStephen Shaw NEW
Johnson U GlickItalyElwin Sharvill NEW
Kadeem V MaletArgentinaAmy Elsner PROPOSAL
Isabel W CaudyIndiaStephen Shaw RENEWAL
Alejandro E InouyeCanadaIoni Bowcher QUALIFIED
Morrow L WieserRussiaOnyama Limba NEW
Tony G WieserIndiaStephen Shaw RENEWAL
Deepesh F CampainUnited KingdomElwin Sharvill NEGOTIATION
Mayumi Q VocelkaRussiaXuxue Feng RENEWAL
Sinclair A RoysterAustraliaStephen Shaw RENEWAL
Isabel H BriddickSpainAnna Fali UNQUALIFIED
Maria V MacleadCanadaStephen Shaw RENEWAL
Morrow Q OstroskyCanadaXuxue Feng RENEWAL
Adams D OstroskyIndiaXuxue Feng PROPOSAL
Tony M DoeSpainStephen Shaw QUALIFIED
Aruna H KolmetzCanadaBernardo Dominic RENEWAL
Ashley F ButtBrazilIoni Bowcher NEGOTIATION
Chavez G FigeroaUnited KingdomIvan Magalhaes PROPOSAL
Salvatore Z GauchoSpainIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Aika J Gillian
Wickens E Ostrosky
Isabel O Royster
Mujtaba Q Slusarski
Morrow V Maclead
Maisha G Saylors
Mayumi U Briddick
Jennifer C Garufi
Greenwood F Darakjy
Kadeem W Waycott
Maria J Glick
Francesco A Caudy
Rodrigues F Inouye
Antonio I Royster
Mujtaba J Amigon
Emily T Schemmer
Jeanfrancois G Malet
Octavia U Chui
Emily N Figeroa
Antonio P Nestle
Deepesh A Briddick
Jones I Venere
Arvin F Flosi
Jennifer T Tollner
Wickens Y Rim
Julie Y Doe
Rodrigues U Doe
Stacey F Glick
Antonio Z Iturbide
Ashley H Ferencz
Juan Z Whobrey
Cody B Shinko
Morrow J Malet
Aditya L Oldroyd
Morrow L Wieser
Stacey U Rim
Munro D Royster
Julie S Darakjy
Kadeem V Shinko
Clifford O Slusarski
Murillo M Gillian
Jennifer P Kolmetz
Ricardo A Chui
Faith Q Tollner
Isabel H Rim
Costa H Maclead
Silvio K Whobrey
James O Kusko
Sinclair X Wieser
Munro T Chui
IdCountryDate
1000Argentina2024-04-16
1001Germany2024-04-11
1002Spain2024-04-11
1003Argentina2024-04-02
1004Spain2024-04-27
1005Italy2024-04-23
1006Brazil2024-03-29
1007Canada2024-04-03
1008India2024-04-18
1009Argentina2024-04-11
1010United Kingdom2024-04-20
1011Germany2024-04-02
1012Argentina2024-04-18
1013Spain2024-04-11
1014Germany2024-04-18
1015United Kingdom2024-03-29
1016India2024-04-02
1017Germany2024-04-15
1018Russia2024-04-02
1019Russia2024-04-05
1020Brazil2024-04-15
1021India2024-04-10
1022Australia2024-04-19
1023Brazil2024-04-06
1024Spain2024-04-06
1025Australia2024-04-07
1026Spain2024-04-22
1027India2024-04-08
1028Germany2024-04-22
1029Japan2024-03-31
1030Spain2024-04-16
1031Italy2024-04-02
1032Italy2024-04-23
1033Italy2024-04-21
1034India2024-04-23
1035Australia2024-04-20
1036Canada2024-04-16
1037Canada2024-04-23
1038United Kingdom2024-04-07
1039France2024-03-31
1040Argentina2024-04-12
1041Spain2024-04-06
1042France2024-04-07
1043Spain2024-04-04
1044Spain2024-04-18
1045Canada2024-04-08
1046France2024-04-25
1047Spain2024-04-16
1048United Kingdom2024-04-03
1049Spain2024-04-05

On-Demand Data

NameIdCountryDate
Izzy I Iturbide1000Australia2024-04-01
Smith I Sergi1001Italy2024-04-27
Deepesh P Briddick1002Spain2024-03-31
Arvin T Venere1003India2024-04-20
Francesco A Garufi1004India2024-03-31
Kaitlin O Kusko1005India2024-03-30
Rodrigues Z Gillian1006Spain2024-04-14
Smith O Paprocki1007United Kingdom2024-04-13
Misaki C Gaucho1008Australia2024-04-17
Aditya G Malet1009Brazil2024-04-27
Jeanfrancois T Schemmer1010India2024-03-31
Silvio P Stockham1011Canada2024-04-19
Adams B Nestle1012France2024-04-05
Kaitlin J Ostrosky1013Argentina2024-04-21
Greenwood X Saylors1014Germany2024-04-13
Jeanfrancois F Chui1015Argentina2024-04-18
Deepesh C Gillian1016Australia2024-04-15
Silvio W Oldroyd1017Argentina2024-04-26
Salvatore O Marrier1018France2024-04-16
David P Campain1019Australia2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues B KolmetzFranceElwin Sharvill RENEWAL
Jefferson H GillianIndiaStephen Shaw PROPOSAL
Munro N OldroydArgentinaXuxue Feng QUALIFIED
Clifford L RutaSpainStephen Shaw NEW
Chavez U DarakjyBrazilIoni Bowcher NEGOTIATION
Costa L AlbaresAustraliaOnyama Limba NEGOTIATION
Adams F GillianUnited KingdomIvan Magalhaes UNQUALIFIED
Ivar I InouyeJapanXuxue Feng RENEWAL
Jones H DoeItalyStephen Shaw PROPOSAL
Munro U BowleyArgentinaAnna Fali RENEWAL
Kadeem C GlickIndiaAsiya Javayant PROPOSAL
Aruna P NickaArgentinaXuxue Feng RENEWAL
Clifford W FerenczFranceXuxue Feng NEW
Smith N DarakjyIndiaXuxue Feng QUALIFIED
Ricardo N GillianSpainXuxue Feng UNQUALIFIED
Darci F DilliardRussiaIoni Bowcher UNQUALIFIED
Nicolas Y OstroskyBrazilOnyama Limba NEW
Darci J MarrierArgentinaElwin Sharvill QUALIFIED
Antonio Q RoysterRussiaStephen Shaw RENEWAL
Costa Y NestleBrazilXuxue Feng UNQUALIFIED
James C AlbaresItalyIoni Bowcher NEW
Antonio Y NickaUnited KingdomAmy Elsner UNQUALIFIED
Isabel Q AmigonIndiaBernardo Dominic NEGOTIATION
Munro W SlusarskiUnited KingdomStephen Shaw NEGOTIATION
Chavez C VenereArgentinaBernardo Dominic UNQUALIFIED
Darci K TollnerRussiaAsiya Javayant NEW
Ricardo W RimSpainIvan Magalhaes RENEWAL
Mayumi Z WieserArgentinaOnyama Limba QUALIFIED
Munro L GauchoCanadaOnyama Limba RENEWAL
Munro A MacleadSpainXuxue Feng QUALIFIED
Jones S RoysterUnited KingdomIoni Bowcher QUALIFIED
Clifford Q PerinSpainIoni Bowcher RENEWAL
Emily E CaldareraCanadaOnyama Limba QUALIFIED
Stacey T StockhamJapanStephen Shaw NEW
Leja A DilliardAustraliaIvan Magalhaes RENEWAL
David G FerenczGermanyAnna Fali NEW
James X GarufiFranceAnna Fali PROPOSAL
Clifford W NickaItalyBernardo Dominic RENEWAL
Rodrigues G FerenczAustraliaXuxue Feng NEW
Juan L GlickIndiaOnyama Limba 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>