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
Misaki V StensethJapanAmy Elsner PROPOSAL
Stacey N FerenczItalyOnyama Limba QUALIFIED
Leja R FollerJapanOnyama Limba NEW
Misaki D NickaFranceAsiya Javayant PROPOSAL
Ashley C RulapaughArgentinaOnyama Limba QUALIFIED
Jeanfrancois G NickaJapanOnyama Limba PROPOSAL
Salvatore W KolmetzSpainAmy Elsner NEGOTIATION
Nicolas M WieserSpainBernardo Dominic QUALIFIED
Aditya Q SchemmerCanadaIoni Bowcher RENEWAL
Leja M WhobreyBrazilOnyama Limba PROPOSAL
Salvatore S PoquetteBrazilBernardo Dominic UNQUALIFIED
Jones Y BologniaItalyXuxue Feng NEW
Claire V MaletAustraliaIvan Magalhaes QUALIFIED
Johnson B StensethBrazilElwin Sharvill UNQUALIFIED
Cody S GlickBrazilElwin Sharvill UNQUALIFIED
Leja W FlosiIndiaOnyama Limba NEGOTIATION
Jones E BowleyItalyOnyama Limba NEW
Munro G KuskoSpainBernardo Dominic RENEWAL
Salvatore N NestleSpainIoni Bowcher UNQUALIFIED
Maria F ButtIndiaIvan Magalhaes NEW
Chavez T MacleadJapanIvan Magalhaes UNQUALIFIED
Ricardo Q VocelkaBrazilElwin Sharvill NEW
Antonio I VocelkaUnited KingdomAsiya Javayant RENEWAL
Costa R NickaIndiaAnna Fali PROPOSAL
Ashley A OldroydCanadaAmy Elsner PROPOSAL
Ricardo B SaylorsItalyElwin Sharvill UNQUALIFIED
Francesco L PerinSpainOnyama Limba UNQUALIFIED
Octavia L BologniaUnited KingdomAsiya Javayant PROPOSAL
Izzy S FlosiFranceBernardo Dominic UNQUALIFIED
Chavez F FlosiSpainIvan Magalhaes RENEWAL
Octavia J BriddickSpainIoni Bowcher RENEWAL
David H KolmetzArgentinaOnyama Limba RENEWAL
Maisha Z CaldareraCanadaXuxue Feng UNQUALIFIED
Jones Q RimFranceAnna Fali PROPOSAL
Jennifer T RutaFranceIvan Magalhaes UNQUALIFIED
Ivar N FollerArgentinaIvan Magalhaes PROPOSAL
David F RimCanadaAsiya Javayant QUALIFIED
Jones C CaudyRussiaOnyama Limba RENEWAL
Morrow U DarakjyRussiaXuxue Feng QUALIFIED
Francesco H CaudyBrazilXuxue Feng NEGOTIATION
Jennifer R FlosiUnited KingdomIvan Magalhaes PROPOSAL
Maisha O RimCanadaOnyama Limba NEW
Francesco L AmigonItalyAsiya Javayant RENEWAL
Darci C GarufiUnited KingdomIvan Magalhaes PROPOSAL
Morrow I GauchoArgentinaStephen Shaw RENEWAL
Tony Q GauchoIndiaOnyama Limba QUALIFIED
Mayumi I TollnerAustraliaBernardo Dominic NEGOTIATION
James Z GauchoAustraliaIoni Bowcher RENEWAL
Aruna X TollnerSpainAmy Elsner NEGOTIATION
Misaki X VenereUnited KingdomBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Francesco Z KolmetzItalyStephen Shaw PROPOSAL
David D FollerUnited KingdomIvan Magalhaes PROPOSAL
Julie R VenereBrazilIoni Bowcher QUALIFIED
Salvatore W FigeroaJapanXuxue Feng UNQUALIFIED
Darci J ChuiAustraliaXuxue Feng QUALIFIED
Smith G OstroskyFranceBernardo Dominic NEGOTIATION
Jones D KolmetzItalyIoni Bowcher UNQUALIFIED
Ashley B MorascaIndiaAnna Fali QUALIFIED
Emily P CaldareraFranceAsiya Javayant UNQUALIFIED
Maria H AmigonUnited KingdomOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh L PerinJapan2024-03-29King, Christopher A Esq QUALIFIED52Onyama Limba
1001Ricardo Y WaycottBrazil2024-03-21Rousseaux, Michael Esq QUALIFIED45Ivan Magalhaes
1002Sinclair V SchemmerRussia2024-04-07Feiner Bros RENEWAL35Ivan Magalhaes
1003Leon X PerinRussia2024-03-29Rangoni Of Florence PROPOSAL89Stephen Shaw
1004Faith B OldroydUnited Kingdom2024-04-14Benton, John B Jr RENEWAL58Amy Elsner
1005Mayumi M CaldareraAustralia2024-03-20Benton, John B Jr NEW98Onyama Limba
1006Mayumi I DilliardBrazil2024-04-08King, Christopher A Esq NEW22Ivan Magalhaes
1007Aditya O FlosiUnited Kingdom2024-03-20Rousseaux, Michael Esq RENEWAL76Ivan Magalhaes
1008Claire R ButtCanada2024-03-24Commercial Press NEGOTIATION51Ioni Bowcher
1009Aditya P BologniaSpain2024-04-02Benton, John B Jr NEGOTIATION99Anna Fali
1010Emily S FollerGermany2024-04-09Chanay, Jeffrey A Esq PROPOSAL4Amy Elsner
1011Nicolas C GauchoJapan2024-03-26Buckley Miller Wright PROPOSAL62Anna Fali
1012Cody E MacleadItaly2024-03-19Chanay, Jeffrey A Esq QUALIFIED47Ivan Magalhaes
1013Chavez Y DilliardCanada2024-03-18Buckley Miller Wright PROPOSAL70Elwin Sharvill
1014Ricardo U SaylorsUnited Kingdom2024-03-26Chapman, Ross E Esq QUALIFIED17Bernardo Dominic
1015David Z DilliardCanada2024-04-10Benton, John B Jr NEGOTIATION84Anna Fali
1016Costa Y DoeCanada2024-03-26Commercial Press NEGOTIATION81Ivan Magalhaes
1017Jones R FlosiItaly2024-04-11Rangoni Of Florence RENEWAL75Stephen Shaw
1018Faith K BologniaCanada2024-04-12Dorl, James J Esq QUALIFIED23Onyama Limba
1019Jefferson Z AmigonAustralia2024-03-27Feltz Printing Service NEGOTIATION48Amy Elsner
1020Isabel Z ShinkoFrance2024-04-12Feiner Bros UNQUALIFIED29Amy Elsner
1021Smith O SlusarskiGermany2024-03-22Rousseaux, Michael Esq NEW97Onyama Limba
1022Arvin T MacleadGermany2024-04-08Feltz Printing Service QUALIFIED53Elwin Sharvill
1023Juan B MaletArgentina2024-04-15Feltz Printing Service PROPOSAL20Anna Fali
1024Rodrigues X OldroydCanada2024-04-05Feltz Printing Service RENEWAL95Anna Fali
1025Murillo B MorascaFrance2024-04-08Dorl, James J Esq PROPOSAL14Xuxue Feng
1026Munro T AmigonRussia2024-03-24King, Christopher A Esq NEW34Elwin Sharvill
1027Misaki W MorascaBrazil2024-04-10Buckley Miller Wright PROPOSAL84Asiya Javayant
1028Stacey P KuskoArgentina2024-03-30Feiner Bros UNQUALIFIED12Asiya Javayant
1029Jefferson I WaycottGermany2024-04-12Commercial Press PROPOSAL42Bernardo Dominic
1030Aruna T IturbideFrance2024-03-24Morlong Associates NEGOTIATION43Bernardo Dominic
1031Misaki I AmigonJapan2024-04-01Truhlar And Truhlar Attys PROPOSAL49Bernardo Dominic
1032Murillo W SchemmerAustralia2024-04-04Rousseaux, Michael Esq NEGOTIATION83Asiya Javayant
1033Isabel J PaprockiUnited Kingdom2024-04-07Dorl, James J Esq RENEWAL68Onyama Limba
1034Ivar W OstroskyBrazil2024-04-12Commercial Press NEGOTIATION53Asiya Javayant
1035Johnson Q ButtRussia2024-03-29Chemel, James L Cpa NEW94Asiya Javayant
1036Chavez W VocelkaArgentina2024-04-04Chapman, Ross E Esq PROPOSAL14Anna Fali
1037Maisha S PaprockiArgentina2024-03-23Printing Dimensions NEW94Asiya Javayant
1038Izzy J InouyeArgentina2024-03-31Chemel, James L Cpa UNQUALIFIED9Xuxue Feng
1039Mayumi G PerinAustralia2024-04-11Morlong Associates NEW94Bernardo Dominic
1040Arvin V SergiBrazil2024-04-01Feiner Bros NEGOTIATION54Amy Elsner
1041Isabel K MaletCanada2024-03-23Rousseaux, Michael Esq QUALIFIED47Anna Fali
1042Aika W PerinBrazil2024-04-02Morlong Associates PROPOSAL77Stephen Shaw
1043Ashley I CampainFrance2024-04-12Chapman, Ross E Esq QUALIFIED84Ioni Bowcher
1044Maisha T SergiItaly2024-04-05Benton, John B Jr QUALIFIED22Elwin Sharvill
1045Salvatore H VocelkaUnited Kingdom2024-04-11Benton, John B Jr NEW7Ivan Magalhaes
1046Sinclair U GlickFrance2024-03-18Dorl, James J Esq RENEWAL98Anna Fali
1047Greenwood V BologniaFrance2024-03-21Dorl, James J Esq PROPOSAL92Stephen Shaw
1048Octavia Z ButtSpain2024-03-20Feiner Bros PROPOSAL35Amy Elsner
1049Adams Q MacleadGermany2024-03-30Rangoni Of Florence NEGOTIATION54Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Johnson T RulapaughIndiaAsiya Javayant UNQUALIFIED
Morrow U SaylorsFranceBernardo Dominic NEW
Arvin H RutaJapanOnyama Limba RENEWAL
Kadeem W StockhamCanadaIoni Bowcher RENEWAL
Johnson C MaletArgentinaElwin Sharvill NEGOTIATION
Julie J RoysterUnited KingdomAnna Fali NEGOTIATION
Stacey W NestleUnited KingdomBernardo Dominic PROPOSAL
Wickens U AmigonRussiaElwin Sharvill NEW
Ricardo N VocelkaAustraliaBernardo Dominic UNQUALIFIED
Leon O GlickUnited KingdomAmy Elsner RENEWAL
Julie Y CaldareraGermanyBernardo Dominic QUALIFIED
Wickens R MacleadArgentinaElwin Sharvill UNQUALIFIED
Leon V StockhamRussiaBernardo Dominic NEW
Claire X MacleadIndiaAmy Elsner UNQUALIFIED
Tony L AmigonItalyAnna Fali NEGOTIATION
Faith Y StockhamFranceIvan Magalhaes PROPOSAL
Chavez N RulapaughArgentinaIvan Magalhaes RENEWAL
Darci J MaletAustraliaIvan Magalhaes NEGOTIATION
Claire B SchemmerUnited KingdomBernardo Dominic NEGOTIATION
Misaki X MorascaRussiaAnna Fali RENEWAL
Isabel Z BologniaUnited KingdomOnyama Limba PROPOSAL
Mayumi K StensethFranceAmy Elsner UNQUALIFIED
Clifford G RimUnited KingdomStephen Shaw NEW
Izzy G StockhamCanadaIoni Bowcher PROPOSAL
Ashley G ShinkoArgentinaAmy Elsner RENEWAL
Adams G CaudyCanadaAmy Elsner PROPOSAL
Munro F TollnerIndiaBernardo Dominic NEGOTIATION
Mujtaba R WaycottJapanAnna Fali NEGOTIATION
Julie G SaylorsItalyElwin Sharvill RENEWAL
Claire Y MaletAustraliaAmy Elsner RENEWAL
Greenwood T RimBrazilAsiya Javayant NEW
Cody V ButtItalyIvan Magalhaes PROPOSAL
Salvatore O WhobreyGermanyIvan Magalhaes PROPOSAL
Greenwood O CaudyIndiaAnna Fali UNQUALIFIED
Kaitlin H CaudyBrazilIoni Bowcher UNQUALIFIED
Salvatore Y GillianArgentinaStephen Shaw NEGOTIATION
Ricardo V IturbideBrazilBernardo Dominic QUALIFIED
Ricardo R GarufiFranceAnna Fali NEGOTIATION
Clifford H InouyeUnited KingdomElwin Sharvill RENEWAL
Darci B BologniaIndiaOnyama Limba RENEWAL
Izzy Y AlbaresFranceAmy Elsner RENEWAL
Ivar L InouyeRussiaBernardo Dominic NEW
David G CampainFranceBernardo Dominic UNQUALIFIED
Jones B ButtRussiaElwin Sharvill QUALIFIED
Claire K BowleyJapanIvan Magalhaes NEGOTIATION
Costa L PaprockiRussiaElwin Sharvill UNQUALIFIED
Murillo I GillianArgentinaIvan Magalhaes QUALIFIED
Kadeem D ShinkoArgentinaXuxue Feng RENEWAL
Isabel I VocelkaItalyAsiya Javayant NEGOTIATION
Julie G GillianSpainIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Smith F Waycott
Emily I Kolmetz
Mujtaba A Slusarski
Isabel A Vocelka
Deepesh E Marrier
Clifford Q Ruta
Jones Y Nicka
Julie E Nicka
Salvatore K Wieser
Sinclair H Inouye
Clifford M Amigon
Emily T Shinko
Jeanfrancois O Caudy
Jennifer J Inouye
Francesco E Rulapaugh
Maisha C Shinko
James N Campain
Juan I Caudy
Wickens D Paprocki
James D Bolognia
Jeanfrancois D Saylors
Salvatore I Bowley
Julie N Rim
Aditya C Whobrey
David H Chui
Mujtaba J Ferencz
Mayumi N Bowley
Aruna G Garufi
Greenwood C Rim
Stacey E Perin
Tony J Foller
Maria P Glick
Johnson Z Doe
Johnson E Kolmetz
Clifford U Oldroyd
Alejandro L Malet
Isabel C Whobrey
Leon X Saylors
Alejandro F Nestle
Julie Q Malet
David F Shinko
Costa N Gaucho
Wickens Q Ruta
Mayumi K Wieser
Arvin Q Gaucho
Chavez M Briddick
Antonio S Inouye
Francesco M Royster
Ashley L Stenseth
Sinclair R Whobrey
IdCountryDate
1000India2024-03-26
1001Canada2024-03-30
1002India2024-03-18
1003Canada2024-04-04
1004Australia2024-04-07
1005Japan2024-04-14
1006Canada2024-03-24
1007Brazil2024-04-01
1008Italy2024-04-06
1009Spain2024-03-27
1010Italy2024-04-03
1011Japan2024-03-22
1012United Kingdom2024-04-06
1013Italy2024-03-29
1014Japan2024-03-26
1015Italy2024-03-27
1016Japan2024-03-19
1017France2024-04-13
1018Japan2024-04-01
1019Italy2024-04-11
1020Australia2024-04-01
1021Japan2024-04-11
1022Germany2024-03-28
1023United Kingdom2024-04-10
1024Australia2024-03-19
1025Brazil2024-03-19
1026Spain2024-04-09
1027India2024-03-17
1028Australia2024-04-13
1029Spain2024-03-23
1030India2024-03-23
1031France2024-04-11
1032Argentina2024-04-15
1033France2024-03-30
1034Italy2024-04-10
1035Italy2024-03-27
1036Germany2024-04-12
1037Russia2024-03-28
1038United Kingdom2024-03-20
1039Germany2024-03-31
1040United Kingdom2024-04-07
1041Australia2024-04-02
1042Italy2024-04-11
1043Japan2024-03-30
1044India2024-04-10
1045Brazil2024-04-06
1046Italy2024-03-22
1047Germany2024-03-20
1048France2024-03-31
1049United Kingdom2024-04-05

