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 Y RulapaughAustraliaOnyama Limba NEW
Ricardo Q DarakjySpainAmy Elsner PROPOSAL
Ricardo B DoeItalyAsiya Javayant PROPOSAL
Silvio O FlosiUnited KingdomIvan Magalhaes NEGOTIATION
Maria T CampainRussiaIvan Magalhaes NEW
Wickens S MaletGermanyBernardo Dominic UNQUALIFIED
Aditya N RoysterSpainIvan Magalhaes RENEWAL
Julie A BowleyUnited KingdomAnna Fali RENEWAL
Darci C GlickJapanAsiya Javayant NEGOTIATION
Faith H IturbideBrazilElwin Sharvill PROPOSAL
Ashley K FerenczUnited KingdomBernardo Dominic PROPOSAL
Alejandro H TollnerAustraliaBernardo Dominic RENEWAL
Jefferson N StockhamSpainOnyama Limba RENEWAL
Maria J FollerRussiaElwin Sharvill RENEWAL
Costa X InouyeSpainIoni Bowcher PROPOSAL
Aika E StensethSpainIoni Bowcher UNQUALIFIED
Alejandro H BowleyBrazilXuxue Feng PROPOSAL
Murillo J StensethSpainIvan Magalhaes RENEWAL
Salvatore S WhobreyItalyIvan Magalhaes RENEWAL
Salvatore M IturbideFranceStephen Shaw PROPOSAL
Isabel E FlosiAustraliaAnna Fali PROPOSAL
Kadeem T DoeArgentinaStephen Shaw RENEWAL
Aditya U FigeroaSpainAmy Elsner NEGOTIATION
Cody A VocelkaBrazilIoni Bowcher PROPOSAL
Mayumi A KolmetzBrazilIvan Magalhaes QUALIFIED
Mujtaba U MarrierCanadaOnyama Limba NEW
Deepesh W PerinAustraliaXuxue Feng PROPOSAL
Nicolas Z CampainArgentinaStephen Shaw QUALIFIED
Leon K DoeUnited KingdomAsiya Javayant NEGOTIATION
Mayumi G AmigonRussiaElwin Sharvill PROPOSAL
Nicolas U MaletItalyXuxue Feng NEW
Kaitlin H InouyeGermanyBernardo Dominic PROPOSAL
Jennifer T CampainArgentinaAmy Elsner RENEWAL
Ricardo L SlusarskiGermanyBernardo Dominic QUALIFIED
Costa T NickaAustraliaAsiya Javayant QUALIFIED
Salvatore Y AlbaresRussiaElwin Sharvill RENEWAL
Jennifer K StockhamJapanAmy Elsner NEGOTIATION
Morrow C DilliardCanadaBernardo Dominic UNQUALIFIED
Ivar L ChuiCanadaAsiya Javayant UNQUALIFIED
Emily P CampainRussiaAnna Fali NEW
Izzy L IturbideAustraliaBernardo Dominic PROPOSAL
Chavez M StockhamJapanAmy Elsner QUALIFIED
Tony I PaprockiRussiaBernardo Dominic NEW
Morrow F CaldareraBrazilElwin Sharvill PROPOSAL
Murillo E OstroskyUnited KingdomElwin Sharvill NEW
Maria U DarakjyFranceAnna Fali PROPOSAL
Ashley A WaycottAustraliaStephen Shaw PROPOSAL
Mayumi U CampainSpainStephen Shaw QUALIFIED
Nicolas W RutaGermanyElwin Sharvill NEW
Sinclair Y PaprockiArgentinaAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Clifford U RoysterIndiaOnyama Limba RENEWAL
Alejandro L SaylorsFranceOnyama Limba UNQUALIFIED
Alejandro H CampainCanadaStephen Shaw UNQUALIFIED
Adams F VenereIndiaAsiya Javayant NEW
Jennifer L CaldareraItalyAmy Elsner QUALIFIED
Ashley B RulapaughRussiaElwin Sharvill PROPOSAL
James M PerinIndiaOnyama Limba UNQUALIFIED
Emily U FerenczBrazilIvan Magalhaes QUALIFIED
Kadeem C ShinkoFranceStephen Shaw PROPOSAL
Kadeem S CaldareraIndiaElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro M SlusarskiArgentina2024-04-25Chapman, Ross E Esq UNQUALIFIED20Elwin Sharvill
1001Nicolas K ShinkoRussia2024-04-24Chapman, Ross E Esq NEW12Ivan Magalhaes
1002Kadeem P MorascaJapan2024-04-15King, Christopher A Esq RENEWAL55Stephen Shaw
1003Rodrigues Q BriddickJapan2024-04-01Feiner Bros PROPOSAL14Elwin Sharvill
1004James J ButtSpain2024-04-02King, Christopher A Esq PROPOSAL28Amy Elsner
1005Ivar P VenereArgentina2024-04-15Printing Dimensions PROPOSAL12Ioni Bowcher
1006Kadeem G VocelkaGermany2024-04-28Chanay, Jeffrey A Esq QUALIFIED0Bernardo Dominic
1007Cody H DoeIndia2024-04-05Morlong Associates PROPOSAL46Anna Fali
1008Salvatore M RoysterRussia2024-04-23Morlong Associates QUALIFIED10Onyama Limba
1009Maisha U WaycottGermany2024-03-31Rousseaux, Michael Esq PROPOSAL21Anna Fali
1010Ricardo G KuskoFrance2024-04-10Morlong Associates QUALIFIED50Elwin Sharvill
1011Izzy G ChuiIndia2024-04-03Chapman, Ross E Esq NEW60Amy Elsner
1012Aruna T ButtAustralia2024-04-21Dorl, James J Esq UNQUALIFIED44Amy Elsner
1013Rodrigues X WhobreyAustralia2024-04-18Chanay, Jeffrey A Esq UNQUALIFIED15Anna Fali
1014Izzy P KuskoAustralia2024-04-06Buckley Miller Wright PROPOSAL52Elwin Sharvill
1015Ivar D BologniaAustralia2024-04-21Benton, John B Jr QUALIFIED25Bernardo Dominic
1016Ivar Z BologniaFrance2024-04-13King, Christopher A Esq NEW72Ioni Bowcher
1017Deepesh W MorascaGermany2024-04-24Morlong Associates RENEWAL53Bernardo Dominic
1018Cody Y BowleyCanada2024-04-05King, Christopher A Esq NEW28Ioni Bowcher
1019Cody O TollnerAustralia2024-04-20Chemel, James L Cpa PROPOSAL65Anna Fali
1020Costa N BowleyAustralia2024-04-15Rousseaux, Michael Esq NEGOTIATION49Elwin Sharvill
1021Kaitlin N GarufiSpain2024-04-25Dorl, James J Esq RENEWAL88Xuxue Feng
1022Leja X CaldareraCanada2024-04-05Commercial Press NEW84Asiya Javayant
1023David N BowleyUnited Kingdom2024-04-19Feiner Bros PROPOSAL25Xuxue Feng
1024Munro B FerenczGermany2024-04-02Commercial Press QUALIFIED36Stephen Shaw
1025Ivar F VenereFrance2024-04-28Rangoni Of Florence QUALIFIED36Stephen Shaw
1026Adams I BologniaGermany2024-04-29Printing Dimensions UNQUALIFIED9Onyama Limba
1027Izzy S AmigonCanada2024-04-18Commercial Press RENEWAL19Onyama Limba
1028Jefferson T BriddickIndia2024-04-25Dorl, James J Esq NEGOTIATION64Elwin Sharvill
1029Jefferson N OstroskyJapan2024-04-06Commercial Press PROPOSAL20Stephen Shaw
1030Antonio M VocelkaIndia2024-04-29Printing Dimensions RENEWAL35Xuxue Feng
1031Juan Y FlosiBrazil2024-04-18Rousseaux, Michael Esq UNQUALIFIED65Ioni Bowcher
1032Murillo E GauchoGermany2024-04-19Feltz Printing Service NEW50Xuxue Feng
1033Munro J BowleyItaly2024-04-11Chanay, Jeffrey A Esq NEGOTIATION13Ioni Bowcher
1034James A AlbaresRussia2024-04-01Commercial Press NEW85Asiya Javayant
1035Deepesh P VocelkaSpain2024-04-21King, Christopher A Esq PROPOSAL20Amy Elsner
1036Munro S CaudyItaly2024-04-09Morlong Associates UNQUALIFIED41Onyama Limba
1037Wickens N RutaIndia2024-04-06Feltz Printing Service QUALIFIED32Onyama Limba
1038Adams U SchemmerIndia2024-04-21Printing Dimensions NEGOTIATION6Onyama Limba
1039Mujtaba V RulapaughIndia2024-04-13Buckley Miller Wright PROPOSAL52Ioni Bowcher
1040Aika E ChuiCanada2024-04-20Feiner Bros PROPOSAL44Ioni Bowcher
1041Tony W MaletGermany2024-04-02Commercial Press QUALIFIED26Ivan Magalhaes
1042Francesco U PoquetteArgentina2024-04-15Chemel, James L Cpa PROPOSAL70Amy Elsner
1043Jefferson L PoquetteAustralia2024-04-09Printing Dimensions NEGOTIATION64Ioni Bowcher
1044Nicolas I ChuiSpain2024-04-11Benton, John B Jr NEW58Anna Fali
1045Aika B ButtJapan2024-04-29Dorl, James J Esq UNQUALIFIED74Elwin Sharvill
1046Alejandro D GauchoAustralia2024-04-13Dorl, James J Esq RENEWAL63Asiya Javayant
1047Silvio Z DoeBrazil2024-04-20Rousseaux, Michael Esq RENEWAL99Stephen Shaw
1048Isabel L ShinkoJapan2024-04-21King, Christopher A Esq RENEWAL10Elwin Sharvill
1049Sinclair G ButtIndia2024-04-13Rousseaux, Michael Esq NEW78Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Johnson Y CaldareraArgentinaElwin Sharvill RENEWAL
Jones R GauchoSpainAnna Fali RENEWAL
Kadeem R NickaRussiaStephen Shaw PROPOSAL
Nicolas Q FollerBrazilOnyama Limba RENEWAL
Julie P VenereUnited KingdomIoni Bowcher QUALIFIED
Greenwood S SchemmerGermanyStephen Shaw NEGOTIATION
Kaitlin D SlusarskiBrazilAmy Elsner NEW
Adams R WieserBrazilOnyama Limba NEW
Ricardo K CaldareraUnited KingdomElwin Sharvill RENEWAL
Antonio B NestleJapanIoni Bowcher NEGOTIATION
Maria K StockhamJapanBernardo Dominic PROPOSAL
Maria C WaycottFranceElwin Sharvill UNQUALIFIED
Deepesh C CampainBrazilOnyama Limba RENEWAL
Deepesh L MarrierItalyXuxue Feng UNQUALIFIED
Octavia W CaudyArgentinaOnyama Limba NEGOTIATION
Emily N CaudyRussiaAsiya Javayant NEW
Deepesh U CaudyRussiaAsiya Javayant RENEWAL
Ivar H WaycottJapanBernardo Dominic QUALIFIED
James O VocelkaUnited KingdomIoni Bowcher QUALIFIED
Jones C AmigonAustraliaAnna Fali NEW
Julie R BowleySpainXuxue Feng NEGOTIATION
Misaki I TollnerArgentinaAnna Fali NEW
Munro M StockhamGermanyBernardo Dominic NEGOTIATION
Arvin U GarufiRussiaIoni Bowcher PROPOSAL
Jefferson D BologniaAustraliaIvan Magalhaes NEW
Tony M DarakjyFranceIvan Magalhaes PROPOSAL
Maisha R BriddickArgentinaIvan Magalhaes PROPOSAL
Adams G ShinkoJapanBernardo Dominic RENEWAL
Izzy U GarufiJapanIoni Bowcher NEW
Ivar V DilliardItalyBernardo Dominic NEGOTIATION
Aruna G FollerIndiaAnna Fali PROPOSAL
Cody A CaudyCanadaAmy Elsner NEW
James E PoquetteFranceElwin Sharvill UNQUALIFIED
Kaitlin G BowleyAustraliaAmy Elsner UNQUALIFIED
Maria I GlickUnited KingdomBernardo Dominic RENEWAL
Jennifer F StockhamIndiaAnna Fali NEGOTIATION
Aruna T KolmetzFranceXuxue Feng UNQUALIFIED
Adams N RutaGermanyAnna Fali NEGOTIATION
James W SchemmerFranceStephen Shaw QUALIFIED
David O RutaAustraliaIoni Bowcher UNQUALIFIED
Antonio X PerinGermanyAmy Elsner NEW
Ivar W SergiUnited KingdomIoni Bowcher NEW
Rodrigues U TollnerAustraliaElwin Sharvill RENEWAL
Aruna F CaudyArgentinaAsiya Javayant PROPOSAL
Ashley G ShinkoAustraliaOnyama Limba NEW
Ivar S AmigonSpainAsiya Javayant QUALIFIED
Rodrigues A VenereArgentinaBernardo Dominic NEW
Cody Y SchemmerIndiaStephen Shaw NEGOTIATION
Jefferson B ChuiItalyAsiya Javayant RENEWAL
Julie D ButtGermanyBernardo Dominic QUALIFIED
Frozen Columns
Name
Munro Y Venere
Izzy V Malet
Jefferson U Royster
Deepesh Z Rim
Arvin M Venere
Julie G Waycott
Julie J Albares
Ivar F Garufi
Claire Z Foller
Ivar S Wieser
Johnson N Paprocki
Costa O Stenseth
Faith O Doe
Ricardo R Bolognia
Silvio O Glick
Jeanfrancois A Malet
Morrow J Caldarera
Emily K Nicka
Morrow M Campain
Tony Q Darakjy
Faith Q Nestle
Wickens T Garufi
Izzy A Inouye
David O Oldroyd
Mayumi K Marrier
Munro O Royster
Jeanfrancois Y Wieser
Jefferson C Foller
Mujtaba V Vocelka
Nicolas M Waycott
Aika Z Slusarski
Maria X Iturbide
Leon P Briddick
Claire W Chui
Nicolas E Whobrey
Nicolas H Bolognia
Murillo W Caudy
Aika J Malet
Costa Q Gillian
Darci D Marrier
Antonio Z Poquette
Francesco Z Perin
Julie K Venere
James P Bowley
Claire O Dilliard
Morrow T Royster
Arvin H Kolmetz
Darci M Gaucho
James B Tollner
Isabel V Poquette
IdCountryDate
1000Brazil2024-04-17
1001United Kingdom2024-04-11
1002France2024-04-05
1003Russia2024-04-13
1004Russia2024-04-24
1005Australia2024-04-05
1006Italy2024-04-12
1007Canada2024-04-16
1008Germany2024-04-21
1009United Kingdom2024-04-10
1010Russia2024-04-19
1011Australia2024-04-18
1012India2024-04-22
1013France2024-04-01
1014Russia2024-04-28
1015Australia2024-04-27
1016United Kingdom2024-04-23
1017Australia2024-04-04
1018Japan2024-04-03
1019Italy2024-03-31
1020Italy2024-03-31
1021Italy2024-04-16
1022Germany2024-04-20
1023Spain2024-04-07
1024Argentina2024-04-15
1025Spain2024-04-22
1026United Kingdom2024-04-14
1027Australia2024-04-04
1028Australia2024-04-09
1029Italy2024-04-01
1030United Kingdom2024-04-10
1031Brazil2024-03-31
1032Argentina2024-04-07
1033France2024-04-21
1034Argentina2024-04-15
1035Russia2024-04-28
1036France2024-04-17
1037India2024-04-03
1038India2024-04-03
1039Italy2024-04-13
1040Argentina2024-04-01
1041Germany2024-04-10
1042Argentina2024-04-28
1043Spain2024-04-28
1044Australia2024-04-27
1045United Kingdom2024-04-13
1046France2024-04-24
1047Brazil2024-04-09
1048Russia2024-04-23
1049Germany2024-04-07

