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
Johnson H BologniaCanadaBernardo Dominic NEW
Francesco T InouyeIndiaAmy Elsner NEGOTIATION
Johnson O DoeItalyIoni Bowcher RENEWAL
Aditya X WaycottItalyStephen Shaw RENEWAL
James Z FigeroaFranceIvan Magalhaes PROPOSAL
Munro F AmigonFranceOnyama Limba NEW
Darci X GillianUnited KingdomAmy Elsner RENEWAL
Clifford C KolmetzArgentinaIvan Magalhaes QUALIFIED
James B StensethRussiaAnna Fali PROPOSAL
Izzy A MarrierFranceElwin Sharvill NEW
Juan J RoysterRussiaBernardo Dominic NEGOTIATION
Octavia C StensethAustraliaStephen Shaw NEW
Sinclair D MaletFranceIvan Magalhaes NEW
Alejandro M StockhamFranceXuxue Feng RENEWAL
Murillo F SaylorsUnited KingdomXuxue Feng NEW
Aditya L GauchoRussiaIoni Bowcher NEGOTIATION
Aika S StensethRussiaXuxue Feng NEGOTIATION
Jennifer Y PaprockiCanadaOnyama Limba NEW
Arvin Q SergiRussiaStephen Shaw PROPOSAL
Jefferson O ChuiArgentinaIvan Magalhaes QUALIFIED
Kaitlin J GarufiUnited KingdomXuxue Feng PROPOSAL
Julie Z DarakjyCanadaElwin Sharvill QUALIFIED
Cody K GlickItalyXuxue Feng NEGOTIATION
Munro M SlusarskiUnited KingdomIoni Bowcher NEGOTIATION
Mujtaba U SaylorsCanadaXuxue Feng UNQUALIFIED
Izzy I GlickItalyXuxue Feng PROPOSAL
Emily J MacleadAustraliaIoni Bowcher PROPOSAL
Nicolas Y MacleadIndiaIoni Bowcher NEGOTIATION
Cody O DoeIndiaOnyama Limba NEW
Aditya N FlosiFranceElwin Sharvill UNQUALIFIED
Arvin A KolmetzGermanyBernardo Dominic NEW
Leon P WieserArgentinaOnyama Limba UNQUALIFIED
Adams B RimAustraliaIvan Magalhaes UNQUALIFIED
Alejandro S PerinSpainOnyama Limba PROPOSAL
Leja W StensethIndiaAsiya Javayant RENEWAL
Aditya Y CaldareraGermanyXuxue Feng PROPOSAL
Kaitlin N MaletItalyIoni Bowcher QUALIFIED
Mayumi Z NickaUnited KingdomIoni Bowcher QUALIFIED
Misaki J AlbaresRussiaBernardo Dominic UNQUALIFIED
Mayumi M KuskoSpainOnyama Limba UNQUALIFIED
Julie N InouyeJapanAsiya Javayant PROPOSAL
Leon N SergiItalyAnna Fali RENEWAL
Mayumi O RoysterIndiaAnna Fali NEW
Morrow P StockhamItalyAnna Fali UNQUALIFIED
Isabel P MaletBrazilOnyama Limba QUALIFIED
Chavez V GauchoUnited KingdomAmy Elsner UNQUALIFIED
Aika J FlosiItalyAnna Fali RENEWAL
Adams G NestleGermanyElwin Sharvill NEGOTIATION
Chavez M FerenczIndiaAmy Elsner NEW
Leon K CaldareraGermanyIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Francesco B StockhamArgentinaOnyama Limba UNQUALIFIED
Greenwood P WaycottRussiaIvan Magalhaes NEW
Clifford Y WaycottCanadaAmy Elsner UNQUALIFIED
Jennifer E MorascaBrazilAnna Fali NEGOTIATION
Claire T SchemmerGermanyAsiya Javayant PROPOSAL
Misaki M GillianCanadaAsiya Javayant PROPOSAL
Morrow P WieserBrazilAnna Fali NEW
Cody U DarakjySpainElwin Sharvill NEGOTIATION
Isabel C SchemmerFranceIvan Magalhaes QUALIFIED
Costa L DoeFranceStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba O BowleyItaly2024-02-20Benton, John B Jr QUALIFIED2Xuxue Feng
1001Adams H DilliardItaly2024-02-19Feltz Printing Service PROPOSAL24Stephen Shaw
1002Greenwood D MaletBrazil2024-03-03Chanay, Jeffrey A Esq QUALIFIED82Anna Fali
1003Jennifer W VocelkaFrance2024-02-21Feiner Bros NEGOTIATION53Asiya Javayant
1004Adams V GlickIndia2024-03-11Chanay, Jeffrey A Esq UNQUALIFIED42Bernardo Dominic
1005Morrow F RutaGermany2024-03-11Chanay, Jeffrey A Esq NEW65Ioni Bowcher
1006Tony H ButtUnited Kingdom2024-03-08Chanay, Jeffrey A Esq PROPOSAL73Xuxue Feng
1007Julie U RutaJapan2024-03-10Chanay, Jeffrey A Esq NEGOTIATION60Xuxue Feng
1008Darci K GauchoSpain2024-03-16King, Christopher A Esq UNQUALIFIED10Onyama Limba
1009Darci C OldroydRussia2024-03-15Feiner Bros PROPOSAL41Bernardo Dominic
1010Silvio B WaycottIndia2024-02-21Printing Dimensions RENEWAL91Ivan Magalhaes
1011Claire Q CaudyFrance2024-03-04Commercial Press NEGOTIATION47Stephen Shaw
1012David Q GlickItaly2024-03-13Dorl, James J Esq QUALIFIED2Xuxue Feng
1013Claire Z PaprockiBrazil2024-03-17Chemel, James L Cpa UNQUALIFIED50Onyama Limba
1014Clifford R RoysterJapan2024-03-06Commercial Press UNQUALIFIED6Bernardo Dominic
1015Tony J WhobreyArgentina2024-02-23Printing Dimensions RENEWAL61Anna Fali
1016Octavia H MorascaUnited Kingdom2024-03-14King, Christopher A Esq NEGOTIATION74Anna Fali
1017Nicolas R RulapaughUnited Kingdom2024-02-19Feltz Printing Service RENEWAL77Amy Elsner
1018Silvio Z IturbideAustralia2024-02-25Chanay, Jeffrey A Esq RENEWAL99Amy Elsner
1019Aditya P PaprockiCanada2024-02-29Morlong Associates QUALIFIED13Asiya Javayant
1020Emily D ShinkoArgentina2024-03-01Rousseaux, Michael Esq NEW45Ivan Magalhaes
1021Adams U FollerUnited Kingdom2024-03-01Truhlar And Truhlar Attys NEGOTIATION34Asiya Javayant
1022Stacey U MaletJapan2024-03-06King, Christopher A Esq PROPOSAL60Ioni Bowcher
1023Tony W StockhamIndia2024-03-14Truhlar And Truhlar Attys PROPOSAL59Asiya Javayant
1024Jeanfrancois O GauchoSpain2024-02-19King, Christopher A Esq NEGOTIATION1Ivan Magalhaes
1025Deepesh C ButtAustralia2024-02-27Dorl, James J Esq PROPOSAL15Ioni Bowcher
1026Clifford I MacleadIndia2024-03-01Benton, John B Jr NEGOTIATION41Elwin Sharvill
1027Juan N CaldareraArgentina2024-02-25Rangoni Of Florence NEGOTIATION11Elwin Sharvill
1028Silvio F StensethUnited Kingdom2024-02-29Chemel, James L Cpa QUALIFIED25Ivan Magalhaes
1029Jeanfrancois Z DoeSpain2024-03-14Feltz Printing Service NEW97Xuxue Feng
1030Arvin J MacleadItaly2024-02-26Commercial Press UNQUALIFIED71Ioni Bowcher
1031Greenwood L SlusarskiUnited Kingdom2024-03-01Commercial Press RENEWAL64Xuxue Feng
1032Chavez L RutaJapan2024-03-06Chemel, James L Cpa UNQUALIFIED30Ivan Magalhaes
1033Arvin O CampainSpain2024-02-22Buckley Miller Wright NEW5Onyama Limba
1034Francesco B MacleadBrazil2024-03-09Morlong Associates RENEWAL40Amy Elsner
1035Julie B SchemmerSpain2024-02-18Feiner Bros UNQUALIFIED58Anna Fali
1036Adams B FerenczUnited Kingdom2024-03-02Rousseaux, Michael Esq NEW54Onyama Limba
1037Juan K MarrierBrazil2024-03-17Commercial Press NEGOTIATION23Bernardo Dominic
1038Jones C MaletCanada2024-02-22Chapman, Ross E Esq UNQUALIFIED22Bernardo Dominic
1039Faith F PoquetteAustralia2024-03-03Chemel, James L Cpa QUALIFIED38Stephen Shaw
1040Misaki P AmigonJapan2024-03-07Chapman, Ross E Esq RENEWAL79Stephen Shaw
1041Adams S PerinIndia2024-03-06Chapman, Ross E Esq RENEWAL33Xuxue Feng
1042Faith C TollnerSpain2024-03-01Truhlar And Truhlar Attys PROPOSAL11Ioni Bowcher
1043Isabel R RulapaughJapan2024-03-10Commercial Press UNQUALIFIED18Xuxue Feng
1044Octavia Z VenereArgentina2024-03-11Buckley Miller Wright NEW51Elwin Sharvill
1045Chavez E TollnerGermany2024-03-17Chemel, James L Cpa PROPOSAL9Xuxue Feng
1046Adams Z DilliardRussia2024-03-18Benton, John B Jr QUALIFIED54Asiya Javayant
1047Salvatore G AlbaresCanada2024-03-12Truhlar And Truhlar Attys UNQUALIFIED15Xuxue Feng
1048Salvatore I GlickItaly2024-03-02Morlong Associates NEGOTIATION32Stephen Shaw
1049James Z FerenczBrazil2024-02-21Benton, John B Jr RENEWAL63Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Adams J CaudyIndiaIvan Magalhaes NEGOTIATION
Greenwood L WieserItalyAsiya Javayant QUALIFIED
Salvatore T RulapaughArgentinaBernardo Dominic NEGOTIATION
Chavez A StockhamFranceIoni Bowcher NEW
Maria X ButtFranceAsiya Javayant RENEWAL
Aditya P VenereJapanAnna Fali QUALIFIED
Izzy B OldroydItalyAmy Elsner UNQUALIFIED
David U BriddickCanadaBernardo Dominic UNQUALIFIED
Faith A SchemmerBrazilElwin Sharvill PROPOSAL
Leja C RimFranceElwin Sharvill PROPOSAL
Smith I CaldareraSpainIoni Bowcher NEGOTIATION
Ricardo Q NickaJapanAmy Elsner QUALIFIED
Ricardo Y IturbideArgentinaBernardo Dominic UNQUALIFIED
Aruna E PoquetteRussiaIvan Magalhaes UNQUALIFIED
Clifford X GarufiFranceStephen Shaw PROPOSAL
Julie R MaletAustraliaStephen Shaw UNQUALIFIED
Kaitlin I FigeroaAustraliaStephen Shaw PROPOSAL
Clifford D WaycottSpainBernardo Dominic NEGOTIATION
Juan U FollerSpainBernardo Dominic NEW
Mujtaba R ButtGermanyElwin Sharvill NEW
Nicolas X WhobreyUnited KingdomXuxue Feng NEW
Kaitlin B StockhamGermanyIoni Bowcher RENEWAL
Kadeem K GillianIndiaAmy Elsner NEGOTIATION
Misaki G GarufiIndiaElwin Sharvill QUALIFIED
Emily V ShinkoFranceAnna Fali UNQUALIFIED
Nicolas H PerinAustraliaIvan Magalhaes QUALIFIED
Aruna L InouyeGermanyOnyama Limba UNQUALIFIED
Jefferson T WieserUnited KingdomBernardo Dominic NEW
Ricardo R BologniaFranceAnna Fali UNQUALIFIED
Cody C BriddickGermanyAnna Fali NEW
Murillo L WaycottItalyAmy Elsner QUALIFIED
Kaitlin D RoysterArgentinaAmy Elsner NEGOTIATION
Wickens E MaletCanadaAmy Elsner QUALIFIED
Mayumi K FollerFranceIoni Bowcher RENEWAL
Nicolas U RulapaughCanadaAnna Fali NEGOTIATION
Salvatore T MorascaArgentinaIvan Magalhaes NEGOTIATION
Deepesh Z ButtRussiaElwin Sharvill NEW
Salvatore Y WhobreyAustraliaElwin Sharvill PROPOSAL
Ricardo L BologniaJapanIvan Magalhaes RENEWAL
Faith L GillianUnited KingdomOnyama Limba NEGOTIATION
Nicolas L DarakjyIndiaElwin Sharvill PROPOSAL
Kadeem V BriddickFranceXuxue Feng UNQUALIFIED
Nicolas K CaldareraCanadaAmy Elsner NEGOTIATION
Ricardo I MarrierItalyXuxue Feng PROPOSAL
Leja C RutaUnited KingdomOnyama Limba RENEWAL
Faith Y ChuiSpainElwin Sharvill UNQUALIFIED
Johnson I CaldareraItalyElwin Sharvill UNQUALIFIED
Faith C FollerUnited KingdomStephen Shaw RENEWAL
Clifford V RoysterIndiaOnyama Limba RENEWAL
Mayumi L RoysterAustraliaAsiya Javayant PROPOSAL
Frozen Columns
Name
Nicolas G Stenseth
Rodrigues M Gaucho
Jeanfrancois H Briddick
Francesco V Garufi
Tony L Stockham
Aruna O Ruta
Kaitlin L Kusko
Munro P Ruta
Cody Z Saylors
James G Venere
Cody K Foller
Izzy J Ostrosky
James B Iturbide
Salvatore K Ruta
Darci P Perin
Mujtaba U Bowley
Ivar X Flosi
Francesco F Darakjy
Mujtaba H Perin
Stacey C Stenseth
Stacey J Garufi
Cody J Inouye
Tony Q Perin
Aditya M Garufi
Emily D Flosi
Tony B Inouye
Murillo V Gaucho
Jefferson O Paprocki
Alejandro E Doe
Francesco V Stockham
Izzy R Saylors
Munro I Doe
Antonio V Chui
Misaki B Malet
Leon K Nestle
David T Foller
Isabel A Ferencz
James P Poquette
Tony G Kolmetz
Aruna P Ruta
Stacey C Foller
Alejandro S Schemmer
Smith D Paprocki
Kadeem I Ostrosky
Munro N Garufi
Wickens T Rulapaugh
Darci I Caudy
Antonio L Bolognia
Adams J Doe
Tony G Malet
IdCountryDate
1000Australia2024-03-12
1001Italy2024-03-12
1002Russia2024-02-19
1003Germany2024-02-25
1004Australia2024-03-04
1005Japan2024-03-07
1006India2024-02-20
1007Canada2024-03-16
1008Italy2024-03-17
1009India2024-02-29
1010United Kingdom2024-02-21
1011Australia2024-03-11
1012Germany2024-02-18
1013Canada2024-02-29
1014Japan2024-03-06
1015Japan2024-03-04
1016Brazil2024-02-25
1017Spain2024-03-12
1018Argentina2024-03-17
1019Russia2024-02-29
1020Australia2024-02-19
1021Australia2024-03-15
1022Italy2024-02-20
1023Australia2024-03-06
1024United Kingdom2024-02-24
1025Canada2024-03-08
1026Spain2024-02-23
1027Italy2024-03-14
1028Argentina2024-02-18
1029France2024-03-15
1030Russia2024-03-09
1031Brazil2024-03-06
1032Brazil2024-02-18
1033Spain2024-02-24
1034Spain2024-02-26
1035Australia2024-02-19
1036Canada2024-03-17
1037France2024-03-11
1038Germany2024-03-10
1039United Kingdom2024-02-24
1040Japan2024-02-18
1041India2024-02-29
1042Spain2024-03-16
1043Argentina2024-02-20
1044India2024-03-09
1045Argentina2024-03-05
1046France2024-03-07
1047Australia2024-02-19
1048Spain2024-03-02
1049Brazil2024-03-08

