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
Ivar D MarrierCanadaBernardo Dominic NEW
Jefferson V FigeroaJapanElwin Sharvill QUALIFIED
Clifford X StensethSpainIvan Magalhaes UNQUALIFIED
Kadeem R SaylorsArgentinaAsiya Javayant QUALIFIED
Cody A PoquetteItalyElwin Sharvill NEW
Aditya V OldroydBrazilAnna Fali PROPOSAL
Silvio H StensethArgentinaBernardo Dominic UNQUALIFIED
Stacey Y GlickArgentinaIoni Bowcher NEW
Wickens C SaylorsRussiaIoni Bowcher UNQUALIFIED
Munro D FollerJapanElwin Sharvill QUALIFIED
Alejandro E IturbideItalyAsiya Javayant PROPOSAL
Clifford J MaletBrazilIvan Magalhaes NEW
Morrow K ChuiFranceBernardo Dominic NEW
Costa W FollerSpainElwin Sharvill QUALIFIED
Octavia K MaletSpainBernardo Dominic NEW
Isabel Z OstroskyGermanyStephen Shaw RENEWAL
Johnson B StockhamSpainAsiya Javayant NEGOTIATION
Salvatore T WaycottCanadaAsiya Javayant NEGOTIATION
Kadeem J PerinCanadaElwin Sharvill NEW
Sinclair P NestleCanadaIvan Magalhaes RENEWAL
Stacey D AlbaresIndiaElwin Sharvill UNQUALIFIED
Ricardo U RimGermanyOnyama Limba QUALIFIED
Nicolas Q VocelkaUnited KingdomIoni Bowcher PROPOSAL
Ivar O MaletCanadaIoni Bowcher NEW
Tony P FlosiAustraliaBernardo Dominic NEGOTIATION
Wickens Y ShinkoFranceAmy Elsner QUALIFIED
Aditya R PoquetteArgentinaElwin Sharvill UNQUALIFIED
Leon M GillianArgentinaElwin Sharvill PROPOSAL
Chavez K TollnerUnited KingdomAsiya Javayant UNQUALIFIED
Adams X GarufiJapanBernardo Dominic PROPOSAL
Aruna Y WaycottItalyAnna Fali PROPOSAL
Julie U FigeroaAustraliaIoni Bowcher NEW
Deepesh Y TollnerJapanXuxue Feng QUALIFIED
Aruna Y DarakjyRussiaStephen Shaw UNQUALIFIED
Ivar V CaldareraFranceOnyama Limba UNQUALIFIED
Stacey A ShinkoGermanyAnna Fali NEW
Stacey V DoeCanadaAsiya Javayant NEGOTIATION
Jones Q SergiAustraliaAmy Elsner NEW
Rodrigues T OldroydItalyStephen Shaw QUALIFIED
Smith Y StensethItalyAsiya Javayant UNQUALIFIED
Aditya K GlickItalyAsiya Javayant QUALIFIED
Munro R AlbaresGermanyAsiya Javayant UNQUALIFIED
Johnson X DilliardSpainAmy Elsner PROPOSAL
Juan O WaycottBrazilAsiya Javayant QUALIFIED
Claire B MacleadSpainStephen Shaw NEW
Misaki R StockhamRussiaIoni Bowcher UNQUALIFIED
Tony U PerinSpainIoni Bowcher RENEWAL
Ricardo L DarakjyIndiaIoni Bowcher QUALIFIED
Jones O NestleUnited KingdomAsiya Javayant NEGOTIATION
Aditya M VenereIndiaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ricardo G AmigonCanadaStephen Shaw UNQUALIFIED
Arvin T FerenczIndiaBernardo Dominic PROPOSAL
Jones D RulapaughRussiaIoni Bowcher RENEWAL
Morrow Y DarakjyUnited KingdomBernardo Dominic NEW
Ivar P PoquetteJapanAnna Fali NEW
Greenwood K GauchoCanadaIvan Magalhaes QUALIFIED
Julie J RutaGermanyOnyama Limba NEW
Isabel F BriddickUnited KingdomAsiya Javayant PROPOSAL
Emily M GarufiUnited KingdomIoni Bowcher NEGOTIATION
Munro J CaudyRussiaAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie T KolmetzAustralia2024-04-09Buckley Miller Wright NEW93Bernardo Dominic
1001Maisha D FlosiArgentina2024-03-20Morlong Associates RENEWAL47Amy Elsner
1002Julie G RimIndia2024-04-07Truhlar And Truhlar Attys PROPOSAL82Elwin Sharvill
1003Mayumi W GarufiArgentina2024-04-01Commercial Press UNQUALIFIED31Asiya Javayant
1004Arvin B DilliardRussia2024-04-12Buckley Miller Wright RENEWAL89Ioni Bowcher
1005Tony D VocelkaAustralia2024-04-08Buckley Miller Wright NEW1Ivan Magalhaes
1006Silvio P NestleUnited Kingdom2024-04-16Chanay, Jeffrey A Esq RENEWAL33Bernardo Dominic
1007Aruna D NickaGermany2024-04-05Commercial Press PROPOSAL41Ivan Magalhaes
1008Sinclair J DoeAustralia2024-03-27Benton, John B Jr RENEWAL72Anna Fali
1009Adams B DilliardFrance2024-04-01Buckley Miller Wright UNQUALIFIED43Ivan Magalhaes
1010Cody Y NickaBrazil2024-04-10Dorl, James J Esq QUALIFIED18Ivan Magalhaes
1011Jennifer M VocelkaRussia2024-04-11Feiner Bros PROPOSAL35Amy Elsner
1012Maria F StensethArgentina2024-03-28Rangoni Of Florence PROPOSAL76Ioni Bowcher
1013Julie P DilliardCanada2024-03-29Printing Dimensions NEGOTIATION33Bernardo Dominic
1014Greenwood I SchemmerRussia2024-04-03Buckley Miller Wright NEGOTIATION89Amy Elsner
1015Claire Q VenereCanada2024-04-13Printing Dimensions UNQUALIFIED54Ioni Bowcher
1016Jefferson O RimRussia2024-03-31Printing Dimensions QUALIFIED99Asiya Javayant
1017Wickens Q InouyeAustralia2024-04-09Dorl, James J Esq QUALIFIED39Bernardo Dominic
1018Nicolas A GlickSpain2024-04-04King, Christopher A Esq NEW18Xuxue Feng
1019Darci N FigeroaCanada2024-04-01Chemel, James L Cpa UNQUALIFIED3Ioni Bowcher
1020Deepesh V MacleadIndia2024-04-18Chanay, Jeffrey A Esq QUALIFIED53Ivan Magalhaes
1021Costa S SaylorsJapan2024-04-10Chanay, Jeffrey A Esq PROPOSAL20Anna Fali
1022Stacey E SlusarskiArgentina2024-04-08Morlong Associates UNQUALIFIED34Ioni Bowcher
1023Clifford R MaletRussia2024-04-17Dorl, James J Esq PROPOSAL17Xuxue Feng
1024Ricardo T ShinkoJapan2024-03-21Chemel, James L Cpa NEGOTIATION66Bernardo Dominic
1025Greenwood Q KolmetzAustralia2024-03-29Feiner Bros RENEWAL85Bernardo Dominic
1026Kaitlin F DoeIndia2024-03-26Commercial Press QUALIFIED73Onyama Limba
1027Greenwood U GauchoFrance2024-04-07Dorl, James J Esq NEGOTIATION6Bernardo Dominic
1028Emily U OstroskyAustralia2024-03-26King, Christopher A Esq NEGOTIATION78Ivan Magalhaes
1029Nicolas J DilliardRussia2024-04-05Benton, John B Jr PROPOSAL18Xuxue Feng
1030Aditya D GauchoBrazil2024-03-28Rousseaux, Michael Esq NEGOTIATION67Ivan Magalhaes
1031Morrow C SergiUnited Kingdom2024-04-16Truhlar And Truhlar Attys NEGOTIATION21Amy Elsner
1032Silvio Z FlosiJapan2024-04-03Dorl, James J Esq PROPOSAL14Elwin Sharvill
1033Wickens E AlbaresArgentina2024-04-12Feltz Printing Service PROPOSAL13Amy Elsner
1034Kadeem D BologniaRussia2024-03-28Chanay, Jeffrey A Esq PROPOSAL64Anna Fali
1035Jennifer K MacleadFrance2024-04-04Truhlar And Truhlar Attys NEGOTIATION44Anna Fali
1036Murillo H CaldareraSpain2024-04-03King, Christopher A Esq NEGOTIATION86Ioni Bowcher
1037Izzy E SergiRussia2024-04-15Benton, John B Jr NEGOTIATION90Amy Elsner
1038Clifford C VenereBrazil2024-03-21Feltz Printing Service NEW1Bernardo Dominic
1039Wickens Q MaletCanada2024-03-27Buckley Miller Wright QUALIFIED42Anna Fali
1040Leja J GauchoRussia2024-03-23Feltz Printing Service NEW96Amy Elsner
1041Deepesh C NestleJapan2024-03-22Feiner Bros UNQUALIFIED49Onyama Limba
1042Aruna H NickaIndia2024-04-11Rousseaux, Michael Esq RENEWAL37Elwin Sharvill
1043Chavez W GlickJapan2024-03-26Chapman, Ross E Esq UNQUALIFIED63Ivan Magalhaes
1044Claire V IturbideUnited Kingdom2024-04-10Commercial Press RENEWAL28Stephen Shaw
1045Jefferson L BologniaSpain2024-03-20Buckley Miller Wright UNQUALIFIED55Ivan Magalhaes
1046Julie D GauchoUnited Kingdom2024-03-20Feltz Printing Service NEGOTIATION84Onyama Limba
1047Wickens H CampainRussia2024-04-11Commercial Press NEW81Stephen Shaw
1048Jeanfrancois P ButtArgentina2024-04-12Commercial Press NEW92Amy Elsner
1049Leon I OstroskyBrazil2024-04-12Chapman, Ross E Esq NEW76Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Arvin F StockhamFranceAmy Elsner NEW
Ashley X WaycottUnited KingdomStephen Shaw RENEWAL
Leon Q AmigonCanadaXuxue Feng NEGOTIATION
Silvio J FerenczArgentinaIoni Bowcher NEGOTIATION
Claire B DilliardCanadaStephen Shaw PROPOSAL
Mayumi U WaycottJapanElwin Sharvill PROPOSAL
Jeanfrancois J ChuiArgentinaAmy Elsner RENEWAL
Mayumi C SaylorsIndiaBernardo Dominic NEGOTIATION
Francesco U GauchoBrazilBernardo Dominic PROPOSAL
Leon H WaycottUnited KingdomOnyama Limba RENEWAL
Arvin X StockhamCanadaOnyama Limba NEGOTIATION
Cody Z WhobreyGermanyIoni Bowcher NEW
Julie O DilliardSpainXuxue Feng PROPOSAL
Silvio X GarufiItalyStephen Shaw UNQUALIFIED
Mujtaba R RutaBrazilXuxue Feng QUALIFIED
Tony Y WaycottBrazilAmy Elsner NEGOTIATION
Nicolas S StockhamBrazilIvan Magalhaes PROPOSAL
Juan N WhobreyFranceIoni Bowcher NEW
Munro W AlbaresJapanXuxue Feng UNQUALIFIED
Alejandro W SaylorsCanadaXuxue Feng PROPOSAL
Morrow I StensethJapanStephen Shaw UNQUALIFIED
Jennifer P PoquetteFranceBernardo Dominic QUALIFIED
Silvio K StensethSpainAmy Elsner NEW
James H VenereFranceXuxue Feng NEGOTIATION
Nicolas K NickaSpainXuxue Feng NEGOTIATION
Kaitlin O MarrierCanadaAnna Fali NEGOTIATION
Leon T PoquetteBrazilIoni Bowcher NEGOTIATION
Rodrigues R BologniaSpainStephen Shaw NEGOTIATION
Costa N MaletRussiaStephen Shaw QUALIFIED
Antonio V NickaSpainAmy Elsner QUALIFIED
Kaitlin D OstroskyItalyIvan Magalhaes UNQUALIFIED
Maria N SaylorsUnited KingdomXuxue Feng UNQUALIFIED
Jones F BriddickSpainIvan Magalhaes NEGOTIATION
Sinclair K MaletItalyAmy Elsner QUALIFIED
Murillo N MarrierIndiaIvan Magalhaes NEGOTIATION
Aditya I SaylorsIndiaIvan Magalhaes RENEWAL
Nicolas Q BowleyCanadaXuxue Feng NEW
Ashley E StockhamGermanyAnna Fali PROPOSAL
Ricardo X AlbaresSpainOnyama Limba UNQUALIFIED
Antonio O MacleadRussiaAnna Fali UNQUALIFIED
Munro E KuskoJapanBernardo Dominic NEGOTIATION
Stacey E WhobreyUnited KingdomIoni Bowcher UNQUALIFIED
Murillo R StensethArgentinaIoni Bowcher RENEWAL
Chavez B DilliardAustraliaXuxue Feng UNQUALIFIED
Darci L FigeroaAustraliaAmy Elsner NEGOTIATION
Izzy M SaylorsFranceAnna Fali UNQUALIFIED
Morrow E FigeroaBrazilIvan Magalhaes RENEWAL
Jefferson B CaldareraItalyAnna Fali UNQUALIFIED
Juan N MarrierItalyAsiya Javayant NEGOTIATION
Rodrigues M RulapaughFranceElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Munro L Dilliard
Aruna Q Amigon
Clifford U Tollner
Francesco B Royster
Faith C Ferencz
Smith O Butt
Misaki T Ostrosky
Wickens U Venere
Ricardo C Waycott
Smith Y Caudy
Darci B Vocelka
Leon O Paprocki
Claire P Venere
Deepesh H Saylors
Chavez C Oldroyd
Jefferson R Slusarski
Ashley T Venere
Ivar H Marrier
Morrow O Nicka
Mujtaba Q Paprocki
Mayumi P Poquette
Johnson I Rulapaugh
Leja L Kolmetz
Morrow E Stockham
Mayumi Z Inouye
Wickens D Maclead
James I Maclead
Jennifer B Dilliard
James T Kolmetz
Arvin H Stockham
Ivar C Kusko
Tony L Tollner
Jennifer E Saylors
Morrow E Poquette
Isabel E Slusarski
Kaitlin E Ruta
Kaitlin G Briddick
Morrow Q Venere
Mayumi V Whobrey
Johnson F Oldroyd
Darci D Paprocki
Munro A Albares
Salvatore B Rulapaugh
Jeanfrancois Y Chui
Jennifer P Saylors
Adams R Garufi
Ricardo V Stockham
Clifford P Chui
Julie A Sergi
Antonio F Chui
IdCountryDate
1000Spain2024-03-21
1001Australia2024-04-04
1002Brazil2024-03-28
1003Argentina2024-04-04
1004Germany2024-04-14
1005Germany2024-04-17
1006France2024-04-11
1007Canada2024-04-13
1008Australia2024-04-07
1009Russia2024-04-13
1010Russia2024-04-05
1011Germany2024-04-13
1012Brazil2024-03-22
1013Germany2024-03-20
1014India2024-04-16
1015Spain2024-04-13
1016Italy2024-04-03
1017Germany2024-04-18
1018Japan2024-04-06
1019Canada2024-03-31
1020Russia2024-04-14
1021France2024-03-31
1022India2024-04-15
1023Argentina2024-04-18
1024Germany2024-03-31
1025Brazil2024-04-13
1026Italy2024-03-23
1027Australia2024-03-22
1028Australia2024-04-15
1029United Kingdom2024-03-22
1030Italy2024-04-09
1031Germany2024-04-14
1032United Kingdom2024-04-16
1033Italy2024-04-14
1034United Kingdom2024-03-20
1035United Kingdom2024-03-21
1036Germany2024-04-04
1037Brazil2024-03-23
1038Italy2024-03-29
1039Canada2024-03-24
1040Italy2024-03-30
1041Germany2024-03-25
1042Australia2024-03-24
1043Japan2024-03-30
1044Australia2024-03-27
1045Spain2024-04-07
1046France2024-03-21
1047India2024-04-01
1048France2024-04-16
1049Russia2024-03-21

