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
James Z WaycottFranceAnna Fali RENEWAL
Adams A FigeroaRussiaAsiya Javayant QUALIFIED
Jeanfrancois O AlbaresIndiaAnna Fali UNQUALIFIED
Johnson V SaylorsIndiaIoni Bowcher NEGOTIATION
Murillo P CaudyIndiaBernardo Dominic NEGOTIATION
Stacey L FlosiUnited KingdomXuxue Feng NEGOTIATION
Morrow E WaycottCanadaBernardo Dominic PROPOSAL
Isabel B AlbaresItalyOnyama Limba QUALIFIED
Isabel N BriddickUnited KingdomOnyama Limba NEW
Ricardo J RulapaughUnited KingdomIoni Bowcher NEW
Salvatore V CampainGermanyElwin Sharvill RENEWAL
Deepesh Q ButtCanadaIvan Magalhaes NEW
Misaki D PerinUnited KingdomIvan Magalhaes NEGOTIATION
Maisha L FigeroaGermanyOnyama Limba PROPOSAL
Ivar A GarufiUnited KingdomIoni Bowcher RENEWAL
Smith E KuskoIndiaIvan Magalhaes NEGOTIATION
Salvatore X FollerJapanStephen Shaw PROPOSAL
Salvatore A KolmetzBrazilIvan Magalhaes UNQUALIFIED
Jones A PoquetteSpainOnyama Limba UNQUALIFIED
Jeanfrancois B RutaJapanXuxue Feng PROPOSAL
Kadeem B SlusarskiItalyIvan Magalhaes QUALIFIED
Ricardo Q NickaArgentinaAnna Fali NEW
Mujtaba M StensethSpainElwin Sharvill QUALIFIED
Julie R DarakjyIndiaXuxue Feng QUALIFIED
Tony G NickaCanadaIvan Magalhaes NEGOTIATION
Maria D SaylorsCanadaAmy Elsner UNQUALIFIED
Mayumi S MaletCanadaElwin Sharvill QUALIFIED
Munro D FerenczRussiaAsiya Javayant NEGOTIATION
Arvin E BowleySpainStephen Shaw QUALIFIED
Cody N MaletGermanyXuxue Feng RENEWAL
Emily I CampainJapanIvan Magalhaes NEGOTIATION
Juan E IturbideFranceOnyama Limba NEGOTIATION
Aditya Q TollnerIndiaAnna Fali NEGOTIATION
Izzy Q VenereAustraliaXuxue Feng QUALIFIED
Munro V CampainItalyIoni Bowcher NEGOTIATION
Jeanfrancois I OstroskyCanadaOnyama Limba RENEWAL
Leon C OstroskyJapanAsiya Javayant NEW
Kadeem L KolmetzArgentinaElwin Sharvill UNQUALIFIED
Clifford C SaylorsRussiaIoni Bowcher RENEWAL
Nicolas N OstroskyUnited KingdomStephen Shaw RENEWAL
Maria E MaletJapanStephen Shaw UNQUALIFIED
Chavez F PerinFranceAnna Fali NEW
James F StensethBrazilXuxue Feng NEGOTIATION
Aika S AmigonJapanElwin Sharvill NEGOTIATION
Tony H BologniaUnited KingdomAnna Fali RENEWAL
Salvatore Y CaudyItalyElwin Sharvill NEW
Aditya H KolmetzCanadaAsiya Javayant QUALIFIED
Tony J WhobreyUnited KingdomAsiya Javayant QUALIFIED
Cody T TollnerItalyIvan Magalhaes QUALIFIED
Salvatore Z MarrierItalyBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Nicolas R RutaUnited KingdomAnna Fali NEGOTIATION
Mayumi C ChuiIndiaStephen Shaw NEW
Silvio M SlusarskiItalyBernardo Dominic QUALIFIED
Nicolas T ButtGermanyIvan Magalhaes NEW
Salvatore F MorascaRussiaBernardo Dominic PROPOSAL
Maisha I SchemmerArgentinaXuxue Feng NEGOTIATION
Alejandro C ShinkoAustraliaOnyama Limba PROPOSAL
Stacey E MaletFranceXuxue Feng QUALIFIED
Mayumi B GarufiIndiaStephen Shaw RENEWAL
Maisha Q StockhamFranceIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa E RoysterJapan2024-04-19Morlong Associates PROPOSAL65Anna Fali
1001Jeanfrancois O AmigonAustralia2024-04-04Dorl, James J Esq QUALIFIED97Elwin Sharvill
1002Chavez I OldroydIndia2024-04-24Chemel, James L Cpa RENEWAL20Elwin Sharvill
1003Izzy D DarakjySpain2024-04-24Truhlar And Truhlar Attys NEW5Stephen Shaw
1004Sinclair L BriddickFrance2024-04-20Dorl, James J Esq PROPOSAL73Ivan Magalhaes
1005Faith Z NickaUnited Kingdom2024-04-04Truhlar And Truhlar Attys NEGOTIATION5Xuxue Feng
1006Izzy P ShinkoSpain2024-04-04Feltz Printing Service QUALIFIED92Ivan Magalhaes
1007Greenwood C BologniaIndia2024-04-06Dorl, James J Esq NEW84Ioni Bowcher
1008Jeanfrancois V StockhamFrance2024-04-19Chapman, Ross E Esq UNQUALIFIED56Asiya Javayant
1009Francesco H AmigonBrazil2024-04-22King, Christopher A Esq PROPOSAL94Asiya Javayant
1010Deepesh W SaylorsAustralia2024-04-04Rousseaux, Michael Esq NEGOTIATION74Onyama Limba
1011Johnson H MarrierAustralia2024-04-15Morlong Associates QUALIFIED80Stephen Shaw
1012Chavez U KuskoArgentina2024-04-17Benton, John B Jr PROPOSAL33Xuxue Feng
1013Alejandro T FerenczJapan2024-04-25Chanay, Jeffrey A Esq PROPOSAL78Xuxue Feng
1014Claire Q GillianJapan2024-04-03Dorl, James J Esq RENEWAL31Bernardo Dominic
1015Juan Y WaycottSpain2024-04-18Chapman, Ross E Esq PROPOSAL34Asiya Javayant
1016Claire O GillianCanada2024-04-13Commercial Press QUALIFIED97Ivan Magalhaes
1017Deepesh V DarakjyUnited Kingdom2024-04-03Feiner Bros NEW14Amy Elsner
1018Leon J MaletBrazil2024-03-27King, Christopher A Esq NEGOTIATION75Bernardo Dominic
1019Ashley F ShinkoItaly2024-04-04Feiner Bros PROPOSAL52Stephen Shaw
1020Emily U ChuiIndia2024-04-05Morlong Associates RENEWAL67Ioni Bowcher
1021Arvin B BowleyBrazil2024-04-10Chapman, Ross E Esq PROPOSAL85Xuxue Feng
1022Misaki B RulapaughSpain2024-04-10Truhlar And Truhlar Attys PROPOSAL21Anna Fali
1023Adams I MaletGermany2024-04-03Chanay, Jeffrey A Esq PROPOSAL11Ivan Magalhaes
1024Smith J SergiCanada2024-04-21Truhlar And Truhlar Attys QUALIFIED2Anna Fali
1025Munro I TollnerItaly2024-04-13Feltz Printing Service PROPOSAL84Stephen Shaw
1026Jennifer O FlosiArgentina2024-04-11Buckley Miller Wright RENEWAL2Asiya Javayant
1027Octavia C SergiRussia2024-04-03Truhlar And Truhlar Attys QUALIFIED86Ivan Magalhaes
1028Alejandro S RulapaughArgentina2024-04-06Chapman, Ross E Esq NEW51Elwin Sharvill
1029Nicolas I InouyeRussia2024-03-28Chanay, Jeffrey A Esq NEW5Stephen Shaw
1030Mujtaba V FollerAustralia2024-04-14Printing Dimensions QUALIFIED56Elwin Sharvill
1031Cody U MaletJapan2024-04-11Feltz Printing Service NEW35Elwin Sharvill
1032Wickens Q FlosiRussia2024-04-09Chanay, Jeffrey A Esq NEGOTIATION58Elwin Sharvill
1033David Y KolmetzFrance2024-04-02King, Christopher A Esq UNQUALIFIED54Asiya Javayant
1034Clifford R TollnerBrazil2024-04-19Feiner Bros PROPOSAL85Asiya Javayant
1035Cody V GlickCanada2024-04-20Commercial Press NEW18Asiya Javayant
1036Misaki N KolmetzJapan2024-04-16Buckley Miller Wright NEGOTIATION35Asiya Javayant
1037Clifford Z WieserCanada2024-04-04Benton, John B Jr NEGOTIATION35Xuxue Feng
1038Deepesh N InouyeRussia2024-04-07Buckley Miller Wright QUALIFIED38Asiya Javayant
1039Darci Q SchemmerRussia2024-04-17Chemel, James L Cpa NEW10Ioni Bowcher
1040Adams L GauchoGermany2024-04-06Commercial Press QUALIFIED47Stephen Shaw
1041Aditya Z RimItaly2024-04-13Truhlar And Truhlar Attys RENEWAL15Amy Elsner
1042Greenwood K DilliardArgentina2024-03-31Buckley Miller Wright UNQUALIFIED53Asiya Javayant
1043Aruna O RimArgentina2024-04-21Chemel, James L Cpa PROPOSAL17Xuxue Feng
1044Octavia E GauchoUnited Kingdom2024-04-16Dorl, James J Esq PROPOSAL75Asiya Javayant
1045Julie K RutaBrazil2024-03-31Truhlar And Truhlar Attys QUALIFIED17Ivan Magalhaes
1046Jennifer Q KolmetzJapan2024-04-04King, Christopher A Esq PROPOSAL92Xuxue Feng
1047Arvin T RulapaughRussia2024-04-19Rousseaux, Michael Esq NEGOTIATION6Stephen Shaw
1048Johnson S FlosiIndia2024-04-15Benton, John B Jr PROPOSAL24Ivan Magalhaes
1049Stacey W DilliardGermany2024-04-02Commercial Press NEW68Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Salvatore I VocelkaBrazilBernardo Dominic NEW
Smith L PaprockiAustraliaIvan Magalhaes RENEWAL
Maria E KuskoFranceOnyama Limba NEGOTIATION
Deepesh H DoeGermanyIvan Magalhaes QUALIFIED
Maisha C ButtCanadaBernardo Dominic NEGOTIATION
Murillo E FlosiRussiaElwin Sharvill QUALIFIED
Silvio E NestleIndiaAmy Elsner QUALIFIED
Murillo P PoquetteIndiaIoni Bowcher QUALIFIED
Smith V DoeArgentinaAnna Fali QUALIFIED
Murillo A PaprockiArgentinaAmy Elsner UNQUALIFIED
Greenwood S MarrierSpainBernardo Dominic PROPOSAL
Wickens U KuskoCanadaIvan Magalhaes UNQUALIFIED
Morrow M StensethFranceOnyama Limba UNQUALIFIED
Alejandro A OstroskyArgentinaIoni Bowcher PROPOSAL
Kaitlin J AmigonRussiaAmy Elsner NEGOTIATION
Wickens Z MarrierItalyStephen Shaw NEGOTIATION
Octavia I StockhamRussiaAnna Fali QUALIFIED
Salvatore N MaletJapanAnna Fali RENEWAL
Aditya W FigeroaIndiaStephen Shaw RENEWAL
Nicolas R ChuiArgentinaBernardo Dominic NEW
Stacey U RutaArgentinaAmy Elsner NEGOTIATION
Isabel U ChuiArgentinaBernardo Dominic PROPOSAL
Misaki Z IturbideCanadaIvan Magalhaes UNQUALIFIED
Faith T ButtBrazilAnna Fali UNQUALIFIED
Kaitlin M ButtUnited KingdomElwin Sharvill NEW
Misaki A AmigonIndiaAmy Elsner PROPOSAL
Greenwood Q DarakjyBrazilIvan Magalhaes RENEWAL
Julie L CaudyJapanIoni Bowcher UNQUALIFIED
Deepesh I VenereCanadaAsiya Javayant QUALIFIED
Maria C MorascaFranceXuxue Feng UNQUALIFIED
Aruna W WieserCanadaIoni Bowcher NEGOTIATION
Ivar B KolmetzArgentinaStephen Shaw UNQUALIFIED
Leja W OstroskySpainXuxue Feng UNQUALIFIED
Costa R MarrierFranceOnyama Limba QUALIFIED
Deepesh Z GillianSpainIoni Bowcher RENEWAL
Adams E SchemmerJapanElwin Sharvill UNQUALIFIED
Greenwood I MaletCanadaIoni Bowcher NEW
Alejandro D VenereBrazilIoni Bowcher QUALIFIED
Adams Q AmigonArgentinaXuxue Feng RENEWAL
Chavez F AmigonIndiaAsiya Javayant UNQUALIFIED
Wickens D WaycottArgentinaXuxue Feng RENEWAL
Nicolas Q SlusarskiItalyElwin Sharvill PROPOSAL
Ashley W FerenczSpainElwin Sharvill UNQUALIFIED
Aditya G InouyeArgentinaAsiya Javayant NEW
Clifford X MorascaIndiaStephen Shaw NEW
Cody Y FollerUnited KingdomIvan Magalhaes NEGOTIATION
Johnson J RoysterUnited KingdomXuxue Feng PROPOSAL
Aditya R FollerRussiaAnna Fali PROPOSAL
James P ShinkoFranceAmy Elsner PROPOSAL
Murillo G TollnerSpainXuxue Feng PROPOSAL
Frozen Columns
Name
Izzy L Schemmer
Jones X Paprocki
Murillo X Stockham
Johnson U Campain
Rodrigues I Campain
Maisha Q Glick
Johnson G Stenseth
Johnson W Venere
Kadeem U Kolmetz
Jennifer X Malet
Rodrigues U Royster
Wickens X Rim
Munro W Venere
Antonio X Stenseth
Jones E Flosi
James U Ruta
Maisha N Chui
Alejandro S Whobrey
James X Ruta
Morrow R Malet
Greenwood M Nicka
Faith B Foller
Nicolas B Whobrey
Smith C Caudy
Munro W Malet
Cody Q Stenseth
Munro I Saylors
Tony L Venere
Arvin Q Ruta
Isabel F Bolognia
Salvatore L Gaucho
Darci T Slusarski
Isabel I Garufi
Costa Z Shinko
Izzy Z Whobrey
Arvin K Tollner
Alejandro Z Morasca
Wickens Z Briddick
Francesco H Dilliard
Izzy N Kusko
Munro J Kusko
Jefferson J Bowley
Misaki P Poquette
Ricardo H Paprocki
Clifford O Morasca
Ivar P Malet
Izzy F Glick
Munro I Slusarski
Emily H Malet
Sinclair O Stockham
IdCountryDate
1000Canada2024-04-20
1001United Kingdom2024-04-08
1002Russia2024-04-09
1003Canada2024-04-14
1004Russia2024-04-03
1005Australia2024-04-10
1006United Kingdom2024-04-24
1007India2024-04-19
1008Australia2024-04-02
1009Spain2024-04-17
1010Canada2024-04-24
1011Spain2024-04-17
1012Canada2024-03-28
1013Spain2024-04-06
1014Canada2024-04-09
1015Argentina2024-04-11
1016United Kingdom2024-04-15
1017United Kingdom2024-04-07
1018Japan2024-04-15
1019Italy2024-03-29
1020Argentina2024-04-10
1021Italy2024-04-07
1022Argentina2024-04-03
1023Italy2024-04-05
1024Italy2024-04-24
1025Japan2024-04-22
1026Russia2024-04-03
1027France2024-04-05
1028France2024-04-23
1029Canada2024-04-19
1030Brazil2024-04-07
1031India2024-04-14
1032India2024-04-19
1033Italy2024-04-17
1034France2024-04-10
1035Canada2024-04-14
1036France2024-04-06
1037Brazil2024-04-19
1038Spain2024-04-06
1039United Kingdom2024-03-29
1040France2024-04-20
1041Germany2024-04-21
1042Japan2024-04-14
1043Japan2024-04-24
1044Argentina2024-04-03
1045Japan2024-04-06
1046Argentina2024-04-19
1047Germany2024-04-01
1048Brazil2024-04-20
1049Russia2024-04-04

