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
Claire U InouyeItalyIoni Bowcher NEW
Jeanfrancois J CaldareraRussiaStephen Shaw UNQUALIFIED
Aditya D ChuiSpainAsiya Javayant QUALIFIED
Murillo L KuskoArgentinaAsiya Javayant NEW
Izzy M SergiBrazilAsiya Javayant RENEWAL
Smith T DoeBrazilAmy Elsner QUALIFIED
Maria S StensethItalyIoni Bowcher RENEWAL
Leja I SergiUnited KingdomOnyama Limba UNQUALIFIED
Morrow Q RoysterGermanyIoni Bowcher UNQUALIFIED
Ivar Q PerinRussiaIvan Magalhaes UNQUALIFIED
Faith I NickaArgentinaAmy Elsner UNQUALIFIED
Ashley V KuskoRussiaIoni Bowcher UNQUALIFIED
Emily Q DoeBrazilAsiya Javayant NEW
Tony N VenereUnited KingdomAsiya Javayant UNQUALIFIED
Cody T MorascaAustraliaIvan Magalhaes UNQUALIFIED
Cody X VenereItalyBernardo Dominic NEW
Jones K MaletUnited KingdomElwin Sharvill QUALIFIED
Antonio U GlickRussiaElwin Sharvill NEW
Rodrigues U AlbaresArgentinaOnyama Limba QUALIFIED
Mujtaba F SaylorsItalyAnna Fali QUALIFIED
Francesco B SlusarskiIndiaIvan Magalhaes NEGOTIATION
Maisha B GlickRussiaElwin Sharvill QUALIFIED
Aruna X RulapaughUnited KingdomAnna Fali NEW
Jennifer C MacleadSpainAmy Elsner NEW
Alejandro R AlbaresJapanStephen Shaw PROPOSAL
Faith W SlusarskiIndiaStephen Shaw UNQUALIFIED
Smith K BowleyRussiaBernardo Dominic PROPOSAL
Maria X ChuiCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois T SlusarskiCanadaIoni Bowcher RENEWAL
Faith A DarakjySpainElwin Sharvill NEW
Kadeem G MorascaGermanyIoni Bowcher QUALIFIED
Emily M GlickRussiaStephen Shaw QUALIFIED
Alejandro I GarufiFranceStephen Shaw UNQUALIFIED
Leon V WhobreyArgentinaStephen Shaw UNQUALIFIED
Nicolas T CampainAustraliaAsiya Javayant PROPOSAL
Darci N DilliardSpainIoni Bowcher NEW
Darci K ChuiItalyOnyama Limba NEW
Alejandro C WaycottArgentinaOnyama Limba QUALIFIED
Ashley P AlbaresUnited KingdomAsiya Javayant RENEWAL
Munro M VenereBrazilAnna Fali PROPOSAL
Emily V InouyeFranceAsiya Javayant PROPOSAL
Murillo C ButtFranceAmy Elsner QUALIFIED
Kadeem G TollnerAustraliaAmy Elsner NEGOTIATION
Alejandro I BriddickBrazilIvan Magalhaes QUALIFIED
Salvatore Q GillianSpainBernardo Dominic UNQUALIFIED
Juan V SlusarskiArgentinaXuxue Feng UNQUALIFIED
Costa N FlosiItalyIvan Magalhaes QUALIFIED
Silvio B SaylorsCanadaElwin Sharvill PROPOSAL
Antonio A SaylorsCanadaElwin Sharvill PROPOSAL
Maisha S BriddickIndiaAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Sinclair U SergiCanadaBernardo Dominic PROPOSAL
Salvatore H MaletGermanyOnyama Limba NEW
Aditya H FollerIndiaAmy Elsner PROPOSAL
Claire N ChuiAustraliaIvan Magalhaes UNQUALIFIED
Ivar D SaylorsIndiaStephen Shaw NEW
Emily I MacleadJapanIoni Bowcher PROPOSAL
Aditya N SchemmerCanadaXuxue Feng QUALIFIED
Ashley J MaletFranceAmy Elsner QUALIFIED
Aruna P WhobreyGermanyAsiya Javayant PROPOSAL
Francesco R StensethFranceXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna B SchemmerCanada2024-04-18Commercial Press QUALIFIED58Ioni Bowcher
1001Mujtaba G PoquetteIndia2024-04-02Feltz Printing Service NEGOTIATION53Ioni Bowcher
1002Smith O PoquetteGermany2024-04-20Buckley Miller Wright UNQUALIFIED93Amy Elsner
1003Costa U OldroydJapan2024-04-19Chanay, Jeffrey A Esq NEW59Anna Fali
1004Jeanfrancois U FigeroaBrazil2024-04-28Chanay, Jeffrey A Esq PROPOSAL31Asiya Javayant
1005Munro F DarakjyJapan2024-04-15Truhlar And Truhlar Attys RENEWAL35Stephen Shaw
1006Emily V FollerItaly2024-04-19Morlong Associates QUALIFIED25Bernardo Dominic
1007Maisha K PoquetteSpain2024-04-17Benton, John B Jr UNQUALIFIED32Elwin Sharvill
1008Aika T DarakjyGermany2024-04-04Buckley Miller Wright PROPOSAL1Ivan Magalhaes
1009Francesco D WaycottFrance2024-04-13Dorl, James J Esq PROPOSAL41Xuxue Feng
1010Greenwood C StensethFrance2024-04-05Chapman, Ross E Esq NEGOTIATION79Bernardo Dominic
1011Mayumi S BologniaIndia2024-04-16Feltz Printing Service UNQUALIFIED94Anna Fali
1012Morrow P CaldareraBrazil2024-04-12King, Christopher A Esq UNQUALIFIED50Anna Fali
1013Chavez S KuskoRussia2024-04-18Benton, John B Jr QUALIFIED19Asiya Javayant
1014Darci J KuskoArgentina2024-04-01Dorl, James J Esq NEW22Amy Elsner
1015Morrow L SaylorsItaly2024-04-12Commercial Press PROPOSAL42Anna Fali
1016Munro A OstroskyArgentina2024-04-11Morlong Associates QUALIFIED33Xuxue Feng
1017Aruna L SergiArgentina2024-04-21Rousseaux, Michael Esq PROPOSAL32Asiya Javayant
1018Chavez K VenereCanada2024-04-15Chapman, Ross E Esq NEGOTIATION60Amy Elsner
1019Leja B CaldareraUnited Kingdom2024-04-15Truhlar And Truhlar Attys NEW16Asiya Javayant
1020Clifford O OstroskyItaly2024-04-17Rangoni Of Florence RENEWAL13Amy Elsner
1021Aditya A BriddickFrance2024-04-01Commercial Press QUALIFIED58Xuxue Feng
1022Rodrigues R SchemmerArgentina2024-04-10Feltz Printing Service PROPOSAL28Bernardo Dominic
1023Salvatore S OstroskyJapan2024-04-25Commercial Press QUALIFIED0Onyama Limba
1024Munro H KuskoGermany2024-04-06Feltz Printing Service QUALIFIED32Anna Fali
1025Deepesh J PoquetteJapan2024-04-17Chemel, James L Cpa PROPOSAL39Xuxue Feng
1026Greenwood U DoeCanada2024-04-29Benton, John B Jr RENEWAL90Onyama Limba
1027Mayumi L GillianFrance2024-04-25Dorl, James J Esq NEGOTIATION59Onyama Limba
1028Julie R OldroydJapan2024-04-29Benton, John B Jr UNQUALIFIED84Anna Fali
1029Ricardo F AmigonJapan2024-04-22King, Christopher A Esq PROPOSAL40Bernardo Dominic
1030Jones I KolmetzIndia2024-04-28Feiner Bros UNQUALIFIED2Ivan Magalhaes
1031Leon Z StensethAustralia2024-04-10Printing Dimensions UNQUALIFIED43Bernardo Dominic
1032Jefferson Z VocelkaBrazil2024-04-28Morlong Associates UNQUALIFIED45Elwin Sharvill
1033Aika E PerinFrance2024-04-20Rangoni Of Florence RENEWAL91Anna Fali
1034Kadeem H RimArgentina2024-04-19Buckley Miller Wright UNQUALIFIED56Amy Elsner
1035Jennifer C TollnerAustralia2024-04-19Commercial Press RENEWAL32Amy Elsner
1036Wickens K FollerItaly2024-04-27Rousseaux, Michael Esq RENEWAL46Elwin Sharvill
1037Munro T RoysterFrance2024-04-03Rousseaux, Michael Esq UNQUALIFIED53Asiya Javayant
1038Alejandro W MarrierSpain2024-04-08Feiner Bros NEW91Ivan Magalhaes
1039Ricardo X MaletFrance2024-04-08Feltz Printing Service NEW81Bernardo Dominic
1040Ashley W WieserAustralia2024-04-26Morlong Associates NEGOTIATION7Elwin Sharvill
1041Morrow J CaldareraFrance2024-04-02Chapman, Ross E Esq NEW58Amy Elsner
1042Aditya C BologniaSpain2024-04-06Chemel, James L Cpa RENEWAL71Bernardo Dominic
1043Ricardo B OldroydJapan2024-04-08Buckley Miller Wright RENEWAL57Onyama Limba
1044Antonio J GarufiSpain2024-04-26Rousseaux, Michael Esq NEW44Ioni Bowcher
1045Costa D PoquetteAustralia2024-04-08Rangoni Of Florence PROPOSAL73Xuxue Feng
1046Kaitlin H OldroydArgentina2024-04-26King, Christopher A Esq QUALIFIED98Amy Elsner
1047Darci O MaletSpain2024-04-12Commercial Press RENEWAL99Amy Elsner
1048Costa L RimIndia2024-04-21Morlong Associates NEGOTIATION10Amy Elsner
1049Octavia D GlickAustralia2024-04-18Buckley Miller Wright QUALIFIED61Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Julie O OstroskyCanadaStephen Shaw NEW
Johnson M VenereSpainStephen Shaw NEW
Misaki Q FigeroaSpainAsiya Javayant PROPOSAL
Faith Y DoeBrazilStephen Shaw NEW
Maisha J SchemmerBrazilAnna Fali NEGOTIATION
Rodrigues J GillianCanadaAmy Elsner NEGOTIATION
Stacey T StockhamFranceAnna Fali NEGOTIATION
Aditya H FollerBrazilBernardo Dominic NEW
Rodrigues Z FlosiUnited KingdomXuxue Feng UNQUALIFIED
Mujtaba P VocelkaItalyAnna Fali UNQUALIFIED
Murillo R PoquetteArgentinaElwin Sharvill UNQUALIFIED
Ashley P PerinFranceAnna Fali PROPOSAL
Francesco T GarufiJapanAnna Fali NEGOTIATION
Deepesh J AmigonSpainAmy Elsner PROPOSAL
Misaki B MorascaBrazilAnna Fali RENEWAL
Chavez Q StockhamRussiaAsiya Javayant QUALIFIED
Jennifer R WhobreyJapanElwin Sharvill NEW
Ivar M MaletGermanyXuxue Feng UNQUALIFIED
Maisha L MaletUnited KingdomAnna Fali NEGOTIATION
Wickens M FerenczArgentinaElwin Sharvill NEGOTIATION
Misaki C IturbideFranceAnna Fali NEGOTIATION
Morrow H GarufiUnited KingdomBernardo Dominic NEGOTIATION
Greenwood C RulapaughItalyIoni Bowcher RENEWAL
Darci G ButtIndiaIoni Bowcher UNQUALIFIED
Julie T MaletUnited KingdomOnyama Limba PROPOSAL
Rodrigues R AmigonJapanOnyama Limba UNQUALIFIED
Darci N DilliardJapanAmy Elsner RENEWAL
Isabel E GlickJapanXuxue Feng RENEWAL
Aika N StensethItalyBernardo Dominic NEW
Isabel X PerinGermanyAmy Elsner QUALIFIED
Maisha V WaycottItalyOnyama Limba UNQUALIFIED
Smith P IturbideCanadaBernardo Dominic QUALIFIED
Cody X SergiGermanyBernardo Dominic UNQUALIFIED
Jeanfrancois X SergiUnited KingdomStephen Shaw QUALIFIED
Cody R WieserAustraliaOnyama Limba RENEWAL
Jones S AlbaresSpainAmy Elsner RENEWAL
Misaki T RutaJapanElwin Sharvill RENEWAL
David K StensethAustraliaIoni Bowcher NEGOTIATION
Aruna S StensethBrazilAnna Fali NEGOTIATION
Ashley C VocelkaGermanyXuxue Feng NEGOTIATION
Kaitlin J CaldareraItalyOnyama Limba QUALIFIED
Darci P FlosiBrazilIoni Bowcher UNQUALIFIED
Costa T DoeJapanElwin Sharvill QUALIFIED
David S DoeIndiaBernardo Dominic PROPOSAL
Kadeem O BriddickCanadaStephen Shaw UNQUALIFIED
David W CaldareraCanadaIvan Magalhaes NEW
Mujtaba P MorascaBrazilIvan Magalhaes QUALIFIED
Julie D KuskoIndiaAsiya Javayant UNQUALIFIED
Silvio Q NestleIndiaOnyama Limba RENEWAL
Mujtaba T NestleJapanAnna Fali NEGOTIATION
Frozen Columns
Name
Smith D Kusko
Wickens C Poquette
Isabel H Royster
Costa Z Nestle
Kaitlin R Wieser
Isabel G Dilliard
Nicolas N Waycott
Francesco X Glick
Darci T Dilliard
Mujtaba M Figeroa
Costa M Morasca
David F Darakjy
Arvin F Caudy
Cody T Malet
Arvin W Vocelka
Aika X Venere
Greenwood U Nicka
Adams Y Wieser
Kaitlin A Caldarera
Tony N Albares
Ricardo O Ostrosky
Isabel C Sergi
Jeanfrancois Q Wieser
Leja F Doe
Antonio Q Venere
Deepesh K Marrier
Octavia O Figeroa
Kadeem K Inouye
Juan K Ostrosky
Wickens S Royster
Leon B Rim
Stacey M Kusko
Leja T Slusarski
Jennifer T Whobrey
Deepesh F Gillian
Alejandro Q Glick
Izzy I Malet
Salvatore G Whobrey
Antonio X Malet
Maria Q Paprocki
Misaki P Gillian
Francesco V Rulapaugh
Wickens O Rulapaugh
Ricardo E Vocelka
Jefferson M Ferencz
Wickens Y Rim
Maisha H Marrier
Octavia F Chui
Kadeem W Garufi
Morrow H Ruta
IdCountryDate
1000Brazil2024-04-21
1001Japan2024-04-16
1002Australia2024-04-12
1003Spain2024-04-20
1004Argentina2024-04-12
1005Australia2024-04-17
1006Canada2024-04-01
1007Spain2024-04-25
1008India2024-04-08
1009Germany2024-04-28
1010Russia2024-04-19
1011France2024-04-16
1012Argentina2024-04-05
1013Italy2024-04-25
1014Australia2024-04-26
1015Russia2024-03-31
1016Australia2024-04-12
1017Canada2024-04-10
1018Japan2024-03-31
1019Italy2024-04-07
1020Brazil2024-04-04
1021Canada2024-04-28
1022Canada2024-04-29
1023Brazil2024-04-09
1024Germany2024-04-07
1025Australia2024-04-01
1026France2024-04-25
1027Australia2024-04-03
1028Japan2024-04-09
1029Brazil2024-04-05
1030Australia2024-04-20
1031Australia2024-04-07
1032Germany2024-04-02
1033France2024-04-01
1034India2024-04-26
1035United Kingdom2024-04-18
1036Brazil2024-04-17
1037Japan2024-04-25
1038Canada2024-04-29
1039Brazil2024-04-24
1040Argentina2024-04-15
1041India2024-04-05
1042India2024-04-21
1043United Kingdom2024-04-14
1044Germany2024-04-19
1045Spain2024-04-08
1046Russia2024-04-06
1047Argentina2024-04-23
1048Argentina2024-04-20
1049United Kingdom2024-04-17

