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
Leon R PerinFranceXuxue Feng UNQUALIFIED
Johnson M FlosiJapanAnna Fali NEW
Jennifer D MacleadCanadaElwin Sharvill RENEWAL
Leon R BriddickJapanIvan Magalhaes NEW
Adams H IturbideBrazilIoni Bowcher QUALIFIED
Adams J GarufiArgentinaStephen Shaw NEGOTIATION
Emily Q ShinkoSpainOnyama Limba RENEWAL
Costa A PaprockiAustraliaAmy Elsner UNQUALIFIED
Aika D BriddickItalyBernardo Dominic RENEWAL
Aika F BologniaSpainAsiya Javayant UNQUALIFIED
Leja C VocelkaRussiaElwin Sharvill RENEWAL
Francesco N MacleadItalyStephen Shaw PROPOSAL
Aditya S SaylorsRussiaAmy Elsner RENEWAL
Emily S MaletFranceBernardo Dominic RENEWAL
Ashley L TollnerUnited KingdomAsiya Javayant RENEWAL
Aruna O PoquetteBrazilAnna Fali UNQUALIFIED
Rodrigues V VenereItalyElwin Sharvill UNQUALIFIED
Misaki M BriddickRussiaXuxue Feng NEW
Leja A PaprockiArgentinaOnyama Limba UNQUALIFIED
Wickens X BowleyCanadaAnna Fali NEW
Tony C TollnerCanadaOnyama Limba RENEWAL
Munro K WhobreyItalyAsiya Javayant RENEWAL
Juan R AmigonArgentinaIvan Magalhaes QUALIFIED
Munro N AlbaresJapanBernardo Dominic RENEWAL
Salvatore P CaldareraBrazilXuxue Feng QUALIFIED
Sinclair A PerinArgentinaElwin Sharvill PROPOSAL
Smith L BriddickSpainIoni Bowcher QUALIFIED
Jefferson B AlbaresUnited KingdomIoni Bowcher RENEWAL
Sinclair P MarrierArgentinaAnna Fali UNQUALIFIED
James O GarufiGermanyOnyama Limba PROPOSAL
Ricardo R BologniaRussiaAnna Fali PROPOSAL
Silvio A IturbideRussiaAnna Fali UNQUALIFIED
Greenwood R BowleySpainOnyama Limba QUALIFIED
James U IturbideBrazilStephen Shaw NEW
Ashley N WaycottRussiaIvan Magalhaes NEW
Isabel Q RoysterJapanIvan Magalhaes NEW
James J StockhamCanadaAsiya Javayant PROPOSAL
Maria M IturbideItalyIoni Bowcher RENEWAL
Wickens U AlbaresSpainAsiya Javayant QUALIFIED
Chavez R MaletSpainStephen Shaw UNQUALIFIED
Salvatore S CaudyItalyOnyama Limba RENEWAL
Jennifer U OstroskyRussiaOnyama Limba RENEWAL
Johnson V BriddickUnited KingdomAsiya Javayant QUALIFIED
Salvatore W CaudyJapanStephen Shaw PROPOSAL
Sinclair R KolmetzIndiaAnna Fali NEGOTIATION
Greenwood A BologniaUnited KingdomBernardo Dominic NEW
Greenwood R CampainCanadaAnna Fali QUALIFIED
Ivar K WieserFranceXuxue Feng QUALIFIED
Ivar X OldroydItalyXuxue Feng PROPOSAL
Aika X GarufiFranceElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Misaki U MorascaJapanIvan Magalhaes UNQUALIFIED
Antonio C GarufiAustraliaAmy Elsner UNQUALIFIED
Cody K StensethUnited KingdomXuxue Feng UNQUALIFIED
Jefferson T DoeIndiaBernardo Dominic PROPOSAL
Alejandro D FlosiJapanXuxue Feng RENEWAL
Aditya U ChuiFranceAsiya Javayant NEW
Adams Y OstroskyFranceElwin Sharvill QUALIFIED
Murillo P MorascaUnited KingdomElwin Sharvill NEW
James Z IturbideJapanIvan Magalhaes NEW
Silvio Q GarufiArgentinaXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon R GarufiJapan2024-04-21Dorl, James J Esq UNQUALIFIED1Anna Fali
1001Jennifer V AlbaresUnited Kingdom2024-04-21Chapman, Ross E Esq NEW12Bernardo Dominic
1002Jeanfrancois L GauchoCanada2024-04-20Benton, John B Jr PROPOSAL60Asiya Javayant
1003Cody Y MaletBrazil2024-04-01Buckley Miller Wright UNQUALIFIED27Asiya Javayant
1004James N StockhamUnited Kingdom2024-04-07Buckley Miller Wright NEW38Elwin Sharvill
1005Jeanfrancois Q RutaFrance2024-04-26Buckley Miller Wright QUALIFIED76Asiya Javayant
1006Silvio A KolmetzItaly2024-04-15Chemel, James L Cpa NEGOTIATION54Amy Elsner
1007Kaitlin W ShinkoSpain2024-04-10Rousseaux, Michael Esq QUALIFIED30Onyama Limba
1008Maria F KuskoJapan2024-04-04Chapman, Ross E Esq RENEWAL17Xuxue Feng
1009Izzy X FigeroaCanada2024-04-17Commercial Press QUALIFIED42Bernardo Dominic
1010Greenwood D SlusarskiItaly2024-04-16Feltz Printing Service NEGOTIATION83Elwin Sharvill
1011Juan Y PaprockiCanada2024-04-22Rangoni Of Florence NEGOTIATION14Amy Elsner
1012Leja T SaylorsIndia2024-04-11Dorl, James J Esq QUALIFIED49Asiya Javayant
1013Alejandro I OstroskyRussia2024-04-28Rangoni Of Florence QUALIFIED79Ioni Bowcher
1014Misaki Q CaudyRussia2024-04-20Buckley Miller Wright RENEWAL2Ivan Magalhaes
1015Stacey K CampainJapan2024-04-08Feiner Bros NEGOTIATION86Ioni Bowcher
1016Kadeem K RutaAustralia2024-04-10Buckley Miller Wright UNQUALIFIED52Ioni Bowcher
1017Julie C RoysterGermany2024-04-06Truhlar And Truhlar Attys RENEWAL88Bernardo Dominic
1018Wickens Z MorascaBrazil2024-04-11Feltz Printing Service UNQUALIFIED93Ioni Bowcher
1019Misaki B ChuiFrance2024-04-14Rangoni Of Florence QUALIFIED83Anna Fali
1020Juan F AlbaresCanada2024-04-08Benton, John B Jr QUALIFIED24Bernardo Dominic
1021Juan I CampainArgentina2024-04-04King, Christopher A Esq QUALIFIED80Ivan Magalhaes
1022Stacey M RutaBrazil2024-04-05Chanay, Jeffrey A Esq PROPOSAL63Amy Elsner
1023Rodrigues D MacleadRussia2024-04-18Morlong Associates QUALIFIED27Asiya Javayant
1024Antonio P TollnerBrazil2024-04-12Feltz Printing Service UNQUALIFIED27Asiya Javayant
1025Jones Q AmigonArgentina2024-04-21King, Christopher A Esq NEGOTIATION74Ivan Magalhaes
1026Cody Z MaletIndia2024-04-19Chanay, Jeffrey A Esq NEGOTIATION12Asiya Javayant
1027Leja I RimRussia2024-03-30Printing Dimensions QUALIFIED4Anna Fali
1028Chavez G AlbaresAustralia2024-04-15Truhlar And Truhlar Attys RENEWAL50Asiya Javayant
1029Aditya D BriddickBrazil2024-04-22Chemel, James L Cpa NEW41Xuxue Feng
1030Jefferson Q KolmetzRussia2024-03-30Commercial Press UNQUALIFIED50Ivan Magalhaes
1031Emily X CampainItaly2024-04-07King, Christopher A Esq PROPOSAL60Asiya Javayant
1032Nicolas B RulapaughCanada2024-04-10Feiner Bros NEGOTIATION26Ivan Magalhaes
1033Kadeem L GauchoFrance2024-04-26King, Christopher A Esq RENEWAL99Asiya Javayant
1034Francesco R SaylorsBrazil2024-04-19Dorl, James J Esq NEGOTIATION29Anna Fali
1035Chavez G MorascaJapan2024-04-04Feiner Bros RENEWAL1Onyama Limba
1036Wickens I AmigonJapan2024-04-12Chapman, Ross E Esq NEGOTIATION15Amy Elsner
1037Faith H WaycottIndia2024-04-02Printing Dimensions RENEWAL39Onyama Limba
1038Salvatore P BowleyArgentina2024-04-03Feiner Bros QUALIFIED30Asiya Javayant
1039Mujtaba G GauchoGermany2024-04-08Chemel, James L Cpa UNQUALIFIED18Bernardo Dominic
1040Maisha C RoysterGermany2024-04-17Commercial Press RENEWAL7Stephen Shaw
1041Smith V OldroydGermany2024-04-28Chanay, Jeffrey A Esq UNQUALIFIED21Ivan Magalhaes
1042Leja W WaycottSpain2024-04-09Chemel, James L Cpa QUALIFIED60Elwin Sharvill
1043Tony K VenereIndia2024-04-09Commercial Press QUALIFIED10Amy Elsner
1044Alejandro R OstroskyJapan2024-04-08Feiner Bros QUALIFIED37Elwin Sharvill
1045Stacey Y OldroydSpain2024-04-14Chanay, Jeffrey A Esq NEW59Onyama Limba
1046Morrow M PoquetteGermany2024-04-27Truhlar And Truhlar Attys NEGOTIATION59Asiya Javayant
1047Maisha P DilliardFrance2024-04-08Dorl, James J Esq QUALIFIED1Ivan Magalhaes
1048Maisha M GlickFrance2024-04-03Dorl, James J Esq NEW91Onyama Limba
1049Jones W PerinAustralia2024-04-15Printing Dimensions QUALIFIED48Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Isabel N FlosiIndiaIoni Bowcher QUALIFIED
Clifford J RoysterSpainIvan Magalhaes QUALIFIED
Alejandro Z OldroydSpainStephen Shaw QUALIFIED
Munro P MacleadGermanyAnna Fali UNQUALIFIED
Emily F DoeBrazilElwin Sharvill PROPOSAL
Stacey L AlbaresSpainStephen Shaw RENEWAL
Leja L RutaBrazilBernardo Dominic PROPOSAL
Aruna Q DoeUnited KingdomIoni Bowcher NEW
Juan E NestleUnited KingdomStephen Shaw RENEWAL
Darci M AmigonFranceAnna Fali PROPOSAL
Arvin P OldroydIndiaXuxue Feng NEW
Jennifer X BologniaUnited KingdomXuxue Feng PROPOSAL
Sinclair J GillianGermanyAnna Fali NEGOTIATION
Jefferson V NickaIndiaAmy Elsner RENEWAL
Johnson A SaylorsCanadaIoni Bowcher NEGOTIATION
Mayumi H RimRussiaXuxue Feng RENEWAL
Isabel Y SaylorsIndiaBernardo Dominic PROPOSAL
Johnson N BologniaGermanyAnna Fali QUALIFIED
Greenwood J StockhamRussiaIvan Magalhaes RENEWAL
Juan K StockhamJapanIvan Magalhaes RENEWAL
Tony R FigeroaJapanXuxue Feng PROPOSAL
Costa N CaldareraRussiaBernardo Dominic NEGOTIATION
Claire V DarakjyUnited KingdomXuxue Feng PROPOSAL
Leja M PerinGermanyStephen Shaw QUALIFIED
Leon C DilliardSpainAmy Elsner UNQUALIFIED
Jennifer I TollnerAustraliaOnyama Limba UNQUALIFIED
Deepesh Z OstroskyFranceXuxue Feng RENEWAL
Nicolas I MaletJapanBernardo Dominic NEW
Chavez L AlbaresAustraliaIvan Magalhaes PROPOSAL
Nicolas I AlbaresArgentinaAmy Elsner PROPOSAL
Clifford Q WaycottSpainAnna Fali UNQUALIFIED
David E DilliardFranceOnyama Limba UNQUALIFIED
Leja M GillianJapanIoni Bowcher PROPOSAL
Ashley O MaletBrazilIvan Magalhaes PROPOSAL
Aruna K StensethRussiaElwin Sharvill NEW
Leon I FlosiIndiaOnyama Limba NEW
Juan Q RulapaughFranceXuxue Feng QUALIFIED
Isabel L GauchoBrazilElwin Sharvill NEW
Octavia U ButtJapanBernardo Dominic PROPOSAL
Mayumi N PaprockiRussiaAnna Fali NEGOTIATION
Arvin H KolmetzUnited KingdomAnna Fali NEW
Rodrigues Q GauchoUnited KingdomIvan Magalhaes QUALIFIED
Mayumi F MaletUnited KingdomIvan Magalhaes NEGOTIATION
Arvin B SchemmerItalyElwin Sharvill UNQUALIFIED
Misaki G GarufiJapanIoni Bowcher QUALIFIED
Ashley R VenereCanadaElwin Sharvill QUALIFIED
Jennifer C GillianGermanyAsiya Javayant NEGOTIATION
Aruna K ButtCanadaXuxue Feng QUALIFIED
Adams X KuskoItalyAnna Fali PROPOSAL
Salvatore X MaletGermanyStephen Shaw QUALIFIED
Frozen Columns
Name
Mayumi G Maclead
Octavia R Paprocki
Jefferson T Vocelka
Kaitlin S Rim
Julie O Nicka
Morrow R Marrier
Jefferson U Dilliard
Mayumi R Inouye
Jones V Caudy
Misaki I Poquette
Ivar C Ferencz
Cody J Schemmer
Octavia U Glick
Maisha H Flosi
Arvin M Garufi
Sinclair T Schemmer
Kadeem O Rulapaugh
Kaitlin S Schemmer
Jeanfrancois W Nestle
Izzy L Rulapaugh
Jennifer Q Stockham
Jeanfrancois J Morasca
Johnson D Amigon
Octavia H Shinko
Sinclair F Figeroa
Mujtaba K Doe
Mayumi S Albares
Smith R Perin
Leja E Maclead
Mayumi O Tollner
Julie A Morasca
Juan F Figeroa
James J Kusko
Jeanfrancois Y Shinko
Maria E Royster
Murillo E Stenseth
Salvatore I Poquette
Francesco T Waycott
Aruna X Wieser
Octavia R Ostrosky
Aruna P Shinko
Maria Z Ferencz
Murillo L Marrier
Misaki P Waycott
Stacey B Venere
Misaki F Darakjy
Misaki B Amigon
Clifford X Kusko
Claire D Rulapaugh
Aika D Dilliard
IdCountryDate
1000France2024-04-05
1001Brazil2024-04-09
1002Spain2024-04-13
1003Germany2024-04-27
1004Spain2024-04-01
1005Germany2024-04-08
1006Russia2024-04-28
1007United Kingdom2024-04-01
1008India2024-04-13
1009Russia2024-04-23
1010United Kingdom2024-04-12
1011Canada2024-04-22
1012Russia2024-04-27
1013France2024-04-05
1014Germany2024-04-25
1015Canada2024-04-25
1016France2024-04-14
1017Brazil2024-04-16
1018Australia2024-04-01
1019Russia2024-04-12
1020France2024-04-18
1021Germany2024-04-24
1022Argentina2024-04-28
1023Spain2024-04-13
1024India2024-04-08
1025Japan2024-04-07
1026Brazil2024-04-08
1027United Kingdom2024-04-21
1028Japan2024-04-02
1029Spain2024-04-04
1030France2024-04-11
1031Australia2024-04-07
1032Russia2024-04-07
1033India2024-04-26
1034Spain2024-03-31
1035Germany2024-04-07
1036United Kingdom2024-04-12
1037Russia2024-04-14
1038Canada2024-04-16
1039Canada2024-04-04
1040United Kingdom2024-04-01
1041Argentina2024-04-27
1042United Kingdom2024-04-12
1043Brazil2024-04-25
1044Italy2024-04-22
1045Russia2024-04-01
1046Italy2024-04-11
1047India2024-04-14
1048Germany2024-04-20
1049Germany2024-04-28

