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
Chavez D BologniaGermanyAmy Elsner RENEWAL
Jones C WhobreyCanadaBernardo Dominic NEW
Maria Y RimJapanIoni Bowcher PROPOSAL
Emily A WieserJapanXuxue Feng UNQUALIFIED
Tony H GlickAustraliaIoni Bowcher NEGOTIATION
Maria Y SaylorsBrazilStephen Shaw NEW
James R FerenczBrazilAnna Fali QUALIFIED
Francesco D DilliardAustraliaAmy Elsner PROPOSAL
Ricardo T BowleyJapanIvan Magalhaes QUALIFIED
Aruna H PoquetteIndiaIvan Magalhaes NEW
Aditya W VenereBrazilStephen Shaw NEW
Nicolas A DoeArgentinaBernardo Dominic NEW
Munro L SergiSpainIvan Magalhaes UNQUALIFIED
Isabel D VenereBrazilXuxue Feng NEGOTIATION
Aika X RoysterJapanAsiya Javayant PROPOSAL
Octavia Q MorascaGermanyXuxue Feng NEW
Faith G BriddickJapanOnyama Limba NEGOTIATION
Leon F WieserGermanyStephen Shaw RENEWAL
Murillo Y DarakjyArgentinaBernardo Dominic PROPOSAL
Maisha Y IturbideSpainStephen Shaw UNQUALIFIED
Francesco N RimSpainAnna Fali NEGOTIATION
Juan G GauchoBrazilBernardo Dominic PROPOSAL
Francesco A CaldareraUnited KingdomIoni Bowcher NEW
Jennifer S WieserJapanStephen Shaw NEGOTIATION
Arvin M StensethCanadaIoni Bowcher NEGOTIATION
Ashley U DilliardCanadaAsiya Javayant NEGOTIATION
Silvio S RulapaughAustraliaAnna Fali NEW
Jefferson J SlusarskiUnited KingdomStephen Shaw NEGOTIATION
Aika Q SchemmerGermanyBernardo Dominic NEGOTIATION
Salvatore E ShinkoRussiaXuxue Feng NEGOTIATION
Chavez H FerenczIndiaIoni Bowcher RENEWAL
Morrow K DoeIndiaXuxue Feng QUALIFIED
Emily H BowleyRussiaXuxue Feng NEGOTIATION
Rodrigues R BowleyItalyIvan Magalhaes UNQUALIFIED
Mayumi C StockhamUnited KingdomIvan Magalhaes NEGOTIATION
Mayumi E ShinkoJapanElwin Sharvill NEGOTIATION
David Q PerinCanadaIvan Magalhaes UNQUALIFIED
Ivar O StensethRussiaIvan Magalhaes NEGOTIATION
Isabel Y PaprockiUnited KingdomXuxue Feng RENEWAL
Alejandro D PerinUnited KingdomAsiya Javayant UNQUALIFIED
Clifford T StockhamSpainAnna Fali NEW
Darci G CampainRussiaAnna Fali NEGOTIATION
Izzy G MaletCanadaIvan Magalhaes NEW
Jefferson G RulapaughSpainAsiya Javayant UNQUALIFIED
Arvin F CaldareraCanadaIvan Magalhaes UNQUALIFIED
David L KuskoGermanyXuxue Feng QUALIFIED
Adams V FerenczCanadaIvan Magalhaes NEW
Antonio Q KuskoItalyIvan Magalhaes NEW
Juan Y NickaItalyXuxue Feng NEW
Aruna K CaldareraArgentinaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Aruna M InouyeBrazilAmy Elsner QUALIFIED
Silvio H PaprockiBrazilBernardo Dominic UNQUALIFIED
Faith W GillianRussiaStephen Shaw PROPOSAL
Izzy V DarakjyFranceIoni Bowcher NEW
Maisha A VenereBrazilElwin Sharvill UNQUALIFIED
Juan J BriddickAustraliaOnyama Limba PROPOSAL
Ashley V ShinkoSpainAsiya Javayant PROPOSAL
Misaki C SlusarskiFranceAnna Fali UNQUALIFIED
Emily F PerinCanadaIoni Bowcher RENEWAL
Leon B GauchoUnited KingdomAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams X StockhamAustralia2024-03-01Chanay, Jeffrey A Esq NEGOTIATION42Onyama Limba
1001Jones X DilliardCanada2024-02-19King, Christopher A Esq NEGOTIATION39Anna Fali
1002Munro P VenereArgentina2024-02-20Feiner Bros NEW25Ivan Magalhaes
1003Clifford W MarrierUnited Kingdom2024-03-16Chanay, Jeffrey A Esq QUALIFIED53Elwin Sharvill
1004Juan O DilliardJapan2024-03-11Chanay, Jeffrey A Esq RENEWAL56Bernardo Dominic
1005Faith I DarakjyJapan2024-02-19King, Christopher A Esq NEGOTIATION17Onyama Limba
1006Jennifer O StensethSpain2024-03-03Truhlar And Truhlar Attys UNQUALIFIED8Stephen Shaw
1007Aditya V ButtRussia2024-03-11Truhlar And Truhlar Attys NEW82Amy Elsner
1008Cody N OldroydItaly2024-03-05Dorl, James J Esq QUALIFIED70Ivan Magalhaes
1009Jeanfrancois U OldroydJapan2024-02-20Morlong Associates RENEWAL80Amy Elsner
1010Julie L OldroydGermany2024-03-07Chemel, James L Cpa NEW67Amy Elsner
1011Costa I CaldareraArgentina2024-02-27Morlong Associates NEW38Asiya Javayant
1012Jones E IturbideJapan2024-02-22Morlong Associates QUALIFIED72Onyama Limba
1013Sinclair A SlusarskiJapan2024-02-23King, Christopher A Esq NEGOTIATION27Elwin Sharvill
1014Alejandro B GauchoJapan2024-03-01Benton, John B Jr PROPOSAL19Ivan Magalhaes
1015Nicolas X CaldareraArgentina2024-02-18Morlong Associates QUALIFIED86Ivan Magalhaes
1016Claire C GillianJapan2024-02-20Feiner Bros NEGOTIATION55Asiya Javayant
1017Mayumi X BriddickArgentina2024-03-16Chanay, Jeffrey A Esq NEW95Xuxue Feng
1018Antonio I BologniaFrance2024-03-08Chemel, James L Cpa QUALIFIED18Ioni Bowcher
1019Faith B FigeroaItaly2024-02-18Rangoni Of Florence PROPOSAL47Bernardo Dominic
1020Tony X StensethJapan2024-03-14Chanay, Jeffrey A Esq QUALIFIED75Amy Elsner
1021Wickens I MacleadCanada2024-03-11Feltz Printing Service RENEWAL86Ioni Bowcher
1022Kadeem L SlusarskiJapan2024-02-27Printing Dimensions PROPOSAL75Xuxue Feng
1023Mujtaba N BowleyArgentina2024-02-24Commercial Press RENEWAL33Stephen Shaw
1024Octavia M RoysterFrance2024-02-23Benton, John B Jr QUALIFIED97Stephen Shaw
1025Mujtaba T MacleadUnited Kingdom2024-03-07Morlong Associates NEW72Stephen Shaw
1026Leja N StensethItaly2024-03-18Rangoni Of Florence NEW19Onyama Limba
1027Costa X MacleadItaly2024-02-25Benton, John B Jr PROPOSAL17Ioni Bowcher
1028Deepesh U SaylorsJapan2024-02-24King, Christopher A Esq NEW94Anna Fali
1029Greenwood K SlusarskiItaly2024-02-24Feltz Printing Service RENEWAL19Xuxue Feng
1030Wickens V CaudyRussia2024-02-24Chemel, James L Cpa QUALIFIED31Ivan Magalhaes
1031Mayumi P BriddickIndia2024-02-26Morlong Associates NEW45Onyama Limba
1032Mujtaba L KolmetzSpain2024-02-23Feltz Printing Service NEW62Amy Elsner
1033Salvatore P WaycottFrance2024-02-22Commercial Press RENEWAL86Onyama Limba
1034Maria Y MaletRussia2024-03-10Benton, John B Jr PROPOSAL27Onyama Limba
1035Faith Z ButtFrance2024-02-26Chanay, Jeffrey A Esq RENEWAL39Anna Fali
1036Claire E InouyeSpain2024-02-20Dorl, James J Esq PROPOSAL32Onyama Limba
1037Maisha R PoquetteGermany2024-03-10Chapman, Ross E Esq NEW98Ivan Magalhaes
1038Claire P RutaFrance2024-02-25Chemel, James L Cpa QUALIFIED20Ioni Bowcher
1039Morrow K NestleBrazil2024-02-23Benton, John B Jr RENEWAL72Ivan Magalhaes
1040Claire K WhobreyArgentina2024-02-23Dorl, James J Esq PROPOSAL69Amy Elsner
1041Alejandro R GauchoRussia2024-03-02Feiner Bros QUALIFIED52Ivan Magalhaes
1042Tony K PoquetteRussia2024-02-26Chanay, Jeffrey A Esq NEGOTIATION81Anna Fali
1043Smith E RutaCanada2024-03-11Benton, John B Jr PROPOSAL16Ivan Magalhaes
1044Jones C PoquetteCanada2024-02-28King, Christopher A Esq PROPOSAL85Elwin Sharvill
1045Isabel X AmigonFrance2024-02-28Feltz Printing Service NEW85Stephen Shaw
1046Aditya J DarakjyGermany2024-02-23Morlong Associates QUALIFIED65Ivan Magalhaes
1047Jones A NestleItaly2024-02-28Chanay, Jeffrey A Esq RENEWAL29Elwin Sharvill
1048Isabel K ChuiIndia2024-02-22Feltz Printing Service NEW17Anna Fali
1049Munro Z KolmetzUnited Kingdom2024-03-15Rangoni Of Florence UNQUALIFIED7Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Chavez O OstroskyBrazilElwin Sharvill PROPOSAL
Deepesh N WaycottRussiaStephen Shaw NEGOTIATION
Ricardo S GauchoJapanStephen Shaw PROPOSAL
Julie K BologniaUnited KingdomAnna Fali NEGOTIATION
Munro F RoysterItalyBernardo Dominic QUALIFIED
Ashley J VocelkaSpainAmy Elsner PROPOSAL
Maisha G KuskoUnited KingdomElwin Sharvill QUALIFIED
Jones S SchemmerGermanyIvan Magalhaes NEGOTIATION
Jeanfrancois O ShinkoUnited KingdomAnna Fali UNQUALIFIED
Wickens V RoysterAustraliaXuxue Feng RENEWAL
Greenwood M AlbaresFranceIvan Magalhaes UNQUALIFIED
Maisha T RimBrazilIvan Magalhaes UNQUALIFIED
David U IturbideGermanyBernardo Dominic NEW
Misaki V GarufiSpainAsiya Javayant QUALIFIED
Johnson I VenereGermanyBernardo Dominic PROPOSAL
Deepesh P NestleSpainAsiya Javayant NEGOTIATION
Aika S PerinArgentinaElwin Sharvill RENEWAL
Octavia E MacleadItalyIvan Magalhaes RENEWAL
Ashley M ShinkoRussiaXuxue Feng NEGOTIATION
Leja V BriddickGermanyAmy Elsner NEGOTIATION
Tony U BowleyRussiaElwin Sharvill QUALIFIED
Antonio G KuskoBrazilXuxue Feng NEGOTIATION
Ivar N VenereAustraliaBernardo Dominic PROPOSAL
Murillo R AmigonAustraliaBernardo Dominic QUALIFIED
Julie A VocelkaSpainBernardo Dominic NEW
Leja U RulapaughItalyBernardo Dominic PROPOSAL
Mujtaba V CaldareraArgentinaOnyama Limba QUALIFIED
Jennifer B TollnerFranceAnna Fali NEGOTIATION
Stacey I RulapaughGermanyAmy Elsner UNQUALIFIED
Francesco A StensethUnited KingdomAsiya Javayant NEW
Misaki C SergiArgentinaIvan Magalhaes NEW
Johnson V GillianGermanyBernardo Dominic PROPOSAL
Juan N SaylorsUnited KingdomIvan Magalhaes RENEWAL
Greenwood S FlosiCanadaXuxue Feng UNQUALIFIED
Costa G StockhamCanadaIvan Magalhaes NEGOTIATION
Ricardo O CampainArgentinaIoni Bowcher UNQUALIFIED
Arvin P FerenczAustraliaIvan Magalhaes NEW
James R GlickArgentinaXuxue Feng NEGOTIATION
James U CampainRussiaAnna Fali RENEWAL
Aruna X StockhamUnited KingdomIvan Magalhaes QUALIFIED
Nicolas F MaletIndiaBernardo Dominic NEW
Munro Y KuskoAustraliaIoni Bowcher NEW
Greenwood J BriddickUnited KingdomBernardo Dominic PROPOSAL
David Z OldroydIndiaElwin Sharvill UNQUALIFIED
Silvio W BriddickUnited KingdomIoni Bowcher UNQUALIFIED
Maria E MaletGermanyIvan Magalhaes PROPOSAL
Kadeem Z SergiRussiaAmy Elsner UNQUALIFIED
Chavez W PerinRussiaBernardo Dominic RENEWAL
Cody B VenereSpainAsiya Javayant NEW
Jefferson G MarrierIndiaIvan Magalhaes RENEWAL
Frozen Columns
Name
Salvatore K Gillian
Chavez A Saylors
Octavia F Gaucho
Arvin A Schemmer
Alejandro B Slusarski
Jones E Caudy
Arvin H Shinko
Aruna S Wieser
Murillo I Flosi
Murillo B Morasca
Aruna H Briddick
Adams F Darakjy
Adams G Chui
James V Bowley
Alejandro G Bolognia
Aruna S Slusarski
Mayumi X Inouye
Ashley G Kolmetz
Leon C Dilliard
Jones A Maclead
Mayumi H Stenseth
Aika G Ruta
Ivar R Inouye
David Y Ferencz
Darci B Doe
Ivar U Stockham
Emily V Marrier
Juan J Rulapaugh
Isabel U Sergi
Faith I Dilliard
Tony A Briddick
Adams O Iturbide
Sinclair O Dilliard
Costa V Stenseth
Izzy R Caldarera
Darci E Chui
Munro F Ruta
Leon U Waycott
Octavia E Rim
Sinclair C Doe
Nicolas Z Vocelka
Leja X Wieser
Jones C Stockham
Jones R Garufi
Stacey B Vocelka
Wickens R Perin
Aditya A Amigon
Johnson S Inouye
Tony L Flosi
Jeanfrancois B Garufi
IdCountryDate
1000Russia2024-03-02
1001Japan2024-03-01
1002Germany2024-02-29
1003Russia2024-03-10
1004Russia2024-02-27
1005Australia2024-02-22
1006Spain2024-03-17
1007Australia2024-02-19
1008India2024-03-05
1009France2024-02-24
1010Italy2024-02-20
1011Argentina2024-03-04
1012Australia2024-03-12
1013Japan2024-02-28
1014Canada2024-02-25
1015France2024-03-01
1016Canada2024-03-07
1017Argentina2024-02-27
1018Japan2024-02-18
1019Argentina2024-02-26
1020India2024-03-13
1021Germany2024-02-24
1022Japan2024-03-04
1023France2024-02-25
1024Argentina2024-02-19
1025India2024-03-14
1026Japan2024-02-24
1027Canada2024-03-01
1028Japan2024-02-29
1029Germany2024-02-26
1030Brazil2024-03-02
1031Germany2024-02-27
1032Japan2024-03-05
1033Canada2024-03-15
1034Australia2024-03-15
1035Spain2024-03-14
1036Russia2024-03-15
1037Germany2024-02-28
1038Australia2024-03-14
1039France2024-03-18
1040Argentina2024-03-02
1041United Kingdom2024-03-08
1042Brazil2024-03-12
1043Brazil2024-02-21
1044Australia2024-03-01
1045France2024-03-12
1046Brazil2024-03-16
1047Italy2024-02-24
1048Canada2024-03-04
1049United Kingdom2024-02-22

