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
Jeanfrancois W GarufiJapanElwin Sharvill UNQUALIFIED
Ashley B FigeroaBrazilAnna Fali UNQUALIFIED
Kaitlin P GlickJapanElwin Sharvill RENEWAL
Munro Y GauchoAustraliaElwin Sharvill NEW
Wickens H OldroydGermanyAmy Elsner NEW
Juan V MacleadIndiaXuxue Feng QUALIFIED
Ricardo K MarrierAustraliaAsiya Javayant RENEWAL
Clifford X ChuiGermanyAnna Fali RENEWAL
Antonio H MarrierGermanyBernardo Dominic NEW
Kaitlin P CampainSpainXuxue Feng UNQUALIFIED
Costa C StensethIndiaXuxue Feng NEW
Morrow F FigeroaCanadaAnna Fali NEW
David W PerinIndiaIvan Magalhaes NEW
Ivar B AmigonFranceIoni Bowcher NEW
Ashley D SchemmerItalyAsiya Javayant UNQUALIFIED
Rodrigues U InouyeArgentinaStephen Shaw UNQUALIFIED
Misaki D KolmetzSpainElwin Sharvill PROPOSAL
Jennifer P VocelkaGermanyBernardo Dominic NEGOTIATION
Salvatore L WieserRussiaIoni Bowcher PROPOSAL
Leja B VocelkaItalyAnna Fali PROPOSAL
Leon Y StockhamJapanIvan Magalhaes NEW
Aditya K OstroskyRussiaStephen Shaw UNQUALIFIED
Jeanfrancois H StockhamCanadaXuxue Feng PROPOSAL
Kadeem C SergiBrazilIoni Bowcher NEW
Costa E RutaCanadaIvan Magalhaes NEGOTIATION
Octavia E BowleyIndiaOnyama Limba NEGOTIATION
Nicolas Z CaldareraGermanyAsiya Javayant NEW
Smith C FigeroaJapanBernardo Dominic RENEWAL
Silvio S StockhamArgentinaStephen Shaw UNQUALIFIED
Arvin C GillianRussiaIoni Bowcher NEW
Alejandro J SchemmerCanadaAsiya Javayant NEGOTIATION
Jennifer Y DarakjyCanadaOnyama Limba QUALIFIED
Greenwood V RutaIndiaAsiya Javayant QUALIFIED
Stacey I OstroskyIndiaStephen Shaw NEW
Misaki L RimIndiaBernardo Dominic NEGOTIATION
Aika A VenereRussiaAsiya Javayant RENEWAL
Leja Y PaprockiRussiaStephen Shaw QUALIFIED
Francesco V AmigonGermanyElwin Sharvill NEGOTIATION
Salvatore B ChuiSpainAmy Elsner PROPOSAL
Greenwood J SergiItalyElwin Sharvill RENEWAL
Jennifer B SlusarskiSpainAmy Elsner NEGOTIATION
Kaitlin H BologniaSpainAnna Fali PROPOSAL
Murillo C ShinkoArgentinaBernardo Dominic NEGOTIATION
Morrow A OstroskyUnited KingdomAsiya Javayant QUALIFIED
Cody U VenereUnited KingdomAsiya Javayant NEGOTIATION
Alejandro B NickaSpainAnna Fali PROPOSAL
Smith T BriddickAustraliaAsiya Javayant QUALIFIED
Leja K SlusarskiGermanyElwin Sharvill PROPOSAL
Wickens Y ShinkoJapanIoni Bowcher QUALIFIED
Costa G MaletUnited KingdomStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ashley M InouyeJapanElwin Sharvill PROPOSAL
Smith G MaletIndiaXuxue Feng UNQUALIFIED
Mujtaba A MaletArgentinaIoni Bowcher UNQUALIFIED
Ricardo K ShinkoArgentinaStephen Shaw NEW
Costa I SaylorsSpainBernardo Dominic PROPOSAL
Morrow T InouyeBrazilOnyama Limba UNQUALIFIED
Ivar G FerenczUnited KingdomBernardo Dominic RENEWAL
Alejandro I KolmetzIndiaBernardo Dominic PROPOSAL
James U WieserBrazilIoni Bowcher QUALIFIED
Ashley V OldroydItalyIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas X MaletCanada2024-04-03Rangoni Of Florence QUALIFIED83Ivan Magalhaes
1001Jones Q WaycottFrance2024-04-18Chemel, James L Cpa QUALIFIED15Onyama Limba
1002Maisha E ChuiSpain2024-04-19Commercial Press RENEWAL54Stephen Shaw
1003Chavez X BriddickGermany2024-04-23Feiner Bros PROPOSAL76Ivan Magalhaes
1004Aika R KolmetzItaly2024-04-12Chapman, Ross E Esq QUALIFIED36Xuxue Feng
1005Antonio M GlickItaly2024-04-04Printing Dimensions UNQUALIFIED60Amy Elsner
1006Francesco V ButtBrazil2024-04-09Dorl, James J Esq UNQUALIFIED33Elwin Sharvill
1007Arvin I BowleyIndia2024-04-10Buckley Miller Wright QUALIFIED44Ivan Magalhaes
1008Emily L RutaIndia2024-04-13Morlong Associates UNQUALIFIED73Ivan Magalhaes
1009Faith R WieserSpain2024-04-01Benton, John B Jr UNQUALIFIED92Stephen Shaw
1010Isabel C AlbaresSpain2024-04-04Feiner Bros QUALIFIED31Amy Elsner
1011Antonio K OstroskyCanada2024-03-31Buckley Miller Wright NEW48Onyama Limba
1012Alejandro W KolmetzGermany2024-04-08Dorl, James J Esq UNQUALIFIED19Xuxue Feng
1013Stacey R NickaItaly2024-04-18Printing Dimensions NEW14Onyama Limba
1014Misaki R FlosiCanada2024-04-10Printing Dimensions NEGOTIATION78Elwin Sharvill
1015Chavez H ShinkoCanada2024-04-15Truhlar And Truhlar Attys NEW3Onyama Limba
1016Jeanfrancois B MarrierIndia2024-04-08Chanay, Jeffrey A Esq RENEWAL61Amy Elsner
1017Kaitlin F WhobreyIndia2024-04-16Buckley Miller Wright NEW5Xuxue Feng
1018Ashley P DarakjyFrance2024-04-16Benton, John B Jr PROPOSAL94Anna Fali
1019Faith R RulapaughRussia2024-04-12Printing Dimensions NEGOTIATION14Ivan Magalhaes
1020Darci A MaletAustralia2024-04-25Rangoni Of Florence UNQUALIFIED75Bernardo Dominic
1021Jones A AmigonCanada2024-04-14King, Christopher A Esq PROPOSAL39Anna Fali
1022Silvio V GarufiBrazil2024-04-20Morlong Associates QUALIFIED79Anna Fali
1023Isabel P VocelkaItaly2024-04-16Chanay, Jeffrey A Esq RENEWAL84Elwin Sharvill
1024Maisha G GillianIndia2024-04-03Printing Dimensions NEGOTIATION47Anna Fali
1025Arvin D InouyeFrance2024-04-18Buckley Miller Wright NEGOTIATION81Ioni Bowcher
1026Murillo M RimCanada2024-04-15Rangoni Of Florence PROPOSAL2Bernardo Dominic
1027Leja V KuskoArgentina2024-04-02Rangoni Of Florence QUALIFIED61Ivan Magalhaes
1028Jennifer S PaprockiBrazil2024-03-28Morlong Associates NEW45Ioni Bowcher
1029David M MacleadArgentina2024-04-02Printing Dimensions NEW67Amy Elsner
1030Jones E CampainAustralia2024-04-21Benton, John B Jr QUALIFIED33Asiya Javayant
1031Faith X BologniaArgentina2024-04-23Truhlar And Truhlar Attys NEW36Onyama Limba
1032Tony Q DarakjyUnited Kingdom2024-04-03Morlong Associates UNQUALIFIED41Stephen Shaw
1033Faith T PoquetteSpain2024-04-01Feiner Bros UNQUALIFIED69Elwin Sharvill
1034Ivar V SchemmerBrazil2024-04-02Buckley Miller Wright RENEWAL5Anna Fali
1035Aruna M RulapaughAustralia2024-04-06Commercial Press NEGOTIATION30Anna Fali
1036Silvio B ButtCanada2024-04-26Rousseaux, Michael Esq QUALIFIED41Onyama Limba
1037Faith P ChuiUnited Kingdom2024-04-20Dorl, James J Esq UNQUALIFIED89Elwin Sharvill
1038Aruna P PerinBrazil2024-03-31King, Christopher A Esq RENEWAL77Ioni Bowcher
1039Tony Y TollnerCanada2024-04-20Rangoni Of Florence QUALIFIED51Amy Elsner
1040Kadeem C ShinkoJapan2024-04-09Feltz Printing Service NEGOTIATION78Amy Elsner
1041Isabel J MaletAustralia2024-04-12Benton, John B Jr QUALIFIED61Ioni Bowcher
1042David R SlusarskiArgentina2024-04-06Printing Dimensions PROPOSAL73Xuxue Feng
1043Leon Y VenereIndia2024-04-14Dorl, James J Esq RENEWAL15Elwin Sharvill
1044Maisha W PerinUnited Kingdom2024-04-05Truhlar And Truhlar Attys UNQUALIFIED13Xuxue Feng
1045Emily D StockhamBrazil2024-04-07Commercial Press PROPOSAL79Ivan Magalhaes
1046Leon K FigeroaUnited Kingdom2024-04-11King, Christopher A Esq NEGOTIATION23Anna Fali
1047Misaki J VenereUnited Kingdom2024-04-17Rousseaux, Michael Esq NEW23Bernardo Dominic
1048Leja A KuskoCanada2024-04-26Dorl, James J Esq NEW39Ioni Bowcher
1049Emily J GlickIndia2024-04-09Truhlar And Truhlar Attys RENEWAL24Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Greenwood F WaycottSpainElwin Sharvill RENEWAL
Chavez N NickaFranceIoni Bowcher NEW
Aditya P AmigonItalyStephen Shaw NEGOTIATION
Jefferson U StockhamItalyIvan Magalhaes PROPOSAL
Jennifer C PoquetteItalyXuxue Feng NEGOTIATION
David L RoysterBrazilElwin Sharvill NEGOTIATION
Kaitlin W RoysterFranceIvan Magalhaes PROPOSAL
Greenwood M SchemmerArgentinaAnna Fali NEGOTIATION
James H CaldareraIndiaOnyama Limba QUALIFIED
Sinclair P BriddickUnited KingdomBernardo Dominic PROPOSAL
Alejandro P StockhamUnited KingdomAmy Elsner QUALIFIED
Nicolas N IturbideSpainAsiya Javayant NEW
Faith J RoysterRussiaIvan Magalhaes RENEWAL
Nicolas D NestleCanadaAsiya Javayant NEGOTIATION
Jeanfrancois P ChuiCanadaStephen Shaw UNQUALIFIED
Kaitlin D ChuiItalyAmy Elsner QUALIFIED
Costa O VenereAustraliaIvan Magalhaes NEGOTIATION
Johnson D ButtFranceAmy Elsner UNQUALIFIED
Jeanfrancois M IturbideCanadaAsiya Javayant UNQUALIFIED
Kaitlin M AlbaresFranceAmy Elsner UNQUALIFIED
Claire A CampainBrazilAmy Elsner NEW
Maisha S OldroydSpainXuxue Feng QUALIFIED
Jennifer P NestleGermanyAsiya Javayant PROPOSAL
Wickens K SaylorsArgentinaAnna Fali PROPOSAL
Misaki J WaycottAustraliaAnna Fali RENEWAL
Mujtaba Q MorascaBrazilIvan Magalhaes RENEWAL
Arvin Z DoeIndiaIoni Bowcher UNQUALIFIED
Silvio L DoeItalyAnna Fali NEW
Misaki N MarrierCanadaAsiya Javayant NEW
Jefferson T KuskoGermanyBernardo Dominic NEGOTIATION
Maria Y WaycottJapanStephen Shaw NEGOTIATION
Murillo E PaprockiGermanyAnna Fali NEGOTIATION
Arvin E RimBrazilIoni Bowcher NEW
Juan M OldroydArgentinaOnyama Limba NEW
Mayumi R IturbideAustraliaOnyama Limba RENEWAL
Isabel U DilliardAustraliaAsiya Javayant NEW
Kadeem H DarakjyAustraliaAmy Elsner UNQUALIFIED
Morrow S CampainUnited KingdomBernardo Dominic NEGOTIATION
Aruna X OstroskyCanadaAsiya Javayant NEW
Octavia P AlbaresItalyIoni Bowcher PROPOSAL
Mayumi H GlickJapanOnyama Limba UNQUALIFIED
Alejandro S AlbaresFranceIvan Magalhaes QUALIFIED
Sinclair R ShinkoBrazilAmy Elsner NEW
Ricardo Y NickaFranceAsiya Javayant NEGOTIATION
Tony Y RimSpainBernardo Dominic UNQUALIFIED
Antonio S CampainRussiaXuxue Feng UNQUALIFIED
Rodrigues Y GarufiSpainIoni Bowcher RENEWAL
Morrow J FollerIndiaBernardo Dominic NEGOTIATION
Costa A RulapaughItalyAmy Elsner QUALIFIED
Ashley O RulapaughJapanIvan Magalhaes PROPOSAL
Frozen Columns
Name
Jennifer Y Dilliard
Clifford O Kolmetz
Arvin Q Caudy
Antonio M Slusarski
Leja R Stockham
Morrow Y Albares
Tony N Flosi
Arvin H Poquette
Izzy B Ferencz
Leon M Nestle
Antonio B Kolmetz
Nicolas S Wieser
Leja U Campain
Juan T Rim
Ivar R Venere
Isabel N Stenseth
Kadeem C Malet
Johnson Z Sergi
Misaki J Butt
Jefferson F Amigon
Faith Y Vocelka
Emily L Kolmetz
David D Campain
Johnson S Schemmer
Emily A Nestle
Nicolas Q Amigon
Jennifer Y Paprocki
Sinclair J Nicka
Maria M Garufi
Kaitlin H Butt
Murillo C Waycott
Darci I Campain
Aika P Glick
Francesco L Caudy
Aditya K Slusarski
Ricardo Y Figeroa
Leja B Oldroyd
Tony H Inouye
Jones L Perin
Isabel Y Ferencz
Smith Y Figeroa
Ivar I Butt
Antonio P Nicka
Julie G Flosi
Nicolas L Caldarera
Faith V Garufi
Maisha G Waycott
Jefferson I Kolmetz
Nicolas L Schemmer
Arvin K Stockham
IdCountryDate
1000United Kingdom2024-04-08
1001Germany2024-04-02
1002Canada2024-04-08
1003France2024-04-25
1004Russia2024-04-11
1005Argentina2024-04-26
1006Canada2024-04-20
1007Spain2024-03-30
1008Brazil2024-04-21
1009Australia2024-04-08
1010United Kingdom2024-04-13
1011India2024-04-19
1012Spain2024-04-04
1013Canada2024-04-14
1014Canada2024-04-04
1015Canada2024-03-31
1016India2024-04-23
1017Spain2024-04-13
1018United Kingdom2024-04-06
1019Brazil2024-04-16
1020Brazil2024-04-04
1021Argentina2024-04-13
1022Russia2024-04-26
1023Canada2024-04-09
1024Brazil2024-04-21
1025Brazil2024-04-14
1026Spain2024-04-15
1027Canada2024-04-06
1028Italy2024-04-23
1029Canada2024-03-28
1030Italy2024-04-20
1031Brazil2024-04-03
1032France2024-03-29
1033Canada2024-04-20
1034Italy2024-04-20
1035Brazil2024-04-13
1036Brazil2024-04-20
1037France2024-04-13
1038Spain2024-04-16
1039Argentina2024-04-19
1040Spain2024-04-25
1041Japan2024-04-04
1042United Kingdom2024-04-02
1043Argentina2024-03-30
1044United Kingdom2024-04-23
1045United Kingdom2024-04-17
1046Argentina2024-04-22
1047Italy2024-04-12
1048India2024-03-28
1049India2024-04-02

