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
Maisha M FlosiSpainBernardo Dominic NEW
Aruna V RimCanadaElwin Sharvill QUALIFIED
Kaitlin P GlickItalyIvan Magalhaes NEW
Maria L BowleyIndiaAmy Elsner PROPOSAL
Jefferson M MarrierUnited KingdomAsiya Javayant QUALIFIED
Ricardo S WieserItalyIoni Bowcher PROPOSAL
Jefferson B AlbaresFranceAmy Elsner NEW
Ivar N MacleadIndiaAnna Fali PROPOSAL
Isabel J GillianIndiaXuxue Feng QUALIFIED
Wickens W CaldareraSpainXuxue Feng QUALIFIED
Kadeem C AlbaresRussiaAsiya Javayant PROPOSAL
Izzy Z KolmetzAustraliaAnna Fali NEW
Wickens P DoeUnited KingdomAsiya Javayant NEW
Munro I ButtArgentinaBernardo Dominic PROPOSAL
James O RimRussiaStephen Shaw PROPOSAL
Stacey H VenereFranceAmy Elsner PROPOSAL
Morrow A CampainBrazilElwin Sharvill PROPOSAL
Darci S NestleSpainBernardo Dominic NEW
Kaitlin K WaycottRussiaElwin Sharvill RENEWAL
Munro U BowleyCanadaXuxue Feng QUALIFIED
Jennifer N MarrierIndiaAsiya Javayant NEGOTIATION
David Q SlusarskiSpainBernardo Dominic RENEWAL
Misaki C MarrierSpainAnna Fali NEW
Francesco U GarufiCanadaAmy Elsner NEW
Leon S SaylorsJapanIoni Bowcher PROPOSAL
Ricardo Q GlickGermanyOnyama Limba PROPOSAL
Tony J FollerAustraliaXuxue Feng UNQUALIFIED
Darci L CampainGermanyStephen Shaw QUALIFIED
Kaitlin I FollerItalyStephen Shaw PROPOSAL
Izzy R SlusarskiArgentinaOnyama Limba NEGOTIATION
Kadeem E BriddickIndiaElwin Sharvill QUALIFIED
Antonio Z FerenczFranceBernardo Dominic UNQUALIFIED
Silvio I VocelkaJapanAsiya Javayant NEW
Antonio K AmigonAustraliaAnna Fali NEW
Clifford G SlusarskiJapanAnna Fali UNQUALIFIED
Wickens M FerenczGermanyIoni Bowcher UNQUALIFIED
Cody A GarufiGermanyAnna Fali PROPOSAL
Juan I IturbideItalyXuxue Feng NEW
Smith G SergiFranceAmy Elsner NEGOTIATION
Octavia J MaletRussiaXuxue Feng QUALIFIED
Isabel Q SaylorsCanadaAmy Elsner NEGOTIATION
Octavia T NestleCanadaElwin Sharvill RENEWAL
Arvin C OstroskyFranceElwin Sharvill NEW
Aditya Q BowleyGermanyAsiya Javayant PROPOSAL
Emily P MaletBrazilIoni Bowcher NEW
Maisha K NickaBrazilAmy Elsner NEGOTIATION
Kadeem C GauchoGermanyAnna Fali NEGOTIATION
Mujtaba J CaudyGermanyOnyama Limba RENEWAL
Faith K MorascaFranceIvan Magalhaes RENEWAL
Kadeem L StensethAustraliaIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Isabel N SaylorsUnited KingdomIoni Bowcher RENEWAL
Clifford G RulapaughAustraliaBernardo Dominic UNQUALIFIED
David Q DarakjyGermanyIvan Magalhaes RENEWAL
Deepesh S FlosiGermanyStephen Shaw RENEWAL
Salvatore W ShinkoItalyXuxue Feng RENEWAL
Deepesh G InouyeBrazilOnyama Limba NEW
Isabel C SergiArgentinaOnyama Limba NEGOTIATION
Nicolas L SchemmerFranceBernardo Dominic NEW
Izzy A GillianSpainElwin Sharvill PROPOSAL
Octavia Q NestleBrazilBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David O GarufiJapan2024-04-20Feiner Bros RENEWAL19Asiya Javayant
1001Mayumi V WhobreyAustralia2024-04-06Rousseaux, Michael Esq RENEWAL83Amy Elsner
1002Emily Q MaletUnited Kingdom2024-04-25Chanay, Jeffrey A Esq QUALIFIED89Amy Elsner
1003Ashley C DarakjyFrance2024-04-01Rangoni Of Florence NEW37Xuxue Feng
1004Darci G CaldareraAustralia2024-03-31Commercial Press RENEWAL86Amy Elsner
1005Ashley I VenereSpain2024-04-17Chanay, Jeffrey A Esq PROPOSAL24Anna Fali
1006Maisha I WieserFrance2024-04-12Morlong Associates NEW68Ioni Bowcher
1007Rodrigues L AmigonUnited Kingdom2024-04-01Feiner Bros NEW33Amy Elsner
1008Mayumi R StockhamSpain2024-04-18Benton, John B Jr PROPOSAL97Amy Elsner
1009Costa E ButtUnited Kingdom2024-04-22Rousseaux, Michael Esq QUALIFIED21Bernardo Dominic
1010Arvin C CaldareraRussia2024-04-23Feltz Printing Service NEW6Bernardo Dominic
1011Silvio F CampainSpain2024-04-11Truhlar And Truhlar Attys RENEWAL46Onyama Limba
1012Leon J KuskoIndia2024-04-08Truhlar And Truhlar Attys NEGOTIATION40Bernardo Dominic
1013Julie T ChuiCanada2024-04-18Chanay, Jeffrey A Esq PROPOSAL46Xuxue Feng
1014Aruna C SchemmerSpain2024-04-10Rousseaux, Michael Esq NEGOTIATION56Anna Fali
1015Francesco Z OldroydGermany2024-03-31Commercial Press QUALIFIED57Onyama Limba
1016Ashley F RutaBrazil2024-04-18Feiner Bros UNQUALIFIED73Xuxue Feng
1017Ivar K FollerUnited Kingdom2024-04-01Feiner Bros QUALIFIED37Asiya Javayant
1018Jennifer V VenereArgentina2024-04-07Rangoni Of Florence PROPOSAL7Ivan Magalhaes
1019Juan X WhobreyArgentina2024-04-22Commercial Press QUALIFIED43Elwin Sharvill
1020Jeanfrancois W SaylorsIndia2024-04-21Truhlar And Truhlar Attys NEGOTIATION2Onyama Limba
1021Maria E BologniaUnited Kingdom2024-04-20Rousseaux, Michael Esq RENEWAL0Bernardo Dominic
1022Silvio W GlickIndia2024-03-30Rangoni Of Florence RENEWAL24Ioni Bowcher
1023Silvio Y KolmetzItaly2024-04-26Printing Dimensions PROPOSAL97Amy Elsner
1024Jones R FerenczCanada2024-04-03Rousseaux, Michael Esq QUALIFIED54Anna Fali
1025Leon U CampainBrazil2024-04-25Feltz Printing Service NEGOTIATION21Amy Elsner
1026Nicolas M BriddickJapan2024-04-27Rangoni Of Florence NEGOTIATION24Asiya Javayant
1027Silvio F CaudyRussia2024-04-03Rangoni Of Florence QUALIFIED5Elwin Sharvill
1028Antonio L FerenczGermany2024-04-21Buckley Miller Wright UNQUALIFIED76Bernardo Dominic
1029Emily W GlickSpain2024-04-02Chapman, Ross E Esq RENEWAL13Amy Elsner
1030Chavez E MacleadItaly2024-03-29Truhlar And Truhlar Attys PROPOSAL51Bernardo Dominic
1031Antonio Q DarakjyGermany2024-04-23Buckley Miller Wright PROPOSAL26Ioni Bowcher
1032Isabel M InouyeCanada2024-04-01Truhlar And Truhlar Attys UNQUALIFIED34Elwin Sharvill
1033Costa A CaudyItaly2024-04-13Chapman, Ross E Esq PROPOSAL36Anna Fali
1034Jennifer C NestleItaly2024-04-10Chanay, Jeffrey A Esq PROPOSAL60Ioni Bowcher
1035Johnson B WhobreyCanada2024-04-27Commercial Press PROPOSAL22Bernardo Dominic
1036Jefferson E WieserItaly2024-03-29Buckley Miller Wright NEGOTIATION4Xuxue Feng
1037Rodrigues L OstroskyIndia2024-04-10Truhlar And Truhlar Attys UNQUALIFIED20Ivan Magalhaes
1038Chavez W FlosiAustralia2024-03-30Benton, John B Jr UNQUALIFIED14Ivan Magalhaes
1039Leon Q AlbaresFrance2024-04-02Rousseaux, Michael Esq NEW27Ivan Magalhaes
1040Mayumi U FerenczCanada2024-04-26Chanay, Jeffrey A Esq NEW62Amy Elsner
1041Wickens W ChuiArgentina2024-04-13Dorl, James J Esq NEW84Ioni Bowcher
1042Rodrigues M CaldareraBrazil2024-04-15King, Christopher A Esq UNQUALIFIED71Bernardo Dominic
1043Leja M PaprockiCanada2024-04-14King, Christopher A Esq NEW64Bernardo Dominic
1044Darci T StensethUnited Kingdom2024-04-24Morlong Associates NEW9Asiya Javayant
1045Claire X SlusarskiRussia2024-04-01Commercial Press NEGOTIATION42Onyama Limba
1046Octavia O VenereIndia2024-04-25Benton, John B Jr QUALIFIED14Onyama Limba
1047Greenwood J ButtUnited Kingdom2024-04-11Chanay, Jeffrey A Esq QUALIFIED0Amy Elsner
1048Greenwood E CampainCanada2024-04-23Feltz Printing Service PROPOSAL32Asiya Javayant
1049Morrow Y ChuiRussia2024-04-03Dorl, James J Esq NEW49Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Julie C SlusarskiRussiaElwin Sharvill NEW
Maria T CaudySpainAsiya Javayant NEGOTIATION
Maisha W SaylorsJapanAmy Elsner RENEWAL
Munro Q CaudySpainBernardo Dominic RENEWAL
Juan I KolmetzJapanAnna Fali RENEWAL
James M VenereFranceIvan Magalhaes NEGOTIATION
Alejandro N MaletCanadaXuxue Feng NEGOTIATION
Kadeem Y VenereFranceOnyama Limba PROPOSAL
Johnson O StensethJapanElwin Sharvill NEW
Faith M PerinFranceIvan Magalhaes NEGOTIATION
Antonio T NickaRussiaAmy Elsner QUALIFIED
Julie K BologniaIndiaElwin Sharvill NEGOTIATION
Kaitlin X CampainJapanOnyama Limba PROPOSAL
Salvatore J AmigonBrazilIvan Magalhaes UNQUALIFIED
Leon B DarakjyItalyIvan Magalhaes NEGOTIATION
Claire H NestleAustraliaElwin Sharvill QUALIFIED
Leon X BriddickItalyAsiya Javayant UNQUALIFIED
Tony X FigeroaAustraliaAsiya Javayant NEGOTIATION
Kadeem A FollerItalyAmy Elsner NEGOTIATION
Sinclair C VenereJapanAsiya Javayant QUALIFIED
Wickens R DoeFranceElwin Sharvill NEW
James X ChuiItalyBernardo Dominic PROPOSAL
Greenwood Z ButtItalyIoni Bowcher UNQUALIFIED
Stacey A DarakjyJapanAsiya Javayant QUALIFIED
Alejandro L FerenczCanadaStephen Shaw QUALIFIED
Mujtaba I BowleySpainOnyama Limba NEW
Stacey W PoquetteIndiaIoni Bowcher QUALIFIED
Jones K RulapaughJapanBernardo Dominic UNQUALIFIED
Arvin X OstroskyUnited KingdomBernardo Dominic PROPOSAL
Alejandro L OstroskyIndiaOnyama Limba NEW
Ricardo B PaprockiSpainStephen Shaw RENEWAL
Faith K RoysterArgentinaIvan Magalhaes RENEWAL
Nicolas K RoysterFranceXuxue Feng PROPOSAL
Misaki U RulapaughGermanyBernardo Dominic NEW
Chavez U VenereCanadaElwin Sharvill PROPOSAL
Costa Q RutaAustraliaAnna Fali UNQUALIFIED
Smith M BriddickGermanyBernardo Dominic NEW
Alejandro P NestleAustraliaStephen Shaw NEGOTIATION
Silvio G FollerSpainElwin Sharvill PROPOSAL
Stacey R RoysterUnited KingdomXuxue Feng NEGOTIATION
Aditya A WhobreySpainAsiya Javayant QUALIFIED
Greenwood Q MaletArgentinaOnyama Limba QUALIFIED
Stacey G MaletArgentinaXuxue Feng QUALIFIED
Kaitlin M DarakjyAustraliaBernardo Dominic QUALIFIED
Sinclair T OldroydIndiaIvan Magalhaes UNQUALIFIED
Aika T GarufiJapanOnyama Limba UNQUALIFIED
Juan J MaletBrazilIvan Magalhaes RENEWAL
Clifford V StensethUnited KingdomXuxue Feng QUALIFIED
Stacey V WaycottSpainAmy Elsner NEGOTIATION
Ricardo V OstroskyAustraliaAsiya Javayant NEW
Frozen Columns
Name
Ivar R Inouye
Jones N Ruta
Deepesh C Gillian
Clifford R Rulapaugh
Sinclair Y Venere
Izzy L Darakjy
Izzy S Chui
Smith L Caudy
Chavez Y Oldroyd
Greenwood H Glick
Smith E Vocelka
Emily F Nestle
Sinclair V Garufi
Ricardo X Gillian
Faith Y Maclead
Julie S Stockham
Costa Y Nicka
Maria U Tollner
David H Malet
Ashley V Poquette
Stacey J Darakjy
Claire R Doe
Sinclair D Shinko
Alejandro P Tollner
Claire E Stenseth
Nicolas D Rim
Stacey H Figeroa
Adams S Dilliard
Ivar X Gillian
Murillo N Foller
Kaitlin H Schemmer
Clifford S Morasca
Clifford L Ruta
Jennifer J Vocelka
Arvin A Tollner
James A Bolognia
Juan H Campain
Rodrigues Y Gillian
Faith U Campain
Morrow Q Foller
Aika C Kolmetz
Leon L Chui
Leon Z Shinko
Cody Q Figeroa
Silvio I Waycott
Francesco B Stenseth
Leon E Malet
Octavia D Vocelka
Antonio P Gillian
Emily K Dilliard
IdCountryDate
1000Australia2024-04-26
1001France2024-04-15
1002United Kingdom2024-04-24
1003Canada2024-04-03
1004Argentina2024-04-10
1005Argentina2024-04-27
1006United Kingdom2024-04-19
1007United Kingdom2024-03-29
1008Spain2024-04-21
1009Australia2024-04-03
1010Russia2024-04-11
1011United Kingdom2024-04-25
1012Australia2024-04-16
1013France2024-04-25
1014United Kingdom2024-04-06
1015France2024-04-07
1016Argentina2024-04-03
1017Italy2024-04-12
1018India2024-04-11
1019United Kingdom2024-04-05
1020Argentina2024-04-21
1021Brazil2024-04-26
1022United Kingdom2024-04-04
1023Argentina2024-04-05
1024Canada2024-04-08
1025Argentina2024-04-05
1026Brazil2024-04-22
1027Italy2024-04-20
1028Spain2024-04-24
1029Spain2024-04-16
1030United Kingdom2024-04-25
1031Germany2024-04-21
1032Argentina2024-04-18
1033Japan2024-04-02
1034Italy2024-04-11
1035France2024-04-20
1036Russia2024-04-22
1037Argentina2024-04-23
1038Russia2024-04-08
1039Italy2024-04-19
1040Argentina2024-03-30
1041United Kingdom2024-04-22
1042Canada2024-04-11
1043Argentina2024-04-19
1044Germany2024-04-07
1045United Kingdom2024-03-29
1046Brazil2024-04-18
1047Germany2024-04-19
1048Italy2024-04-13
1049Australia2024-04-05

