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
Aika D NestleArgentinaElwin Sharvill NEW
Clifford H GlickSpainAmy Elsner PROPOSAL
Clifford I OstroskyItalyAnna Fali UNQUALIFIED
Jennifer V BologniaSpainOnyama Limba PROPOSAL
Francesco S WieserJapanAnna Fali NEW
Jones L StockhamCanadaAmy Elsner NEW
Silvio H WieserIndiaAmy Elsner NEGOTIATION
Sinclair X WaycottGermanyBernardo Dominic UNQUALIFIED
Faith U ShinkoGermanyAsiya Javayant NEGOTIATION
Jefferson O MorascaRussiaStephen Shaw NEGOTIATION
Munro F ButtIndiaAnna Fali QUALIFIED
Jones D FollerBrazilBernardo Dominic RENEWAL
Darci R StockhamUnited KingdomAnna Fali NEGOTIATION
Rodrigues I RutaBrazilIoni Bowcher NEW
Morrow K DilliardGermanyAmy Elsner NEGOTIATION
Leja W CampainSpainIvan Magalhaes QUALIFIED
Claire F RoysterGermanyOnyama Limba PROPOSAL
Rodrigues M FerenczCanadaIoni Bowcher QUALIFIED
Maria Y BriddickItalyIvan Magalhaes QUALIFIED
Chavez H GlickIndiaAnna Fali NEW
Sinclair G OldroydSpainOnyama Limba QUALIFIED
Wickens S BowleyBrazilAmy Elsner PROPOSAL
Deepesh K DilliardArgentinaOnyama Limba PROPOSAL
Aika L MarrierFranceAnna Fali NEGOTIATION
Arvin W WieserArgentinaBernardo Dominic NEW
Ivar O AlbaresRussiaAmy Elsner RENEWAL
Smith O RoysterUnited KingdomStephen Shaw NEGOTIATION
Deepesh N InouyeCanadaAsiya Javayant NEGOTIATION
Mujtaba K NickaCanadaIvan Magalhaes QUALIFIED
Ashley X InouyeUnited KingdomBernardo Dominic NEGOTIATION
Aditya C BologniaArgentinaStephen Shaw UNQUALIFIED
Mujtaba N RulapaughAustraliaAmy Elsner QUALIFIED
Sinclair Z RulapaughIndiaOnyama Limba NEGOTIATION
Silvio C MaletJapanOnyama Limba NEGOTIATION
Chavez D SchemmerJapanStephen Shaw NEW
Wickens E SaylorsBrazilAmy Elsner RENEWAL
Clifford N IturbideUnited KingdomIvan Magalhaes RENEWAL
Munro M BologniaCanadaAmy Elsner NEW
Kadeem Z IturbideRussiaElwin Sharvill NEGOTIATION
Stacey F SchemmerItalyXuxue Feng NEW
Wickens R DilliardArgentinaAnna Fali QUALIFIED
Chavez W GlickSpainIoni Bowcher RENEWAL
Aika Q WieserCanadaIvan Magalhaes NEW
Juan K NickaJapanBernardo Dominic NEGOTIATION
Clifford H CaudyFranceBernardo Dominic NEW
Alejandro R AlbaresGermanyOnyama Limba PROPOSAL
Jefferson J MarrierSpainBernardo Dominic RENEWAL
Maisha L KuskoFranceAmy Elsner QUALIFIED
Salvatore M SlusarskiUnited KingdomElwin Sharvill NEGOTIATION
Silvio L BologniaItalyXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Sinclair S PerinArgentinaAsiya Javayant UNQUALIFIED
Leja F SchemmerCanadaIvan Magalhaes PROPOSAL
Ricardo M OldroydCanadaXuxue Feng NEGOTIATION
Claire U DilliardIndiaIvan Magalhaes UNQUALIFIED
Clifford V PerinRussiaAmy Elsner PROPOSAL
Jennifer A MarrierJapanBernardo Dominic NEW
Salvatore Z NestleBrazilStephen Shaw NEGOTIATION
Juan V RoysterIndiaAmy Elsner QUALIFIED
Claire Z MaletUnited KingdomAmy Elsner NEW
Arvin K AlbaresGermanyElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa D CaldareraItaly2024-04-16Feltz Printing Service NEGOTIATION64Xuxue Feng
1001Rodrigues F FigeroaArgentina2024-03-30Rousseaux, Michael Esq NEGOTIATION68Anna Fali
1002Julie W MorascaUnited Kingdom2024-04-12Rousseaux, Michael Esq QUALIFIED0Stephen Shaw
1003Misaki R VocelkaAustralia2024-04-09Dorl, James J Esq QUALIFIED40Ioni Bowcher
1004Claire H SergiGermany2024-04-07Benton, John B Jr QUALIFIED51Onyama Limba
1005Leon D CampainRussia2024-04-14Chapman, Ross E Esq NEGOTIATION91Elwin Sharvill
1006Johnson M MaletItaly2024-04-13Rousseaux, Michael Esq NEGOTIATION52Ioni Bowcher
1007Ricardo N WhobreyFrance2024-04-26Chanay, Jeffrey A Esq UNQUALIFIED26Ivan Magalhaes
1008Costa M FerenczGermany2024-04-04Feiner Bros QUALIFIED51Xuxue Feng
1009James F ChuiItaly2024-04-03Benton, John B Jr QUALIFIED81Xuxue Feng
1010Munro P BowleySpain2024-04-09Truhlar And Truhlar Attys NEW47Xuxue Feng
1011Wickens G AlbaresGermany2024-04-20Buckley Miller Wright UNQUALIFIED36Bernardo Dominic
1012Wickens G PoquetteArgentina2024-04-05Dorl, James J Esq PROPOSAL92Ioni Bowcher
1013Rodrigues I StensethUnited Kingdom2024-03-29Rangoni Of Florence RENEWAL48Ivan Magalhaes
1014James C RimFrance2024-04-06Rangoni Of Florence RENEWAL72Stephen Shaw
1015Munro H SlusarskiUnited Kingdom2024-04-04Printing Dimensions UNQUALIFIED58Asiya Javayant
1016David O CaudyIndia2024-04-15Truhlar And Truhlar Attys QUALIFIED61Xuxue Feng
1017Octavia A BowleyGermany2024-04-01Chemel, James L Cpa UNQUALIFIED0Xuxue Feng
1018Clifford I DilliardGermany2024-04-16Truhlar And Truhlar Attys NEGOTIATION66Onyama Limba
1019Faith M PoquetteAustralia2024-04-09Chemel, James L Cpa PROPOSAL99Asiya Javayant
1020Chavez C KolmetzItaly2024-04-07Dorl, James J Esq UNQUALIFIED81Bernardo Dominic
1021Isabel R SaylorsBrazil2024-04-22Commercial Press QUALIFIED80Amy Elsner
1022Chavez J WaycottSpain2024-04-02Chapman, Ross E Esq RENEWAL0Onyama Limba
1023Ricardo A WaycottCanada2024-04-27Rangoni Of Florence NEGOTIATION81Ivan Magalhaes
1024Aditya T SergiFrance2024-04-21Benton, John B Jr NEW2Xuxue Feng
1025Francesco L StockhamAustralia2024-04-06Rangoni Of Florence QUALIFIED86Elwin Sharvill
1026Aika K MacleadRussia2024-04-12Chemel, James L Cpa NEGOTIATION39Amy Elsner
1027Leja Y MorascaRussia2024-04-20Rangoni Of Florence NEGOTIATION94Anna Fali
1028Jeanfrancois P MorascaGermany2024-04-17Printing Dimensions NEW93Ivan Magalhaes
1029Arvin O MarrierArgentina2024-04-05Feiner Bros NEW31Xuxue Feng
1030Smith I CaldareraJapan2024-04-27Benton, John B Jr QUALIFIED30Asiya Javayant
1031Silvio R RulapaughArgentina2024-04-27Dorl, James J Esq PROPOSAL66Ioni Bowcher
1032Darci A AmigonCanada2024-04-03Benton, John B Jr UNQUALIFIED8Elwin Sharvill
1033Smith R DoeArgentina2024-04-02Dorl, James J Esq PROPOSAL61Xuxue Feng
1034Octavia K FlosiSpain2024-04-16Chanay, Jeffrey A Esq QUALIFIED3Onyama Limba
1035Francesco F DilliardJapan2024-04-06King, Christopher A Esq PROPOSAL69Stephen Shaw
1036Aditya E CaldareraSpain2024-04-06Truhlar And Truhlar Attys NEW23Ivan Magalhaes
1037Julie R DilliardSpain2024-04-18Rangoni Of Florence QUALIFIED19Ivan Magalhaes
1038Deepesh U SaylorsCanada2024-04-16Chemel, James L Cpa QUALIFIED7Xuxue Feng
1039Misaki Q PerinSpain2024-04-18Morlong Associates NEW65Elwin Sharvill
1040Smith U GillianFrance2024-04-27Rousseaux, Michael Esq PROPOSAL94Onyama Limba
1041Chavez O InouyeArgentina2024-03-30Benton, John B Jr NEW77Asiya Javayant
1042Aruna O StockhamGermany2024-04-10King, Christopher A Esq NEGOTIATION4Xuxue Feng
1043Julie F VenereJapan2024-04-04King, Christopher A Esq NEW68Anna Fali
1044Clifford Y WhobreyGermany2024-04-10Dorl, James J Esq UNQUALIFIED18Ioni Bowcher
1045Octavia O PoquetteFrance2024-04-18Buckley Miller Wright RENEWAL21Asiya Javayant
1046Juan P InouyeBrazil2024-04-15Dorl, James J Esq PROPOSAL59Asiya Javayant
1047Sinclair P StockhamCanada2024-03-30Dorl, James J Esq PROPOSAL99Asiya Javayant
1048Jefferson B IturbideRussia2024-04-14Chanay, Jeffrey A Esq UNQUALIFIED88Ioni Bowcher
1049Claire T DilliardJapan2024-04-26Chapman, Ross E Esq NEGOTIATION99Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Murillo L BologniaIndiaIoni Bowcher RENEWAL
Aditya E AmigonFranceAsiya Javayant NEGOTIATION
Aditya J FollerAustraliaStephen Shaw UNQUALIFIED
Sinclair A PaprockiGermanyBernardo Dominic NEGOTIATION
Greenwood Z RoysterCanadaAsiya Javayant UNQUALIFIED
Smith L MorascaAustraliaXuxue Feng QUALIFIED
James D SergiGermanyAmy Elsner RENEWAL
Greenwood P KolmetzRussiaOnyama Limba PROPOSAL
Aditya V SergiRussiaBernardo Dominic RENEWAL
Nicolas U ChuiSpainIoni Bowcher NEGOTIATION
Morrow F KolmetzFranceAsiya Javayant NEW
Kadeem T BriddickBrazilBernardo Dominic RENEWAL
Darci G DilliardBrazilBernardo Dominic PROPOSAL
Arvin L BologniaRussiaOnyama Limba PROPOSAL
Morrow Y MaletUnited KingdomElwin Sharvill NEGOTIATION
Ashley D FigeroaGermanyIvan Magalhaes NEW
Aditya N BowleyJapanIoni Bowcher PROPOSAL
Arvin B BologniaAustraliaXuxue Feng RENEWAL
Leon G SchemmerArgentinaElwin Sharvill NEGOTIATION
Chavez E FigeroaGermanyIoni Bowcher PROPOSAL
Octavia Q SchemmerArgentinaXuxue Feng UNQUALIFIED
Izzy P StockhamGermanyIvan Magalhaes NEW
Maisha U BowleyIndiaAsiya Javayant NEGOTIATION
Kaitlin V VocelkaBrazilStephen Shaw QUALIFIED
Greenwood K VenereFranceIoni Bowcher UNQUALIFIED
Aditya J RimCanadaAsiya Javayant UNQUALIFIED
Silvio E MaletFranceOnyama Limba QUALIFIED
Misaki L KolmetzUnited KingdomIvan Magalhaes RENEWAL
James D DoeRussiaAsiya Javayant RENEWAL
Alejandro C CaldareraUnited KingdomIoni Bowcher QUALIFIED
Cody D WieserSpainElwin Sharvill NEW
Cody Y BowleyUnited KingdomBernardo Dominic NEGOTIATION
Smith S NickaItalyAnna Fali NEGOTIATION
Julie D CaudyUnited KingdomStephen Shaw UNQUALIFIED
Jeanfrancois P GauchoJapanStephen Shaw QUALIFIED
Rodrigues O RulapaughItalyAsiya Javayant QUALIFIED
Isabel R DarakjyGermanyAnna Fali PROPOSAL
Ricardo Q StockhamCanadaStephen Shaw NEW
Murillo D PoquetteUnited KingdomXuxue Feng NEW
Aika W MorascaJapanIoni Bowcher UNQUALIFIED
Jennifer M MacleadGermanyElwin Sharvill QUALIFIED
Maria D NickaAustraliaOnyama Limba PROPOSAL
Salvatore D RutaAustraliaAsiya Javayant UNQUALIFIED
Emily N BologniaAustraliaXuxue Feng NEW
Ricardo H NestleSpainElwin Sharvill RENEWAL
Murillo T OldroydBrazilIvan Magalhaes UNQUALIFIED
Stacey T MaletJapanAmy Elsner UNQUALIFIED
Rodrigues P VenereArgentinaIoni Bowcher PROPOSAL
Morrow E SlusarskiAustraliaIoni Bowcher NEGOTIATION
Octavia Q CampainGermanyIvan Magalhaes QUALIFIED
Frozen Columns
Name
Antonio W Garufi
Costa T Bowley
Juan E Malet
Faith N Malet
Deepesh U Wieser
Leja X Venere
Emily E Campain
Isabel D Amigon
Isabel D Caldarera
Mujtaba U Tollner
Misaki T Perin
David T Kusko
Sinclair O Oldroyd
Aruna B Dilliard
Deepesh P Glick
Isabel Y Doe
Aditya Q Figeroa
Claire T Inouye
Octavia X Iturbide
Emily B Rulapaugh
Adams P Malet
Adams Q Tollner
Leja P Morasca
Munro L Glick
Costa O Caldarera
David O Inouye
Aruna D Kusko
Misaki C Inouye
Emily P Albares
Jeanfrancois C Gaucho
Leon S Kusko
Octavia U Slusarski
Francesco I Venere
Costa L Amigon
Costa A Caudy
Ricardo B Amigon
Emily S Caldarera
Alejandro K Tollner
Jeanfrancois Y Kolmetz
Salvatore N Doe
Emily Z Albares
Kaitlin E Ferencz
Leja G Amigon
Mujtaba I Gaucho
Jennifer Q Nestle
Jeanfrancois G Royster
Arvin Y Garufi
Wickens V Vocelka
Deepesh O Shinko
Murillo Y Perin
IdCountryDate
1000Spain2024-04-22
1001Italy2024-04-13
1002Argentina2024-04-17
1003India2024-04-04
1004Argentina2024-04-11
1005Brazil2024-04-05
1006Brazil2024-04-22
1007France2024-04-19
1008India2024-04-12
1009Russia2024-04-07
1010Italy2024-04-23
1011Argentina2024-04-26
1012Argentina2024-04-12
1013Australia2024-04-06
1014Argentina2024-04-19
1015Spain2024-04-09
1016France2024-04-13
1017Australia2024-04-10
1018Canada2024-04-09
1019Canada2024-04-26
1020Italy2024-04-04
1021Japan2024-04-04
1022Australia2024-04-06
1023Russia2024-03-30
1024Germany2024-04-14
1025Russia2024-03-29
1026Germany2024-04-27
1027Russia2024-04-13
1028Spain2024-04-10
1029Australia2024-04-19
1030United Kingdom2024-03-31
1031United Kingdom2024-04-11
1032India2024-04-06
1033Germany2024-04-24
1034India2024-04-16
1035Argentina2024-04-09
1036Brazil2024-04-12
1037Brazil2024-03-31
1038Canada2024-04-16
1039Russia2024-04-06
1040Japan2024-04-27
1041Russia2024-04-20
1042Germany2024-04-16
1043Russia2024-04-11
1044Spain2024-04-27
1045India2024-04-06
1046Russia2024-04-15
1047Japan2024-04-17
1048Australia2024-04-01
1049Russia2024-04-03

