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
Antonio F StensethJapanAsiya Javayant QUALIFIED
Jennifer I WaycottUnited KingdomXuxue Feng RENEWAL
Clifford O BriddickRussiaIoni Bowcher NEW
Juan Y BriddickSpainAsiya Javayant NEW
Misaki P VocelkaFranceStephen Shaw UNQUALIFIED
Arvin D DilliardItalyIvan Magalhaes PROPOSAL
Juan W OldroydUnited KingdomAnna Fali NEGOTIATION
Kadeem I BologniaItalyAnna Fali PROPOSAL
Mayumi S GillianFranceElwin Sharvill NEW
Jeanfrancois H GillianBrazilAnna Fali NEGOTIATION
Julie D NestleRussiaAnna Fali UNQUALIFIED
Jones W KuskoIndiaStephen Shaw UNQUALIFIED
Alejandro A CaudyGermanyBernardo Dominic NEGOTIATION
Costa M NestleRussiaBernardo Dominic PROPOSAL
Juan A WhobreyIndiaIoni Bowcher PROPOSAL
Claire W BowleyFranceAmy Elsner UNQUALIFIED
Faith B RulapaughRussiaXuxue Feng RENEWAL
Ivar S TollnerCanadaBernardo Dominic NEGOTIATION
Maisha N CaldareraCanadaAnna Fali RENEWAL
Wickens P KolmetzSpainBernardo Dominic RENEWAL
Ashley R GauchoJapanAsiya Javayant QUALIFIED
Izzy Q CaudyJapanAnna Fali NEW
Kaitlin Q MacleadUnited KingdomAmy Elsner NEGOTIATION
Greenwood C SchemmerRussiaOnyama Limba RENEWAL
Munro R PaprockiArgentinaOnyama Limba UNQUALIFIED
Mayumi Q ShinkoBrazilStephen Shaw NEW
Ashley X WaycottJapanAmy Elsner NEW
Rodrigues M BriddickAustraliaElwin Sharvill NEGOTIATION
Maria J TollnerFranceIvan Magalhaes QUALIFIED
Maisha C CampainArgentinaAsiya Javayant QUALIFIED
Jennifer D BriddickArgentinaElwin Sharvill QUALIFIED
Murillo M CaudyUnited KingdomIoni Bowcher QUALIFIED
Aditya V ShinkoSpainBernardo Dominic PROPOSAL
Octavia C RulapaughUnited KingdomAmy Elsner QUALIFIED
Jones T GillianIndiaElwin Sharvill RENEWAL
Izzy F GlickItalyAmy Elsner QUALIFIED
Rodrigues W FigeroaJapanIoni Bowcher UNQUALIFIED
Jennifer M WhobreySpainXuxue Feng UNQUALIFIED
Julie A NestleArgentinaIvan Magalhaes RENEWAL
Izzy B GarufiJapanIoni Bowcher NEGOTIATION
Sinclair Y CaldareraGermanyStephen Shaw UNQUALIFIED
Francesco Q ShinkoRussiaAsiya Javayant UNQUALIFIED
David O PerinBrazilIvan Magalhaes NEW
Aruna V CaldareraCanadaIvan Magalhaes PROPOSAL
Faith H DilliardJapanAnna Fali QUALIFIED
Smith M MorascaSpainStephen Shaw QUALIFIED
Johnson D MaletItalyAmy Elsner NEW
Ashley U MaletArgentinaElwin Sharvill NEW
Jeanfrancois D WhobreyBrazilIoni Bowcher RENEWAL
Deepesh H InouyeSpainOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Darci O SchemmerItalyAmy Elsner UNQUALIFIED
Misaki I OstroskyFranceAsiya Javayant RENEWAL
Wickens V GlickRussiaAsiya Javayant UNQUALIFIED
Aditya U WhobreyIndiaElwin Sharvill QUALIFIED
Deepesh M FerenczFranceIvan Magalhaes NEW
Nicolas M GillianIndiaAmy Elsner UNQUALIFIED
Cody W NickaFranceAnna Fali RENEWAL
Kaitlin O MaletRussiaBernardo Dominic NEW
Antonio V SaylorsArgentinaAnna Fali RENEWAL
Claire R NestleUnited KingdomBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki H GauchoGermany2024-04-15Printing Dimensions NEGOTIATION29Amy Elsner
1001Julie A NestleAustralia2024-04-22Buckley Miller Wright NEW45Stephen Shaw
1002Aika C SergiRussia2024-03-27Benton, John B Jr QUALIFIED32Onyama Limba
1003Alejandro N SlusarskiRussia2024-04-20Chanay, Jeffrey A Esq NEW34Asiya Javayant
1004Costa W GauchoFrance2024-04-06Rousseaux, Michael Esq UNQUALIFIED19Elwin Sharvill
1005Johnson Q DoeFrance2024-04-03King, Christopher A Esq NEW53Xuxue Feng
1006Morrow I GillianGermany2024-03-31Buckley Miller Wright NEW0Ivan Magalhaes
1007James X MaletFrance2024-04-12Truhlar And Truhlar Attys NEGOTIATION55Elwin Sharvill
1008Octavia J NestleAustralia2024-04-15Truhlar And Truhlar Attys QUALIFIED75Onyama Limba
1009Faith W GauchoJapan2024-04-22Chemel, James L Cpa UNQUALIFIED30Onyama Limba
1010Morrow V PerinSpain2024-04-13Benton, John B Jr QUALIFIED98Anna Fali
1011Wickens U DoeBrazil2024-04-02Morlong Associates PROPOSAL73Elwin Sharvill
1012Cody D PoquetteUnited Kingdom2024-03-26Buckley Miller Wright PROPOSAL82Elwin Sharvill
1013Maria L ChuiItaly2024-04-08Truhlar And Truhlar Attys RENEWAL11Amy Elsner
1014Mayumi C FollerItaly2024-03-24Buckley Miller Wright PROPOSAL55Onyama Limba
1015Alejandro O MaletSpain2024-04-14Chanay, Jeffrey A Esq RENEWAL91Anna Fali
1016Salvatore M GauchoArgentina2024-04-18Chapman, Ross E Esq UNQUALIFIED32Asiya Javayant
1017Sinclair N SaylorsAustralia2024-03-24Printing Dimensions RENEWAL58Elwin Sharvill
1018Ricardo W RulapaughBrazil2024-04-08Printing Dimensions QUALIFIED42Xuxue Feng
1019Francesco C BriddickUnited Kingdom2024-04-07Feltz Printing Service QUALIFIED33Ioni Bowcher
1020Nicolas T GlickAustralia2024-03-29Printing Dimensions NEGOTIATION73Ivan Magalhaes
1021Ricardo Y GlickGermany2024-04-16Chanay, Jeffrey A Esq QUALIFIED86Ioni Bowcher
1022Salvatore P MaletIndia2024-04-02Benton, John B Jr NEGOTIATION53Anna Fali
1023Deepesh Q OstroskyCanada2024-03-24Printing Dimensions QUALIFIED63Ioni Bowcher
1024Chavez A CaudyFrance2024-03-30Rousseaux, Michael Esq NEW4Ioni Bowcher
1025Arvin J WieserItaly2024-04-15Benton, John B Jr NEW24Bernardo Dominic
1026Cody H ShinkoCanada2024-03-31Chanay, Jeffrey A Esq PROPOSAL37Ivan Magalhaes
1027Murillo B MaletFrance2024-04-20Commercial Press RENEWAL87Asiya Javayant
1028Murillo U DilliardJapan2024-03-30Chanay, Jeffrey A Esq PROPOSAL22Onyama Limba
1029Silvio E KuskoRussia2024-04-06Chanay, Jeffrey A Esq NEGOTIATION68Ivan Magalhaes
1030Maria R MarrierSpain2024-04-22Printing Dimensions UNQUALIFIED59Ioni Bowcher
1031Salvatore N WaycottCanada2024-04-16Dorl, James J Esq NEGOTIATION76Anna Fali
1032Munro U RimAustralia2024-04-21Chemel, James L Cpa QUALIFIED49Asiya Javayant
1033Ivar N InouyeArgentina2024-03-28Rousseaux, Michael Esq NEGOTIATION87Ivan Magalhaes
1034David L WhobreySpain2024-04-14King, Christopher A Esq NEGOTIATION79Elwin Sharvill
1035Tony R SchemmerJapan2024-04-22Buckley Miller Wright UNQUALIFIED47Bernardo Dominic
1036Ashley R StensethUnited Kingdom2024-04-18Feltz Printing Service NEW29Bernardo Dominic
1037Aika L KuskoUnited Kingdom2024-03-24Rangoni Of Florence QUALIFIED70Bernardo Dominic
1038Wickens G AmigonArgentina2024-04-20Buckley Miller Wright RENEWAL11Stephen Shaw
1039Leon K InouyeCanada2024-04-15Morlong Associates NEGOTIATION72Onyama Limba
1040Misaki O MarrierIndia2024-04-14Dorl, James J Esq QUALIFIED35Stephen Shaw
1041Octavia T MacleadArgentina2024-04-03Chemel, James L Cpa RENEWAL22Asiya Javayant
1042Ashley E RulapaughJapan2024-04-13Printing Dimensions PROPOSAL31Ioni Bowcher
1043Mayumi J BowleyBrazil2024-04-14Chemel, James L Cpa NEW25Xuxue Feng
1044Sinclair E CaldareraArgentina2024-04-10Rangoni Of Florence PROPOSAL26Onyama Limba
1045Nicolas N PoquetteFrance2024-04-18Chapman, Ross E Esq NEW31Elwin Sharvill
1046Nicolas S CaldareraArgentina2024-03-24Dorl, James J Esq PROPOSAL26Xuxue Feng
1047Julie O CampainBrazil2024-04-12Buckley Miller Wright RENEWAL95Stephen Shaw
1048Smith W SergiRussia2024-03-28Truhlar And Truhlar Attys UNQUALIFIED74Asiya Javayant
1049Salvatore I SchemmerFrance2024-04-05Benton, John B Jr PROPOSAL31Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Leon C StensethArgentinaElwin Sharvill NEGOTIATION
Leon Y AmigonRussiaAnna Fali RENEWAL
Emily R MorascaSpainIoni Bowcher NEW
Claire E RulapaughFranceIvan Magalhaes RENEWAL
Leon K InouyeIndiaIoni Bowcher RENEWAL
Ivar A PoquetteSpainAnna Fali PROPOSAL
Leja H VocelkaGermanyAnna Fali PROPOSAL
Misaki H ShinkoBrazilXuxue Feng NEW
Ivar I KolmetzIndiaElwin Sharvill UNQUALIFIED
Isabel F PoquetteIndiaIoni Bowcher QUALIFIED
Ashley F MacleadRussiaOnyama Limba UNQUALIFIED
Mujtaba Z PoquetteGermanyXuxue Feng RENEWAL
Kadeem C SaylorsRussiaIoni Bowcher PROPOSAL
Juan H KolmetzGermanyIoni Bowcher NEW
Francesco B SlusarskiSpainOnyama Limba NEW
Emily G GauchoBrazilStephen Shaw UNQUALIFIED
Jones K CaldareraFranceAsiya Javayant NEW
Cody G TollnerSpainAmy Elsner RENEWAL
Izzy O GarufiGermanyAnna Fali UNQUALIFIED
David M ShinkoRussiaAnna Fali QUALIFIED
Claire N BowleyBrazilBernardo Dominic QUALIFIED
Mayumi P WhobreySpainStephen Shaw NEW
Kaitlin E OldroydSpainAsiya Javayant UNQUALIFIED
Greenwood Q CaudyArgentinaBernardo Dominic NEW
Jones L CaudyCanadaBernardo Dominic QUALIFIED
Jones Z GauchoUnited KingdomStephen Shaw NEW
Maisha N DarakjyGermanyOnyama Limba PROPOSAL
Mayumi U BriddickCanadaStephen Shaw NEW
Greenwood Q PoquetteSpainAmy Elsner UNQUALIFIED
Munro C IturbideIndiaElwin Sharvill NEGOTIATION
Costa C PoquetteItalyIoni Bowcher UNQUALIFIED
Sinclair U AlbaresBrazilBernardo Dominic PROPOSAL
Maisha K GarufiJapanAmy Elsner QUALIFIED
Salvatore Z InouyeFranceAmy Elsner UNQUALIFIED
Salvatore Q GlickRussiaIvan Magalhaes PROPOSAL
Ivar S FlosiUnited KingdomElwin Sharvill QUALIFIED
Chavez Z KolmetzItalyIvan Magalhaes RENEWAL
Sinclair T GlickIndiaElwin Sharvill NEW
Ricardo W WaycottIndiaOnyama Limba RENEWAL
Faith V FigeroaArgentinaIvan Magalhaes RENEWAL
Wickens B DarakjySpainOnyama Limba NEW
Chavez G GarufiUnited KingdomIvan Magalhaes PROPOSAL
Juan X GlickJapanAnna Fali NEW
Jennifer K StockhamItalyIoni Bowcher PROPOSAL
Sinclair O SchemmerGermanyOnyama Limba RENEWAL
Faith E AmigonItalyAsiya Javayant RENEWAL
Cody A RoysterBrazilXuxue Feng NEGOTIATION
Jennifer U NestleFranceIoni Bowcher QUALIFIED
Nicolas N FerenczCanadaIoni Bowcher RENEWAL
Jennifer M PaprockiFranceIvan Magalhaes QUALIFIED
Frozen Columns
Name
Nicolas B Stenseth
Greenwood F Dilliard
Morrow A Whobrey
Deepesh P Malet
Smith X Albares
Cody J Wieser
Antonio K Gaucho
Ashley Q Nicka
Izzy A Ostrosky
Julie Y Albares
Julie W Shinko
Emily H Shinko
Misaki V Amigon
Jeanfrancois S Ostrosky
Rodrigues B Stenseth
Aika E Slusarski
Maisha V Slusarski
Jennifer I Dilliard
Kaitlin N Dilliard
Jennifer J Foller
Wickens T Waycott
Aruna W Foller
Julie E Amigon
Cody Q Caldarera
Arvin C Nicka
Salvatore N Bowley
Ricardo U Wieser
Greenwood C Shinko
Antonio V Oldroyd
Aika X Chui
Juan W Foller
Alejandro L Inouye
Claire B Nicka
Kadeem E Gillian
Claire F Rim
Julie I Maclead
Leon Z Butt
Alejandro I Figeroa
Wickens I Campain
Darci Y Glick
Aditya I Garufi
Adams S Stenseth
Ashley Z Caudy
Leja V Perin
Mujtaba U Kusko
Tony H Rulapaugh
Ashley R Malet
Alejandro L Dilliard
Costa T Nicka
Johnson M Shinko
IdCountryDate
1000Australia2024-04-09
1001India2024-03-30
1002United Kingdom2024-04-22
1003Spain2024-03-31
1004Australia2024-04-15
1005Spain2024-04-10
1006Germany2024-04-22
1007Brazil2024-03-28
1008Russia2024-04-02
1009India2024-04-12
1010Japan2024-03-26
1011Spain2024-03-25
1012Italy2024-04-04
1013Spain2024-04-02
1014Australia2024-04-18
1015Argentina2024-04-12
1016Spain2024-03-26
1017Germany2024-04-09
1018France2024-04-10
1019Brazil2024-04-01
1020Germany2024-04-22
1021Brazil2024-04-22
1022Brazil2024-04-09
1023Italy2024-04-13
1024Argentina2024-04-06
1025Russia2024-03-27
1026Russia2024-04-17
1027India2024-03-30
1028Canada2024-03-26
1029Argentina2024-03-29
1030Brazil2024-04-07
1031Canada2024-04-16
1032Australia2024-04-21
1033Brazil2024-04-19
1034Spain2024-04-11
1035Canada2024-03-30
1036India2024-04-16
1037India2024-04-03
1038Argentina2024-04-16
1039Japan2024-04-10
1040Japan2024-04-12
1041United Kingdom2024-03-25
1042United Kingdom2024-03-27
1043Spain2024-04-15
1044Germany2024-04-22
1045Japan2024-04-06
1046Japan2024-04-20
1047Brazil2024-04-07
1048France2024-04-11
1049United Kingdom2024-04-12