On-Demand Data

NameIdCountryDate
Isabel M Perin1000Argentina2024-04-04
Deepesh V Kolmetz1001United Kingdom2024-04-06
Silvio I Whobrey1002Australia2024-04-23
Mayumi Q Wieser1003Canada2024-04-22
Francesco W Saylors1004India2024-04-18
Adams A Briddick1005India2024-04-22
Maria Q Butt1006Japan2024-04-04
Francesco Y Ferencz1007Brazil2024-04-25
Claire G Venere1008United Kingdom2024-04-22
Clifford J Campain1009Brazil2024-04-14
Nicolas V Malet1010Argentina2024-04-06
Nicolas V Poquette1011India2024-04-03
Smith S Tollner1012Japan2024-04-27
Leja M Nestle1013Germany2024-04-13
James E Maclead1014Japan2024-04-23
Silvio V Amigon1015United Kingdom2024-04-28
James T Kolmetz1016Germany2024-04-14
Faith D Perin1017Italy2024-04-13
Antonio F Briddick1018France2024-04-17
Johnson W Rim1019United Kingdom2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James W CampainSpainIvan Magalhaes NEGOTIATION
Julie D VocelkaRussiaIvan Magalhaes NEGOTIATION
Sinclair X BowleyAustraliaXuxue Feng RENEWAL
David Q PerinArgentinaStephen Shaw PROPOSAL
Alejandro K MaletBrazilOnyama Limba NEGOTIATION
Salvatore R MaletItalyAnna Fali QUALIFIED
Chavez A WieserItalyIoni Bowcher QUALIFIED
Salvatore Q ButtFranceAnna Fali QUALIFIED
Arvin Q StockhamItalyBernardo Dominic NEGOTIATION
Rodrigues G GillianGermanyOnyama Limba NEGOTIATION
Emily W DilliardJapanAmy Elsner NEGOTIATION
Alejandro R WhobreyRussiaAsiya Javayant PROPOSAL
Costa V AlbaresGermanyAnna Fali UNQUALIFIED
Claire Y ButtAustraliaXuxue Feng PROPOSAL
Jennifer K ButtUnited KingdomIoni Bowcher NEW
Kadeem S WieserGermanyIoni Bowcher PROPOSAL
Costa L MorascaGermanyAsiya Javayant NEGOTIATION
Rodrigues I SaylorsFranceAnna Fali UNQUALIFIED
Aika X MarrierGermanyXuxue Feng QUALIFIED
Smith O PerinBrazilAmy Elsner RENEWAL
Ricardo L AmigonBrazilIvan Magalhaes NEW
Maria R RulapaughSpainAsiya Javayant QUALIFIED
Alejandro M ShinkoAustraliaBernardo Dominic PROPOSAL
Julie B KuskoIndiaBernardo Dominic QUALIFIED
Ivar S FigeroaJapanXuxue Feng NEGOTIATION
Kaitlin V PoquetteIndiaBernardo Dominic UNQUALIFIED
Munro P PerinIndiaAmy Elsner RENEWAL
Salvatore B CaudyUnited KingdomStephen Shaw UNQUALIFIED
Izzy X MarrierSpainOnyama Limba PROPOSAL
Arvin F NickaUnited KingdomOnyama Limba NEW
Sinclair E RoysterBrazilIoni Bowcher QUALIFIED
Leon P CampainJapanElwin Sharvill QUALIFIED
Rodrigues H CaudyRussiaXuxue Feng NEGOTIATION
Johnson O InouyeArgentinaXuxue Feng PROPOSAL
Antonio G BriddickRussiaAsiya Javayant PROPOSAL
Jefferson M FigeroaJapanIoni Bowcher UNQUALIFIED
Jeanfrancois I WaycottGermanyAsiya Javayant UNQUALIFIED
Adams O DoeJapanStephen Shaw RENEWAL
Ricardo F InouyeSpainAmy Elsner UNQUALIFIED
Aika H KolmetzItalyIvan 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>