On-Demand Data

NameIdCountryDate
Claire T Whobrey1000Spain2024-03-06
Sinclair G Campain1001Canada2024-02-29
Aruna F Butt1002Australia2024-02-19
Cody G Figeroa1003Japan2024-03-16
Rodrigues J Maclead1004Italy2024-03-11
Silvio S Bowley1005Russia2024-03-06
Aditya J Foller1006United Kingdom2024-02-28
Maria T Oldroyd1007Brazil2024-02-21
Ricardo Y Bolognia1008Argentina2024-02-28
Ashley U Wieser1009Russia2024-03-01
Sinclair A Briddick1010Germany2024-03-04
Faith Y Albares1011Italy2024-02-27
Jones B Tollner1012France2024-02-26
Deepesh X Schemmer1013Argentina2024-03-08
Octavia C Marrier1014Russia2024-03-04
Jeanfrancois V Morasca1015Germany2024-03-02
Kadeem M Foller1016Argentina2024-03-15
Darci Z Maclead1017Argentina2024-03-10
David P Malet1018Australia2024-03-04
Jefferson O Inouye1019Spain2024-03-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith R PoquetteArgentinaOnyama Limba QUALIFIED
Izzy F SergiAustraliaIoni Bowcher NEGOTIATION
Misaki R CaudyFranceAmy Elsner UNQUALIFIED
Sinclair Y RulapaughGermanyAnna Fali UNQUALIFIED
Maisha A IturbideGermanyBernardo Dominic UNQUALIFIED
Arvin J KolmetzItalyElwin Sharvill UNQUALIFIED
Juan S CaudySpainIvan Magalhaes RENEWAL
Maisha V MorascaIndiaBernardo Dominic PROPOSAL
Chavez J AmigonItalyBernardo Dominic PROPOSAL
Salvatore I SchemmerJapanAsiya Javayant NEW
Kadeem H SchemmerJapanIvan Magalhaes RENEWAL
Jefferson Y AmigonFranceAmy Elsner UNQUALIFIED
Aika U DarakjySpainAmy Elsner RENEWAL
Nicolas V StockhamSpainAnna Fali QUALIFIED
David I FlosiIndiaOnyama Limba RENEWAL
Misaki J WaycottUnited KingdomBernardo Dominic NEW
Jones Q StockhamItalyAmy Elsner PROPOSAL
Jones B StockhamRussiaStephen Shaw PROPOSAL
Emily S MorascaItalyAmy Elsner QUALIFIED
Silvio C MaletArgentinaIvan Magalhaes QUALIFIED
Aika O PoquetteRussiaIoni Bowcher NEGOTIATION
Johnson K GauchoSpainAnna Fali NEW
Arvin F KolmetzIndiaStephen Shaw RENEWAL
Costa S OstroskySpainOnyama Limba NEW
Misaki C StensethBrazilIoni Bowcher NEGOTIATION
Jennifer N RimJapanStephen Shaw NEW
Ricardo Q OstroskyArgentinaAsiya Javayant NEW
Chavez A MorascaItalyAmy Elsner NEGOTIATION
Leon V GlickItalyIoni Bowcher NEW
Greenwood E FerenczArgentinaAnna Fali NEGOTIATION
David G KuskoFranceBernardo Dominic UNQUALIFIED
Claire N SergiItalyAsiya Javayant QUALIFIED
Chavez O StensethArgentinaBernardo Dominic NEW
Murillo V TollnerRussiaAmy Elsner PROPOSAL
Mujtaba X FigeroaItalyOnyama Limba RENEWAL
Sinclair C GillianItalyIoni Bowcher QUALIFIED
Aruna A NickaGermanyIoni Bowcher UNQUALIFIED
Isabel W WhobreySpainAsiya Javayant QUALIFIED
Emily D RimJapanIvan Magalhaes NEW
Deepesh B InouyeUnited KingdomAsiya Javayant 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>