On-Demand Data

NameIdCountryDate
Aika B Ostrosky1000United Kingdom2024-04-17
Mayumi R Morasca1001Spain2024-04-03
Costa U Perin1002Spain2024-03-31
Faith A Darakjy1003Russia2024-04-13
Aika E Tollner1004Australia2024-03-31
Kadeem P Ostrosky1005Australia2024-04-18
Leon B Chui1006United Kingdom2024-04-12
Octavia Q Vocelka1007Canada2024-04-10
Antonio D Vocelka1008Brazil2024-04-17
Octavia A Stenseth1009Japan2024-04-25
Arvin X Kolmetz1010Argentina2024-04-10
Faith F Glick1011Argentina2024-04-18
Clifford R Stenseth1012United Kingdom2024-04-23
Jefferson S Nicka1013Brazil2024-04-18
Ricardo W Malet1014Japan2024-04-19
Kadeem W Campain1015France2024-04-12
Jones V Whobrey1016Australia2024-04-25
Claire O Oldroyd1017Argentina2024-04-07
Mayumi Y Shinko1018Brazil2024-04-20
Murillo Z Marrier1019India2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan O FlosiJapanAsiya Javayant PROPOSAL
Nicolas E SchemmerSpainIoni Bowcher QUALIFIED
Isabel P BriddickRussiaAsiya Javayant UNQUALIFIED
Izzy G WieserFranceXuxue Feng NEGOTIATION
Ivar M StensethUnited KingdomElwin Sharvill NEW
Munro V OldroydAustraliaXuxue Feng PROPOSAL
Antonio G MaletJapanElwin Sharvill PROPOSAL
Kaitlin Y DoeItalyElwin Sharvill RENEWAL
Salvatore F CaudyCanadaOnyama Limba UNQUALIFIED
Sinclair I PoquetteJapanAnna Fali NEW
Leon V GarufiArgentinaOnyama Limba NEW
Stacey G MorascaSpainIvan Magalhaes UNQUALIFIED
Octavia H ChuiUnited KingdomIoni Bowcher NEW
Adams P KolmetzFranceOnyama Limba PROPOSAL
Silvio T VocelkaSpainOnyama Limba NEGOTIATION
Morrow I OstroskySpainAmy Elsner QUALIFIED
Jeanfrancois U PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Salvatore V WaycottArgentinaElwin Sharvill NEW
Julie G SaylorsIndiaAsiya Javayant RENEWAL
Smith J AmigonAustraliaIoni Bowcher UNQUALIFIED
Sinclair J BowleyJapanElwin Sharvill NEW
Juan V ShinkoJapanElwin Sharvill NEW
Munro K AmigonJapanElwin Sharvill NEW
Kadeem Y MarrierUnited KingdomXuxue Feng QUALIFIED
Maria X SchemmerUnited KingdomOnyama Limba UNQUALIFIED
Alejandro U ButtUnited KingdomXuxue Feng NEW
Mujtaba D DoeRussiaBernardo Dominic QUALIFIED
Francesco U GlickArgentinaAnna Fali NEW
Jeanfrancois R CampainItalyStephen Shaw NEGOTIATION
Nicolas O SlusarskiAustraliaElwin Sharvill UNQUALIFIED
Maisha L MaletGermanyAnna Fali UNQUALIFIED
Jones A ShinkoJapanBernardo Dominic RENEWAL
Stacey K RoysterBrazilIoni Bowcher NEW
Salvatore B BriddickSpainIvan Magalhaes RENEWAL
David V SergiGermanyBernardo Dominic PROPOSAL
Arvin Y GauchoFranceBernardo Dominic QUALIFIED
Arvin O InouyeGermanyAnna Fali NEGOTIATION
Francesco Z ButtUnited KingdomIoni Bowcher RENEWAL
Mujtaba I ShinkoBrazilAnna Fali NEGOTIATION
David J AlbaresBrazilXuxue Feng 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>