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
Jones C DarakjyJapanOnyama Limba PROPOSAL
Nicolas A BowleySpainIoni Bowcher PROPOSAL
Murillo H DilliardArgentinaIvan Magalhaes RENEWAL
Isabel Y BologniaGermanyAsiya Javayant RENEWAL
Clifford S NickaSpainXuxue Feng QUALIFIED
Wickens J StensethAustraliaAnna Fali NEGOTIATION
Ivar Q InouyeArgentinaStephen Shaw QUALIFIED
Misaki B InouyeAustraliaOnyama Limba UNQUALIFIED
Johnson Y SchemmerAustraliaAnna Fali UNQUALIFIED
Leja G KolmetzBrazilIoni Bowcher NEW
Jefferson D DilliardBrazilStephen Shaw QUALIFIED
Aika M MacleadFranceStephen Shaw NEGOTIATION
Arvin O GarufiRussiaAsiya Javayant PROPOSAL
Cody W KuskoCanadaAnna Fali PROPOSAL
Isabel L DoeIndiaAnna Fali QUALIFIED
Izzy M DarakjyBrazilOnyama Limba RENEWAL
Tony C PerinBrazilIoni Bowcher NEGOTIATION
Aruna H GauchoJapanIoni Bowcher QUALIFIED
Murillo K NestleGermanyElwin Sharvill PROPOSAL
Tony N RoysterJapanXuxue Feng NEGOTIATION
Stacey S BowleyCanadaAsiya Javayant PROPOSAL
Emily I VocelkaBrazilOnyama Limba PROPOSAL
Ashley K GarufiArgentinaXuxue Feng RENEWAL
Nicolas Z AlbaresItalyOnyama Limba RENEWAL
Julie N DilliardItalyAmy Elsner UNQUALIFIED
Jeanfrancois X PerinSpainAsiya Javayant PROPOSAL
Nicolas H CaudyIndiaElwin Sharvill RENEWAL
Costa W WieserIndiaXuxue Feng QUALIFIED
Jefferson X FigeroaJapanBernardo Dominic RENEWAL
Morrow U VenereBrazilXuxue Feng NEGOTIATION
Sinclair F NickaUnited KingdomIvan Magalhaes NEGOTIATION
Aruna P KuskoItalyAmy Elsner UNQUALIFIED
Faith Q GillianJapanAmy Elsner NEGOTIATION
Mayumi D GillianBrazilBernardo Dominic NEW
Aditya S VenereCanadaAnna Fali UNQUALIFIED
Salvatore I AmigonArgentinaXuxue Feng RENEWAL
Emily M OstroskyJapanAmy Elsner PROPOSAL
Maisha S InouyeIndiaElwin Sharvill PROPOSAL
Leon L NickaCanadaXuxue Feng UNQUALIFIED
Greenwood N RimUnited KingdomElwin Sharvill PROPOSAL
Chavez L NickaRussiaAsiya Javayant QUALIFIED
Wickens X RulapaughItalyAmy Elsner PROPOSAL
Maria L SaylorsItalyIvan Magalhaes NEW
Johnson Q FigeroaItalyIvan Magalhaes NEW
Sinclair I ButtItalyStephen Shaw RENEWAL
James F WhobreyJapanAnna Fali UNQUALIFIED
Wickens O AlbaresBrazilAmy Elsner NEGOTIATION
Faith L DilliardItalyOnyama Limba PROPOSAL
Murillo E PaprockiArgentinaXuxue Feng NEW
Izzy F FigeroaIndiaAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leja T KuskoSpainAmy Elsner RENEWAL
Clifford F FigeroaArgentinaXuxue Feng PROPOSAL
Maria S KolmetzItalyIvan Magalhaes PROPOSAL
Izzy M KolmetzAustraliaAmy Elsner NEGOTIATION
Wickens D SergiIndiaIoni Bowcher PROPOSAL
Arvin J CaudyCanadaAmy Elsner NEGOTIATION
Jefferson D WaycottGermanyAnna Fali NEW
Claire S BologniaCanadaIvan Magalhaes RENEWAL
Costa P BriddickRussiaIvan Magalhaes NEGOTIATION
Salvatore O InouyeGermanyElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson C StensethAustralia2024-04-15Morlong Associates RENEWAL40Ioni Bowcher
1001Francesco E MarrierGermany2024-04-04Dorl, James J Esq QUALIFIED13Elwin Sharvill
1002Maria P ShinkoSpain2024-04-26Dorl, James J Esq NEW48Stephen Shaw
1003Rodrigues W PoquetteFrance2024-04-17Rousseaux, Michael Esq NEGOTIATION42Ioni Bowcher
1004Munro J VenereSpain2024-04-12Feiner Bros NEW98Stephen Shaw
1005Smith K RutaArgentina2024-04-11Chemel, James L Cpa QUALIFIED99Onyama Limba
1006Ashley B RoysterJapan2024-04-13Morlong Associates UNQUALIFIED3Bernardo Dominic
1007James P GauchoGermany2024-04-28Chemel, James L Cpa RENEWAL99Onyama Limba
1008Ivar K AmigonRussia2024-04-12King, Christopher A Esq QUALIFIED12Anna Fali
1009Rodrigues T DilliardBrazil2024-04-13Printing Dimensions PROPOSAL9Asiya Javayant
1010Isabel B VocelkaFrance2024-04-05Rousseaux, Michael Esq NEW26Bernardo Dominic
1011Isabel P MorascaJapan2024-04-07King, Christopher A Esq RENEWAL24Ivan Magalhaes
1012Jennifer N CaldareraAustralia2024-04-25Rangoni Of Florence RENEWAL86Ioni Bowcher
1013Adams N SaylorsFrance2024-04-22King, Christopher A Esq NEW78Onyama Limba
1014Kaitlin A StockhamFrance2024-04-04Benton, John B Jr QUALIFIED82Ivan Magalhaes
1015Jennifer J FerenczRussia2024-04-14Rangoni Of Florence UNQUALIFIED72Anna Fali
1016Francesco W RutaGermany2024-04-25Dorl, James J Esq NEGOTIATION87Stephen Shaw
1017Smith H RulapaughGermany2024-04-07Chanay, Jeffrey A Esq NEGOTIATION55Asiya Javayant
1018Antonio H CaudyIndia2024-04-23Morlong Associates NEW7Anna Fali
1019Salvatore M BologniaJapan2024-04-10Benton, John B Jr NEGOTIATION33Stephen Shaw
1020Mayumi A AmigonSpain2024-05-02Commercial Press QUALIFIED51Stephen Shaw
1021Adams C CaudyJapan2024-04-05Benton, John B Jr PROPOSAL47Amy Elsner
1022Deepesh N VenereUnited Kingdom2024-04-11Morlong Associates RENEWAL9Bernardo Dominic
1023Julie E SlusarskiFrance2024-04-21Truhlar And Truhlar Attys QUALIFIED47Anna Fali
1024Ashley H ChuiIndia2024-04-07Dorl, James J Esq NEGOTIATION99Bernardo Dominic
1025Sinclair Z InouyeRussia2024-04-24Feltz Printing Service RENEWAL45Onyama Limba
1026Greenwood L CaldareraUnited Kingdom2024-04-09Chanay, Jeffrey A Esq PROPOSAL27Asiya Javayant
1027Smith Y KuskoAustralia2024-04-11Rousseaux, Michael Esq RENEWAL15Amy Elsner
1028Johnson Q SchemmerArgentina2024-04-17Chemel, James L Cpa NEW67Ioni Bowcher
1029Kadeem Y FerenczIndia2024-04-22Chapman, Ross E Esq NEW30Elwin Sharvill
1030Juan T GlickUnited Kingdom2024-04-09Chanay, Jeffrey A Esq QUALIFIED70Onyama Limba
1031Ashley I DilliardItaly2024-05-01Chapman, Ross E Esq UNQUALIFIED33Stephen Shaw
1032Leja P StensethSpain2024-04-09Truhlar And Truhlar Attys RENEWAL32Anna Fali
1033Isabel S VocelkaBrazil2024-04-10King, Christopher A Esq QUALIFIED84Elwin Sharvill
1034Maria I AmigonArgentina2024-04-22Chapman, Ross E Esq NEGOTIATION48Asiya Javayant
1035Silvio F SaylorsJapan2024-04-25Chanay, Jeffrey A Esq QUALIFIED90Elwin Sharvill
1036Maria Q FlosiGermany2024-04-22Benton, John B Jr RENEWAL2Anna Fali
1037James M MacleadJapan2024-04-03Buckley Miller Wright UNQUALIFIED38Onyama Limba
1038Emily C AmigonCanada2024-04-12Rousseaux, Michael Esq QUALIFIED91Xuxue Feng
1039David I FerenczItaly2024-04-03Printing Dimensions PROPOSAL83Bernardo Dominic
1040Arvin Z AlbaresRussia2024-04-26Truhlar And Truhlar Attys NEGOTIATION11Amy Elsner
1041Antonio R FollerJapan2024-04-06Feiner Bros QUALIFIED43Ivan Magalhaes
1042Aditya O ButtUnited Kingdom2024-04-15Commercial Press QUALIFIED15Ivan Magalhaes
1043Leon L CaldareraCanada2024-04-27Buckley Miller Wright QUALIFIED5Asiya Javayant
1044Jones G WieserFrance2024-04-21Rangoni Of Florence NEGOTIATION31Bernardo Dominic
1045Costa V DilliardBrazil2024-04-11Printing Dimensions QUALIFIED45Anna Fali
1046Chavez O OstroskyAustralia2024-04-11Rousseaux, Michael Esq RENEWAL64Ivan Magalhaes
1047James K BologniaUnited Kingdom2024-04-30Benton, John B Jr UNQUALIFIED84Onyama Limba
1048Mujtaba R NickaBrazil2024-04-08Chanay, Jeffrey A Esq QUALIFIED9Elwin Sharvill
1049Wickens N WieserArgentina2024-04-21Feiner Bros NEW91Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Smith B MaletRussiaBernardo Dominic NEGOTIATION
Arvin L SergiItalyOnyama Limba NEW
Nicolas F VocelkaBrazilIvan Magalhaes UNQUALIFIED
Misaki O CaudyBrazilElwin Sharvill RENEWAL
James A BologniaGermanyOnyama Limba QUALIFIED
Ricardo B MorascaJapanAsiya Javayant NEW
Ricardo I VocelkaSpainAmy Elsner UNQUALIFIED
Mujtaba U BologniaRussiaElwin Sharvill UNQUALIFIED
Octavia B PaprockiRussiaBernardo Dominic QUALIFIED
Ivar Q MarrierGermanyXuxue Feng QUALIFIED
Ashley H StensethBrazilElwin Sharvill UNQUALIFIED
Clifford Q WhobreyAustraliaAnna Fali UNQUALIFIED
Arvin S RoysterCanadaElwin Sharvill PROPOSAL
Jeanfrancois H GarufiFranceAsiya Javayant NEW
Emily H RutaFranceIvan Magalhaes QUALIFIED
Rodrigues Y FollerAustraliaXuxue Feng NEW
Murillo I FollerFranceIvan Magalhaes QUALIFIED
Tony N AlbaresGermanyElwin Sharvill QUALIFIED
Ashley J FlosiGermanyAnna Fali RENEWAL
Deepesh O RutaSpainAsiya Javayant UNQUALIFIED
Kadeem V FigeroaIndiaOnyama Limba NEGOTIATION
Emily O DarakjySpainAsiya Javayant UNQUALIFIED
Francesco G GarufiUnited KingdomOnyama Limba RENEWAL
Aditya I RutaAustraliaAmy Elsner NEW
Emily H RulapaughAustraliaAmy Elsner PROPOSAL
Stacey E FerenczSpainAnna Fali UNQUALIFIED
Greenwood T OldroydSpainBernardo Dominic UNQUALIFIED
Aditya N ButtAustraliaStephen Shaw NEGOTIATION
Johnson J FlosiJapanIoni Bowcher RENEWAL
Maisha O BowleyArgentinaIvan Magalhaes UNQUALIFIED
Rodrigues D TollnerRussiaAmy Elsner NEGOTIATION
Antonio P AmigonArgentinaAnna Fali NEW
Maisha C WhobreyRussiaXuxue Feng NEW
Rodrigues F AlbaresUnited KingdomElwin Sharvill UNQUALIFIED
Sinclair N ChuiIndiaBernardo Dominic RENEWAL
Johnson E ShinkoArgentinaIoni Bowcher NEW
Maisha W WaycottSpainBernardo Dominic RENEWAL
Stacey Q FlosiGermanyOnyama Limba NEW
Misaki E PaprockiRussiaStephen Shaw QUALIFIED
Ricardo V RulapaughIndiaXuxue Feng QUALIFIED
Wickens V WaycottCanadaElwin Sharvill UNQUALIFIED
Adams E SchemmerArgentinaStephen Shaw RENEWAL
Arvin M TollnerGermanyAsiya Javayant PROPOSAL
Greenwood B CampainJapanBernardo Dominic NEW
James W FollerItalyElwin Sharvill NEGOTIATION
Costa C FerenczGermanyBernardo Dominic RENEWAL
Francesco U SergiFranceAnna Fali NEW
Leja L VenereGermanyIvan Magalhaes PROPOSAL
Johnson F DoeIndiaXuxue Feng NEGOTIATION
Chavez I DarakjyUnited KingdomStephen Shaw NEW
Frozen Columns
Name
Antonio L Glick
Arvin V Iturbide
Misaki Y Flosi
Munro N Nestle
Francesco P Amigon
Stacey K Iturbide
Julie T Albares
Jefferson D Rim
Aruna W Nicka
Aruna N Garufi
Octavia Y Schemmer
Izzy A Glick
Cody G Caldarera
Izzy N Garufi
Murillo W Saylors
Cody X Chui
Leja T Perin
David W Dilliard
Jeanfrancois N Ruta
Misaki S Briddick
Chavez K Perin
Munro L Stenseth
Smith R Chui
Misaki D Rulapaugh
Leja V Campain
Jefferson B Venere
Smith D Caudy
Maisha D Caudy
Sinclair G Tollner
James N Iturbide
Ashley H Ostrosky
Juan C Glick
Smith E Marrier
Adams G Figeroa
Clifford Y Caudy
Stacey V Campain
Mayumi C Malet
Ricardo R Doe
Juan T Glick
Jones H Caldarera
Izzy M Ruta
Antonio H Malet
Leja I Slusarski
Leon U Bolognia
Aika D Paprocki
Leon L Schemmer
Wickens X Campain
Ivar H Waycott
Greenwood I Glick
Arvin J Garufi
IdCountryDate
1000Canada2024-04-23
1001Japan2024-04-16
1002India2024-04-21
1003Canada2024-04-19
1004Spain2024-04-07
1005United Kingdom2024-04-30
1006United Kingdom2024-04-25
1007India2024-04-07
1008Germany2024-04-21
1009Argentina2024-04-17
1010Australia2024-04-25
1011Spain2024-04-07
1012Australia2024-05-02
1013Argentina2024-04-06
1014Australia2024-04-29
1015France2024-04-23
1016Italy2024-04-03
1017Brazil2024-04-16
1018India2024-04-20
1019Russia2024-04-04
1020Spain2024-04-27
1021Japan2024-04-03
1022Germany2024-04-21
1023Brazil2024-04-09
1024Argentina2024-04-09
1025Canada2024-04-12
1026Brazil2024-04-07
1027United Kingdom2024-04-12
1028Russia2024-04-04
1029Italy2024-05-02
1030Argentina2024-04-30
1031Italy2024-05-02
1032India2024-04-09
1033France2024-04-14
1034Spain2024-04-07
1035Argentina2024-04-05
1036Russia2024-04-12
1037Spain2024-04-16
1038Argentina2024-04-23
1039Germany2024-04-29
1040Spain2024-04-28
1041Germany2024-04-10
1042Argentina2024-04-19
1043Canada2024-04-09
1044Australia2024-04-09
1045Japan2024-04-17
1046Spain2024-04-08
1047Italy2024-04-06
1048India2024-04-27
1049Brazil2024-04-09

