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
Mujtaba M FerenczJapanOnyama Limba NEGOTIATION
Antonio U OstroskyJapanIoni Bowcher NEGOTIATION
Jefferson J MarrierFranceXuxue Feng RENEWAL
Arvin G ShinkoSpainIvan Magalhaes NEGOTIATION
Octavia O WieserFranceStephen Shaw RENEWAL
Jennifer N WaycottAustraliaIoni Bowcher NEGOTIATION
Antonio S VocelkaJapanAsiya Javayant NEGOTIATION
Aika V SlusarskiRussiaIvan Magalhaes QUALIFIED
Misaki D MacleadCanadaStephen Shaw QUALIFIED
Maria I StensethBrazilIvan Magalhaes NEGOTIATION
Wickens P SchemmerRussiaIoni Bowcher QUALIFIED
Francesco W StensethAustraliaAmy Elsner RENEWAL
Ivar S NickaGermanyElwin Sharvill UNQUALIFIED
Johnson V BowleyCanadaXuxue Feng QUALIFIED
Adams E MaletSpainAsiya Javayant NEGOTIATION
Misaki R MorascaGermanyIoni Bowcher UNQUALIFIED
Johnson V OldroydGermanyAmy Elsner RENEWAL
Claire I MorascaAustraliaAnna Fali QUALIFIED
Jones Z RutaUnited KingdomOnyama Limba NEGOTIATION
Nicolas Y GillianBrazilAmy Elsner NEW
Stacey H DoeAustraliaBernardo Dominic UNQUALIFIED
Silvio P GauchoIndiaStephen Shaw RENEWAL
Claire O ChuiRussiaAmy Elsner QUALIFIED
Maria H MaletUnited KingdomStephen Shaw RENEWAL
Stacey Q FerenczIndiaAmy Elsner UNQUALIFIED
Alejandro K NestleJapanAmy Elsner NEW
Nicolas R GarufiCanadaOnyama Limba PROPOSAL
Izzy Z PerinRussiaXuxue Feng PROPOSAL
Ricardo S GlickBrazilStephen Shaw NEGOTIATION
Jeanfrancois V RutaAustraliaIoni Bowcher PROPOSAL
Sinclair L PoquetteSpainXuxue Feng UNQUALIFIED
Smith R StensethFranceBernardo Dominic QUALIFIED
Jeanfrancois B KuskoRussiaAnna Fali NEGOTIATION
Salvatore C DilliardGermanyAnna Fali NEW
Chavez N WaycottRussiaIvan Magalhaes RENEWAL
Maisha H FigeroaItalyAmy Elsner QUALIFIED
Salvatore B InouyeAustraliaStephen Shaw NEGOTIATION
Murillo K BriddickArgentinaOnyama Limba NEGOTIATION
Morrow K InouyeCanadaOnyama Limba PROPOSAL
Ivar N MacleadAustraliaXuxue Feng QUALIFIED
Mayumi D SlusarskiFranceXuxue Feng UNQUALIFIED
Rodrigues L VocelkaAustraliaAmy Elsner PROPOSAL
Leon H RoysterRussiaElwin Sharvill QUALIFIED
Octavia I WhobreyCanadaAnna Fali RENEWAL
Claire V NickaJapanAnna Fali PROPOSAL
Darci B GauchoCanadaAnna Fali RENEWAL
Darci O WhobreyAustraliaAnna Fali RENEWAL
Sinclair X RutaIndiaOnyama Limba RENEWAL
Faith R KolmetzArgentinaAnna Fali RENEWAL
Morrow W FollerFranceAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Morrow F GarufiRussiaAsiya Javayant NEGOTIATION
Antonio L MarrierIndiaAnna Fali PROPOSAL
Nicolas B SlusarskiCanadaAmy Elsner RENEWAL
Costa Z StensethAustraliaXuxue Feng NEGOTIATION
Julie W MacleadAustraliaOnyama Limba QUALIFIED
Misaki N CaudyJapanAsiya Javayant NEW
Tony B MorascaUnited KingdomIvan Magalhaes PROPOSAL
Aruna Q CampainIndiaXuxue Feng NEGOTIATION
Mujtaba X AmigonGermanyXuxue Feng RENEWAL
Morrow D OstroskyJapanAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow R MaletCanada2024-04-03Chapman, Ross E Esq UNQUALIFIED15Amy Elsner
1001Costa A MacleadBrazil2024-04-14Buckley Miller Wright NEW22Bernardo Dominic
1002Rodrigues J NestleAustralia2024-04-30Chemel, James L Cpa QUALIFIED56Ioni Bowcher
1003Mayumi G GarufiUnited Kingdom2024-04-20Morlong Associates RENEWAL23Xuxue Feng
1004Munro C RimUnited Kingdom2024-04-29Chanay, Jeffrey A Esq QUALIFIED28Xuxue Feng
1005Claire F KolmetzAustralia2024-04-13King, Christopher A Esq NEGOTIATION97Amy Elsner
1006David L OldroydIndia2024-04-28Rangoni Of Florence QUALIFIED42Elwin Sharvill
1007Jefferson I DoeBrazil2024-04-21Benton, John B Jr UNQUALIFIED78Ioni Bowcher
1008Kaitlin M CampainArgentina2024-04-19Feltz Printing Service RENEWAL40Stephen Shaw
1009Misaki K VocelkaAustralia2024-04-25Rangoni Of Florence PROPOSAL49Stephen Shaw
1010Claire C InouyeItaly2024-04-28King, Christopher A Esq NEGOTIATION14Asiya Javayant
1011Chavez N SergiAustralia2024-04-10Truhlar And Truhlar Attys RENEWAL69Xuxue Feng
1012Alejandro B FerenczArgentina2024-04-08Chanay, Jeffrey A Esq UNQUALIFIED21Onyama Limba
1013Kadeem O DoeFrance2024-04-16Chanay, Jeffrey A Esq PROPOSAL0Onyama Limba
1014Claire Z MacleadSpain2024-04-17Feiner Bros NEW52Stephen Shaw
1015Stacey H TollnerJapan2024-04-05Buckley Miller Wright PROPOSAL48Asiya Javayant
1016Murillo T NickaRussia2024-04-13King, Christopher A Esq RENEWAL52Ivan Magalhaes
1017Claire O PoquetteUnited Kingdom2024-04-13Feiner Bros NEW93Stephen Shaw
1018James G WhobreyCanada2024-04-04Rangoni Of Florence UNQUALIFIED42Asiya Javayant
1019Ashley Q KolmetzSpain2024-04-07Morlong Associates UNQUALIFIED39Asiya Javayant
1020Jennifer Y AlbaresFrance2024-04-10Truhlar And Truhlar Attys UNQUALIFIED33Elwin Sharvill
1021Ricardo H MaletRussia2024-04-23Dorl, James J Esq RENEWAL89Asiya Javayant
1022Julie X WaycottIndia2024-04-04Feltz Printing Service QUALIFIED59Ioni Bowcher
1023Costa S NestleSpain2024-04-09Printing Dimensions NEGOTIATION65Onyama Limba
1024Ashley A CaudyCanada2024-04-15Chanay, Jeffrey A Esq RENEWAL2Xuxue Feng
1025Jefferson A MorascaUnited Kingdom2024-04-10King, Christopher A Esq RENEWAL3Anna Fali
1026Munro V ShinkoUnited Kingdom2024-04-09Truhlar And Truhlar Attys PROPOSAL56Anna Fali
1027Emily M AlbaresAustralia2024-04-23Rousseaux, Michael Esq PROPOSAL7Ioni Bowcher
1028Stacey U NestleSpain2024-04-07Morlong Associates NEW30Asiya Javayant
1029Emily Z PoquetteUnited Kingdom2024-04-30Dorl, James J Esq NEW34Ioni Bowcher
1030Stacey N GarufiAustralia2024-04-25Feiner Bros RENEWAL38Stephen Shaw
1031Francesco G DoeAustralia2024-04-12Truhlar And Truhlar Attys NEW5Elwin Sharvill
1032Mujtaba R WaycottCanada2024-04-10Rangoni Of Florence NEW60Stephen Shaw
1033Chavez X FigeroaCanada2024-04-03Benton, John B Jr PROPOSAL10Amy Elsner
1034Ricardo T VocelkaIndia2024-04-22Commercial Press PROPOSAL38Bernardo Dominic
1035Izzy B DoeBrazil2024-04-15Feiner Bros QUALIFIED9Ivan Magalhaes
1036Morrow D PerinFrance2024-04-17Commercial Press QUALIFIED3Anna Fali
1037Alejandro H ChuiJapan2024-04-11Rousseaux, Michael Esq RENEWAL92Elwin Sharvill
1038Nicolas F GauchoGermany2024-04-08Rangoni Of Florence RENEWAL27Ivan Magalhaes
1039Aditya Z KuskoGermany2024-04-09Morlong Associates NEW87Stephen Shaw
1040Leja T MacleadJapan2024-04-04King, Christopher A Esq NEGOTIATION72Stephen Shaw
1041Munro L OldroydRussia2024-04-06Chemel, James L Cpa PROPOSAL61Anna Fali
1042Alejandro W VocelkaBrazil2024-04-29Chanay, Jeffrey A Esq RENEWAL50Stephen Shaw
1043Aruna O AlbaresBrazil2024-04-28Feltz Printing Service PROPOSAL19Anna Fali
1044Ricardo O RulapaughJapan2024-04-01Chemel, James L Cpa UNQUALIFIED66Stephen Shaw
1045Leon Z DoeIndia2024-04-24Rousseaux, Michael Esq UNQUALIFIED87Onyama Limba
1046Isabel G KolmetzFrance2024-04-08Chapman, Ross E Esq NEW25Ioni Bowcher
1047Clifford N IturbideRussia2024-04-05Benton, John B Jr QUALIFIED41Amy Elsner
1048Silvio D CampainGermany2024-04-26Morlong Associates NEGOTIATION50Ioni Bowcher
1049Mayumi M TollnerItaly2024-04-14Morlong Associates UNQUALIFIED36Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Maisha N RoysterFranceIvan Magalhaes RENEWAL
Wickens L RulapaughArgentinaIvan Magalhaes NEGOTIATION
Aditya K NestleGermanyAmy Elsner NEGOTIATION
Sinclair W CaudyItalyStephen Shaw RENEWAL
Octavia G RimBrazilAsiya Javayant NEW
Kadeem Q WhobreyFranceXuxue Feng RENEWAL
Deepesh B InouyeGermanyOnyama Limba PROPOSAL
Isabel M VenereBrazilAmy Elsner UNQUALIFIED
Aruna D FlosiBrazilAmy Elsner PROPOSAL
David D RoysterBrazilIvan Magalhaes UNQUALIFIED
Smith Q KolmetzAustraliaOnyama Limba NEGOTIATION
Julie P NestleArgentinaBernardo Dominic UNQUALIFIED
Kaitlin O WaycottRussiaAsiya Javayant QUALIFIED
James R MorascaIndiaBernardo Dominic NEGOTIATION
Julie C SchemmerRussiaElwin Sharvill NEGOTIATION
Greenwood J PaprockiBrazilIoni Bowcher NEW
Alejandro I SlusarskiArgentinaOnyama Limba PROPOSAL
Morrow E WieserIndiaElwin Sharvill RENEWAL
Leon B GarufiCanadaElwin Sharvill NEW
Alejandro Q WhobreyAustraliaOnyama Limba NEGOTIATION
Wickens R WhobreyItalyAmy Elsner PROPOSAL
Ashley O GillianRussiaElwin Sharvill UNQUALIFIED
Misaki Z IturbideFranceOnyama Limba RENEWAL
Izzy S GauchoArgentinaStephen Shaw NEGOTIATION
James T KuskoRussiaXuxue Feng NEW
Morrow G NickaFranceStephen Shaw UNQUALIFIED
Smith I ShinkoIndiaIvan Magalhaes NEW
Nicolas Q OldroydIndiaAsiya Javayant UNQUALIFIED
Jeanfrancois K OldroydFranceElwin Sharvill NEGOTIATION
Aditya P GillianBrazilIvan Magalhaes PROPOSAL
Antonio Q RoysterSpainXuxue Feng RENEWAL
Arvin K RimItalyStephen Shaw NEGOTIATION
Aika P AlbaresRussiaIoni Bowcher RENEWAL
Maisha E RoysterBrazilElwin Sharvill QUALIFIED
James G AlbaresSpainOnyama Limba RENEWAL
Aruna U OstroskyGermanyBernardo Dominic UNQUALIFIED
Ricardo Z ChuiAustraliaStephen Shaw QUALIFIED
James H DilliardUnited KingdomElwin Sharvill NEW
Munro T SaylorsCanadaOnyama Limba UNQUALIFIED
Isabel S IturbideJapanIoni Bowcher PROPOSAL
Leon S FerenczCanadaStephen Shaw QUALIFIED
Clifford B TollnerRussiaAsiya Javayant PROPOSAL
Kaitlin Z GillianJapanXuxue Feng QUALIFIED
Arvin H MorascaSpainAnna Fali RENEWAL
Antonio I FerenczSpainElwin Sharvill RENEWAL
Adams Z InouyeItalyIoni Bowcher NEGOTIATION
Kaitlin R StockhamItalyIoni Bowcher RENEWAL
Ricardo X NickaGermanyElwin Sharvill NEW
Maisha M MaletRussiaAmy Elsner PROPOSAL
Faith V TollnerCanadaOnyama Limba PROPOSAL
Frozen Columns
Name
Smith I Stockham
Costa N Tollner
Jefferson V Royster
Ashley U Albares
Jeanfrancois L Stenseth
Jones A Paprocki
Isabel X Figeroa
Alejandro F Slusarski
Munro S Albares
Johnson P Marrier
Claire I Campain
Antonio P Albares
Ashley Y Saylors
Alejandro S Marrier
Wickens U Nestle
Deepesh E Amigon
Ricardo F Malet
Antonio S Garufi
Costa G Ruta
Aruna T Kolmetz
Smith G Nicka
Murillo F Slusarski
Jeanfrancois Y Oldroyd
Mayumi R Rulapaugh
Munro D Schemmer
Morrow Z Rulapaugh
Ricardo L Nestle
Antonio F Bowley
Deepesh O Schemmer
Cody X Caudy
Nicolas I Gillian
Mayumi K Venere
Octavia B Stenseth
Isabel O Chui
Costa I Bolognia
Greenwood S Venere
Arvin J Nestle
Jones A Maclead
Jefferson K Royster
Ricardo W Malet
Misaki X Schemmer
Munro K Gaucho
Leon O Flosi
Ashley P Ruta
Juan X Morasca
Wickens R Doe
Sinclair C Ostrosky
Claire Q Rulapaugh
Francesco J Saylors
Leon W Caldarera
IdCountryDate
1000Brazil2024-04-23
1001Brazil2024-04-27
1002Russia2024-04-19
1003Germany2024-04-29
1004Argentina2024-04-07
1005Brazil2024-04-28
1006Brazil2024-04-21
1007Italy2024-04-17
1008Russia2024-04-08
1009United Kingdom2024-04-29
1010Japan2024-04-25
1011Japan2024-04-03
1012Australia2024-04-24
1013India2024-04-15
1014Italy2024-04-03
1015Brazil2024-04-20
1016Canada2024-04-02
1017France2024-04-24
1018Australia2024-04-04
1019Japan2024-04-24
1020Japan2024-04-08
1021United Kingdom2024-04-10
1022Argentina2024-04-29
1023Russia2024-04-28
1024Russia2024-04-04
1025Brazil2024-04-15
1026France2024-04-23
1027Brazil2024-04-03
1028Australia2024-04-25
1029Russia2024-04-08
1030Spain2024-04-22
1031Japan2024-04-09
1032Germany2024-04-24
1033Australia2024-04-28
1034Japan2024-04-23
1035India2024-04-28
1036Brazil2024-04-03
1037United Kingdom2024-04-18
1038Brazil2024-04-12
1039Germany2024-04-28
1040Australia2024-04-07
1041Germany2024-04-07
1042Japan2024-04-05
1043Australia2024-04-01
1044Argentina2024-04-16
1045Spain2024-04-23
1046Russia2024-04-06
1047France2024-04-20
1048France2024-04-04
1049United Kingdom2024-04-25

