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
Francesco L SergiFranceBernardo Dominic NEW
Munro A RoysterCanadaAmy Elsner NEGOTIATION
Munro G PoquetteCanadaIoni Bowcher RENEWAL
David P ShinkoFranceXuxue Feng UNQUALIFIED
Stacey G FigeroaFranceStephen Shaw NEGOTIATION
Johnson W VenereIndiaOnyama Limba NEW
Claire W WaycottItalyXuxue Feng QUALIFIED
Ashley P RutaIndiaElwin Sharvill RENEWAL
Claire W InouyeUnited KingdomAsiya Javayant UNQUALIFIED
Jefferson G DoeArgentinaAsiya Javayant NEGOTIATION
Salvatore V FigeroaIndiaIvan Magalhaes UNQUALIFIED
Leja A FollerCanadaXuxue Feng RENEWAL
Mujtaba H AmigonRussiaAsiya Javayant UNQUALIFIED
Antonio U SergiRussiaIvan Magalhaes RENEWAL
Izzy Q SlusarskiRussiaOnyama Limba RENEWAL
Smith R BriddickRussiaAnna Fali RENEWAL
Smith O FlosiArgentinaIvan Magalhaes NEGOTIATION
Misaki J AlbaresAustraliaOnyama Limba NEW
Maria J KolmetzSpainStephen Shaw QUALIFIED
Morrow F MaletIndiaBernardo Dominic RENEWAL
Cody E BriddickSpainAsiya Javayant UNQUALIFIED
Alejandro D KolmetzCanadaAsiya Javayant UNQUALIFIED
Costa V NickaRussiaAsiya Javayant UNQUALIFIED
Faith U WieserAustraliaElwin Sharvill UNQUALIFIED
Salvatore D ChuiItalyAsiya Javayant NEW
Tony Q KuskoRussiaAsiya Javayant RENEWAL
Jeanfrancois P PaprockiCanadaAnna Fali UNQUALIFIED
Nicolas T SaylorsAustraliaStephen Shaw QUALIFIED
Misaki K FigeroaItalyXuxue Feng QUALIFIED
Misaki H GauchoRussiaXuxue Feng NEW
Murillo R DoeGermanyElwin Sharvill NEGOTIATION
Chavez D NestleCanadaBernardo Dominic RENEWAL
Jeanfrancois L MorascaGermanyIvan Magalhaes NEGOTIATION
Izzy X BriddickBrazilAmy Elsner UNQUALIFIED
Deepesh W VenereFranceIvan Magalhaes NEW
Cody R VenereAustraliaStephen Shaw QUALIFIED
James D FlosiGermanyIvan Magalhaes NEW
Aditya C MaletIndiaBernardo Dominic UNQUALIFIED
Misaki T PoquetteArgentinaStephen Shaw NEW
Wickens C CampainIndiaStephen Shaw PROPOSAL
Rodrigues F GarufiItalyAmy Elsner NEGOTIATION
Tony S AmigonArgentinaAnna Fali QUALIFIED
Leon M DarakjyJapanAmy Elsner QUALIFIED
Murillo I WieserGermanyXuxue Feng UNQUALIFIED
Mujtaba A BologniaAustraliaIvan Magalhaes NEW
Julie T MarrierJapanStephen Shaw UNQUALIFIED
Antonio Z KolmetzIndiaOnyama Limba NEGOTIATION
Murillo Z StensethBrazilXuxue Feng QUALIFIED
Stacey J PerinArgentinaAnna Fali NEW
Sinclair Z WhobreyItalyIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Costa S VocelkaArgentinaAmy Elsner NEW
Claire E FollerFranceAnna Fali RENEWAL
Deepesh D NestleIndiaBernardo Dominic QUALIFIED
Alejandro H BologniaIndiaBernardo Dominic PROPOSAL
Julie B RimSpainOnyama Limba PROPOSAL
Ashley E GillianIndiaBernardo Dominic RENEWAL
Izzy G DarakjyAustraliaAsiya Javayant NEGOTIATION
Johnson Z FigeroaJapanIoni Bowcher NEW
Murillo F MaletAustraliaOnyama Limba QUALIFIED
Sinclair S VocelkaJapanIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro V MorascaBrazil2024-04-02King, Christopher A Esq PROPOSAL31Xuxue Feng
1001Julie F IturbideBrazil2024-04-18Feiner Bros QUALIFIED71Anna Fali
1002Izzy H StensethGermany2024-03-27Feiner Bros NEW80Onyama Limba
1003Aika Y TollnerJapan2024-04-16Rangoni Of Florence NEW97Asiya Javayant
1004Izzy C DarakjyRussia2024-04-17Rangoni Of Florence RENEWAL66Onyama Limba
1005Adams X CampainArgentina2024-04-23Chapman, Ross E Esq NEW10Bernardo Dominic
1006Kaitlin C SlusarskiIndia2024-04-02Printing Dimensions NEW7Xuxue Feng
1007Wickens P VenereJapan2024-04-24Chanay, Jeffrey A Esq NEGOTIATION65Anna Fali
1008Greenwood D RimUnited Kingdom2024-04-09Benton, John B Jr NEW18Elwin Sharvill
1009Ivar U MarrierArgentina2024-04-11Morlong Associates UNQUALIFIED93Stephen Shaw
1010Leon W CampainSpain2024-04-21Chapman, Ross E Esq PROPOSAL62Elwin Sharvill
1011Jeanfrancois Z ChuiSpain2024-04-22Rousseaux, Michael Esq NEW28Anna Fali
1012Jennifer Z CaldareraItaly2024-03-27Chemel, James L Cpa PROPOSAL9Xuxue Feng
1013Arvin T MarrierRussia2024-04-23Rousseaux, Michael Esq RENEWAL65Ivan Magalhaes
1014Antonio M BowleyRussia2024-03-26Morlong Associates NEGOTIATION97Amy Elsner
1015Ashley R WhobreyItaly2024-04-03Chemel, James L Cpa NEW22Bernardo Dominic
1016Greenwood X IturbideCanada2024-04-14Benton, John B Jr NEW15Ioni Bowcher
1017Cody Q WhobreySpain2024-04-13Feltz Printing Service PROPOSAL31Ioni Bowcher
1018James A ShinkoRussia2024-04-12Dorl, James J Esq RENEWAL52Asiya Javayant
1019Mujtaba D AlbaresItaly2024-04-03Printing Dimensions NEGOTIATION73Amy Elsner
1020Faith Z CaldareraArgentina2024-04-20Chapman, Ross E Esq NEW49Ioni Bowcher
1021Leon V TollnerGermany2024-04-22Truhlar And Truhlar Attys RENEWAL10Xuxue Feng
1022Murillo I SlusarskiItaly2024-04-14Feltz Printing Service NEGOTIATION78Onyama Limba
1023Sinclair G KuskoFrance2024-04-04King, Christopher A Esq QUALIFIED60Asiya Javayant
1024Mayumi Z ChuiFrance2024-03-30Buckley Miller Wright NEW16Onyama Limba
1025Faith V BriddickItaly2024-04-11Commercial Press PROPOSAL56Asiya Javayant
1026Juan F TollnerArgentina2024-04-10Feiner Bros RENEWAL27Ivan Magalhaes
1027Emily G FigeroaCanada2024-04-08King, Christopher A Esq NEW37Anna Fali
1028David R FigeroaBrazil2024-04-15Buckley Miller Wright RENEWAL91Asiya Javayant
1029Munro W SchemmerUnited Kingdom2024-04-13Chapman, Ross E Esq UNQUALIFIED30Onyama Limba
1030David D PoquetteGermany2024-04-13Feltz Printing Service NEW37Stephen Shaw
1031Mujtaba E KuskoBrazil2024-03-31Buckley Miller Wright QUALIFIED49Onyama Limba
1032Smith E CaudyUnited Kingdom2024-04-08Chapman, Ross E Esq NEGOTIATION69Bernardo Dominic
1033Claire D NickaUnited Kingdom2024-04-06Chapman, Ross E Esq PROPOSAL72Bernardo Dominic
1034Tony U BologniaAustralia2024-04-06Morlong Associates NEGOTIATION31Asiya Javayant
1035Kaitlin J InouyeBrazil2024-04-07King, Christopher A Esq RENEWAL41Asiya Javayant
1036Arvin W MorascaFrance2024-03-28Printing Dimensions RENEWAL3Onyama Limba
1037Mujtaba Z TollnerBrazil2024-03-31Benton, John B Jr RENEWAL0Anna Fali
1038Misaki S StensethIndia2024-04-05Buckley Miller Wright NEW97Amy Elsner
1039Greenwood Y ButtBrazil2024-04-08Chanay, Jeffrey A Esq RENEWAL6Bernardo Dominic
1040Wickens P RutaUnited Kingdom2024-04-22Buckley Miller Wright NEW96Elwin Sharvill
1041Isabel W ButtItaly2024-04-07King, Christopher A Esq PROPOSAL57Elwin Sharvill
1042Greenwood E RimFrance2024-04-05Chapman, Ross E Esq PROPOSAL22Elwin Sharvill
1043Maria A SchemmerGermany2024-04-14Truhlar And Truhlar Attys UNQUALIFIED78Onyama Limba
1044Johnson D SchemmerAustralia2024-04-09King, Christopher A Esq QUALIFIED92Asiya Javayant
1045Alejandro P VenereSpain2024-04-15Morlong Associates UNQUALIFIED67Onyama Limba
1046Johnson I SaylorsArgentina2024-04-10Benton, John B Jr QUALIFIED96Ioni Bowcher
1047Izzy C InouyeArgentina2024-04-24Feiner Bros RENEWAL81Anna Fali
1048Wickens V MorascaSpain2024-03-29Morlong Associates PROPOSAL96Onyama Limba
1049Antonio W IturbideAustralia2024-04-01Buckley Miller Wright NEGOTIATION86Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Chavez L NestleRussiaStephen Shaw NEW
Adams K DarakjyIndiaIoni Bowcher NEGOTIATION
Chavez B BologniaAustraliaAnna Fali UNQUALIFIED
Aditya M MarrierUnited KingdomStephen Shaw QUALIFIED
Nicolas R NestleFranceOnyama Limba QUALIFIED
Mayumi K DoeItalyOnyama Limba QUALIFIED
Kaitlin D GlickFranceStephen Shaw UNQUALIFIED
Kadeem Q MaletUnited KingdomAmy Elsner PROPOSAL
Maisha D GillianFranceOnyama Limba NEW
Murillo L BologniaUnited KingdomAsiya Javayant UNQUALIFIED
Arvin I VocelkaArgentinaIoni Bowcher NEGOTIATION
Rodrigues H NestleGermanyStephen Shaw UNQUALIFIED
Mayumi K OstroskyAustraliaAnna Fali UNQUALIFIED
Johnson P BowleyUnited KingdomIoni Bowcher QUALIFIED
Octavia I DarakjyBrazilBernardo Dominic NEGOTIATION
Johnson F OldroydJapanOnyama Limba UNQUALIFIED
Smith V NickaBrazilXuxue Feng PROPOSAL
Sinclair O OstroskyJapanAsiya Javayant PROPOSAL
Maria Y MaletFranceBernardo Dominic PROPOSAL
Adams S RoysterItalyElwin Sharvill NEW
Aika E GillianCanadaBernardo Dominic UNQUALIFIED
Emily P CaudyAustraliaAnna Fali RENEWAL
Deepesh I BowleyArgentinaXuxue Feng NEGOTIATION
Leja L NickaGermanyAsiya Javayant PROPOSAL
Aika T MorascaAustraliaAmy Elsner NEW
Maisha W ShinkoBrazilElwin Sharvill QUALIFIED
Morrow C PaprockiJapanIvan Magalhaes PROPOSAL
Maisha X GarufiUnited KingdomBernardo Dominic QUALIFIED
Aruna E RimRussiaAnna Fali NEW
Rodrigues S BriddickJapanAmy Elsner RENEWAL
James W RutaSpainStephen Shaw QUALIFIED
Silvio A MacleadIndiaBernardo Dominic NEGOTIATION
Ashley H InouyeFranceAsiya Javayant PROPOSAL
Tony E VocelkaIndiaIvan Magalhaes NEGOTIATION
Ivar T FigeroaAustraliaElwin Sharvill NEW
Stacey J RimAustraliaIoni Bowcher NEW
Claire D MaletItalyIvan Magalhaes NEGOTIATION
Greenwood U FigeroaAustraliaXuxue Feng PROPOSAL
Aditya Q StockhamJapanIoni Bowcher RENEWAL
Ashley X StensethIndiaIoni Bowcher NEGOTIATION
Francesco K DarakjyFranceBernardo Dominic NEW
Costa C InouyeAustraliaAmy Elsner UNQUALIFIED
Ashley O KolmetzArgentinaIvan Magalhaes RENEWAL
Claire R RoysterFranceXuxue Feng UNQUALIFIED
Nicolas N PoquetteBrazilAsiya Javayant NEGOTIATION
Ashley X MaletIndiaElwin Sharvill UNQUALIFIED
Greenwood R VenereSpainAmy Elsner RENEWAL
Jennifer V PerinItalyOnyama Limba UNQUALIFIED
Chavez G NestleRussiaIoni Bowcher PROPOSAL
Ricardo M OstroskyUnited KingdomStephen Shaw QUALIFIED
Frozen Columns
Name
Juan Y Malet
Costa S Saylors
Octavia K Vocelka
Ricardo Q Sergi
Cody U Briddick
Tony W Glick
Tony S Foller
Antonio P Foller
Rodrigues O Inouye
Ricardo K Chui
Costa L Shinko
Darci C Malet
Costa Z Flosi
Julie P Bowley
Emily K Rim
Mayumi F Garufi
Juan P Amigon
Greenwood J Foller
Mayumi F Saylors
Jeanfrancois B Tollner
Maisha K Sergi
Juan P Briddick
Mujtaba A Kusko
Ivar Y Campain
Jones W Rulapaugh
Isabel T Gillian
Adams P Malet
Ricardo R Doe
Jones K Nicka
Clifford W Poquette
Mayumi O Wieser
Ashley E Schemmer
Francesco K Morasca
Munro Y Stockham
Smith S Doe
Misaki H Saylors
Chavez Y Saylors
Jones U Ostrosky
Antonio W Maclead
Isabel J Iturbide
Tony X Ferencz
Clifford D Wieser
Aditya X Kolmetz
Maisha Q Stenseth
Aika A Perin
James H Kolmetz
Maisha P Butt
Arvin E Oldroyd
Misaki Z Poquette
Munro B Royster
IdCountryDate
1000Spain2024-04-09
1001Italy2024-04-17
1002Canada2024-04-06
1003Brazil2024-03-28
1004Italy2024-04-15
1005Japan2024-04-03
1006Argentina2024-03-31
1007Argentina2024-04-02
1008France2024-04-17
1009France2024-04-21
1010Japan2024-04-16
1011Canada2024-04-17
1012Argentina2024-04-13
1013France2024-04-14
1014Brazil2024-04-09
1015Russia2024-04-20
1016Germany2024-04-09
1017India2024-03-27
1018Germany2024-04-17
1019United Kingdom2024-03-26
1020Germany2024-04-16
1021Argentina2024-03-28
1022Brazil2024-04-02
1023Italy2024-04-07
1024France2024-04-10
1025Brazil2024-04-20
1026Italy2024-04-12
1027Spain2024-04-23
1028Italy2024-04-11
1029France2024-04-09
1030United Kingdom2024-04-19
1031France2024-04-24
1032Australia2024-03-29
1033United Kingdom2024-04-11
1034Australia2024-04-18
1035Argentina2024-04-03
1036Australia2024-04-08
1037France2024-04-17
1038Argentina2024-04-16
1039United Kingdom2024-04-21
1040Australia2024-04-04
1041Australia2024-04-04
1042France2024-03-30
1043Japan2024-03-28
1044Brazil2024-04-24
1045Japan2024-04-17
1046Canada2024-03-30
1047Argentina2024-04-10
1048Australia2024-04-07
1049India2024-04-16

