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
Leja I MaletItalyXuxue Feng NEGOTIATION
James N CaudyRussiaStephen Shaw RENEWAL
Maria E FerenczAustraliaAmy Elsner QUALIFIED
Nicolas H RutaUnited KingdomStephen Shaw UNQUALIFIED
Arvin E StensethAustraliaAnna Fali NEW
Leja Q WieserAustraliaOnyama Limba QUALIFIED
Aruna X DilliardJapanElwin Sharvill NEGOTIATION
Clifford L WieserGermanyOnyama Limba UNQUALIFIED
Ivar I BriddickArgentinaAsiya Javayant QUALIFIED
Aruna X SchemmerIndiaOnyama Limba PROPOSAL
Maria D PerinFranceIvan Magalhaes NEGOTIATION
Isabel T IturbideItalyBernardo Dominic RENEWAL
Mayumi K RulapaughJapanBernardo Dominic RENEWAL
Kaitlin P OstroskyCanadaStephen Shaw NEW
Kaitlin Q SlusarskiGermanyAsiya Javayant UNQUALIFIED
Aika Q FerenczIndiaOnyama Limba PROPOSAL
Arvin I GillianAustraliaIoni Bowcher NEW
Aika M OldroydUnited KingdomIvan Magalhaes NEGOTIATION
Kadeem R NickaJapanStephen Shaw QUALIFIED
Deepesh R PerinRussiaAsiya Javayant QUALIFIED
Alejandro S PoquetteAustraliaElwin Sharvill UNQUALIFIED
Aditya W GarufiIndiaAmy Elsner NEW
Ashley S MaletUnited KingdomOnyama Limba PROPOSAL
Arvin G IturbideIndiaOnyama Limba UNQUALIFIED
Aika S KuskoItalyAnna Fali UNQUALIFIED
Deepesh X StockhamArgentinaAmy Elsner PROPOSAL
Maisha E RulapaughGermanyBernardo Dominic NEW
Tony N ButtFranceAnna Fali QUALIFIED
Aika I PoquetteGermanyOnyama Limba RENEWAL
Cody L VenereRussiaXuxue Feng UNQUALIFIED
Leon R MaletFranceAnna Fali QUALIFIED
Stacey G MarrierSpainAmy Elsner QUALIFIED
Jennifer F ButtRussiaXuxue Feng NEGOTIATION
Munro M NestleIndiaIoni Bowcher NEGOTIATION
Adams L RulapaughArgentinaElwin Sharvill NEW
Clifford J TollnerBrazilBernardo Dominic NEW
Mayumi T FerenczJapanIvan Magalhaes NEW
Aika Z PoquetteSpainElwin Sharvill QUALIFIED
Clifford G OldroydBrazilIoni Bowcher NEGOTIATION
Darci U GauchoGermanyStephen Shaw UNQUALIFIED
Emily U SaylorsArgentinaBernardo Dominic RENEWAL
Arvin I RulapaughCanadaIoni Bowcher RENEWAL
Aruna T PerinIndiaAnna Fali UNQUALIFIED
Darci F NickaUnited KingdomStephen Shaw PROPOSAL
David B MorascaGermanyAnna Fali QUALIFIED
Julie E MorascaAustraliaOnyama Limba QUALIFIED
Nicolas O MaletRussiaAmy Elsner PROPOSAL
Morrow A ChuiUnited KingdomIoni Bowcher NEGOTIATION
Isabel D PerinUnited KingdomElwin Sharvill NEGOTIATION
Leja U IturbideGermanyAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Morrow H FollerBrazilIvan Magalhaes RENEWAL
Adams C StockhamSpainXuxue Feng NEW
Adams A BologniaJapanAmy Elsner PROPOSAL
Faith T MaletBrazilStephen Shaw UNQUALIFIED
Ashley G PerinAustraliaXuxue Feng UNQUALIFIED
Leja D AmigonItalyAsiya Javayant UNQUALIFIED
Alejandro B MaletItalyIoni Bowcher RENEWAL
Ricardo B RoysterBrazilAsiya Javayant NEW
Stacey I MarrierAustraliaAsiya Javayant NEW
Isabel N DarakjyCanadaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro M DilliardBrazil2024-04-24Morlong Associates UNQUALIFIED8Ioni Bowcher
1001Ashley X NestleUnited Kingdom2024-04-17Commercial Press RENEWAL63Asiya Javayant
1002Clifford J SchemmerGermany2024-04-17Chapman, Ross E Esq QUALIFIED97Bernardo Dominic
1003Jones V BriddickIndia2024-04-30Rangoni Of Florence UNQUALIFIED82Onyama Limba
1004Johnson R OstroskyArgentina2024-04-07Feiner Bros NEW92Bernardo Dominic
1005Nicolas Y PoquetteUnited Kingdom2024-05-06Chemel, James L Cpa NEW7Ivan Magalhaes
1006Jefferson R PerinItaly2024-04-08Printing Dimensions RENEWAL38Anna Fali
1007Munro A ButtBrazil2024-04-24Chemel, James L Cpa UNQUALIFIED23Amy Elsner
1008Greenwood P BowleyIndia2024-04-28Printing Dimensions NEW55Amy Elsner
1009Salvatore D FlosiUnited Kingdom2024-04-19King, Christopher A Esq PROPOSAL81Bernardo Dominic
1010Jones N GlickFrance2024-04-23Rangoni Of Florence NEGOTIATION51Onyama Limba
1011Octavia Q NestleBrazil2024-04-11Buckley Miller Wright NEW39Asiya Javayant
1012Tony T GillianRussia2024-04-18Morlong Associates UNQUALIFIED20Xuxue Feng
1013Arvin V WieserCanada2024-04-28Printing Dimensions NEW63Amy Elsner
1014Aditya Z VenereRussia2024-04-28Rangoni Of Florence QUALIFIED12Ioni Bowcher
1015Mayumi M SergiArgentina2024-04-20Commercial Press QUALIFIED66Onyama Limba
1016Morrow O StensethIndia2024-04-17Benton, John B Jr QUALIFIED10Xuxue Feng
1017Juan L CampainGermany2024-04-07Chanay, Jeffrey A Esq PROPOSAL36Anna Fali
1018Julie U VenereIndia2024-05-04King, Christopher A Esq NEGOTIATION86Amy Elsner
1019Kadeem Z NickaArgentina2024-04-15Feltz Printing Service NEGOTIATION56Ivan Magalhaes
1020Alejandro X FollerCanada2024-04-22King, Christopher A Esq NEW64Stephen Shaw
1021James G KuskoGermany2024-04-12Rangoni Of Florence NEW18Ioni Bowcher
1022James U WaycottItaly2024-04-17Chapman, Ross E Esq NEGOTIATION90Anna Fali
1023Octavia Z TollnerJapan2024-04-07Printing Dimensions NEW25Stephen Shaw
1024Misaki O StockhamUnited Kingdom2024-04-15Benton, John B Jr NEW78Anna Fali
1025Aika O SchemmerJapan2024-04-24Printing Dimensions NEGOTIATION82Elwin Sharvill
1026Clifford V BologniaCanada2024-04-12Chapman, Ross E Esq PROPOSAL40Elwin Sharvill
1027Deepesh T FollerSpain2024-04-16Feltz Printing Service RENEWAL58Bernardo Dominic
1028Greenwood E WieserIndia2024-04-14Dorl, James J Esq NEW55Ioni Bowcher
1029Maisha W FollerAustralia2024-04-23Chanay, Jeffrey A Esq UNQUALIFIED49Anna Fali
1030Kaitlin M ButtSpain2024-05-05Chemel, James L Cpa NEGOTIATION77Bernardo Dominic
1031James P KolmetzAustralia2024-05-05Commercial Press PROPOSAL63Stephen Shaw
1032Morrow U CaldareraIndia2024-05-04Truhlar And Truhlar Attys PROPOSAL95Xuxue Feng
1033Arvin D CampainSpain2024-04-26Dorl, James J Esq NEGOTIATION8Bernardo Dominic
1034Alejandro I ShinkoArgentina2024-04-15Truhlar And Truhlar Attys QUALIFIED92Onyama Limba
1035Aruna W RoysterItaly2024-04-20Chanay, Jeffrey A Esq NEW28Asiya Javayant
1036Alejandro C SaylorsCanada2024-05-04Buckley Miller Wright UNQUALIFIED61Asiya Javayant
1037Alejandro T RutaUnited Kingdom2024-04-10Chemel, James L Cpa RENEWAL12Ioni Bowcher
1038Silvio E OstroskyCanada2024-04-10Morlong Associates UNQUALIFIED37Onyama Limba
1039Tony K KolmetzIndia2024-04-11Chemel, James L Cpa QUALIFIED47Bernardo Dominic
1040Jeanfrancois W BriddickCanada2024-04-25Chapman, Ross E Esq NEW9Asiya Javayant
1041Jones J DarakjyIndia2024-04-08Benton, John B Jr UNQUALIFIED34Elwin Sharvill
1042Juan V RoysterBrazil2024-05-01King, Christopher A Esq NEGOTIATION75Ivan Magalhaes
1043Silvio E FlosiJapan2024-04-19Chemel, James L Cpa RENEWAL97Xuxue Feng
1044Isabel Q RulapaughBrazil2024-04-27Truhlar And Truhlar Attys NEW91Asiya Javayant
1045Ivar N VenereGermany2024-04-19Benton, John B Jr RENEWAL32Amy Elsner
1046Maria S MaletRussia2024-04-21Feltz Printing Service UNQUALIFIED92Ioni Bowcher
1047Ivar O SlusarskiFrance2024-04-08Dorl, James J Esq UNQUALIFIED81Elwin Sharvill
1048Leja Z MarrierRussia2024-04-11King, Christopher A Esq PROPOSAL30Xuxue Feng
1049Alejandro Z SlusarskiAustralia2024-04-21Morlong Associates UNQUALIFIED81Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Stacey N BologniaBrazilBernardo Dominic RENEWAL
Rodrigues P VocelkaSpainStephen Shaw QUALIFIED
Faith S SchemmerBrazilStephen Shaw PROPOSAL
Arvin U VocelkaIndiaStephen Shaw RENEWAL
Smith X CampainFranceIvan Magalhaes RENEWAL
Greenwood L RimGermanyAsiya Javayant RENEWAL
Cody L GarufiItalyIoni Bowcher UNQUALIFIED
Greenwood F TollnerBrazilXuxue Feng PROPOSAL
Izzy D BologniaAustraliaBernardo Dominic UNQUALIFIED
Clifford C OldroydGermanyStephen Shaw PROPOSAL
Nicolas D StensethUnited KingdomAmy Elsner RENEWAL
Sinclair D TollnerIndiaBernardo Dominic QUALIFIED
Chavez B NickaArgentinaStephen Shaw RENEWAL
Chavez B WaycottGermanyAnna Fali NEW
Julie I WieserFranceIoni Bowcher NEW
Darci J PoquetteGermanyAsiya Javayant PROPOSAL
Francesco E SergiBrazilElwin Sharvill UNQUALIFIED
Julie D SergiBrazilAmy Elsner RENEWAL
Aditya A GlickItalyAnna Fali RENEWAL
David D FollerArgentinaElwin Sharvill QUALIFIED
Emily D IturbideSpainAsiya Javayant UNQUALIFIED
Julie A FigeroaArgentinaBernardo Dominic QUALIFIED
Mayumi A FerenczCanadaIvan Magalhaes UNQUALIFIED
Aditya T PoquetteUnited KingdomAmy Elsner UNQUALIFIED
Maisha S BologniaBrazilElwin Sharvill NEW
Greenwood F OldroydGermanyXuxue Feng RENEWAL
Kadeem A SchemmerSpainAnna Fali RENEWAL
Jennifer P PoquetteUnited KingdomElwin Sharvill UNQUALIFIED
Darci E SchemmerFranceIvan Magalhaes UNQUALIFIED
Aruna B NickaSpainIoni Bowcher PROPOSAL
Wickens Q BowleyBrazilAsiya Javayant RENEWAL
Antonio W GarufiUnited KingdomBernardo Dominic UNQUALIFIED
Greenwood I FollerAustraliaBernardo Dominic RENEWAL
Aditya F WhobreyGermanyAsiya Javayant RENEWAL
Ivar W VocelkaIndiaAnna Fali UNQUALIFIED
David T FollerIndiaElwin Sharvill UNQUALIFIED
James P BowleyIndiaElwin Sharvill NEGOTIATION
Arvin M TollnerCanadaAmy Elsner UNQUALIFIED
Kaitlin H GarufiRussiaStephen Shaw UNQUALIFIED
Tony V PoquetteJapanOnyama Limba NEGOTIATION
Emily J FollerFranceElwin Sharvill UNQUALIFIED
Leon W RulapaughGermanyOnyama Limba QUALIFIED
Francesco C StensethRussiaAsiya Javayant UNQUALIFIED
Silvio S DoeBrazilAsiya Javayant UNQUALIFIED
Aika Y KuskoSpainAmy Elsner PROPOSAL
Murillo C BriddickIndiaAsiya Javayant UNQUALIFIED
Costa H KolmetzSpainOnyama Limba PROPOSAL
Adams W SlusarskiCanadaAsiya Javayant RENEWAL
Juan L AmigonGermanyIoni Bowcher NEGOTIATION
Isabel I RutaRussiaBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Silvio K Venere
Tony C Ostrosky
Mujtaba U Poquette
James S Waycott
Mayumi F Darakjy
Munro E Gillian
Aika E Whobrey
Clifford I Wieser
Maria J Schemmer
Jefferson C Stenseth
Rodrigues O Marrier
Stacey A Caudy
James E Slusarski
Cody V Garufi
Leon Y Paprocki
Murillo D Whobrey
Wickens Y Caldarera
Alejandro U Saylors
Francesco Q Tollner
Julie M Marrier
Clifford F Amigon
Murillo I Gillian
Misaki N Marrier
Costa A Whobrey
Darci Z Amigon
Isabel K Waycott
Arvin R Caudy
Smith U Saylors
Wickens K Bowley
Maria B Malet
Costa C Inouye
Misaki L Malet
Alejandro H Glick
Costa F Rulapaugh
Antonio B Malet
Octavia A Waycott
Octavia D Figeroa
Kaitlin J Caldarera
Francesco V Saylors
Isabel V Bolognia
Leja S Malet
Nicolas P Amigon
Arvin E Malet
Claire G Flosi
Silvio Y Ruta
Antonio Y Flosi
Deepesh E Kolmetz
Ivar G Briddick
Morrow V Foller
Jones K Marrier
IdCountryDate
1000Canada2024-04-20
1001Australia2024-04-15
1002France2024-04-12
1003Russia2024-04-18
1004Brazil2024-04-20
1005France2024-04-27
1006Brazil2024-04-07
1007Argentina2024-04-26
1008Germany2024-05-03
1009Japan2024-04-17
1010Italy2024-05-06
1011Russia2024-04-23
1012Russia2024-04-24
1013Japan2024-04-12
1014Germany2024-04-28
1015Japan2024-04-28
1016Russia2024-05-05
1017Brazil2024-04-17
1018Argentina2024-04-27
1019India2024-05-01
1020Russia2024-04-16
1021France2024-04-20
1022Australia2024-05-01
1023Italy2024-04-08
1024Spain2024-04-30
1025Australia2024-04-17
1026United Kingdom2024-04-08
1027Germany2024-04-07
1028Italy2024-04-18
1029Russia2024-04-22
1030United Kingdom2024-05-02
1031Spain2024-04-21
1032Russia2024-04-13
1033Australia2024-04-14
1034Japan2024-04-16
1035United Kingdom2024-05-01
1036France2024-04-18
1037Germany2024-04-16
1038Australia2024-04-21
1039Brazil2024-05-04
1040Germany2024-04-17
1041Brazil2024-04-18
1042Russia2024-04-29
1043Argentina2024-04-13
1044Germany2024-04-12
1045Canada2024-04-18
1046France2024-04-19
1047Germany2024-04-15
1048Italy2024-04-18
1049United Kingdom2024-04-18