On-Demand Data

NameIdCountryDate
Munro I Briddick1000Argentina2024-03-17
Leon S Maclead1001Japan2024-03-29
Aika A Gaucho1002Russia2024-03-18
Cody J Caldarera1003Canada2024-03-23
Jefferson V Saylors1004Italy2024-03-18
Leja H Shinko1005France2024-04-05
Jefferson F Nicka1006United Kingdom2024-04-02
Darci E Chui1007India2024-04-07
Julie N Marrier1008Australia2024-04-07
Octavia O Morasca1009Germany2024-03-28
Misaki I Maclead1010Italy2024-04-04
Smith R Wieser1011Argentina2024-04-08
Leon Y Amigon1012Germany2024-04-14
Aika V Inouye1013Japan2024-03-20
Adams G Malet1014Brazil2024-04-03
Faith F Ferencz1015Germany2024-04-01
James F Foller1016Australia2024-04-05
Maisha I Malet1017Australia2024-03-20
Stacey O Nicka1018France2024-04-08
Stacey K Wieser1019Japan2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire L VenereJapanElwin Sharvill QUALIFIED
Sinclair L FlosiSpainAsiya Javayant QUALIFIED
Wickens L DilliardUnited KingdomElwin Sharvill QUALIFIED
Munro U NestleCanadaXuxue Feng PROPOSAL
Jefferson S ChuiArgentinaXuxue Feng QUALIFIED
Cody C WhobreyCanadaAmy Elsner RENEWAL
Francesco S ChuiFranceXuxue Feng UNQUALIFIED
Faith I RoysterAustraliaStephen Shaw RENEWAL
Kadeem L MorascaUnited KingdomAsiya Javayant PROPOSAL
Ricardo M RulapaughGermanyAmy Elsner NEGOTIATION
Claire D GarufiSpainBernardo Dominic UNQUALIFIED
Morrow C NestleCanadaAmy Elsner PROPOSAL
Murillo H NickaItalyStephen Shaw QUALIFIED
Nicolas Y WhobreyJapanIvan Magalhaes RENEWAL
Francesco R AlbaresAustraliaElwin Sharvill PROPOSAL
Adams F GarufiGermanyAmy Elsner NEW
Arvin K WaycottCanadaAmy Elsner NEGOTIATION
Silvio S FerenczIndiaBernardo Dominic PROPOSAL
Francesco F FollerFranceElwin Sharvill PROPOSAL
Smith P ButtBrazilBernardo Dominic NEGOTIATION
Darci B RoysterItalyAnna Fali QUALIFIED
Leon P OldroydCanadaElwin Sharvill UNQUALIFIED
Julie N RoysterCanadaIoni Bowcher NEW
Jefferson Q MaletIndiaAsiya Javayant PROPOSAL
Aika P DilliardSpainStephen Shaw NEGOTIATION
Arvin A StensethArgentinaOnyama Limba NEW
Aika E CaldareraBrazilAmy Elsner QUALIFIED
Morrow Y FigeroaRussiaIoni Bowcher QUALIFIED
Kaitlin H MacleadUnited KingdomStephen Shaw NEW
Maisha H SlusarskiRussiaOnyama Limba RENEWAL
Jefferson B VenereBrazilElwin Sharvill PROPOSAL
Jennifer L KuskoArgentinaAsiya Javayant QUALIFIED
Murillo V VenereJapanXuxue Feng NEW
Maria S FerenczJapanIvan Magalhaes RENEWAL
Johnson Z BowleyIndiaIoni Bowcher RENEWAL
Jeanfrancois X KolmetzGermanyStephen Shaw PROPOSAL
Morrow W InouyeUnited KingdomIvan Magalhaes RENEWAL
Sinclair X SergiItalyAnna Fali RENEWAL
Tony T BowleyArgentinaBernardo Dominic QUALIFIED
Smith Z MaletAustraliaAmy Elsner 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>