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
Juan F SlusarskiUnited KingdomXuxue Feng PROPOSAL
Johnson U TollnerCanadaAnna Fali RENEWAL
Faith P PerinRussiaIoni Bowcher NEGOTIATION
Greenwood S BowleyBrazilStephen Shaw QUALIFIED
Ricardo C StensethFranceAsiya Javayant NEGOTIATION
Darci B DoeCanadaStephen Shaw UNQUALIFIED
Murillo T BriddickArgentinaAnna Fali NEGOTIATION
Johnson V RoysterFranceAsiya Javayant NEGOTIATION
Smith S InouyeAustraliaAnna Fali NEGOTIATION
Aruna V KolmetzBrazilIoni Bowcher UNQUALIFIED
Francesco O SergiArgentinaElwin Sharvill QUALIFIED
Tony M WhobreyJapanBernardo Dominic QUALIFIED
Izzy D RoysterArgentinaOnyama Limba QUALIFIED
James E GauchoJapanAnna Fali PROPOSAL
Jeanfrancois G SchemmerGermanyAnna Fali RENEWAL
Deepesh L GlickGermanyElwin Sharvill RENEWAL
Jones O VenereFranceOnyama Limba RENEWAL
Costa J WaycottArgentinaBernardo Dominic RENEWAL
Emily S GillianItalyAsiya Javayant PROPOSAL
Misaki G NestleFranceIoni Bowcher QUALIFIED
Arvin N OldroydUnited KingdomElwin Sharvill QUALIFIED
Sinclair R WieserItalyBernardo Dominic NEW
Kadeem E PoquetteSpainXuxue Feng QUALIFIED
Kaitlin R SchemmerGermanyElwin Sharvill NEGOTIATION
Claire G DilliardGermanyStephen Shaw PROPOSAL
Cody M DilliardAustraliaAsiya Javayant NEGOTIATION
Antonio M CampainAustraliaAmy Elsner QUALIFIED
Morrow B CampainItalyBernardo Dominic NEGOTIATION
Isabel U RoysterSpainAnna Fali UNQUALIFIED
Smith Y VenereJapanIvan Magalhaes PROPOSAL
Tony W CaldareraGermanyBernardo Dominic RENEWAL
Chavez F DilliardJapanStephen Shaw RENEWAL
Munro W KolmetzArgentinaOnyama Limba NEW
Smith B GarufiJapanIvan Magalhaes NEGOTIATION
Claire M RimJapanAsiya Javayant PROPOSAL
Antonio Q VocelkaItalyOnyama Limba NEW
Arvin H ButtFranceBernardo Dominic QUALIFIED
Aika V TollnerUnited KingdomIvan Magalhaes PROPOSAL
Rodrigues D PoquetteGermanyStephen Shaw NEW
Mujtaba N KolmetzRussiaIvan Magalhaes QUALIFIED
Cody S AmigonFranceAnna Fali NEGOTIATION
James Z InouyeIndiaAmy Elsner PROPOSAL
Deepesh U MarrierRussiaStephen Shaw NEW
Munro K GauchoArgentinaBernardo Dominic UNQUALIFIED
Ivar C KolmetzCanadaStephen Shaw NEGOTIATION
Chavez T PaprockiJapanElwin Sharvill UNQUALIFIED
Clifford P GlickCanadaAmy Elsner UNQUALIFIED
Francesco N MorascaJapanXuxue Feng PROPOSAL
Salvatore Q SlusarskiFranceAmy Elsner NEGOTIATION
Munro J WhobreyItalyBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Munro J PaprockiAustraliaElwin Sharvill RENEWAL
Silvio A GillianUnited KingdomXuxue Feng UNQUALIFIED
Mayumi V GarufiFranceElwin Sharvill RENEWAL
Francesco H FollerRussiaIoni Bowcher PROPOSAL
Aika E PoquetteRussiaAsiya Javayant PROPOSAL
Izzy A RimSpainIoni Bowcher NEGOTIATION
Leon Z WieserUnited KingdomAmy Elsner QUALIFIED
Deepesh W FollerFranceAsiya Javayant NEGOTIATION
Deepesh D DilliardCanadaAsiya Javayant RENEWAL
Octavia S CaudyIndiaStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues D SlusarskiItaly2024-05-13Feiner Bros UNQUALIFIED82Asiya Javayant
1001Aditya A SaylorsAustralia2024-05-18Rangoni Of Florence UNQUALIFIED96Anna Fali
1002Sinclair Z PoquetteJapan2024-05-13Chemel, James L Cpa NEW76Anna Fali
1003Jefferson V InouyeBrazil2024-05-20Rousseaux, Michael Esq RENEWAL82Asiya Javayant
1004Chavez L WaycottJapan2024-05-21Commercial Press NEGOTIATION57Onyama Limba
1005Mujtaba T CaudyBrazil2024-05-14Feltz Printing Service QUALIFIED87Asiya Javayant
1006Clifford R GillianArgentina2024-05-08Morlong Associates NEGOTIATION27Ioni Bowcher
1007James C MorascaCanada2024-05-07Feltz Printing Service NEW58Asiya Javayant
1008Alejandro Z GarufiUnited Kingdom2024-05-15Chanay, Jeffrey A Esq NEGOTIATION47Onyama Limba
1009Deepesh P NestleJapan2024-05-18Printing Dimensions QUALIFIED16Anna Fali
1010Ivar W PerinRussia2024-04-23King, Christopher A Esq NEW15Ivan Magalhaes
1011Isabel H BologniaUnited Kingdom2024-05-20Truhlar And Truhlar Attys NEW82Anna Fali
1012Ivar J CaldareraJapan2024-04-28Chapman, Ross E Esq RENEWAL5Stephen Shaw
1013Jefferson Y GarufiJapan2024-05-03King, Christopher A Esq PROPOSAL19Stephen Shaw
1014Johnson V MaletAustralia2024-04-24Chanay, Jeffrey A Esq QUALIFIED23Ivan Magalhaes
1015David P VenereSpain2024-05-06Rousseaux, Michael Esq UNQUALIFIED5Onyama Limba
1016Alejandro N CampainArgentina2024-05-12Truhlar And Truhlar Attys NEGOTIATION8Xuxue Feng
1017Claire U WhobreyArgentina2024-05-07Rousseaux, Michael Esq NEGOTIATION1Asiya Javayant
1018Mujtaba Z RutaArgentina2024-04-23Commercial Press NEGOTIATION91Xuxue Feng
1019Smith I SchemmerGermany2024-04-25Chemel, James L Cpa UNQUALIFIED65Onyama Limba
1020Murillo Y FigeroaBrazil2024-04-23Benton, John B Jr UNQUALIFIED56Xuxue Feng
1021Alejandro A FerenczRussia2024-05-13Rousseaux, Michael Esq NEW55Bernardo Dominic
1022Wickens M WieserJapan2024-04-28Chapman, Ross E Esq NEGOTIATION80Onyama Limba
1023Sinclair B FollerCanada2024-05-01Rousseaux, Michael Esq NEGOTIATION58Bernardo Dominic
1024Jeanfrancois X OstroskyCanada2024-05-19King, Christopher A Esq UNQUALIFIED38Anna Fali
1025Munro E VocelkaGermany2024-05-17Feltz Printing Service RENEWAL68Amy Elsner
1026Misaki Z GillianItaly2024-05-20Buckley Miller Wright NEW57Bernardo Dominic
1027Morrow D GillianJapan2024-05-13Printing Dimensions RENEWAL77Ivan Magalhaes
1028Leja C MaletCanada2024-05-13Chapman, Ross E Esq NEW3Asiya Javayant
1029Kaitlin G IturbideBrazil2024-05-08King, Christopher A Esq QUALIFIED88Anna Fali
1030Juan V WaycottFrance2024-05-21Buckley Miller Wright QUALIFIED43Asiya Javayant
1031Ivar N MaletRussia2024-04-27Printing Dimensions QUALIFIED85Elwin Sharvill
1032Rodrigues L CampainGermany2024-05-02Benton, John B Jr NEGOTIATION39Anna Fali
1033Greenwood W PaprockiAustralia2024-04-28Printing Dimensions PROPOSAL88Ivan Magalhaes
1034Smith N SlusarskiAustralia2024-05-04Feltz Printing Service UNQUALIFIED48Anna Fali
1035Kaitlin M MaletArgentina2024-04-30Rangoni Of Florence QUALIFIED21Elwin Sharvill
1036Leja D RutaBrazil2024-05-07Printing Dimensions NEW60Onyama Limba
1037Greenwood A MacleadRussia2024-05-06Dorl, James J Esq PROPOSAL38Amy Elsner
1038Murillo Y MaletUnited Kingdom2024-04-29Commercial Press QUALIFIED29Stephen Shaw
1039Leon D RimBrazil2024-05-02Dorl, James J Esq UNQUALIFIED72Ivan Magalhaes
1040James J RoysterItaly2024-04-30Truhlar And Truhlar Attys NEW75Asiya Javayant
1041Greenwood T DarakjyArgentina2024-04-24Buckley Miller Wright NEGOTIATION15Bernardo Dominic
1042Claire F InouyeGermany2024-05-11Benton, John B Jr NEW23Xuxue Feng
1043Leja Q InouyeSpain2024-05-07Chapman, Ross E Esq NEW51Ivan Magalhaes
1044Ivar B VenereIndia2024-05-16Chemel, James L Cpa RENEWAL13Amy Elsner
1045Tony N RulapaughAustralia2024-05-09Rousseaux, Michael Esq NEGOTIATION0Asiya Javayant
1046Adams L DoeItaly2024-04-25Printing Dimensions UNQUALIFIED3Bernardo Dominic
1047Emily J AmigonArgentina2024-05-17Benton, John B Jr NEW84Amy Elsner
1048Misaki W RulapaughCanada2024-05-18Feiner Bros QUALIFIED41Elwin Sharvill
1049Alejandro Z ChuiUnited Kingdom2024-04-28Benton, John B Jr NEGOTIATION43Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Chavez X ChuiCanadaOnyama Limba UNQUALIFIED
Ashley C PerinGermanyAnna Fali RENEWAL
Sinclair R InouyeJapanXuxue Feng NEW
Costa T SchemmerAustraliaBernardo Dominic QUALIFIED
Izzy Q SlusarskiIndiaAsiya Javayant PROPOSAL
Jefferson W CaudyAustraliaAmy Elsner NEW
Emily S WhobreyItalyOnyama Limba NEW
Arvin X VenereBrazilAnna Fali PROPOSAL
Octavia V FollerAustraliaIvan Magalhaes QUALIFIED
Mujtaba A InouyeSpainAmy Elsner UNQUALIFIED
Morrow M SlusarskiRussiaElwin Sharvill QUALIFIED
Smith O DoeRussiaIoni Bowcher UNQUALIFIED
Jones H MaletCanadaAnna Fali RENEWAL
Mayumi W StensethCanadaElwin Sharvill UNQUALIFIED
Octavia F BowleyBrazilOnyama Limba NEGOTIATION
Misaki C OstroskyCanadaStephen Shaw RENEWAL
Greenwood N VocelkaSpainElwin Sharvill PROPOSAL
Aruna D BriddickIndiaAnna Fali RENEWAL
Nicolas S NickaArgentinaIoni Bowcher NEW
Maria V FlosiIndiaStephen Shaw QUALIFIED
Jennifer T IturbideItalyIvan Magalhaes RENEWAL
Johnson U VocelkaItalyAmy Elsner RENEWAL
Johnson R DarakjyGermanyIoni Bowcher NEW
Claire V OldroydArgentinaXuxue Feng UNQUALIFIED
Juan U WieserItalyAnna Fali RENEWAL
Tony B RoysterBrazilOnyama Limba NEW
Mayumi O DarakjyFranceOnyama Limba NEW
Wickens X WhobreyCanadaXuxue Feng PROPOSAL
Mayumi G PaprockiBrazilXuxue Feng NEW
Faith W SchemmerIndiaIvan Magalhaes NEGOTIATION
Rodrigues M GlickRussiaElwin Sharvill QUALIFIED
Ivar S RulapaughGermanyBernardo Dominic UNQUALIFIED
Izzy K GauchoAustraliaAnna Fali QUALIFIED
Octavia Y VenereAustraliaOnyama Limba NEGOTIATION
Aruna M RimAustraliaAnna Fali UNQUALIFIED
Maisha D ShinkoRussiaOnyama Limba NEGOTIATION
Tony N OldroydRussiaIvan Magalhaes RENEWAL
Jennifer S MaletArgentinaXuxue Feng PROPOSAL
Stacey V RutaBrazilXuxue Feng RENEWAL
Murillo F DoeIndiaStephen Shaw RENEWAL
Antonio F BologniaItalyOnyama Limba UNQUALIFIED
Nicolas J IturbideSpainElwin Sharvill NEW
Francesco K ChuiItalyOnyama Limba NEW
Isabel W SchemmerSpainAnna Fali RENEWAL
Costa O StensethIndiaAnna Fali QUALIFIED
Faith Y ShinkoAustraliaOnyama Limba NEGOTIATION
Ashley G ShinkoFranceOnyama Limba RENEWAL
Ricardo A ChuiIndiaIoni Bowcher QUALIFIED
Tony P StensethItalyAmy Elsner PROPOSAL
Nicolas E NestleRussiaElwin Sharvill UNQUALIFIED
Frozen Columns
Name
David J Flosi
Munro J Oldroyd
Morrow H Ferencz
Francesco P Vocelka
Alejandro I Bolognia
Costa L Shinko
Wickens D Bowley
Morrow X Slusarski
Jones S Royster
Ricardo Q Schemmer
Mujtaba N Perin
Sinclair U Gaucho
Stacey B Gillian
Leon A Doe
Johnson K Nestle
Ricardo D Malet
Mujtaba P Iturbide
Maisha O Foller
Kadeem K Gillian
Chavez E Nicka
Greenwood J Waycott
Murillo X Ferencz
Juan H Campain
Smith W Butt
Munro L Tollner
Jones H Foller
Faith C Kusko
Leon F Garufi
Nicolas I Kusko
Costa O Inouye
Jefferson V Morasca
Isabel R Flosi
Mujtaba L Kolmetz
Sinclair P Schemmer
Murillo Q Oldroyd
Faith G Wieser
Munro Y Stenseth
Salvatore G Oldroyd
Jennifer L Gaucho
Alejandro P Vocelka
Sinclair F Marrier
Morrow R Malet
Kaitlin O Malet
Clifford W Paprocki
Darci M Chui
Cody Q Royster
Greenwood T Maclead
Greenwood B Oldroyd
Claire G Kusko
Jennifer C Gaucho
IdCountryDate
1000Australia2024-05-04
1001Canada2024-05-07
1002Australia2024-05-06
1003Brazil2024-05-12
1004Argentina2024-05-06
1005Argentina2024-04-25
1006Brazil2024-05-14
1007France2024-05-10
1008Australia2024-05-19
1009Argentina2024-05-12
1010Italy2024-04-27
1011Russia2024-04-30
1012Australia2024-05-21
1013Germany2024-05-17
1014Germany2024-04-24
1015Spain2024-04-30
1016Germany2024-04-24
1017Canada2024-04-27
1018Brazil2024-05-03
1019Japan2024-05-01
1020Japan2024-05-04
1021Spain2024-04-25
1022Italy2024-05-09
1023Japan2024-04-30
1024France2024-05-08
1025Brazil2024-05-19
1026Russia2024-05-01
1027Spain2024-05-18
1028Brazil2024-05-20
1029France2024-04-29
1030Russia2024-05-02
1031Argentina2024-04-27
1032France2024-04-22
1033Brazil2024-05-01
1034Brazil2024-05-03
1035Japan2024-05-16
1036Brazil2024-05-06
1037Russia2024-05-13
1038Brazil2024-04-28
1039Italy2024-05-10
1040Argentina2024-05-21
1041Brazil2024-04-29
1042France2024-04-23
1043Italy2024-05-15
1044Italy2024-05-20
1045Australia2024-05-06
1046Canada2024-05-07
1047Russia2024-04-25
1048Japan2024-05-14
1049France2024-05-14