On-Demand Data

NameIdCountryDate
Emily X Kusko1000Italy2024-04-08
Rodrigues I Butt1001Canada2024-04-14
Misaki P Ferencz1002Russia2024-04-03
Costa X Foller1003Japan2024-04-27
Smith I Garufi1004Spain2024-04-26
Morrow U Kusko1005Russia2024-04-17
Chavez H Nestle1006Argentina2024-04-28
James R Garufi1007Italy2024-04-12
Cody K Kusko1008Canada2024-04-07
Emily U Briddick1009Russia2024-04-20
Aruna K Ostrosky1010Spain2024-04-05
Stacey M Nicka1011France2024-03-31
Murillo T Malet1012India2024-04-05
Leja Q Wieser1013Germany2024-04-17
Silvio Y Bolognia1014Japan2024-04-11
Cody A Oldroyd1015Brazil2024-04-02
Johnson Z Ruta1016Italy2024-04-19
Clifford M Malet1017India2024-04-29
Kadeem G Garufi1018Germany2024-04-04
Julie I Stockham1019Canada2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro X MaletBrazilAsiya Javayant UNQUALIFIED
Aika I StensethAustraliaAmy Elsner UNQUALIFIED
Mayumi A SergiCanadaElwin Sharvill NEGOTIATION
Chavez S CaldareraItalyStephen Shaw UNQUALIFIED
Deepesh Q FollerSpainAsiya Javayant UNQUALIFIED
Greenwood Z OstroskyFranceElwin Sharvill NEW
Morrow F VocelkaItalyBernardo Dominic RENEWAL
Juan J RutaItalyXuxue Feng PROPOSAL
Aruna E SergiAustraliaIoni Bowcher PROPOSAL
Jones E SergiRussiaElwin Sharvill PROPOSAL
Munro B InouyeRussiaBernardo Dominic NEW
Cody K WieserFranceElwin Sharvill RENEWAL
Cody M SergiGermanyBernardo Dominic NEGOTIATION
Kadeem A GauchoSpainAsiya Javayant NEGOTIATION
Jones M SchemmerCanadaElwin Sharvill NEGOTIATION
Smith T WieserAustraliaAsiya Javayant NEW
Jeanfrancois V PoquetteRussiaElwin Sharvill PROPOSAL
Julie N GarufiRussiaAsiya Javayant PROPOSAL
Izzy I OldroydCanadaElwin Sharvill QUALIFIED
Ashley S IturbideRussiaAnna Fali UNQUALIFIED
Jeanfrancois U BriddickArgentinaXuxue Feng QUALIFIED
Maisha C OstroskyFranceElwin Sharvill PROPOSAL
Adams V MacleadArgentinaAmy Elsner UNQUALIFIED
Morrow G MorascaSpainIvan Magalhaes NEW
Costa F BologniaUnited KingdomBernardo Dominic NEW
Aditya D BowleyArgentinaOnyama Limba PROPOSAL
Mayumi V MaletArgentinaElwin Sharvill QUALIFIED
Leon Z WhobreyIndiaAsiya Javayant UNQUALIFIED
Aruna G SaylorsRussiaOnyama Limba NEW
Sinclair K ButtItalyIoni Bowcher QUALIFIED
Kadeem V StensethGermanyOnyama Limba QUALIFIED
Kadeem Y GauchoSpainIvan Magalhaes PROPOSAL
Aruna C FerenczBrazilIvan Magalhaes UNQUALIFIED
Wickens X VocelkaGermanyBernardo Dominic QUALIFIED
Isabel H DoeGermanyOnyama Limba PROPOSAL
Alejandro J WhobreyAustraliaElwin Sharvill UNQUALIFIED
Murillo Q CampainGermanyAnna Fali UNQUALIFIED
Aika C StockhamUnited KingdomXuxue Feng PROPOSAL
Munro R SchemmerGermanyAnna Fali NEW
Cody G CaldareraAustraliaAmy Elsner PROPOSAL

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