On-Demand Data

NameIdCountryDate
Silvio R Marrier1000India2024-03-15
Kadeem Q Campain1001Canada2024-03-07
Smith U Whobrey1002United Kingdom2024-03-17
Emily D Inouye1003Italy2024-03-14
Ashley O Flosi1004Russia2024-03-11
Smith Z Schemmer1005Italy2024-03-09
Murillo G Perin1006Spain2024-02-25
Smith X Stockham1007Argentina2024-02-23
Sinclair B Oldroyd1008Australia2024-03-01
Kadeem H Oldroyd1009Canada2024-02-23
Clifford E Schemmer1010United Kingdom2024-03-18
Clifford R Poquette1011Brazil2024-03-16
Leja O Malet1012United Kingdom2024-02-22
Aditya D Chui1013Japan2024-02-28
Chavez O Albares1014Canada2024-03-17
Misaki Y Chui1015Japan2024-02-29
Juan Y Amigon1016United Kingdom2024-03-03
Kaitlin I Saylors1017India2024-03-07
Izzy Z Royster1018Argentina2024-03-13
Silvio C Inouye1019Australia2024-03-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin I InouyeGermanyXuxue Feng RENEWAL
Morrow E DilliardBrazilBernardo Dominic QUALIFIED
Jefferson Q RoysterJapanAnna Fali PROPOSAL
Isabel A CampainAustraliaAsiya Javayant PROPOSAL
Octavia N SchemmerGermanyOnyama Limba QUALIFIED
Octavia W DarakjyJapanAsiya Javayant QUALIFIED
Claire M BowleyUnited KingdomElwin Sharvill UNQUALIFIED
Ashley P KuskoJapanElwin Sharvill UNQUALIFIED
Maisha M TollnerUnited KingdomAmy Elsner QUALIFIED
Faith S VocelkaArgentinaXuxue Feng UNQUALIFIED
James O FollerAustraliaAsiya Javayant RENEWAL
David D RutaSpainBernardo Dominic RENEWAL
Johnson E OldroydCanadaStephen Shaw NEW
Claire H IturbideUnited KingdomAmy Elsner QUALIFIED
Adams P GlickAustraliaElwin Sharvill NEW
Adams N MarrierFranceAsiya Javayant NEW
Silvio V WaycottIndiaElwin Sharvill NEGOTIATION
Adams L VocelkaRussiaIvan Magalhaes UNQUALIFIED
Maria Q StockhamSpainIoni Bowcher UNQUALIFIED
Francesco Q ButtBrazilElwin Sharvill QUALIFIED
Greenwood J SlusarskiRussiaOnyama Limba NEGOTIATION
Darci H SchemmerFranceBernardo Dominic UNQUALIFIED
Jones V VocelkaUnited KingdomIoni Bowcher UNQUALIFIED
Jennifer R WhobreySpainXuxue Feng UNQUALIFIED
Johnson O WhobreyCanadaOnyama Limba PROPOSAL
Wickens I ButtIndiaIoni Bowcher RENEWAL
Kaitlin J WhobreyGermanyXuxue Feng NEGOTIATION
Silvio R NestleArgentinaIvan Magalhaes RENEWAL
Deepesh M ButtSpainBernardo Dominic QUALIFIED
Cody B KolmetzArgentinaAsiya Javayant RENEWAL
Claire W AlbaresSpainAnna Fali UNQUALIFIED
Aruna M VocelkaUnited KingdomBernardo Dominic NEW
Juan P MacleadIndiaIoni Bowcher PROPOSAL
Wickens M RulapaughFranceOnyama Limba RENEWAL
Deepesh H CaldareraCanadaAnna Fali UNQUALIFIED
Chavez G SaylorsItalyElwin Sharvill NEGOTIATION
Aruna Z InouyeJapanAsiya Javayant NEGOTIATION
Izzy A ChuiUnited KingdomIoni Bowcher UNQUALIFIED
Smith E MaletRussiaIoni Bowcher NEGOTIATION
Deepesh V ButtBrazilBernardo Dominic QUALIFIED

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