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
Morrow F StensethUnited KingdomBernardo Dominic QUALIFIED
Ashley V InouyeRussiaAmy Elsner QUALIFIED
Julie D VocelkaCanadaStephen Shaw RENEWAL
Munro G SchemmerSpainBernardo Dominic UNQUALIFIED
Emily C PaprockiArgentinaIvan Magalhaes NEGOTIATION
Smith J TollnerRussiaElwin Sharvill PROPOSAL
Wickens K FlosiBrazilIoni Bowcher NEW
Ashley H DarakjyJapanAmy Elsner NEGOTIATION
Morrow E DarakjyCanadaAnna Fali PROPOSAL
Maria I VenereCanadaXuxue Feng NEGOTIATION
Arvin X MarrierJapanIoni Bowcher UNQUALIFIED
Murillo B MaletIndiaBernardo Dominic PROPOSAL
Francesco S VocelkaCanadaIoni Bowcher UNQUALIFIED
Arvin P ShinkoAustraliaAsiya Javayant UNQUALIFIED
Emily P AlbaresUnited KingdomOnyama Limba RENEWAL
Ashley V AlbaresSpainAnna Fali NEW
Ivar X GlickFranceOnyama Limba NEGOTIATION
Julie Y WieserItalyAmy Elsner QUALIFIED
Nicolas O MarrierSpainXuxue Feng PROPOSAL
Emily W VocelkaArgentinaIoni Bowcher NEW
Munro M FlosiItalyOnyama Limba RENEWAL
Chavez T PerinAustraliaAnna Fali NEW
Leja T SergiRussiaIvan Magalhaes NEW
Chavez O ButtRussiaBernardo Dominic NEW
Aditya Y AmigonFranceIvan Magalhaes QUALIFIED
Kadeem M KuskoJapanIvan Magalhaes QUALIFIED
Jones H MacleadRussiaAnna Fali NEGOTIATION
Aika B VocelkaRussiaAsiya Javayant QUALIFIED
Kadeem R WhobreyRussiaIvan Magalhaes QUALIFIED
Salvatore H WhobreyCanadaAnna Fali PROPOSAL
Darci S CaudyUnited KingdomAnna Fali NEGOTIATION
Morrow G BologniaSpainXuxue Feng NEW
Octavia O VocelkaArgentinaAsiya Javayant PROPOSAL
Leon T FlosiArgentinaBernardo Dominic NEGOTIATION
Mujtaba M NestleIndiaIvan Magalhaes PROPOSAL
David Q ChuiCanadaAsiya Javayant UNQUALIFIED
Kaitlin T MacleadAustraliaAnna Fali UNQUALIFIED
Wickens H PaprockiFranceAmy Elsner UNQUALIFIED
Ashley T GauchoArgentinaIoni Bowcher UNQUALIFIED
Smith W ButtRussiaAnna Fali QUALIFIED
Leon Q WaycottItalyAsiya Javayant RENEWAL
Darci X DilliardCanadaOnyama Limba QUALIFIED
Deepesh G SergiUnited KingdomOnyama Limba UNQUALIFIED
Jennifer E StensethIndiaStephen Shaw PROPOSAL
Murillo W GauchoItalyElwin Sharvill UNQUALIFIED
Aika K VenereFranceIvan Magalhaes NEGOTIATION
Jones C DoeItalyOnyama Limba NEGOTIATION
Aditya W DarakjyIndiaIoni Bowcher RENEWAL
Leon L BologniaSpainAmy Elsner PROPOSAL
Izzy R SchemmerCanadaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Morrow I SlusarskiJapanOnyama Limba QUALIFIED
Ivar Q WhobreyGermanyAmy Elsner PROPOSAL
Octavia X CaudyRussiaElwin Sharvill RENEWAL
Maisha O FollerRussiaXuxue Feng NEGOTIATION
Ivar T DarakjyUnited KingdomAsiya Javayant RENEWAL
Darci A SchemmerRussiaIvan Magalhaes UNQUALIFIED
Jennifer J CampainIndiaIoni Bowcher NEW
Julie C DilliardFranceAsiya Javayant NEW
David T DarakjyItalyOnyama Limba NEW
Adams H OstroskyUnited KingdomIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa I MaletSpain2024-04-21Printing Dimensions RENEWAL58Anna Fali
1001Aika C MacleadItaly2024-04-25Chanay, Jeffrey A Esq NEGOTIATION64Ioni Bowcher
1002Ivar Q RimJapan2024-04-17Feiner Bros UNQUALIFIED73Onyama Limba
1003Antonio Y NickaRussia2024-04-20Dorl, James J Esq UNQUALIFIED13Stephen Shaw
1004Adams G ChuiUnited Kingdom2024-04-15Chanay, Jeffrey A Esq QUALIFIED38Amy Elsner
1005Jefferson T MaletArgentina2024-03-31Morlong Associates NEGOTIATION6Elwin Sharvill
1006David F WhobreySpain2024-04-07Truhlar And Truhlar Attys NEGOTIATION89Anna Fali
1007Cody R RutaAustralia2024-04-22Morlong Associates RENEWAL73Ioni Bowcher
1008Jefferson O WieserGermany2024-04-08Morlong Associates RENEWAL70Anna Fali
1009Faith V OldroydRussia2024-04-02Truhlar And Truhlar Attys RENEWAL40Onyama Limba
1010Nicolas P CaudyUnited Kingdom2024-04-08Buckley Miller Wright NEGOTIATION47Ioni Bowcher
1011Costa C GauchoBrazil2024-04-23Feiner Bros PROPOSAL20Amy Elsner
1012Julie W MorascaSpain2024-04-19Chapman, Ross E Esq UNQUALIFIED79Ioni Bowcher
1013Silvio A RimAustralia2024-04-17Printing Dimensions UNQUALIFIED38Elwin Sharvill
1014Stacey Z PoquetteRussia2024-04-15Benton, John B Jr UNQUALIFIED21Stephen Shaw
1015Tony S SchemmerCanada2024-04-06Chanay, Jeffrey A Esq PROPOSAL74Elwin Sharvill
1016Aditya Z VenereBrazil2024-04-17Dorl, James J Esq NEGOTIATION27Ivan Magalhaes
1017Munro C GlickBrazil2024-04-23Truhlar And Truhlar Attys UNQUALIFIED64Ivan Magalhaes
1018Greenwood B WhobreyArgentina2024-04-24Rangoni Of Florence PROPOSAL62Elwin Sharvill
1019Mujtaba X FigeroaFrance2024-04-07Benton, John B Jr PROPOSAL58Elwin Sharvill
1020Aika M NickaJapan2024-04-12Dorl, James J Esq PROPOSAL89Xuxue Feng
1021Chavez Y CaudyArgentina2024-04-10Chanay, Jeffrey A Esq NEW65Xuxue Feng
1022Salvatore Q AmigonGermany2024-04-16Chanay, Jeffrey A Esq UNQUALIFIED27Asiya Javayant
1023Morrow H CampainCanada2024-03-29Benton, John B Jr QUALIFIED71Asiya Javayant
1024Kaitlin B FerenczArgentina2024-04-12Buckley Miller Wright UNQUALIFIED70Ioni Bowcher
1025Emily P BriddickCanada2024-03-28Printing Dimensions NEW84Stephen Shaw
1026Julie P PoquetteJapan2024-03-28Buckley Miller Wright QUALIFIED85Ivan Magalhaes
1027Costa N SaylorsFrance2024-04-01Commercial Press NEW44Asiya Javayant
1028Salvatore O StensethRussia2024-04-03Benton, John B Jr QUALIFIED50Bernardo Dominic
1029Faith T BologniaUnited Kingdom2024-04-23Buckley Miller Wright PROPOSAL47Amy Elsner
1030Jones B CampainUnited Kingdom2024-04-24Morlong Associates RENEWAL99Asiya Javayant
1031Jeanfrancois Y StensethItaly2024-04-26Feltz Printing Service RENEWAL38Xuxue Feng
1032Mayumi S IturbideBrazil2024-04-06Feiner Bros NEGOTIATION0Ivan Magalhaes
1033Aditya I MorascaGermany2024-04-14Chanay, Jeffrey A Esq RENEWAL80Onyama Limba
1034Arvin M OstroskyBrazil2024-03-28Rangoni Of Florence NEGOTIATION82Amy Elsner
1035Sinclair L ShinkoUnited Kingdom2024-04-25Chanay, Jeffrey A Esq PROPOSAL2Stephen Shaw
1036Juan K RimBrazil2024-03-29Morlong Associates RENEWAL0Ioni Bowcher
1037Cody P CaudyItaly2024-04-20Feltz Printing Service PROPOSAL72Ivan Magalhaes
1038Alejandro Y RimGermany2024-04-06Feltz Printing Service RENEWAL58Ivan Magalhaes
1039Jones Q KuskoJapan2024-04-05Morlong Associates NEGOTIATION79Asiya Javayant
1040Munro A GauchoIndia2024-04-24Chemel, James L Cpa NEGOTIATION49Bernardo Dominic
1041Ricardo U GlickItaly2024-04-11Benton, John B Jr QUALIFIED77Ivan Magalhaes
1042Stacey R CaldareraArgentina2024-04-17King, Christopher A Esq RENEWAL61Xuxue Feng
1043Smith W RutaAustralia2024-04-11Chapman, Ross E Esq PROPOSAL47Amy Elsner
1044Rodrigues M MorascaBrazil2024-04-13Chapman, Ross E Esq NEGOTIATION65Bernardo Dominic
1045Octavia K OstroskyCanada2024-03-29Chapman, Ross E Esq PROPOSAL85Xuxue Feng
1046Silvio F DilliardSpain2024-04-06Truhlar And Truhlar Attys UNQUALIFIED49Ivan Magalhaes
1047Ricardo O GauchoGermany2024-04-06Chanay, Jeffrey A Esq RENEWAL40Bernardo Dominic
1048Kaitlin D StensethArgentina2024-04-05King, Christopher A Esq UNQUALIFIED66Anna Fali
1049Faith X RoysterArgentina2024-04-15Dorl, James J Esq QUALIFIED20Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Johnson Y FollerRussiaXuxue Feng NEW
Murillo R BowleyBrazilIoni Bowcher RENEWAL
Cody Z WhobreyCanadaElwin Sharvill NEGOTIATION
Tony M SaylorsAustraliaElwin Sharvill NEGOTIATION
Wickens Y InouyeRussiaElwin Sharvill NEW
Cody J IturbideSpainElwin Sharvill PROPOSAL
Munro F StensethRussiaStephen Shaw QUALIFIED
Salvatore G KolmetzIndiaXuxue Feng NEGOTIATION
Johnson O ButtCanadaBernardo Dominic NEGOTIATION
Greenwood C AlbaresSpainStephen Shaw RENEWAL
Deepesh A FigeroaIndiaBernardo Dominic QUALIFIED
Octavia K CampainRussiaBernardo Dominic NEW
Emily M OstroskyRussiaIoni Bowcher UNQUALIFIED
Leja D KolmetzAustraliaAsiya Javayant PROPOSAL
Tony C StensethBrazilAmy Elsner NEW
Kadeem Z MaletGermanyStephen Shaw NEW
Adams A ChuiUnited KingdomAnna Fali NEGOTIATION
Cody G SergiAustraliaElwin Sharvill NEW
Julie C SlusarskiFranceIvan Magalhaes RENEWAL
James V RutaJapanOnyama Limba UNQUALIFIED
Jefferson Q PerinCanadaBernardo Dominic QUALIFIED
Jeanfrancois P DoeUnited KingdomOnyama Limba NEGOTIATION
Mujtaba J SergiFranceIvan Magalhaes PROPOSAL
Kaitlin C MorascaRussiaAnna Fali QUALIFIED
Tony D RoysterIndiaIoni Bowcher QUALIFIED
Murillo Y FlosiAustraliaOnyama Limba UNQUALIFIED
Aruna Q KuskoArgentinaAnna Fali UNQUALIFIED
Salvatore Z InouyeAustraliaAsiya Javayant QUALIFIED
Francesco M GauchoUnited KingdomElwin Sharvill UNQUALIFIED
Sinclair O OstroskyBrazilAnna Fali PROPOSAL
Nicolas M StensethUnited KingdomElwin Sharvill NEGOTIATION
Clifford L DilliardUnited KingdomOnyama Limba RENEWAL
Antonio H CampainFranceElwin Sharvill NEW
Isabel Q CaudyJapanBernardo Dominic UNQUALIFIED
Jefferson I NickaItalyXuxue Feng QUALIFIED
Isabel C CaudyFranceIvan Magalhaes NEGOTIATION
Johnson B KuskoAustraliaXuxue Feng PROPOSAL
Ashley J FlosiSpainBernardo Dominic UNQUALIFIED
Ricardo Y RutaIndiaStephen Shaw RENEWAL
Costa W TollnerBrazilIvan Magalhaes RENEWAL
Darci I MorascaBrazilIoni Bowcher NEW
Alejandro V MaletIndiaAnna Fali QUALIFIED
Costa Z OstroskyFranceBernardo Dominic NEW
Johnson B GarufiUnited KingdomXuxue Feng RENEWAL
Rodrigues Y OstroskyIndiaOnyama Limba QUALIFIED
Ricardo G PoquetteCanadaOnyama Limba NEW
Wickens S TollnerIndiaOnyama Limba NEW
Costa M RutaJapanAnna Fali NEGOTIATION
Wickens W WieserRussiaAsiya Javayant NEW
Maisha D SchemmerFranceAnna Fali QUALIFIED
Frozen Columns
Name
David O Rulapaugh
Chavez H Stenseth
Greenwood T Rulapaugh
Wickens Y Nicka
Jefferson J Caudy
Aditya T Inouye
Cody R Ostrosky
Murillo Y Slusarski
Julie A Saylors
Munro F Dilliard
Chavez S Royster
Smith A Shinko
Smith V Amigon
Adams S Glick
David K Foller
Ashley N Vocelka
Clifford F Vocelka
Aruna H Shinko
Morrow R Caldarera
Smith F Saylors
Clifford C Oldroyd
Jennifer B Paprocki
Tony W Nicka
Mayumi C Glick
Greenwood O Gillian
Mayumi R Paprocki
Alejandro S Caldarera
Claire E Poquette
Maria K Butt
Mayumi S Oldroyd
Smith M Briddick
Mayumi V Vocelka
Kaitlin N Caudy
Francesco R Caldarera
Jeanfrancois V Waycott
Ashley U Briddick
Greenwood W Morasca
Maria R Marrier
Munro A Foller
Maria D Ruta
Clifford C Whobrey
Kadeem Z Rim
James X Bowley
Izzy D Sergi
Silvio Z Paprocki
Wickens M Paprocki
Leon M Kusko
Johnson H Glick
Silvio U Gaucho
Maisha K Inouye
IdCountryDate
1000Russia2024-03-28
1001Japan2024-04-03
1002Italy2024-04-22
1003Australia2024-04-19
1004Japan2024-03-31
1005Argentina2024-04-01
1006Brazil2024-04-05
1007Italy2024-04-15
1008Japan2024-04-17
1009Argentina2024-03-29
1010Australia2024-04-15
1011India2024-04-19
1012Italy2024-04-19
1013Canada2024-03-31
1014France2024-03-29
1015Argentina2024-04-07
1016India2024-04-13
1017Canada2024-04-03
1018India2024-04-13
1019Spain2024-04-08
1020United Kingdom2024-04-11
1021Russia2024-04-11
1022Japan2024-04-20
1023Japan2024-04-07
1024Brazil2024-04-12
1025Italy2024-04-11
1026Australia2024-04-09
1027Brazil2024-04-24
1028Spain2024-04-25
1029Australia2024-03-30
1030India2024-04-06
1031Argentina2024-04-08
1032France2024-04-01
1033Argentina2024-04-12
1034Spain2024-04-10
1035Australia2024-04-01
1036United Kingdom2024-04-08
1037Australia2024-04-22
1038Japan2024-03-30
1039Argentina2024-04-08
1040France2024-04-11
1041France2024-04-18
1042Brazil2024-04-22
1043Germany2024-04-09
1044Canada2024-04-12
1045India2024-04-23
1046Australia2024-04-23
1047United Kingdom2024-04-20
1048Spain2024-04-15
1049India2024-04-05

