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
Maisha X StensethGermanyIvan Magalhaes RENEWAL
Stacey F FerenczFranceAnna Fali NEGOTIATION
Juan O CampainAustraliaAmy Elsner NEW
Stacey S MaletAustraliaAsiya Javayant NEGOTIATION
Wickens K RimIndiaXuxue Feng PROPOSAL
Sinclair H GarufiUnited KingdomIoni Bowcher PROPOSAL
Adams M RimAustraliaStephen Shaw PROPOSAL
Chavez E FerenczFranceXuxue Feng PROPOSAL
Octavia D OstroskyUnited KingdomXuxue Feng PROPOSAL
Leja N SergiUnited KingdomIvan Magalhaes PROPOSAL
Greenwood P MacleadIndiaOnyama Limba RENEWAL
Mujtaba Z RoysterArgentinaXuxue Feng RENEWAL
Johnson J TollnerArgentinaBernardo Dominic NEGOTIATION
Sinclair N RoysterUnited KingdomAmy Elsner NEGOTIATION
Jones P KuskoFranceAsiya Javayant QUALIFIED
Francesco M DilliardGermanyOnyama Limba NEW
Aika M RulapaughUnited KingdomAsiya Javayant RENEWAL
Wickens B CaldareraUnited KingdomIvan Magalhaes PROPOSAL
Rodrigues T FlosiCanadaIvan Magalhaes RENEWAL
Arvin T ShinkoIndiaElwin Sharvill NEGOTIATION
Emily L KolmetzAustraliaAnna Fali RENEWAL
Maisha V SergiFranceAnna Fali NEW
Ricardo U CaldareraJapanAsiya Javayant NEW
Smith M DoeBrazilOnyama Limba NEW
Nicolas K ShinkoGermanyBernardo Dominic PROPOSAL
Mujtaba F KuskoFranceIvan Magalhaes PROPOSAL
Antonio F SergiArgentinaStephen Shaw NEW
Ivar E StockhamGermanyAnna Fali NEGOTIATION
Maria M IturbideItalyXuxue Feng NEW
Mayumi T StockhamBrazilStephen Shaw UNQUALIFIED
Jeanfrancois S FigeroaGermanyAmy Elsner RENEWAL
Kadeem F NickaItalyBernardo Dominic PROPOSAL
Jeanfrancois S NestleCanadaIvan Magalhaes NEGOTIATION
Arvin T StensethCanadaAsiya Javayant PROPOSAL
Silvio K AmigonItalyBernardo Dominic QUALIFIED
Clifford N PerinRussiaAmy Elsner RENEWAL
Tony U VenereItalyAsiya Javayant RENEWAL
Claire V WhobreyArgentinaOnyama Limba UNQUALIFIED
Sinclair U RoysterBrazilAmy Elsner QUALIFIED
Adams K BriddickArgentinaBernardo Dominic RENEWAL
Octavia B KuskoJapanAmy Elsner PROPOSAL
Kadeem V MaletSpainElwin Sharvill NEW
Jeanfrancois T BologniaGermanyIoni Bowcher NEGOTIATION
Kadeem I MacleadAustraliaIoni Bowcher NEGOTIATION
David X MorascaSpainAnna Fali RENEWAL
Ashley P DoeArgentinaAsiya Javayant NEGOTIATION
Sinclair K ButtArgentinaBernardo Dominic PROPOSAL
Alejandro L WaycottSpainAnna Fali QUALIFIED
Izzy M MarrierGermanyAmy Elsner NEW
Johnson B SergiItalyAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aruna K BowleyJapanElwin Sharvill NEGOTIATION
Kaitlin X RulapaughGermanyAmy Elsner QUALIFIED
Francesco Z MaletGermanyElwin Sharvill RENEWAL
Stacey M KolmetzUnited KingdomIvan Magalhaes RENEWAL
Aika H KuskoArgentinaXuxue Feng QUALIFIED
Adams X ShinkoFranceAsiya Javayant NEGOTIATION
Munro M StensethArgentinaAnna Fali NEGOTIATION
Julie B VocelkaItalyBernardo Dominic NEW
Cody Y CaudyGermanyBernardo Dominic RENEWAL
Costa Z PerinUnited KingdomAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson P StensethBrazil2024-04-24Rangoni Of Florence NEGOTIATION3Bernardo Dominic
1001Mayumi T OstroskyJapan2024-04-16Feltz Printing Service QUALIFIED42Onyama Limba
1002Tony A InouyeItaly2024-04-27Printing Dimensions RENEWAL60Onyama Limba
1003Alejandro A MarrierIndia2024-04-15Rangoni Of Florence NEGOTIATION4Ioni Bowcher
1004Sinclair Q FigeroaArgentina2024-04-10Dorl, James J Esq QUALIFIED1Asiya Javayant
1005Aruna G InouyeCanada2024-04-02Rousseaux, Michael Esq UNQUALIFIED60Ivan Magalhaes
1006Jones S CaldareraJapan2024-03-29Chapman, Ross E Esq UNQUALIFIED99Elwin Sharvill
1007Morrow E DoeCanada2024-04-15Chapman, Ross E Esq PROPOSAL39Onyama Limba
1008Mujtaba A FigeroaIndia2024-03-30King, Christopher A Esq UNQUALIFIED86Xuxue Feng
1009Deepesh P InouyeItaly2024-04-15Dorl, James J Esq NEGOTIATION39Stephen Shaw
1010Aruna Z ButtBrazil2024-04-15Chapman, Ross E Esq UNQUALIFIED69Ioni Bowcher
1011Arvin B OstroskyIndia2024-04-02Chapman, Ross E Esq RENEWAL42Elwin Sharvill
1012Julie F StockhamUnited Kingdom2024-04-26Commercial Press PROPOSAL13Ivan Magalhaes
1013Johnson L BologniaSpain2024-04-01Printing Dimensions PROPOSAL7Ivan Magalhaes
1014Aika O VenereJapan2024-04-04Chemel, James L Cpa UNQUALIFIED19Elwin Sharvill
1015Julie Q WaycottItaly2024-04-21Commercial Press PROPOSAL48Stephen Shaw
1016Clifford C SlusarskiBrazil2024-04-09Dorl, James J Esq NEW35Onyama Limba
1017Francesco X GauchoGermany2024-04-19Truhlar And Truhlar Attys PROPOSAL6Stephen Shaw
1018Isabel H CaudyBrazil2024-04-19Rangoni Of Florence UNQUALIFIED60Asiya Javayant
1019Izzy M KolmetzUnited Kingdom2024-04-16Chapman, Ross E Esq QUALIFIED91Amy Elsner
1020Aditya H DarakjyAustralia2024-04-19Chemel, James L Cpa UNQUALIFIED18Stephen Shaw
1021Isabel E DarakjyUnited Kingdom2024-04-22Dorl, James J Esq NEGOTIATION57Amy Elsner
1022Adams Z RoysterGermany2024-04-17Dorl, James J Esq PROPOSAL13Ivan Magalhaes
1023Darci J WaycottItaly2024-04-08Chemel, James L Cpa NEW40Ivan Magalhaes
1024Ricardo Y RutaRussia2024-04-25Benton, John B Jr PROPOSAL12Anna Fali
1025Murillo Z SaylorsAustralia2024-04-22Rangoni Of Florence NEW18Elwin Sharvill
1026Francesco A RulapaughGermany2024-04-27Feiner Bros UNQUALIFIED48Bernardo Dominic
1027Juan G ShinkoArgentina2024-04-07King, Christopher A Esq PROPOSAL29Bernardo Dominic
1028Ivar X VocelkaGermany2024-04-21Rangoni Of Florence UNQUALIFIED98Amy Elsner
1029Kaitlin C NestleSpain2024-04-10Dorl, James J Esq UNQUALIFIED2Anna Fali
1030Ivar T DarakjyJapan2024-04-04Printing Dimensions QUALIFIED62Ivan Magalhaes
1031Cody P SchemmerBrazil2024-04-01Feiner Bros NEGOTIATION81Ioni Bowcher
1032Juan F SchemmerJapan2024-04-11Benton, John B Jr QUALIFIED70Onyama Limba
1033Leja Y MacleadItaly2024-04-14Rousseaux, Michael Esq QUALIFIED86Stephen Shaw
1034Jennifer C WhobreyCanada2024-04-02Printing Dimensions RENEWAL97Onyama Limba
1035Stacey K ChuiRussia2024-04-10Chanay, Jeffrey A Esq RENEWAL10Amy Elsner
1036Kaitlin K KolmetzJapan2024-04-10Feltz Printing Service NEGOTIATION90Asiya Javayant
1037Sinclair U MacleadCanada2024-04-02Chapman, Ross E Esq QUALIFIED34Stephen Shaw
1038Johnson B RoysterSpain2024-04-06King, Christopher A Esq NEGOTIATION11Onyama Limba
1039Sinclair L SergiUnited Kingdom2024-04-07Dorl, James J Esq NEW54Xuxue Feng
1040Julie Q WieserBrazil2024-04-10Printing Dimensions UNQUALIFIED7Ivan Magalhaes
1041Murillo N PoquetteAustralia2024-04-02Benton, John B Jr PROPOSAL10Ioni Bowcher
1042Leon Z MaletAustralia2024-04-05Feiner Bros QUALIFIED29Anna Fali
1043Salvatore Q SaylorsGermany2024-04-01Morlong Associates RENEWAL69Onyama Limba
1044Octavia K ButtAustralia2024-04-02King, Christopher A Esq UNQUALIFIED91Onyama Limba
1045Ricardo U TollnerRussia2024-04-11Dorl, James J Esq PROPOSAL28Anna Fali
1046Juan G FlosiBrazil2024-04-05Commercial Press NEGOTIATION90Stephen Shaw
1047Maria B GarufiIndia2024-04-03Commercial Press NEW46Anna Fali
1048Maria C DilliardUnited Kingdom2024-03-30Morlong Associates NEGOTIATION11Elwin Sharvill
1049Mujtaba W SaylorsAustralia2024-03-31Morlong Associates NEGOTIATION26Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Kadeem T GauchoCanadaIvan Magalhaes NEGOTIATION
Chavez J BowleyItalyAsiya Javayant NEGOTIATION
Alejandro J FollerCanadaIoni Bowcher QUALIFIED
Jennifer Q PoquetteArgentinaElwin Sharvill NEGOTIATION
Julie Z InouyeJapanAnna Fali QUALIFIED
Faith M GlickIndiaIoni Bowcher NEW
Clifford H BologniaBrazilIvan Magalhaes NEGOTIATION
Nicolas U SergiGermanyStephen Shaw RENEWAL
Arvin B MacleadCanadaAsiya Javayant PROPOSAL
Aika B FlosiGermanyAmy Elsner UNQUALIFIED
Jeanfrancois J BowleyBrazilAnna Fali NEW
Alejandro R StensethBrazilIvan Magalhaes NEGOTIATION
David O BologniaUnited KingdomIoni Bowcher QUALIFIED
David E GlickFranceOnyama Limba QUALIFIED
Juan M MaletFranceOnyama Limba NEGOTIATION
Aruna E ShinkoRussiaOnyama Limba UNQUALIFIED
James C InouyeGermanyStephen Shaw PROPOSAL
Jennifer N ButtItalyOnyama Limba UNQUALIFIED
Leja R OstroskyAustraliaIoni Bowcher QUALIFIED
Kaitlin B ChuiArgentinaAsiya Javayant NEGOTIATION
Ashley I GarufiCanadaAnna Fali UNQUALIFIED
Wickens M MaletBrazilXuxue Feng RENEWAL
Faith K MorascaJapanElwin Sharvill QUALIFIED
Sinclair B FigeroaUnited KingdomOnyama Limba NEGOTIATION
Morrow I VocelkaAustraliaOnyama Limba RENEWAL
Aika N SchemmerSpainStephen Shaw NEW
Greenwood J MaletArgentinaStephen Shaw UNQUALIFIED
Arvin Y GlickRussiaElwin Sharvill UNQUALIFIED
Adams M GlickArgentinaIvan Magalhaes PROPOSAL
Chavez I MaletItalyIoni Bowcher RENEWAL
Darci L SergiAustraliaAsiya Javayant RENEWAL
Johnson P AlbaresArgentinaAmy Elsner RENEWAL
Greenwood B KolmetzJapanAmy Elsner UNQUALIFIED
Kadeem J DilliardCanadaElwin Sharvill RENEWAL
Smith G DilliardRussiaOnyama Limba RENEWAL
Maria F RulapaughSpainElwin Sharvill PROPOSAL
Rodrigues Y FigeroaArgentinaBernardo Dominic UNQUALIFIED
Johnson P AlbaresGermanyAmy Elsner NEGOTIATION
Maria Y KuskoRussiaAsiya Javayant PROPOSAL
Jeanfrancois N FerenczIndiaAsiya Javayant QUALIFIED
Isabel L GarufiJapanIoni Bowcher NEW
Cody L MarrierJapanOnyama Limba QUALIFIED
Aika W SaylorsRussiaStephen Shaw NEW
Nicolas N CaldareraRussiaBernardo Dominic RENEWAL
Mujtaba J GarufiCanadaStephen Shaw NEGOTIATION
Misaki F MacleadItalyIoni Bowcher PROPOSAL
Kaitlin T NestleArgentinaAmy Elsner NEGOTIATION
Stacey T CaudyFranceBernardo Dominic NEW
Murillo N GauchoArgentinaIvan Magalhaes NEGOTIATION
Misaki B FigeroaBrazilBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Jeanfrancois L Foller
Jefferson D Inouye
Rodrigues V Caudy
Adams C Campain
Octavia H Doe
Faith R Briddick
Munro W Venere
Aditya U Rim
Aditya D Royster
Mayumi F Kolmetz
Stacey D Sergi
Silvio X Waycott
Greenwood Q Ferencz
Faith W Wieser
Wickens J Royster
Francesco H Doe
Wickens Z Malet
Salvatore D Vocelka
Claire Z Oldroyd
Misaki A Kusko
Claire L Slusarski
Jeanfrancois N Perin
Izzy Y Stenseth
Jones R Tollner
Sinclair B Albares
Smith S Figeroa
Misaki W Vocelka
Isabel U Venere
Cody L Slusarski
Ashley T Flosi
Clifford G Caudy
Deepesh R Caudy
Emily G Flosi
Adams K Oldroyd
Rodrigues S Glick
Aditya P Morasca
Aika E Venere
Greenwood E Amigon
Chavez F Paprocki
Francesco S Doe
Claire W Ostrosky
Tony J Paprocki
Rodrigues R Iturbide
Jeanfrancois D Caldarera
Murillo Y Darakjy
Jones N Chui
James M Albares
Salvatore E Dilliard
Claire C Caudy
Aditya L Waycott
IdCountryDate
1000Japan2024-04-16
1001Argentina2024-04-05
1002India2024-04-02
1003Spain2024-04-23
1004Spain2024-04-08
1005United Kingdom2024-04-04
1006Germany2024-04-04
1007Australia2024-04-17
1008Russia2024-04-20
1009Japan2024-04-26
1010Canada2024-04-10
1011Spain2024-04-10
1012Russia2024-04-24
1013Spain2024-04-10
1014India2024-04-25
1015Canada2024-04-15
1016Germany2024-04-17
1017Brazil2024-04-04
1018Italy2024-04-18
1019Japan2024-04-18
1020Brazil2024-04-17
1021Germany2024-04-01
1022France2024-04-10
1023Brazil2024-04-01
1024Australia2024-04-08
1025Argentina2024-04-12
1026Argentina2024-04-19
1027Australia2024-04-14
1028India2024-04-03
1029Russia2024-04-22
1030Italy2024-04-13
1031Italy2024-04-24
1032Spain2024-04-03
1033Russia2024-03-30
1034Australia2024-04-07
1035United Kingdom2024-04-19
1036Australia2024-04-10
1037India2024-04-13
1038Brazil2024-04-21
1039Australia2024-04-09
1040Germany2024-04-16
1041Russia2024-04-15
1042Brazil2024-03-31
1043United Kingdom2024-04-08
1044Japan2024-04-18
1045United Kingdom2024-04-25
1046Italy2024-04-01
1047Brazil2024-04-27
1048Canada2024-04-18
1049Italy2024-04-03