On-Demand Data

NameIdCountryDate
Morrow V Nicka1000Germany2024-04-22
Francesco R Tollner1001Germany2024-04-06
Jeanfrancois K Malet1002Spain2024-04-12
Aruna Y Venere1003Germany2024-04-02
Aditya K Ostrosky1004Russia2024-04-22
Antonio D Butt1005Russia2024-04-02
Costa L Malet1006United Kingdom2024-04-11
Costa X Chui1007Australia2024-04-18
Mujtaba N Amigon1008Italy2024-04-26
James X Kolmetz1009Japan2024-04-11
Sinclair H Flosi1010Brazil2024-04-04
Alejandro D Stockham1011Germany2024-04-23
Antonio F Rulapaugh1012India2024-04-07
Alejandro F Briddick1013Russia2024-04-16
Jeanfrancois G Morasca1014Germany2024-04-18
Greenwood S Gaucho1015France2024-04-09
Francesco K Vocelka1016Spain2024-04-05
James V Bolognia1017Germany2024-04-18
Ivar F Briddick1018Russia2024-04-17
Juan P Bolognia1019Russia2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair S AmigonAustraliaAmy Elsner QUALIFIED
Sinclair A ChuiFranceAmy Elsner PROPOSAL
Francesco G GillianUnited KingdomElwin Sharvill NEW
Wickens O ShinkoJapanIvan Magalhaes QUALIFIED
Jefferson P MorascaSpainBernardo Dominic QUALIFIED
Misaki B WieserUnited KingdomStephen Shaw NEW
Tony D WieserAustraliaIoni Bowcher UNQUALIFIED
Izzy G CampainIndiaOnyama Limba UNQUALIFIED
Maria G MorascaIndiaOnyama Limba QUALIFIED
Misaki K VenereAustraliaAmy Elsner NEGOTIATION
Silvio F PoquetteFranceOnyama Limba NEGOTIATION
Darci Y StensethIndiaBernardo Dominic PROPOSAL
Adams B RulapaughGermanyAnna Fali PROPOSAL
Leon N GarufiJapanAmy Elsner NEW
Morrow G StensethAustraliaAnna Fali UNQUALIFIED
Alejandro P GlickRussiaAmy Elsner PROPOSAL
Leja T PerinUnited KingdomStephen Shaw PROPOSAL
Clifford H DilliardArgentinaXuxue Feng NEW
David K DilliardItalyElwin Sharvill RENEWAL
Johnson L KolmetzRussiaIvan Magalhaes NEGOTIATION
Jefferson T WieserAustraliaIvan Magalhaes NEW
Leon Z AmigonCanadaStephen Shaw UNQUALIFIED
Darci J ShinkoBrazilOnyama Limba UNQUALIFIED
Ivar G SchemmerArgentinaBernardo Dominic RENEWAL
Rodrigues F OstroskyArgentinaBernardo Dominic UNQUALIFIED
Francesco V InouyeFranceIoni Bowcher UNQUALIFIED
Salvatore Y NestleRussiaBernardo Dominic RENEWAL
Kaitlin U SaylorsArgentinaStephen Shaw RENEWAL
Jennifer K AmigonJapanElwin Sharvill QUALIFIED
Octavia I RulapaughIndiaBernardo Dominic RENEWAL
Misaki N DilliardRussiaBernardo Dominic PROPOSAL
Isabel I DilliardAustraliaAmy Elsner NEGOTIATION
Tony X KolmetzBrazilAnna Fali RENEWAL
Clifford P PerinJapanIvan Magalhaes RENEWAL
Ricardo W MarrierArgentinaBernardo Dominic RENEWAL
Jones Q FerenczUnited KingdomAsiya Javayant UNQUALIFIED
Salvatore E PaprockiAustraliaAsiya Javayant NEGOTIATION
Francesco T ChuiArgentinaOnyama Limba QUALIFIED
Kaitlin Y FollerRussiaElwin Sharvill RENEWAL
Ashley R CampainItalyIvan Magalhaes 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>