On-Demand Data

NameIdCountryDate
Mayumi B Rim1000Japan2024-04-02
Jennifer F Malet1001Russia2024-03-30
Mayumi N Briddick1002Italy2024-04-05
Rodrigues U Figeroa1003Spain2024-04-12
Leja W Tollner1004Spain2024-03-30
Munro P Malet1005Argentina2024-04-16
Sinclair P Malet1006Argentina2024-03-30
Arvin M Butt1007India2024-04-19
Ricardo J Morasca1008Russia2024-04-24
Greenwood K Glick1009Russia2024-04-26
Silvio P Waycott1010Canada2024-04-26
Silvio O Inouye1011Italy2024-04-25
Maria F Figeroa1012Japan2024-04-05
Stacey R Nestle1013Spain2024-04-10
Aruna Y Rulapaugh1014Australia2024-04-13
Morrow Z Campain1015Russia2024-04-21
Izzy X Amigon1016Brazil2024-04-19
Antonio E Figeroa1017Germany2024-04-24
Jennifer B Ferencz1018Italy2024-04-22
Jeanfrancois S Bolognia1019Argentina2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki W NickaGermanyOnyama Limba NEW
Claire V MaletArgentinaBernardo Dominic PROPOSAL
Aditya W IturbideArgentinaAnna Fali NEGOTIATION
Chavez A MaletGermanyBernardo Dominic RENEWAL
Julie E CaudyBrazilAmy Elsner QUALIFIED
Julie M BriddickJapanAnna Fali NEGOTIATION
Nicolas E FigeroaUnited KingdomOnyama Limba QUALIFIED
Adams K MaletAustraliaStephen Shaw RENEWAL
Jeanfrancois S RutaSpainAmy Elsner QUALIFIED
David A KuskoAustraliaElwin Sharvill RENEWAL
Antonio U StockhamAustraliaAnna Fali PROPOSAL
Ashley V GauchoRussiaBernardo Dominic NEW
Jennifer E KuskoGermanyStephen Shaw RENEWAL
Wickens Y FollerBrazilAmy Elsner QUALIFIED
Jefferson J GlickSpainAmy Elsner NEGOTIATION
Jeanfrancois V VenereSpainBernardo Dominic QUALIFIED
Octavia I StensethItalyXuxue Feng QUALIFIED
Kaitlin B RulapaughJapanIvan Magalhaes RENEWAL
Greenwood T OldroydUnited KingdomStephen Shaw UNQUALIFIED
Darci M InouyeRussiaAnna Fali NEGOTIATION
Tony F WieserCanadaAmy Elsner PROPOSAL
Sinclair J MaletArgentinaElwin Sharvill RENEWAL
Octavia S CaldareraBrazilIvan Magalhaes UNQUALIFIED
Mujtaba H ShinkoBrazilAmy Elsner PROPOSAL
Ricardo X PerinCanadaXuxue Feng QUALIFIED
Kadeem M PaprockiIndiaAnna Fali PROPOSAL
Juan Y GarufiRussiaStephen Shaw NEW
Costa D KuskoItalyIoni Bowcher NEGOTIATION
Clifford U PoquetteSpainIoni Bowcher RENEWAL
Jefferson U RimGermanyElwin Sharvill NEGOTIATION
Deepesh G MorascaIndiaAnna Fali PROPOSAL
Mayumi G MaletItalyXuxue Feng UNQUALIFIED
Mujtaba C OstroskyGermanyAnna Fali NEGOTIATION
Aditya R MaletJapanAsiya Javayant QUALIFIED
Ricardo Q AmigonBrazilStephen Shaw NEGOTIATION
Johnson G FollerCanadaAmy Elsner NEGOTIATION
Smith V BologniaArgentinaOnyama Limba NEW
Stacey Z OldroydAustraliaAsiya Javayant NEGOTIATION
Smith K MorascaRussiaAsiya Javayant NEGOTIATION
Antonio H PerinGermanyOnyama Limba NEW

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