On-Demand Data

NameIdCountryDate
Rodrigues G Malet1000France2024-04-02
Jeanfrancois J Nestle1001Australia2024-04-18
Francesco J Ostrosky1002Spain2024-04-19
Clifford A Bowley1003India2024-04-13
Ricardo H Doe1004Japan2024-04-14
Ricardo X Venere1005Australia2024-04-23
Kaitlin D Bolognia1006Italy2024-03-31
Arvin L Maclead1007Russia2024-04-05
Smith A Oldroyd1008Spain2024-04-15
Murillo L Nicka1009United Kingdom2024-04-01
Silvio L Paprocki1010Argentina2024-04-18
Silvio M Marrier1011United Kingdom2024-04-25
Silvio G Nestle1012Canada2024-04-04
Octavia R Doe1013Japan2024-04-26
Munro J Perin1014India2024-04-15
Arvin K Morasca1015United Kingdom2024-04-23
Maisha K Kolmetz1016Spain2024-04-23
Leja I Ostrosky1017Italy2024-04-20
Smith L Butt1018Germany2024-04-03
Izzy X Wieser1019France2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire D MaletAustraliaAnna Fali UNQUALIFIED
Octavia V ChuiItalyBernardo Dominic NEGOTIATION
Maria U FigeroaFranceAsiya Javayant NEW
Antonio R WieserSpainAsiya Javayant UNQUALIFIED
Misaki T MarrierUnited KingdomElwin Sharvill RENEWAL
Ashley P IturbideSpainBernardo Dominic NEW
Arvin J BologniaRussiaXuxue Feng PROPOSAL
Rodrigues U WhobreyFranceStephen Shaw PROPOSAL
Juan I SaylorsBrazilBernardo Dominic NEGOTIATION
Deepesh Y DoeAustraliaXuxue Feng RENEWAL
Ricardo N TollnerSpainAnna Fali QUALIFIED
David T SergiItalyAmy Elsner PROPOSAL
Wickens L OldroydItalyAsiya Javayant QUALIFIED
Jeanfrancois Y IturbideFranceStephen Shaw NEW
Deepesh C NestleItalyOnyama Limba RENEWAL
Arvin D WaycottAustraliaIvan Magalhaes PROPOSAL
Ricardo B GauchoUnited KingdomAmy Elsner NEGOTIATION
Mujtaba W MacleadItalyAsiya Javayant NEGOTIATION
Cody L AmigonRussiaIvan Magalhaes RENEWAL
Morrow Y StensethJapanElwin Sharvill RENEWAL
Leja Q NickaSpainAsiya Javayant RENEWAL
Francesco H SergiArgentinaXuxue Feng NEGOTIATION
Darci B RutaJapanAnna Fali RENEWAL
Wickens O GlickItalyXuxue Feng PROPOSAL
Darci L MarrierItalyBernardo Dominic NEGOTIATION
Stacey B OldroydArgentinaAsiya Javayant NEGOTIATION
Octavia Y FerenczJapanOnyama Limba UNQUALIFIED
Costa T FigeroaUnited KingdomAsiya Javayant NEW
Maisha X VenereSpainAsiya Javayant NEW
Deepesh Q FerenczUnited KingdomIvan Magalhaes UNQUALIFIED
Aruna S StensethGermanyElwin Sharvill NEW
Alejandro U TollnerJapanAnna Fali UNQUALIFIED
Faith Z GlickSpainXuxue Feng NEGOTIATION
Claire U NestleBrazilAnna Fali UNQUALIFIED
Aika V StensethCanadaStephen Shaw UNQUALIFIED
Maisha K GauchoIndiaElwin Sharvill UNQUALIFIED
Darci S ButtIndiaAsiya Javayant NEW
Greenwood M SaylorsBrazilStephen Shaw NEGOTIATION
Ivar W CampainGermanyAnna Fali QUALIFIED
Jones B SchemmerAustraliaXuxue Feng UNQUALIFIED

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