On-Demand Data

NameIdCountryDate
Deepesh O Sergi1000Canada2024-04-16
Darci F Bowley1001Argentina2024-04-08
Aditya G Bolognia1002Argentina2024-04-10
Deepesh Y Rim1003Italy2024-04-22
Deepesh V Oldroyd1004Germany2024-04-21
Alejandro C Gillian1005Australia2024-04-06
Ricardo G Flosi1006Canada2024-04-04
Leon Q Kolmetz1007France2024-04-12
Murillo U Caldarera1008India2024-04-22
Izzy Y Malet1009Brazil2024-04-06
Ashley U Waycott1010Australia2024-04-27
Misaki M Royster1011United Kingdom2024-04-17
Greenwood T Chui1012France2024-04-23
Faith T Kusko1013Germany2024-04-07
Octavia U Ferencz1014Brazil2024-04-10
Jones A Ferencz1015Australia2024-04-25
Isabel P Waycott1016Argentina2024-04-25
Adams X Kolmetz1017India2024-04-02
Johnson E Butt1018Russia2024-04-15
Juan R Darakjy1019Italy2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan K KolmetzAustraliaIvan Magalhaes NEW
Kaitlin J CaudyCanadaStephen Shaw NEGOTIATION
Munro A DoeGermanyElwin Sharvill QUALIFIED
Tony K StockhamFranceIoni Bowcher QUALIFIED
Rodrigues E BriddickGermanyAmy Elsner UNQUALIFIED
Emily D GillianAustraliaElwin Sharvill QUALIFIED
Octavia Z RoysterItalyAsiya Javayant PROPOSAL
Sinclair B FigeroaUnited KingdomStephen Shaw PROPOSAL
Claire I VocelkaArgentinaBernardo Dominic QUALIFIED
Silvio L CaudyUnited KingdomElwin Sharvill RENEWAL
Nicolas X FollerSpainAmy Elsner NEW
Tony K ShinkoBrazilIvan Magalhaes NEGOTIATION
Alejandro H MorascaSpainXuxue Feng UNQUALIFIED
Aika J PoquetteArgentinaElwin Sharvill PROPOSAL
Stacey Y MarrierCanadaXuxue Feng UNQUALIFIED
Leon S InouyeIndiaBernardo Dominic QUALIFIED
Maria F OldroydFranceBernardo Dominic NEW
Clifford Z FerenczFranceIoni Bowcher PROPOSAL
Leja F FigeroaJapanStephen Shaw QUALIFIED
Octavia X SlusarskiRussiaAnna Fali NEGOTIATION
Maisha L MacleadSpainStephen Shaw NEW
Faith R DilliardSpainAnna Fali RENEWAL
Silvio V FigeroaSpainElwin Sharvill UNQUALIFIED
Deepesh D BologniaFranceOnyama Limba NEGOTIATION
Sinclair L MaletCanadaXuxue Feng RENEWAL
Jennifer P DarakjyRussiaAsiya Javayant PROPOSAL
Juan T SlusarskiIndiaElwin Sharvill NEGOTIATION
Greenwood K GauchoItalyStephen Shaw NEW
Octavia D SergiSpainBernardo Dominic PROPOSAL
Aruna R TollnerArgentinaStephen Shaw PROPOSAL
Deepesh F GillianItalyOnyama Limba QUALIFIED
Stacey P CampainJapanBernardo Dominic NEW
Faith P WieserRussiaAsiya Javayant PROPOSAL
Costa B GillianItalyElwin Sharvill NEGOTIATION
Jennifer X MaletAustraliaAsiya Javayant NEW
Aika F MorascaIndiaIvan Magalhaes PROPOSAL
Kadeem P WhobreyJapanAmy Elsner PROPOSAL
Ricardo Z StockhamItalyIvan Magalhaes UNQUALIFIED
Faith D RoysterGermanyIvan Magalhaes NEW
Deepesh W BologniaGermanyAsiya Javayant PROPOSAL

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