On-Demand Data

NameIdCountryDate
Misaki N Morasca1000Spain2024-04-12
Juan K Kolmetz1001Japan2024-05-01
James W Stockham1002India2024-04-11
Faith D Waycott1003United Kingdom2024-04-12
Leon P Amigon1004Germany2024-04-22
Juan T Waycott1005India2024-04-28
Chavez G Darakjy1006Spain2024-04-29
Aditya M Venere1007France2024-04-08
Kaitlin U Sergi1008Brazil2024-04-07
Costa A Gillian1009United Kingdom2024-04-05
Misaki J Perin1010Australia2024-04-04
Rodrigues H Dilliard1011Japan2024-04-26
Antonio K Foller1012Argentina2024-04-19
Julie P Royster1013Australia2024-04-25
Julie N Marrier1014Brazil2024-04-14
Silvio Z Perin1015France2024-04-15
Rodrigues J Paprocki1016France2024-04-10
Jones U Maclead1017Argentina2024-04-27
Emily I Morasca1018Australia2024-04-04
Ivar H Gaucho1019Japan2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues T StensethJapanIvan Magalhaes NEW
Ricardo E CampainFranceBernardo Dominic NEGOTIATION
Faith E WieserUnited KingdomStephen Shaw PROPOSAL
Jones R DarakjyArgentinaBernardo Dominic UNQUALIFIED
Adams X GlickUnited KingdomAnna Fali UNQUALIFIED
Mayumi V NickaBrazilIoni Bowcher QUALIFIED
Murillo C CaldareraAustraliaElwin Sharvill UNQUALIFIED
Clifford U DoeCanadaIvan Magalhaes PROPOSAL
Silvio K DarakjyBrazilBernardo Dominic RENEWAL
Misaki W OldroydArgentinaAmy Elsner NEGOTIATION
Rodrigues S FollerIndiaIoni Bowcher NEW
Octavia N StensethCanadaBernardo Dominic RENEWAL
Munro S BriddickAustraliaIoni Bowcher PROPOSAL
Izzy T BologniaItalyAmy Elsner PROPOSAL
Aditya D RimCanadaStephen Shaw NEW
Jones O SchemmerAustraliaIoni Bowcher QUALIFIED
Salvatore A FollerSpainXuxue Feng NEW
Misaki G GlickBrazilStephen Shaw QUALIFIED
Greenwood F DilliardUnited KingdomElwin Sharvill QUALIFIED
Chavez S DilliardArgentinaAnna Fali PROPOSAL
Emily F MaletBrazilAnna Fali NEGOTIATION
Sinclair F WieserRussiaXuxue Feng NEW
Ashley Z WaycottFranceAmy Elsner QUALIFIED
Silvio D MaletAustraliaOnyama Limba QUALIFIED
Aika A ButtArgentinaXuxue Feng PROPOSAL
David F DarakjyIndiaAnna Fali PROPOSAL
Aruna N GauchoCanadaBernardo Dominic RENEWAL
Octavia V RimBrazilAnna Fali UNQUALIFIED
Jefferson G WhobreySpainBernardo Dominic NEW
Jeanfrancois H KuskoJapanElwin Sharvill NEW
Izzy F StensethItalyBernardo Dominic RENEWAL
Jennifer J CaudyRussiaStephen Shaw PROPOSAL
Ricardo V FollerArgentinaAsiya Javayant RENEWAL
Ashley I RutaUnited KingdomIoni Bowcher RENEWAL
Julie D StensethIndiaAnna Fali UNQUALIFIED
Mayumi A OldroydAustraliaBernardo Dominic PROPOSAL
Rodrigues F MacleadFranceAsiya Javayant RENEWAL
Murillo W NestleIndiaIvan Magalhaes NEW
Juan T NickaGermanyOnyama Limba NEW
David O CaudyArgentinaIvan Magalhaes NEW

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