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
Stacey U StensethUnited KingdomIvan Magalhaes RENEWAL
James U CaldareraFranceAsiya Javayant QUALIFIED
Emily D ShinkoSpainAsiya Javayant PROPOSAL
Deepesh Q SchemmerUnited KingdomOnyama Limba UNQUALIFIED
Isabel H BowleyRussiaBernardo Dominic NEW
Julie J CaldareraAustraliaBernardo Dominic NEGOTIATION
Chavez J RutaJapanIvan Magalhaes NEGOTIATION
Jefferson Z StockhamRussiaIvan Magalhaes NEW
Wickens V GlickRussiaElwin Sharvill UNQUALIFIED
Kadeem K ChuiJapanElwin Sharvill UNQUALIFIED
Kadeem G MorascaUnited KingdomBernardo Dominic NEGOTIATION
Sinclair N InouyeJapanAnna Fali NEW
Arvin Y ButtRussiaIvan Magalhaes QUALIFIED
Chavez S AmigonBrazilXuxue Feng NEGOTIATION
Maisha C CampainBrazilAmy Elsner NEW
Ashley R RulapaughCanadaOnyama Limba UNQUALIFIED
Ricardo R NestleUnited KingdomOnyama Limba NEW
Costa O CaldareraRussiaAsiya Javayant NEGOTIATION
Leon C GillianJapanStephen Shaw PROPOSAL
Sinclair S OldroydItalyAsiya Javayant UNQUALIFIED
Costa A AmigonIndiaIvan Magalhaes NEW
Salvatore W StensethUnited KingdomXuxue Feng RENEWAL
Aika W GlickIndiaIoni Bowcher NEW
Ashley W WhobreyCanadaStephen Shaw PROPOSAL
Antonio B MorascaUnited KingdomAsiya Javayant UNQUALIFIED
Francesco K VenereItalyXuxue Feng NEGOTIATION
Antonio Y DarakjyIndiaAsiya Javayant UNQUALIFIED
Ashley C AlbaresItalyAnna Fali QUALIFIED
David F FigeroaJapanBernardo Dominic UNQUALIFIED
Salvatore V SlusarskiArgentinaElwin Sharvill RENEWAL
Deepesh R SaylorsIndiaStephen Shaw NEGOTIATION
Isabel A BologniaAustraliaBernardo Dominic RENEWAL
Greenwood I BriddickBrazilOnyama Limba RENEWAL
Mayumi U CaudyCanadaAnna Fali NEW
Greenwood B VenereBrazilIoni Bowcher RENEWAL
Morrow K VocelkaCanadaElwin Sharvill NEGOTIATION
Claire S NestleJapanXuxue Feng QUALIFIED
David G BologniaIndiaAmy Elsner NEGOTIATION
Octavia I FollerIndiaIoni Bowcher NEW
Misaki Y StockhamIndiaAsiya Javayant RENEWAL
Kadeem E FlosiBrazilXuxue Feng QUALIFIED
Jennifer R ChuiBrazilOnyama Limba UNQUALIFIED
Murillo G DarakjySpainAnna Fali NEGOTIATION
Isabel P VenereRussiaAsiya Javayant UNQUALIFIED
Antonio R TollnerFranceIvan Magalhaes UNQUALIFIED
Stacey T RoysterIndiaAsiya Javayant PROPOSAL
Leja K BriddickUnited KingdomOnyama Limba UNQUALIFIED
Kaitlin D VocelkaItalyBernardo Dominic NEW
Faith T AlbaresSpainIvan Magalhaes PROPOSAL
Morrow Y SaylorsGermanyAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Deepesh X ShinkoItalyXuxue Feng NEGOTIATION
Emily B BriddickFranceXuxue Feng UNQUALIFIED
Jefferson D WieserJapanAnna Fali PROPOSAL
Sinclair W GlickItalyIoni Bowcher RENEWAL
Isabel G BriddickItalyAsiya Javayant PROPOSAL
Wickens Z GarufiGermanyAsiya Javayant UNQUALIFIED
Jeanfrancois B GarufiItalyOnyama Limba NEW
Munro U PoquetteJapanBernardo Dominic NEGOTIATION
Kadeem C ButtCanadaStephen Shaw QUALIFIED
Deepesh V GauchoSpainIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy Q SaylorsIndia2024-04-17Commercial Press NEW74Asiya Javayant
1001Maria N MacleadAustralia2024-05-02Feltz Printing Service RENEWAL74Ioni Bowcher
1002Claire R DilliardCanada2024-04-10Commercial Press PROPOSAL84Xuxue Feng
1003Tony Y RutaIndia2024-04-25Dorl, James J Esq NEW41Ivan Magalhaes
1004Silvio I ChuiArgentina2024-04-19Dorl, James J Esq PROPOSAL23Asiya Javayant
1005Maria T MaletUnited Kingdom2024-04-03Chemel, James L Cpa NEGOTIATION32Asiya Javayant
1006Salvatore N SergiAustralia2024-04-22King, Christopher A Esq NEGOTIATION52Bernardo Dominic
1007Darci F ShinkoGermany2024-04-21Benton, John B Jr UNQUALIFIED3Elwin Sharvill
1008Isabel R TollnerArgentina2024-04-29Printing Dimensions RENEWAL82Amy Elsner
1009Costa B ChuiIndia2024-04-04Feltz Printing Service PROPOSAL95Anna Fali
1010Octavia K BologniaUnited Kingdom2024-04-08Rangoni Of Florence UNQUALIFIED43Onyama Limba
1011Ivar Z PoquetteSpain2024-04-04Dorl, James J Esq UNQUALIFIED86Elwin Sharvill
1012Jennifer B DilliardCanada2024-04-09Morlong Associates NEW48Onyama Limba
1013Mayumi X CaudyBrazil2024-04-30Benton, John B Jr RENEWAL98Bernardo Dominic
1014Alejandro A FigeroaItaly2024-04-23Truhlar And Truhlar Attys NEGOTIATION16Anna Fali
1015Smith L WhobreyCanada2024-04-10Feiner Bros PROPOSAL30Ioni Bowcher
1016Wickens W ChuiBrazil2024-04-03Truhlar And Truhlar Attys UNQUALIFIED64Amy Elsner
1017Maria O AlbaresCanada2024-04-20Chanay, Jeffrey A Esq QUALIFIED98Ivan Magalhaes
1018Stacey L FigeroaIndia2024-04-14Rousseaux, Michael Esq UNQUALIFIED75Ivan Magalhaes
1019Costa X FollerAustralia2024-04-13Printing Dimensions QUALIFIED21Elwin Sharvill
1020Aditya T GlickAustralia2024-04-10Chapman, Ross E Esq PROPOSAL42Bernardo Dominic
1021Aika K SlusarskiAustralia2024-04-08Chanay, Jeffrey A Esq PROPOSAL81Xuxue Feng
1022Silvio O TollnerAustralia2024-04-03Rangoni Of Florence RENEWAL35Amy Elsner
1023David J SergiAustralia2024-04-17Rousseaux, Michael Esq NEW85Xuxue Feng
1024Johnson U PerinArgentina2024-04-09Benton, John B Jr QUALIFIED9Stephen Shaw
1025Smith J SchemmerArgentina2024-05-01Printing Dimensions QUALIFIED48Ivan Magalhaes
1026Sinclair R CampainArgentina2024-04-22Morlong Associates PROPOSAL73Stephen Shaw
1027Aditya W DilliardSpain2024-05-01Chemel, James L Cpa NEW33Asiya Javayant
1028Arvin R GillianSpain2024-04-14Rousseaux, Michael Esq UNQUALIFIED88Bernardo Dominic
1029Francesco V KuskoUnited Kingdom2024-04-12Buckley Miller Wright NEGOTIATION47Ioni Bowcher
1030Kadeem Y RutaSpain2024-04-24Feltz Printing Service PROPOSAL44Xuxue Feng
1031Ricardo Y GarufiRussia2024-04-17Morlong Associates QUALIFIED58Stephen Shaw
1032Antonio H PoquetteJapan2024-04-21Rousseaux, Michael Esq RENEWAL25Amy Elsner
1033Alejandro Y BologniaBrazil2024-04-11Rousseaux, Michael Esq QUALIFIED7Stephen Shaw
1034Leon K MaletArgentina2024-04-22Chemel, James L Cpa RENEWAL56Amy Elsner
1035Ricardo L FlosiItaly2024-05-01King, Christopher A Esq NEW49Stephen Shaw
1036Cody T TollnerRussia2024-04-15Dorl, James J Esq QUALIFIED73Anna Fali
1037Cody G MorascaArgentina2024-04-11Benton, John B Jr PROPOSAL98Elwin Sharvill
1038Kadeem G BowleyBrazil2024-05-01Feltz Printing Service PROPOSAL34Stephen Shaw
1039Isabel P ChuiAustralia2024-04-28King, Christopher A Esq QUALIFIED38Ivan Magalhaes
1040Maisha Q NickaRussia2024-05-02Benton, John B Jr UNQUALIFIED1Amy Elsner
1041Morrow W DoeIndia2024-04-19Feltz Printing Service QUALIFIED63Stephen Shaw
1042Jennifer K DilliardGermany2024-04-05Rangoni Of Florence NEGOTIATION23Elwin Sharvill
1043Aruna H OstroskyFrance2024-04-26Chemel, James L Cpa NEGOTIATION74Anna Fali
1044Clifford N WieserSpain2024-04-18Feltz Printing Service NEGOTIATION38Ivan Magalhaes
1045Emily K BriddickSpain2024-04-12Chanay, Jeffrey A Esq QUALIFIED12Bernardo Dominic
1046Tony C NickaIndia2024-04-30Printing Dimensions RENEWAL91Ioni Bowcher
1047Aika C MaletFrance2024-04-15Buckley Miller Wright PROPOSAL2Elwin Sharvill
1048Munro X TollnerJapan2024-04-05Feiner Bros UNQUALIFIED48Anna Fali
1049Costa O DilliardSpain2024-04-09Feltz Printing Service NEW76Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Alejandro K MaletArgentinaAnna Fali UNQUALIFIED
Munro G FerenczBrazilAsiya Javayant QUALIFIED
Leon H GillianSpainXuxue Feng RENEWAL
Clifford B GillianRussiaAsiya Javayant PROPOSAL
Nicolas H GarufiRussiaAmy Elsner NEGOTIATION
Octavia P ShinkoArgentinaStephen Shaw UNQUALIFIED
Kaitlin G SlusarskiRussiaAnna Fali RENEWAL
Ivar V NickaIndiaBernardo Dominic NEW
Francesco Y AlbaresItalyStephen Shaw PROPOSAL
Ricardo W MaletBrazilAmy Elsner NEGOTIATION
Kadeem X CampainIndiaElwin Sharvill QUALIFIED
Munro C BologniaAustraliaAnna Fali RENEWAL
Isabel I InouyeArgentinaBernardo Dominic PROPOSAL
Ricardo G FerenczAustraliaIvan Magalhaes QUALIFIED
Arvin M MaletAustraliaAnna Fali PROPOSAL
Mujtaba A AmigonSpainAmy Elsner UNQUALIFIED
Antonio H DilliardIndiaIoni Bowcher PROPOSAL
Smith X RulapaughRussiaOnyama Limba UNQUALIFIED
Antonio H DarakjyUnited KingdomAmy Elsner UNQUALIFIED
Maria E BriddickCanadaBernardo Dominic NEGOTIATION
Greenwood X FollerGermanyXuxue Feng RENEWAL
Francesco Z RoysterSpainBernardo Dominic NEGOTIATION
Wickens N SchemmerArgentinaElwin Sharvill QUALIFIED
Francesco V CaldareraJapanElwin Sharvill RENEWAL
Emily S BowleyIndiaElwin Sharvill UNQUALIFIED
Johnson F MarrierFranceAmy Elsner NEW
Cody T MaletCanadaBernardo Dominic RENEWAL
Mayumi U PaprockiItalyOnyama Limba RENEWAL
Deepesh F ShinkoArgentinaAnna Fali NEW
Wickens L StockhamFranceOnyama Limba PROPOSAL
Murillo O StensethRussiaAmy Elsner PROPOSAL
Adams K GarufiBrazilElwin Sharvill RENEWAL
Arvin U IturbideAustraliaAnna Fali QUALIFIED
James J PerinJapanXuxue Feng RENEWAL
Smith K PerinCanadaAsiya Javayant NEW
Rodrigues U SlusarskiAustraliaBernardo Dominic UNQUALIFIED
Faith B GillianArgentinaOnyama Limba NEW
Isabel Y CaudyBrazilAnna Fali NEW
Smith S DilliardFranceOnyama Limba NEW
Clifford S InouyeCanadaBernardo Dominic NEGOTIATION
Johnson L FerenczSpainAnna Fali UNQUALIFIED
Aruna Z MaletRussiaIvan Magalhaes UNQUALIFIED
Julie P GillianSpainElwin Sharvill QUALIFIED
Mayumi W PoquetteSpainAsiya Javayant UNQUALIFIED
Costa U BriddickGermanyAsiya Javayant NEGOTIATION
Mujtaba H InouyeAustraliaXuxue Feng RENEWAL
Alejandro I WaycottJapanAsiya Javayant RENEWAL
Ashley N MaletJapanIvan Magalhaes PROPOSAL
Stacey N BologniaIndiaAsiya Javayant QUALIFIED
Salvatore C VocelkaGermanyAmy Elsner RENEWAL
Frozen Columns
Name
Stacey U Oldroyd
Jennifer E Poquette
Emily N Venere
Isabel P Stockham
Greenwood E Nestle
Izzy Y Darakjy
Clifford Z Ruta
Julie U Oldroyd
Juan I Marrier
Jones J Morasca
Johnson K Malet
Munro X Vocelka
Murillo Q Stenseth
Emily G Venere
Leon I Bolognia
Ivar O Schemmer
Clifford P Amigon
Francesco S Whobrey
Aika Q Shinko
Munro T Ruta
Aika K Kolmetz
Stacey M Bowley
David A Shinko
Arvin J Butt
Mujtaba X Sergi
Salvatore K Tollner
Emily O Tollner
Jones B Nestle
Tony Y Gillian
Kaitlin C Malet
Julie T Saylors
Izzy E Tollner
Kadeem Y Poquette
Izzy U Vocelka
Nicolas G Iturbide
Jefferson V Malet
Aditya F Shinko
Jennifer T Saylors
Ivar Z Campain
Francesco J Stockham
Jennifer T Maclead
Morrow O Nestle
Mayumi A Vocelka
Maisha E Garufi
Morrow O Malet
Juan M Ferencz
Antonio Q Iturbide
Juan I Flosi
Adams D Rim
Sinclair X Maclead
IdCountryDate
1000Japan2024-05-01
1001Canada2024-04-12
1002Argentina2024-04-24
1003Italy2024-04-24
1004Argentina2024-04-15
1005United Kingdom2024-04-05
1006Spain2024-04-10
1007Spain2024-04-08
1008Canada2024-04-23
1009Russia2024-04-23
1010Canada2024-04-03
1011India2024-04-14
1012India2024-04-17
1013United Kingdom2024-04-20
1014United Kingdom2024-04-18
1015Spain2024-04-26
1016Spain2024-04-04
1017Russia2024-04-14
1018Australia2024-04-25
1019Germany2024-05-02
1020Argentina2024-04-20
1021Spain2024-04-23
1022Australia2024-04-26
1023United Kingdom2024-04-16
1024Canada2024-04-11
1025France2024-04-14
1026Japan2024-04-10
1027Japan2024-04-11
1028France2024-04-25
1029Brazil2024-04-22
1030Japan2024-04-24
1031Russia2024-05-02
1032Argentina2024-04-23
1033United Kingdom2024-04-24
1034Spain2024-04-24
1035Australia2024-05-02
1036Brazil2024-04-05
1037Russia2024-04-04
1038Argentina2024-04-10
1039Argentina2024-04-26
1040United Kingdom2024-04-05
1041India2024-04-07
1042Russia2024-04-04
1043Italy2024-04-07
1044United Kingdom2024-04-24
1045United Kingdom2024-04-27
1046Italy2024-04-28
1047India2024-04-28
1048Canada2024-04-22
1049United Kingdom2024-04-14