On-Demand Data

NameIdCountryDate
Morrow R Ferencz1000Argentina2024-04-23
Deepesh I Bolognia1001Brazil2024-05-03
Faith K Stockham1002Spain2024-04-23
Alejandro L Maclead1003Germany2024-04-29
Octavia R Saylors1004Japan2024-04-23
Munro O Garufi1005United Kingdom2024-05-14
Stacey Z Glick1006Argentina2024-05-04
Rodrigues G Slusarski1007Brazil2024-04-25
Kadeem M Ruta1008Australia2024-04-22
Smith T Paprocki1009Canada2024-05-18
Stacey L Royster1010Spain2024-05-13
Munro I Whobrey1011Japan2024-05-05
Ivar S Campain1012Italy2024-05-16
Ashley A Figeroa1013Italy2024-05-10
Jeanfrancois I Stenseth1014Japan2024-04-24
Morrow C Stenseth1015Spain2024-05-06
Aditya F Darakjy1016France2024-05-15
Ivar F Amigon1017Italy2024-05-10
Mujtaba C Bolognia1018Italy2024-05-10
Silvio W Ruta1019United Kingdom2024-05-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow T TollnerArgentinaAsiya Javayant NEW
Nicolas B RulapaughCanadaAsiya Javayant NEW
Jones O MorascaGermanyAsiya Javayant QUALIFIED
Jones H MarrierIndiaIoni Bowcher PROPOSAL
Morrow O CaldareraJapanBernardo Dominic NEGOTIATION
Smith B StensethAustraliaXuxue Feng PROPOSAL
Greenwood E SchemmerArgentinaAnna Fali UNQUALIFIED
Aika R SlusarskiUnited KingdomAmy Elsner NEW
Kaitlin U MacleadJapanElwin Sharvill NEW
Deepesh H DarakjyUnited KingdomElwin Sharvill NEW
Antonio E BowleyArgentinaAmy Elsner PROPOSAL
Aika T MaletGermanyXuxue Feng PROPOSAL
Greenwood K RutaSpainAmy Elsner PROPOSAL
Ivar C DoeArgentinaIvan Magalhaes NEW
Ricardo G FigeroaItalyElwin Sharvill PROPOSAL
Mayumi Z MarrierFranceIvan Magalhaes NEW
Jeanfrancois I GarufiGermanyBernardo Dominic UNQUALIFIED
Johnson D IturbideGermanyIoni Bowcher NEW
Munro W BologniaArgentinaIvan Magalhaes RENEWAL
Kadeem S BowleyGermanyIoni Bowcher UNQUALIFIED
Clifford L MorascaItalyAsiya Javayant RENEWAL
Johnson D WieserFranceIoni Bowcher NEW
Smith I VocelkaBrazilStephen Shaw NEGOTIATION
Salvatore S RimAustraliaAsiya Javayant PROPOSAL
Aika S GillianGermanyAsiya Javayant NEGOTIATION
David N MacleadSpainIvan Magalhaes NEW
Nicolas G PoquetteJapanIoni Bowcher QUALIFIED
Mayumi L FerenczRussiaBernardo Dominic PROPOSAL
Maria Q PerinBrazilStephen Shaw QUALIFIED
Octavia R WhobreyBrazilIvan Magalhaes PROPOSAL
Clifford Q MaletSpainIvan Magalhaes NEGOTIATION
Emily I FollerIndiaAsiya Javayant QUALIFIED
Kadeem X MarrierItalyAnna Fali UNQUALIFIED
Deepesh S FollerSpainXuxue Feng NEW
Nicolas M VenereSpainIvan Magalhaes PROPOSAL
Octavia Y BologniaGermanyBernardo Dominic NEGOTIATION
Murillo L ButtJapanAnna Fali RENEWAL
Francesco B NickaItalyOnyama Limba PROPOSAL
Isabel E NestleUnited KingdomXuxue Feng RENEWAL
Jones D ChuiAustraliaIvan Magalhaes 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>