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
Francesco X WieserItalyElwin Sharvill PROPOSAL
Mujtaba P TollnerAustraliaOnyama Limba NEGOTIATION
Maria L BologniaJapanXuxue Feng UNQUALIFIED
Tony D ShinkoIndiaOnyama Limba UNQUALIFIED
Ricardo M MarrierGermanyElwin Sharvill RENEWAL
Clifford M DarakjySpainIoni Bowcher RENEWAL
Emily T NestleArgentinaAsiya Javayant RENEWAL
Arvin K AmigonJapanAnna Fali UNQUALIFIED
Jefferson X DilliardUnited KingdomAnna Fali NEW
James N GarufiUnited KingdomXuxue Feng QUALIFIED
Arvin Z SaylorsUnited KingdomAmy Elsner UNQUALIFIED
Izzy Y RimAustraliaOnyama Limba NEW
Leja A MacleadBrazilOnyama Limba QUALIFIED
Jennifer X ChuiItalyIvan Magalhaes NEGOTIATION
Maisha S CaldareraCanadaOnyama Limba NEW
Arvin F WaycottFranceStephen Shaw NEW
Leja D CaudyAustraliaBernardo Dominic QUALIFIED
Sinclair N ChuiSpainXuxue Feng NEGOTIATION
Ashley U VenereGermanyXuxue Feng QUALIFIED
Cody Q BologniaItalyIoni Bowcher NEW
Aika C SergiCanadaAmy Elsner RENEWAL
Johnson P WhobreySpainIoni Bowcher PROPOSAL
Ivar G WieserFranceOnyama Limba NEGOTIATION
Ashley K SaylorsSpainOnyama Limba UNQUALIFIED
Jeanfrancois W StensethItalyIvan Magalhaes UNQUALIFIED
Morrow C CampainItalyBernardo Dominic NEGOTIATION
Arvin Q FollerBrazilOnyama Limba RENEWAL
Leja M ChuiItalyAnna Fali NEGOTIATION
Jennifer L MaletArgentinaBernardo Dominic NEW
Claire T GauchoItalyAnna Fali PROPOSAL
Izzy T DoeItalyAsiya Javayant UNQUALIFIED
Tony K FigeroaAustraliaXuxue Feng NEGOTIATION
Salvatore F GlickUnited KingdomAmy Elsner UNQUALIFIED
Kadeem B OldroydGermanyXuxue Feng NEGOTIATION
Alejandro L ButtSpainStephen Shaw QUALIFIED
Faith N RimUnited KingdomAmy Elsner RENEWAL
Stacey X CaudyBrazilIvan Magalhaes PROPOSAL
Leon K ShinkoItalyIoni Bowcher NEW
Nicolas C DoeUnited KingdomOnyama Limba NEW
Aruna K MorascaItalyAmy Elsner QUALIFIED
Smith P AmigonJapanAnna Fali UNQUALIFIED
Smith K SchemmerSpainBernardo Dominic PROPOSAL
Greenwood G PerinCanadaStephen Shaw PROPOSAL
Tony B VocelkaBrazilElwin Sharvill NEW
Jefferson J KolmetzSpainAnna Fali QUALIFIED
David B MorascaJapanXuxue Feng NEW
Stacey C DoeUnited KingdomOnyama Limba PROPOSAL
Clifford E MorascaItalyElwin Sharvill RENEWAL
Alejandro W WieserArgentinaXuxue Feng QUALIFIED
Mayumi X KolmetzGermanyAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
David K BologniaUnited KingdomIoni Bowcher PROPOSAL
Wickens L MaletRussiaAnna Fali QUALIFIED
Maisha A AmigonIndiaAmy Elsner NEGOTIATION
Aruna G PerinJapanBernardo Dominic PROPOSAL
Jeanfrancois H GauchoItalyOnyama Limba QUALIFIED
Deepesh I PoquetteIndiaIvan Magalhaes NEW
Misaki D AmigonSpainXuxue Feng NEW
Ivar Z BowleyJapanOnyama Limba PROPOSAL
Deepesh I KuskoRussiaAsiya Javayant NEW
Deepesh T MorascaCanadaOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba T PoquetteFrance2024-04-18Chapman, Ross E Esq UNQUALIFIED53Asiya Javayant
1001Smith M FerenczRussia2024-04-08Chanay, Jeffrey A Esq RENEWAL8Ivan Magalhaes
1002Adams V CampainCanada2024-04-17Benton, John B Jr UNQUALIFIED70Elwin Sharvill
1003Kaitlin A BriddickArgentina2024-04-20King, Christopher A Esq NEGOTIATION99Anna Fali
1004Rodrigues F AmigonSpain2024-03-30Chanay, Jeffrey A Esq PROPOSAL70Onyama Limba
1005Julie L CaldareraFrance2024-04-09Truhlar And Truhlar Attys UNQUALIFIED12Ioni Bowcher
1006Darci D NickaArgentina2024-04-25Feiner Bros RENEWAL45Amy Elsner
1007Rodrigues B FigeroaAustralia2024-03-29Rousseaux, Michael Esq PROPOSAL46Ioni Bowcher
1008Misaki L MorascaJapan2024-04-05Rousseaux, Michael Esq NEGOTIATION13Asiya Javayant
1009Maisha D FollerUnited Kingdom2024-04-25Printing Dimensions UNQUALIFIED42Ioni Bowcher
1010Leon L PoquetteUnited Kingdom2024-04-03Rousseaux, Michael Esq NEW16Amy Elsner
1011Faith E SlusarskiBrazil2024-03-30Dorl, James J Esq UNQUALIFIED15Bernardo Dominic
1012Aika K WaycottSpain2024-04-05Morlong Associates QUALIFIED21Stephen Shaw
1013Faith B GarufiGermany2024-03-31Truhlar And Truhlar Attys QUALIFIED21Amy Elsner
1014Jefferson D RulapaughItaly2024-04-04Morlong Associates PROPOSAL88Stephen Shaw
1015Leon Y PaprockiFrance2024-04-14Benton, John B Jr RENEWAL53Amy Elsner
1016Emily C FigeroaGermany2024-04-24Chemel, James L Cpa PROPOSAL37Onyama Limba
1017David A SchemmerUnited Kingdom2024-03-29Benton, John B Jr PROPOSAL79Onyama Limba
1018Stacey Q WaycottCanada2024-04-20Morlong Associates NEW94Ivan Magalhaes
1019Ivar Y PoquetteRussia2024-04-26Feltz Printing Service RENEWAL16Onyama Limba
1020James I TollnerUnited Kingdom2024-04-22Benton, John B Jr NEGOTIATION6Ivan Magalhaes
1021Misaki A GillianIndia2024-04-23Dorl, James J Esq QUALIFIED4Stephen Shaw
1022Munro T NickaUnited Kingdom2024-04-11Dorl, James J Esq UNQUALIFIED42Amy Elsner
1023Costa K NickaBrazil2024-04-10Buckley Miller Wright PROPOSAL5Anna Fali
1024Emily U NestleGermany2024-04-10Printing Dimensions NEGOTIATION46Ioni Bowcher
1025Leja Q FigeroaItaly2024-04-09Rangoni Of Florence QUALIFIED47Ivan Magalhaes
1026Johnson S GillianBrazil2024-04-22Dorl, James J Esq NEGOTIATION72Onyama Limba
1027Claire B RimAustralia2024-04-02Commercial Press UNQUALIFIED31Onyama Limba
1028Aika G NickaCanada2024-04-23Morlong Associates UNQUALIFIED18Anna Fali
1029Jones S ChuiGermany2024-04-19Morlong Associates QUALIFIED62Onyama Limba
1030Morrow E WaycottSpain2024-03-31Printing Dimensions QUALIFIED27Ioni Bowcher
1031James P NickaSpain2024-04-20Rousseaux, Michael Esq QUALIFIED25Elwin Sharvill
1032Aditya U FollerGermany2024-04-25Truhlar And Truhlar Attys QUALIFIED79Bernardo Dominic
1033Deepesh D FigeroaIndia2024-04-15Feiner Bros PROPOSAL21Bernardo Dominic
1034Smith S ChuiCanada2024-04-14Rangoni Of Florence UNQUALIFIED19Stephen Shaw
1035Morrow J MorascaCanada2024-03-29Rousseaux, Michael Esq RENEWAL37Stephen Shaw
1036Chavez H IturbideIndia2024-03-31Chapman, Ross E Esq QUALIFIED14Asiya Javayant
1037Aika R KuskoJapan2024-04-23Rousseaux, Michael Esq UNQUALIFIED80Ivan Magalhaes
1038Aika D StockhamAustralia2024-04-07Rangoni Of Florence NEW9Stephen Shaw
1039Jones L DoeSpain2024-04-05Feltz Printing Service RENEWAL73Elwin Sharvill
1040Clifford C BologniaRussia2024-04-09Rangoni Of Florence NEGOTIATION91Asiya Javayant
1041James G VenereFrance2024-04-20Benton, John B Jr UNQUALIFIED88Asiya Javayant
1042James N CampainArgentina2024-03-29Dorl, James J Esq NEW86Ivan Magalhaes
1043Johnson T FlosiSpain2024-04-26Morlong Associates RENEWAL3Ivan Magalhaes
1044Aruna Y RutaCanada2024-04-13King, Christopher A Esq RENEWAL91Asiya Javayant
1045Mujtaba U CaudyCanada2024-04-24Buckley Miller Wright RENEWAL50Bernardo Dominic
1046Munro G AlbaresUnited Kingdom2024-04-24Chanay, Jeffrey A Esq RENEWAL87Bernardo Dominic
1047Jefferson C BriddickArgentina2024-04-11Chapman, Ross E Esq QUALIFIED75Elwin Sharvill
1048Tony K MaletUnited Kingdom2024-03-30King, Christopher A Esq NEGOTIATION99Amy Elsner
1049Ricardo O KuskoCanada2024-04-03Chemel, James L Cpa NEW76Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Silvio B StensethCanadaElwin Sharvill QUALIFIED
Clifford H StockhamGermanyBernardo Dominic NEGOTIATION
Aika J KuskoRussiaXuxue Feng UNQUALIFIED
Arvin P MaletJapanStephen Shaw NEW
Munro M DarakjyAustraliaIoni Bowcher NEGOTIATION
Salvatore R MaletUnited KingdomAsiya Javayant NEW
Aruna X DilliardBrazilElwin Sharvill RENEWAL
Cody T MaletArgentinaElwin Sharvill NEGOTIATION
Alejandro Q RoysterJapanElwin Sharvill UNQUALIFIED
Darci X ShinkoJapanIvan Magalhaes UNQUALIFIED
Aika I KolmetzUnited KingdomAnna Fali QUALIFIED
Jefferson O MarrierFranceIoni Bowcher NEW
Ashley I MaletCanadaOnyama Limba QUALIFIED
Greenwood Y ChuiJapanAsiya Javayant NEW
Francesco J DoeCanadaBernardo Dominic NEW
Jeanfrancois F FollerFranceElwin Sharvill QUALIFIED
Emily V InouyeArgentinaIoni Bowcher NEGOTIATION
Mujtaba P RimJapanAsiya Javayant NEW
Silvio N TollnerCanadaBernardo Dominic RENEWAL
Morrow J GarufiBrazilBernardo Dominic NEW
Izzy V MaletFranceAnna Fali PROPOSAL
Tony F MaletAustraliaBernardo Dominic NEGOTIATION
David T AmigonUnited KingdomAmy Elsner NEGOTIATION
Aika N BologniaIndiaAnna Fali PROPOSAL
Costa H OldroydCanadaXuxue Feng NEGOTIATION
Maria L SaylorsUnited KingdomIvan Magalhaes RENEWAL
Izzy V VocelkaJapanIvan Magalhaes PROPOSAL
Darci O StockhamAustraliaIoni Bowcher QUALIFIED
Misaki W FerenczRussiaStephen Shaw QUALIFIED
Tony I WaycottFranceIoni Bowcher PROPOSAL
Antonio M PerinSpainXuxue Feng PROPOSAL
Aditya N MarrierItalyIoni Bowcher QUALIFIED
Alejandro G SlusarskiIndiaIvan Magalhaes RENEWAL
Juan X GauchoIndiaAnna Fali PROPOSAL
Faith A FigeroaCanadaIvan Magalhaes UNQUALIFIED
Costa K FollerArgentinaAnna Fali RENEWAL
Mujtaba W KolmetzGermanyAnna Fali RENEWAL
Tony M SlusarskiArgentinaBernardo Dominic UNQUALIFIED
Jeanfrancois L KolmetzFranceAsiya Javayant UNQUALIFIED
Cody C AmigonItalyBernardo Dominic QUALIFIED
Jones H DilliardRussiaElwin Sharvill NEGOTIATION
Johnson I DarakjyJapanAsiya Javayant NEW
Smith P CaldareraJapanAmy Elsner UNQUALIFIED
Arvin D AlbaresCanadaOnyama Limba QUALIFIED
Smith A IturbideArgentinaBernardo Dominic QUALIFIED
Rodrigues Z PerinBrazilStephen Shaw UNQUALIFIED
Jeanfrancois B PoquetteBrazilIoni Bowcher NEW
Jones B SaylorsUnited KingdomAsiya Javayant NEGOTIATION
Salvatore T RulapaughIndiaIvan Magalhaes RENEWAL
Murillo G MaletCanadaElwin Sharvill QUALIFIED
Frozen Columns
Name
Mujtaba O Malet
Mujtaba J Kusko
Jones Q Garufi
James N Vocelka
Mujtaba H Butt
Alejandro B Malet
Nicolas H Dilliard
Murillo P Tollner
Maria W Briddick
Emily L Caudy
James T Ferencz
Murillo P Figeroa
Morrow J Slusarski
Leja O Ferencz
Ivar B Butt
Clifford W Vocelka
Jeanfrancois H Campain
Johnson O Shinko
Murillo K Oldroyd
Maisha G Shinko
Claire L Kolmetz
Misaki C Venere
Tony R Dilliard
Murillo J Shinko
Kadeem J Dilliard
Maria T Butt
Kadeem E Iturbide
Sinclair S Caudy
Nicolas M Ostrosky
Antonio J Iturbide
Francesco M Morasca
Isabel M Ruta
Cody C Glick
Izzy E Doe
Stacey Z Schemmer
Leon B Venere
Jones L Campain
Mujtaba V Slusarski
Costa C Marrier
Smith H Venere
Nicolas J Venere
Costa W Schemmer
Isabel T Morasca
Greenwood M Shinko
Wickens L Bolognia
Wickens G Dilliard
Leon O Gaucho
Maisha F Malet
Mujtaba N Caldarera
Aditya A Slusarski
IdCountryDate
1000Spain2024-04-02
1001France2024-04-17
1002Argentina2024-04-05
1003Russia2024-04-14
1004France2024-04-08
1005Australia2024-04-02
1006Italy2024-04-07
1007Canada2024-04-01
1008Russia2024-04-27
1009Australia2024-04-27
1010Italy2024-04-19
1011Italy2024-04-09
1012France2024-04-03
1013Italy2024-04-15
1014United Kingdom2024-04-24
1015Japan2024-04-01
1016Brazil2024-03-29
1017India2024-03-29
1018Russia2024-03-30
1019Russia2024-03-31
1020Brazil2024-04-18
1021Japan2024-04-09
1022United Kingdom2024-04-08
1023United Kingdom2024-04-11
1024Australia2024-04-21
1025Germany2024-04-06
1026Italy2024-04-17
1027India2024-04-14
1028Australia2024-04-14
1029Spain2024-04-16
1030Argentina2024-04-03
1031France2024-04-10
1032France2024-04-20
1033Germany2024-04-05
1034Italy2024-04-13
1035Canada2024-03-29
1036India2024-04-19
1037France2024-03-30
1038Italy2024-04-11
1039Australia2024-04-17
1040Russia2024-04-15
1041Japan2024-04-19
1042Australia2024-04-10
1043Australia2024-04-05
1044Spain2024-03-30
1045Australia2024-04-08
1046Brazil2024-04-02
1047France2024-04-16
1048Italy2024-03-31
1049Brazil2024-03-31