On-Demand Data

NameIdCountryDate
Rodrigues V Vocelka1000United Kingdom2024-04-13
Aruna B Whobrey1001Argentina2024-04-07
Silvio P Malet1002Russia2024-04-12
Jones N Schemmer1003Argentina2024-04-08
Claire M Flosi1004Germany2024-03-27
Claire J Doe1005United Kingdom2024-04-07
Aruna S Tollner1006France2024-03-31
Costa H Poquette1007Spain2024-03-28
Francesco J Morasca1008Argentina2024-04-21
Leon K Marrier1009Brazil2024-04-10
Salvatore U Maclead1010Argentina2024-03-26
Ricardo Y Ferencz1011Japan2024-03-26
Aruna T Caldarera1012Brazil2024-03-25
Mujtaba M Albares1013Germany2024-04-06
Munro K Shinko1014Australia2024-03-25
Ashley E Briddick1015Argentina2024-04-04
Cody I Shinko1016Argentina2024-04-11
Cody P Caldarera1017Spain2024-04-18
Sinclair J Waycott1018United Kingdom2024-04-15
Claire K Albares1019Canada2024-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio B BologniaFranceBernardo Dominic PROPOSAL
Stacey P AmigonArgentinaIvan Magalhaes UNQUALIFIED
Leon J NickaItalyIoni Bowcher UNQUALIFIED
Alejandro C PoquetteJapanAsiya Javayant RENEWAL
Aika A CaldareraUnited KingdomStephen Shaw NEW
Greenwood R ButtRussiaAsiya Javayant QUALIFIED
Izzy Q KolmetzBrazilAsiya Javayant RENEWAL
Wickens L CaldareraBrazilIoni Bowcher UNQUALIFIED
Jennifer M CampainGermanyStephen Shaw RENEWAL
Sinclair N InouyeBrazilAnna Fali UNQUALIFIED
Jefferson Y RoysterItalyAnna Fali NEW
Aika R PoquetteBrazilStephen Shaw PROPOSAL
Izzy R KuskoJapanAnna Fali NEW
Juan Y CaudyRussiaIoni Bowcher NEGOTIATION
Maisha X FigeroaCanadaIoni Bowcher QUALIFIED
Leja H SergiUnited KingdomXuxue Feng QUALIFIED
Maria B MaletUnited KingdomAmy Elsner UNQUALIFIED
Aika N CaudyAustraliaXuxue Feng UNQUALIFIED
Sinclair P GillianFranceBernardo Dominic RENEWAL
Jennifer O VocelkaFranceAmy Elsner UNQUALIFIED
Kaitlin D WieserSpainIvan Magalhaes UNQUALIFIED
Deepesh F KolmetzCanadaIvan Magalhaes RENEWAL
Nicolas U BologniaUnited KingdomStephen Shaw RENEWAL
Murillo I TollnerRussiaXuxue Feng UNQUALIFIED
Adams J BriddickArgentinaIoni Bowcher NEW
Jeanfrancois D KolmetzUnited KingdomOnyama Limba PROPOSAL
Jeanfrancois V AlbaresIndiaOnyama Limba NEGOTIATION
Morrow O ChuiJapanAnna Fali RENEWAL
Jennifer Q VocelkaCanadaXuxue Feng PROPOSAL
Jeanfrancois H RutaArgentinaXuxue Feng RENEWAL
Murillo H AlbaresAustraliaAnna Fali PROPOSAL
David M NestleRussiaXuxue Feng UNQUALIFIED
Emily E StensethFranceXuxue Feng UNQUALIFIED
Tony T WhobreyRussiaXuxue Feng NEW
Misaki D SergiItalyXuxue Feng NEW
Clifford K WaycottRussiaElwin Sharvill QUALIFIED
Misaki O ShinkoIndiaXuxue Feng UNQUALIFIED
Jefferson M DoeUnited KingdomStephen Shaw UNQUALIFIED
Munro T MaletUnited KingdomIoni Bowcher RENEWAL
Jeanfrancois U RulapaughFranceOnyama Limba 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>