On-Demand Data

NameIdCountryDate
Murillo L Whobrey1000Australia2024-03-26
David R Caldarera1001Spain2024-03-25
Smith A Garufi1002United Kingdom2024-03-31
James E Wieser1003United Kingdom2024-04-16
Arvin M Kolmetz1004Brazil2024-04-04
Silvio P Darakjy1005Spain2024-04-05
Sinclair F Caudy1006Argentina2024-03-28
Jennifer F Bowley1007Canada2024-04-02
Mujtaba G Sergi1008France2024-04-16
Smith T Doe1009Canada2024-03-22
Juan T Perin1010Australia2024-04-10
Chavez J Whobrey1011Russia2024-04-11
Morrow S Paprocki1012Italy2024-03-23
James B Ferencz1013Australia2024-03-26
Leja L Glick1014Australia2024-03-20
Greenwood O Amigon1015Russia2024-04-04
Salvatore P Kusko1016Russia2024-04-10
Aruna F Chui1017United Kingdom2024-04-03
Maisha Y Maclead1018Russia2024-03-24
Octavia S Ostrosky1019Canada2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan K KuskoArgentinaXuxue Feng PROPOSAL
Cody H ShinkoSpainAnna Fali NEW
Faith M WhobreyArgentinaAsiya Javayant RENEWAL
Munro F DilliardItalyIoni Bowcher NEW
Isabel Y CaldareraAustraliaStephen Shaw NEGOTIATION
Kaitlin O WieserAustraliaXuxue Feng RENEWAL
Tony T DoeAustraliaXuxue Feng NEGOTIATION
Leon L WieserUnited KingdomElwin Sharvill UNQUALIFIED
Jennifer P RulapaughJapanStephen Shaw QUALIFIED
Francesco X BologniaItalyAnna Fali QUALIFIED
Misaki Z BriddickAustraliaAmy Elsner NEW
Munro N MacleadArgentinaBernardo Dominic QUALIFIED
Jefferson C BriddickCanadaBernardo Dominic PROPOSAL
Stacey L GarufiGermanyAsiya Javayant NEW
Murillo I GillianItalyAsiya Javayant UNQUALIFIED
Sinclair A MaletJapanIvan Magalhaes UNQUALIFIED
Darci K RutaAustraliaXuxue Feng UNQUALIFIED
Chavez E AmigonJapanElwin Sharvill NEW
Smith W FigeroaJapanStephen Shaw NEGOTIATION
Johnson I InouyeBrazilAmy Elsner PROPOSAL
Aruna P SergiRussiaIvan Magalhaes NEW
Murillo V CaudyGermanyAnna Fali PROPOSAL
Izzy M SergiRussiaIoni Bowcher NEGOTIATION
Chavez T KolmetzCanadaIoni Bowcher NEGOTIATION
Kadeem X TollnerIndiaIoni Bowcher QUALIFIED
Alejandro M RoysterUnited KingdomXuxue Feng NEW
Darci Z DoeAustraliaStephen Shaw RENEWAL
Silvio W RimArgentinaAnna Fali PROPOSAL
Deepesh W FerenczSpainIoni Bowcher PROPOSAL
Francesco T WhobreyUnited KingdomAmy Elsner PROPOSAL
Tony R DarakjyIndiaAnna Fali RENEWAL
Kaitlin K WaycottItalyBernardo Dominic NEGOTIATION
Jones I RimCanadaIoni Bowcher UNQUALIFIED
Silvio S DarakjyCanadaBernardo Dominic QUALIFIED
Jones F FerenczItalyBernardo Dominic QUALIFIED
Aika S PoquetteUnited KingdomStephen Shaw PROPOSAL
Kadeem J FlosiBrazilOnyama Limba UNQUALIFIED
Jefferson N GillianSpainOnyama Limba PROPOSAL
Kadeem M PaprockiBrazilAsiya Javayant PROPOSAL
Mujtaba B RulapaughGermanyElwin Sharvill 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>