On-Demand Data

NameIdCountryDate
Mujtaba C Bowley1000Russia2024-04-13
Deepesh Y Briddick1001Germany2024-03-31
Kadeem H Sergi1002Brazil2024-04-10
Chavez Y Slusarski1003United Kingdom2024-04-22
Claire V Bolognia1004France2024-04-23
Darci Q Ruta1005Brazil2024-04-27
Sinclair K Ferencz1006Spain2024-04-24
Leja M Bowley1007Australia2024-04-01
Jeanfrancois H Garufi1008Italy2024-04-05
Antonio I Rulapaugh1009India2024-04-09
Julie C Bowley1010Germany2024-04-15
Leon Q Rulapaugh1011India2024-04-26
Stacey W Dilliard1012Russia2024-03-30
David A Gillian1013Argentina2024-04-02
Murillo G Caudy1014Australia2024-04-12
Ricardo Q Vocelka1015Germany2024-04-21
Rodrigues N Whobrey1016Canada2024-04-24
Claire T Garufi1017Argentina2024-03-30
David C Stockham1018Brazil2024-04-14
Arvin V Paprocki1019Italy2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria N KolmetzJapanIoni Bowcher QUALIFIED
Stacey R RulapaughUnited KingdomStephen Shaw RENEWAL
Greenwood P KuskoGermanyAsiya Javayant RENEWAL
Kadeem T BriddickAustraliaIvan Magalhaes NEGOTIATION
Stacey Q PaprockiGermanyStephen Shaw UNQUALIFIED
Arvin K DoeJapanIoni Bowcher NEGOTIATION
Maria X VenereGermanyElwin Sharvill RENEWAL
Leon T FigeroaArgentinaXuxue Feng RENEWAL
Darci V BriddickGermanyAnna Fali QUALIFIED
Leon V SergiIndiaAsiya Javayant RENEWAL
Faith P CaudyArgentinaIvan Magalhaes PROPOSAL
Mujtaba Q CaldareraFranceAsiya Javayant PROPOSAL
Darci V FigeroaFranceAmy Elsner QUALIFIED
Cody M SergiIndiaAmy Elsner QUALIFIED
Francesco V MaletArgentinaBernardo Dominic QUALIFIED
Kaitlin I StockhamFranceElwin Sharvill NEGOTIATION
Deepesh S ButtItalyAmy Elsner NEGOTIATION
Leon J MarrierCanadaIoni Bowcher NEGOTIATION
Wickens H DarakjyBrazilOnyama Limba PROPOSAL
Johnson Z SchemmerRussiaIvan Magalhaes RENEWAL
Rodrigues O StockhamGermanyXuxue Feng QUALIFIED
Chavez P OldroydFranceAsiya Javayant NEW
Kaitlin Q SaylorsCanadaXuxue Feng NEGOTIATION
Johnson M GillianIndiaIvan Magalhaes QUALIFIED
Ricardo E KuskoAustraliaAnna Fali RENEWAL
Kadeem S NestleUnited KingdomAmy Elsner NEGOTIATION
Deepesh W PoquetteRussiaAmy Elsner NEGOTIATION
Jeanfrancois J RimIndiaAmy Elsner RENEWAL
Ivar K FerenczIndiaAsiya Javayant RENEWAL
Wickens K GlickSpainAmy Elsner UNQUALIFIED
Aika T BriddickAustraliaIoni Bowcher RENEWAL
Smith G MacleadRussiaAmy Elsner PROPOSAL
Salvatore Q ButtSpainBernardo Dominic NEW
Mayumi D CampainAustraliaAsiya Javayant QUALIFIED
Munro A CampainRussiaXuxue Feng PROPOSAL
Leon F SlusarskiGermanyOnyama Limba QUALIFIED
Faith U KuskoCanadaStephen Shaw NEW
Wickens Z RoysterItalyIvan Magalhaes PROPOSAL
Antonio W RimJapanIoni Bowcher NEW
Wickens Z SaylorsAustraliaAsiya Javayant 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>