On-Demand Data

NameIdCountryDate
Antonio Q Bolognia1000Russia2024-04-08
Munro J Tollner1001Italy2024-04-07
Deepesh F Kolmetz1002Australia2024-04-26
Misaki V Flosi1003Canada2024-04-08
Antonio T Maclead1004India2024-04-27
Aditya K Nicka1005Japan2024-04-09
Cody M Albares1006Brazil2024-04-24
Claire L Inouye1007Italy2024-04-18
Emily D Inouye1008Argentina2024-05-05
Nicolas Y Nestle1009France2024-04-13
Chavez X Paprocki1010Canada2024-04-12
Johnson V Whobrey1011Argentina2024-05-02
Wickens B Morasca1012Russia2024-04-26
Ashley T Ferencz1013India2024-05-06
Jefferson R Rulapaugh1014Italy2024-04-17
Mayumi I Bowley1015Spain2024-05-02
Silvio I Nicka1016France2024-04-22
Maisha G Briddick1017Brazil2024-04-17
Jennifer S Ruta1018India2024-05-05
Stacey L Amigon1019Canada2024-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones X ShinkoJapanAnna Fali NEGOTIATION
Aruna A StockhamFranceAmy Elsner NEGOTIATION
Rodrigues C InouyeItalyBernardo Dominic QUALIFIED
Isabel O SergiCanadaBernardo Dominic NEW
Isabel H GarufiAustraliaStephen Shaw PROPOSAL
Aditya Z MarrierRussiaAnna Fali RENEWAL
Nicolas H MaletItalyAsiya Javayant PROPOSAL
Clifford Q DoeGermanyAmy Elsner NEGOTIATION
Wickens U ChuiItalyElwin Sharvill QUALIFIED
Johnson K WaycottRussiaIvan Magalhaes UNQUALIFIED
Mujtaba L ButtIndiaAsiya Javayant NEGOTIATION
Julie N MacleadIndiaAmy Elsner NEW
Alejandro J OldroydFranceOnyama Limba RENEWAL
Tony L MorascaArgentinaElwin Sharvill NEW
Morrow R SchemmerCanadaElwin Sharvill RENEWAL
Sinclair H OldroydBrazilOnyama Limba PROPOSAL
Maisha X OstroskyItalyIvan Magalhaes QUALIFIED
Smith C PaprockiBrazilIvan Magalhaes PROPOSAL
Antonio Z FigeroaGermanyIoni Bowcher RENEWAL
Antonio V KolmetzItalyElwin Sharvill NEGOTIATION
Adams Y WhobreyBrazilAnna Fali NEW
Juan K FlosiCanadaAsiya Javayant NEW
Claire C OstroskyGermanyAnna Fali PROPOSAL
Aditya D KolmetzFranceStephen Shaw QUALIFIED
Sinclair U VocelkaSpainBernardo Dominic NEW
Greenwood X SergiAustraliaStephen Shaw QUALIFIED
Tony O BowleyRussiaAnna Fali PROPOSAL
Silvio C AmigonArgentinaStephen Shaw NEW
Wickens U DilliardJapanXuxue Feng QUALIFIED
Maisha Z PoquetteAustraliaIvan Magalhaes NEGOTIATION
Emily T WieserCanadaBernardo Dominic NEGOTIATION
Adams Q SchemmerCanadaIvan Magalhaes PROPOSAL
Octavia Z CampainArgentinaStephen Shaw UNQUALIFIED
Darci X CaudyItalyAsiya Javayant RENEWAL
Munro D RimJapanIvan Magalhaes PROPOSAL
Costa L AlbaresBrazilAnna Fali PROPOSAL
Misaki C SlusarskiRussiaStephen Shaw UNQUALIFIED
Clifford M BriddickItalyStephen Shaw NEGOTIATION
Mujtaba I VocelkaSpainXuxue Feng PROPOSAL
Salvatore G SchemmerRussiaElwin Sharvill 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>