On-Demand Data

NameIdCountryDate
Ivar C Nicka1000India2024-04-22
Jennifer B Nestle1001Spain2024-04-23
Ricardo S Foller1002Germany2024-04-25
Kadeem X Glick1003India2024-04-19
Juan W Caudy1004Germany2024-04-22
Emily F Wieser1005France2024-04-02
David E Saylors1006Argentina2024-04-12
Antonio C Vocelka1007India2024-04-18
Munro Z Waycott1008Canada2024-04-10
Juan E Nestle1009Italy2024-03-28
Stacey D Gillian1010France2024-04-23
Wickens G Dilliard1011Spain2024-04-16
Ashley F Royster1012United Kingdom2024-03-31
Jefferson H Nicka1013Spain2024-04-14
Deepesh P Oldroyd1014United Kingdom2024-04-20
Clifford J Dilliard1015France2024-04-19
Silvio H Whobrey1016Spain2024-04-14
Juan D Malet1017Italy2024-03-29
Silvio E Whobrey1018India2024-04-25
Greenwood B Bowley1019India2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony Y FigeroaFranceAnna Fali PROPOSAL
Johnson F RoysterUnited KingdomElwin Sharvill PROPOSAL
David G NestleGermanyOnyama Limba UNQUALIFIED
Jeanfrancois U DoeIndiaElwin Sharvill PROPOSAL
Chavez Y InouyeArgentinaXuxue Feng NEGOTIATION
Julie Q RoysterBrazilAsiya Javayant NEW
Nicolas P PerinBrazilXuxue Feng QUALIFIED
Emily M WhobreyJapanIvan Magalhaes RENEWAL
Aditya D SchemmerFranceIoni Bowcher PROPOSAL
Octavia L FollerUnited KingdomIvan Magalhaes UNQUALIFIED
Stacey G FerenczGermanyStephen Shaw NEGOTIATION
Claire D TollnerFranceAmy Elsner NEW
Misaki D NestleGermanyAsiya Javayant QUALIFIED
Mayumi Z DarakjyFranceElwin Sharvill QUALIFIED
Aditya I PerinRussiaBernardo Dominic QUALIFIED
Cody W KuskoUnited KingdomAsiya Javayant PROPOSAL
Darci E CaudyRussiaStephen Shaw QUALIFIED
Octavia N MacleadSpainOnyama Limba QUALIFIED
David Z VenereSpainElwin Sharvill UNQUALIFIED
Costa D SlusarskiFranceAsiya Javayant NEGOTIATION
Ashley I StockhamCanadaAnna Fali QUALIFIED
Jennifer D StockhamRussiaAmy Elsner QUALIFIED
Darci L RimSpainIoni Bowcher NEGOTIATION
Wickens W MaletItalyElwin Sharvill PROPOSAL
Costa X VenereIndiaStephen Shaw QUALIFIED
Murillo T SaylorsIndiaIvan Magalhaes QUALIFIED
Darci B ShinkoItalyBernardo Dominic NEW
Maisha M TollnerRussiaAsiya Javayant NEW
Octavia U PoquetteCanadaElwin Sharvill RENEWAL
Kadeem J CaldareraGermanyOnyama Limba UNQUALIFIED
Julie Y GillianSpainAmy Elsner NEGOTIATION
Cody U FlosiAustraliaOnyama Limba PROPOSAL
Jefferson N PoquetteRussiaAnna Fali PROPOSAL
Sinclair D NestleUnited KingdomAsiya Javayant NEW
Stacey I FigeroaCanadaIoni Bowcher NEGOTIATION
Wickens D KolmetzJapanAnna Fali NEGOTIATION
Alejandro Q VenereSpainIoni Bowcher RENEWAL
Julie O BowleyUnited KingdomStephen Shaw NEW
Morrow N TollnerCanadaAsiya Javayant RENEWAL
Izzy D FerenczGermanyAmy Elsner 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>