On-Demand Data

NameIdCountryDate
Leon K Rulapaugh1000Argentina2024-04-19
Sinclair E Ostrosky1001India2024-04-14
Antonio R Gaucho1002Russia2024-04-21
Ricardo C Oldroyd1003Japan2024-04-13
Mayumi U Caudy1004Italy2024-04-13
Greenwood P Foller1005Canada2024-04-07
Izzy Z Butt1006France2024-04-17
Morrow G Kolmetz1007Spain2024-04-17
Mujtaba P Ferencz1008Canada2024-04-03
Octavia I Sergi1009France2024-04-22
Leja J Vocelka1010Japan2024-03-26
Octavia B Doe1011France2024-04-12
Leja A Royster1012Argentina2024-04-18
Kadeem M Caudy1013Germany2024-04-24
Antonio T Gillian1014India2024-04-10
Rodrigues G Briddick1015Canada2024-04-20
Isabel N Caldarera1016United Kingdom2024-04-09
Ricardo L Briddick1017Japan2024-04-10
Izzy B Iturbide1018Russia2024-03-31
Aika X Royster1019Spain2024-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez P RoysterSpainIoni Bowcher NEGOTIATION
Claire D OstroskyAustraliaOnyama Limba RENEWAL
Morrow G StockhamAustraliaIoni Bowcher RENEWAL
Adams Z BologniaBrazilAnna Fali UNQUALIFIED
Chavez Z RimItalyStephen Shaw QUALIFIED
James I BologniaGermanyIoni Bowcher RENEWAL
Emily X KolmetzCanadaIvan Magalhaes NEW
Julie R MaletUnited KingdomAsiya Javayant RENEWAL
Tony G KuskoIndiaAnna Fali UNQUALIFIED
Nicolas K GauchoGermanyElwin Sharvill NEGOTIATION
Kadeem K PaprockiItalyOnyama Limba UNQUALIFIED
David S CaudyUnited KingdomIvan Magalhaes NEW
Misaki T PerinAustraliaAnna Fali UNQUALIFIED
Nicolas W MaletRussiaAsiya Javayant UNQUALIFIED
Leon P KolmetzAustraliaStephen Shaw UNQUALIFIED
Leon Y VocelkaRussiaElwin Sharvill NEW
Nicolas P RimUnited KingdomXuxue Feng RENEWAL
Kaitlin S CampainUnited KingdomStephen Shaw QUALIFIED
Aika Z PoquetteCanadaAnna Fali NEW
James U AlbaresRussiaAmy Elsner PROPOSAL
Mayumi D DoeItalyElwin Sharvill QUALIFIED
Antonio Q MaletItalyStephen Shaw NEW
Johnson F FigeroaUnited KingdomAsiya Javayant UNQUALIFIED
Jefferson D KuskoIndiaXuxue Feng RENEWAL
Silvio S FerenczBrazilAsiya Javayant PROPOSAL
Francesco T FigeroaRussiaOnyama Limba UNQUALIFIED
Francesco E DilliardArgentinaBernardo Dominic UNQUALIFIED
Ricardo D GarufiAustraliaElwin Sharvill PROPOSAL
Cody M StensethItalyStephen Shaw NEW
Ashley M MaletFranceAsiya Javayant UNQUALIFIED
Leja C PoquetteCanadaOnyama Limba RENEWAL
James U WaycottUnited KingdomAnna Fali UNQUALIFIED
Stacey C WaycottIndiaAnna Fali RENEWAL
Claire L PaprockiAustraliaStephen Shaw QUALIFIED
Ivar X AmigonJapanOnyama Limba NEW
Jennifer C BriddickUnited KingdomAmy Elsner QUALIFIED
James M DoeItalyIoni Bowcher QUALIFIED
Izzy V NestleArgentinaAnna Fali NEGOTIATION
Tony I ButtItalyOnyama Limba PROPOSAL
Jeanfrancois L AmigonGermanyIoni Bowcher RENEWAL

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