On-Demand Data

NameIdCountryDate
Greenwood G Albares1000Spain2024-03-27
Chavez V Gaucho1001Spain2024-04-01
Mayumi D Slusarski1002Japan2024-04-07
Octavia Y Malet1003Argentina2024-04-19
Aditya P Morasca1004United Kingdom2024-04-11
Johnson J Rulapaugh1005Brazil2024-04-23
Juan M Morasca1006United Kingdom2024-04-11
Isabel U Stenseth1007France2024-04-17
Clifford Z Darakjy1008Argentina2024-04-13
Clifford F Oldroyd1009Australia2024-04-10
Stacey Y Darakjy1010France2024-04-25
Mujtaba M Malet1011Brazil2024-04-19
Mujtaba L Chui1012United Kingdom2024-04-10
Adams S Maclead1013India2024-04-18
Octavia Y Ruta1014Germany2024-04-15
Arvin C Darakjy1015Germany2024-04-07
Ivar Y Marrier1016Germany2024-03-31
Sinclair O Poquette1017India2024-04-21
Morrow F Waycott1018United Kingdom2024-03-28
Arvin L Iturbide1019Argentina2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar Z RutaSpainAsiya Javayant QUALIFIED
Mayumi O FigeroaCanadaAmy Elsner QUALIFIED
Misaki Q BriddickJapanXuxue Feng NEW
Leon J ButtJapanAnna Fali NEGOTIATION
Mujtaba L BowleyAustraliaOnyama Limba QUALIFIED
Stacey N GarufiSpainIoni Bowcher PROPOSAL
Emily N FerenczSpainXuxue Feng RENEWAL
Misaki B KuskoCanadaXuxue Feng NEW
Octavia C PoquetteIndiaAmy Elsner NEGOTIATION
Johnson A WieserItalyOnyama Limba RENEWAL
Ricardo S AmigonBrazilOnyama Limba QUALIFIED
Silvio C VocelkaRussiaOnyama Limba QUALIFIED
Chavez O BriddickGermanyAnna Fali QUALIFIED
Stacey O ButtBrazilOnyama Limba QUALIFIED
Jennifer N MarrierSpainXuxue Feng UNQUALIFIED
Sinclair E ChuiUnited KingdomAmy Elsner RENEWAL
Aruna D BriddickIndiaIvan Magalhaes QUALIFIED
Leja B SaylorsUnited KingdomIoni Bowcher NEGOTIATION
Kadeem C WhobreyGermanyIvan Magalhaes NEW
Claire X BologniaArgentinaAnna Fali NEGOTIATION
Murillo G DilliardArgentinaIvan Magalhaes QUALIFIED
Johnson T RulapaughIndiaOnyama Limba PROPOSAL
Antonio J MaletSpainStephen Shaw QUALIFIED
Salvatore J GauchoUnited KingdomBernardo Dominic NEW
Deepesh D StensethSpainIvan Magalhaes NEGOTIATION
Octavia Y CampainIndiaAmy Elsner RENEWAL
Stacey X RulapaughUnited KingdomXuxue Feng QUALIFIED
Faith Q TollnerCanadaOnyama Limba RENEWAL
Johnson S DoeBrazilAsiya Javayant NEGOTIATION
Aruna P MaletBrazilIvan Magalhaes NEW
Silvio O KolmetzGermanyAsiya Javayant QUALIFIED
Salvatore O GillianUnited KingdomBernardo Dominic UNQUALIFIED
Darci Q SchemmerCanadaStephen Shaw PROPOSAL
Ashley P SchemmerGermanyAsiya Javayant NEW
Emily R MaletBrazilAsiya Javayant NEGOTIATION
Munro J CaudyAustraliaOnyama Limba QUALIFIED
Salvatore U GauchoIndiaXuxue Feng NEGOTIATION
Murillo T FigeroaUnited KingdomIoni Bowcher QUALIFIED
Tony V PerinRussiaXuxue Feng RENEWAL
Maria Z BriddickArgentinaAmy Elsner QUALIFIED

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