On-Demand Data

NameIdCountryDate
Julie E Waycott1000Brazil2024-04-24
Aditya S Rulapaugh1001Argentina2024-04-08
Maria D Butt1002Brazil2024-04-21
Sinclair C Albares1003Brazil2024-04-06
Aika C Bowley1004United Kingdom2024-04-09
Jones Z Sergi1005Germany2024-04-04
Julie N Maclead1006Japan2024-04-23
Izzy J Bowley1007India2024-04-25
Izzy X Caldarera1008Germany2024-04-26
Greenwood I Dilliard1009Brazil2024-04-09
Clifford S Figeroa1010United Kingdom2024-04-24
Izzy F Gaucho1011Australia2024-04-09
Ashley Y Venere1012Canada2024-04-24
Darci N Stockham1013Australia2024-04-11
Juan M Kusko1014France2024-04-21
Munro R Foller1015Brazil2024-04-23
Juan W Wieser1016Germany2024-04-02
Arvin K Paprocki1017Russia2024-04-04
Ashley R Garufi1018Australia2024-04-16
Murillo V Ostrosky1019Australia2024-03-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith I MarrierJapanIvan Magalhaes UNQUALIFIED
Arvin P MacleadRussiaXuxue Feng UNQUALIFIED
Tony F SergiAustraliaAsiya Javayant UNQUALIFIED
Isabel L RimUnited KingdomIvan Magalhaes QUALIFIED
Cody Z InouyeGermanyOnyama Limba RENEWAL
Costa I CaudySpainXuxue Feng NEGOTIATION
Francesco U DoeItalyAnna Fali RENEWAL
James L NestleSpainXuxue Feng QUALIFIED
Clifford Z SlusarskiSpainAnna Fali NEW
Sinclair A WhobreySpainElwin Sharvill NEW
Aditya O KuskoItalyAsiya Javayant NEW
Arvin L StensethSpainXuxue Feng NEGOTIATION
Sinclair W OstroskyGermanyAmy Elsner QUALIFIED
Aruna R BowleyItalyIvan Magalhaes NEGOTIATION
Emily V KuskoGermanyElwin Sharvill NEW
Aruna J FollerArgentinaElwin Sharvill QUALIFIED
Antonio L NestleUnited KingdomElwin Sharvill UNQUALIFIED
Clifford Z DoeCanadaOnyama Limba NEW
Jones W KuskoCanadaXuxue Feng NEW
Jones A AlbaresBrazilAmy Elsner RENEWAL
Ashley F ShinkoArgentinaAnna Fali RENEWAL
Morrow A FigeroaItalyAnna Fali RENEWAL
Emily T PoquetteCanadaIvan Magalhaes QUALIFIED
Maria T FlosiUnited KingdomAnna Fali UNQUALIFIED
Juan O MorascaIndiaXuxue Feng PROPOSAL
Tony I ShinkoCanadaIoni Bowcher NEW
Aika K CampainItalyElwin Sharvill RENEWAL
Aditya P CaudyRussiaAmy Elsner NEGOTIATION
Sinclair R SaylorsArgentinaElwin Sharvill UNQUALIFIED
Emily J PerinCanadaAsiya Javayant RENEWAL
Rodrigues I CampainSpainElwin Sharvill QUALIFIED
Stacey O FollerArgentinaAmy Elsner RENEWAL
Chavez Y AmigonBrazilAsiya Javayant PROPOSAL
Kaitlin A CaudyUnited KingdomIvan Magalhaes PROPOSAL
Kadeem T GlickFranceAsiya Javayant QUALIFIED
Juan O RutaSpainOnyama Limba UNQUALIFIED
Morrow V DilliardItalyXuxue Feng QUALIFIED
Chavez L StensethArgentinaStephen Shaw PROPOSAL
Aruna X MorascaBrazilAsiya Javayant RENEWAL
Adams V FerenczJapanIoni Bowcher 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>