On-Demand Data

NameIdCountryDate
Faith S Paprocki1000United Kingdom2024-04-29
James L Morasca1001Spain2024-04-04
Mayumi N Foller1002United Kingdom2024-04-15
Mujtaba W Whobrey1003Germany2024-04-22
Kaitlin U Rim1004Germany2024-04-24
Munro J Paprocki1005Spain2024-04-06
Sinclair A Sergi1006Brazil2024-04-12
Maisha Z Gillian1007Spain2024-04-03
Antonio E Perin1008Australia2024-04-28
Nicolas I Butt1009Canada2024-04-27
Ivar S Tollner1010Italy2024-04-20
Mayumi T Bolognia1011Argentina2024-04-06
Aditya R Figeroa1012Brazil2024-04-15
Murillo D Marrier1013Canada2024-04-19
Emily D Venere1014India2024-04-06
Darci M Doe1015Germany2024-04-10
Clifford P Slusarski1016Argentina2024-04-21
Cody B Tollner1017United Kingdom2024-04-28
Adams K Chui1018Japan2024-05-02
Maisha A Bolognia1019Brazil2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan H OldroydFranceStephen Shaw NEGOTIATION
Jeanfrancois E BowleyFranceAnna Fali PROPOSAL
Morrow K MaletItalyXuxue Feng RENEWAL
David A VenereIndiaXuxue Feng NEW
Chavez B PerinSpainElwin Sharvill RENEWAL
Kadeem P RimUnited KingdomStephen Shaw NEGOTIATION
Mayumi T FerenczUnited KingdomIoni Bowcher NEGOTIATION
Jeanfrancois F FerenczFranceOnyama Limba QUALIFIED
Smith W TollnerUnited KingdomAnna Fali UNQUALIFIED
Ashley Q FigeroaIndiaIoni Bowcher PROPOSAL
Ashley X PoquetteArgentinaAsiya Javayant UNQUALIFIED
Juan O RulapaughArgentinaAmy Elsner NEGOTIATION
Julie J AmigonGermanyAsiya Javayant PROPOSAL
Johnson O TollnerUnited KingdomAmy Elsner NEGOTIATION
Aditya E OstroskyArgentinaBernardo Dominic NEW
Leon N FlosiFranceOnyama Limba QUALIFIED
Smith H GarufiAustraliaAnna Fali UNQUALIFIED
Ricardo Z SchemmerItalyStephen Shaw NEGOTIATION
Stacey Z RimItalyIvan Magalhaes NEGOTIATION
Jeanfrancois G VenereRussiaBernardo Dominic RENEWAL
Ashley S BriddickAustraliaAsiya Javayant UNQUALIFIED
Sinclair R AlbaresArgentinaElwin Sharvill UNQUALIFIED
Tony O KolmetzFranceXuxue Feng NEW
Jefferson N BowleySpainIoni Bowcher UNQUALIFIED
Salvatore A StensethItalyIvan Magalhaes RENEWAL
Murillo V RoysterGermanyAmy Elsner PROPOSAL
Faith M MarrierItalyBernardo Dominic NEW
Greenwood O DilliardItalyAmy Elsner UNQUALIFIED
Juan J SergiGermanyAnna Fali NEW
Mayumi T PaprockiItalyOnyama Limba PROPOSAL
Wickens M PerinRussiaOnyama Limba NEGOTIATION
Ivar C VocelkaItalyBernardo Dominic QUALIFIED
Isabel K StockhamUnited KingdomIvan Magalhaes RENEWAL
Maria F AmigonUnited KingdomStephen Shaw PROPOSAL
Jennifer D BologniaUnited KingdomIoni Bowcher NEGOTIATION
Kadeem E CaldareraUnited KingdomStephen Shaw UNQUALIFIED
Costa L DoeArgentinaAmy Elsner NEGOTIATION
Faith F NickaJapanElwin Sharvill NEW
Wickens R KolmetzUnited KingdomAnna Fali UNQUALIFIED
Sinclair C MorascaUnited KingdomIoni Bowcher NEGOTIATION

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