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
Murillo L CaldareraIndiaStephen Shaw PROPOSAL
Smith D OldroydBrazilAsiya Javayant UNQUALIFIED
Leja M DarakjyIndiaOnyama Limba NEGOTIATION
Arvin F SaylorsGermanyStephen Shaw RENEWAL
Francesco Z InouyeFranceIvan Magalhaes NEGOTIATION
Costa Y MaletGermanyAmy Elsner PROPOSAL
Smith N OstroskyFranceBernardo Dominic QUALIFIED
Cody E WaycottBrazilAsiya Javayant NEW
Silvio E RulapaughSpainStephen Shaw QUALIFIED
Murillo S KuskoArgentinaBernardo Dominic UNQUALIFIED
Claire O RoysterRussiaXuxue Feng QUALIFIED
Darci Q BowleyItalyElwin Sharvill NEW
Salvatore O VenereBrazilStephen Shaw RENEWAL
Antonio U MaletArgentinaElwin Sharvill NEGOTIATION
Ashley I DilliardRussiaElwin Sharvill PROPOSAL
Alejandro O DarakjyUnited KingdomIvan Magalhaes RENEWAL
Greenwood G IturbideFranceElwin Sharvill NEW
Juan E MaletFranceBernardo Dominic RENEWAL
Costa U DarakjyArgentinaAsiya Javayant PROPOSAL
Salvatore Y DoeUnited KingdomStephen Shaw PROPOSAL
Stacey J TollnerAustraliaAmy Elsner UNQUALIFIED
Izzy B MarrierArgentinaOnyama Limba RENEWAL
Ricardo C NestleItalyStephen Shaw RENEWAL
Jeanfrancois D SaylorsCanadaXuxue Feng QUALIFIED
Morrow Z CaldareraGermanyIvan Magalhaes NEW
Aika U GillianFranceAsiya Javayant QUALIFIED
Maria K SchemmerBrazilIoni Bowcher NEW
Isabel S DarakjyJapanXuxue Feng QUALIFIED
Stacey P MarrierBrazilAnna Fali NEW
Mayumi U PerinGermanyBernardo Dominic UNQUALIFIED
Mayumi R SchemmerRussiaXuxue Feng QUALIFIED
Aika T DilliardAustraliaBernardo Dominic RENEWAL
Aditya X MarrierArgentinaBernardo Dominic NEGOTIATION
Julie V GauchoArgentinaAnna Fali QUALIFIED
Adams T SergiArgentinaOnyama Limba RENEWAL
Adams Q BologniaFranceIvan Magalhaes RENEWAL
Jeanfrancois I GillianUnited KingdomBernardo Dominic NEW
Emily M BologniaJapanElwin Sharvill PROPOSAL
Costa A GlickCanadaStephen Shaw UNQUALIFIED
David S RulapaughGermanyAsiya Javayant UNQUALIFIED
Cody E PerinJapanOnyama Limba PROPOSAL
Octavia E CampainFranceStephen Shaw NEW
Arvin L RutaBrazilXuxue Feng PROPOSAL
Cody M IturbideGermanyIvan Magalhaes NEGOTIATION
Adams G VocelkaArgentinaIvan Magalhaes NEW
Leon Z PerinFranceIvan Magalhaes PROPOSAL
Munro D WhobreyGermanyXuxue Feng UNQUALIFIED
Aika G NestleGermanyXuxue Feng PROPOSAL
Cody Y MarrierGermanyAmy Elsner PROPOSAL
Misaki C GlickFranceAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Tony Y NestleRussiaOnyama Limba QUALIFIED
Aika D FigeroaRussiaXuxue Feng NEW
Aditya Y DilliardRussiaIoni Bowcher QUALIFIED
Smith G PoquetteGermanyAmy Elsner UNQUALIFIED
Emily T StockhamBrazilBernardo Dominic PROPOSAL
James B MaletFranceXuxue Feng PROPOSAL
Munro P SergiAustraliaElwin Sharvill PROPOSAL
Emily I KolmetzUnited KingdomIoni Bowcher QUALIFIED
Stacey U MaletJapanOnyama Limba UNQUALIFIED
Kaitlin K SchemmerArgentinaIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore U NickaGermany2024-04-05Printing Dimensions NEGOTIATION17Onyama Limba
1001James C ButtBrazil2024-04-08Buckley Miller Wright QUALIFIED56Asiya Javayant
1002Smith D ButtIndia2024-04-23Dorl, James J Esq NEW99Amy Elsner
1003Johnson S NestleAustralia2024-04-21Feiner Bros QUALIFIED32Bernardo Dominic
1004Darci B ShinkoSpain2024-03-31Rousseaux, Michael Esq NEGOTIATION27Onyama Limba
1005Juan S VocelkaSpain2024-04-14King, Christopher A Esq UNQUALIFIED38Stephen Shaw
1006Rodrigues V RulapaughBrazil2024-04-01Buckley Miller Wright UNQUALIFIED12Xuxue Feng
1007Aditya O StensethBrazil2024-04-13Feiner Bros NEGOTIATION3Bernardo Dominic
1008Tony V FollerJapan2024-04-13Buckley Miller Wright QUALIFIED16Anna Fali
1009Munro P KuskoAustralia2024-04-10Feiner Bros QUALIFIED6Ivan Magalhaes
1010Morrow P SaylorsArgentina2024-04-13Feltz Printing Service QUALIFIED95Elwin Sharvill
1011Smith K BologniaUnited Kingdom2024-04-22Benton, John B Jr UNQUALIFIED78Ivan Magalhaes
1012Alejandro T VocelkaUnited Kingdom2024-04-06Chanay, Jeffrey A Esq RENEWAL87Bernardo Dominic
1013Morrow D ButtSpain2024-04-02Feltz Printing Service UNQUALIFIED68Ivan Magalhaes
1014Silvio E StockhamBrazil2024-04-04Printing Dimensions NEW47Ivan Magalhaes
1015Chavez A DarakjyBrazil2024-04-19Printing Dimensions PROPOSAL3Ioni Bowcher
1016Arvin V SlusarskiSpain2024-04-12Chanay, Jeffrey A Esq UNQUALIFIED45Ivan Magalhaes
1017Misaki A RoysterAustralia2024-03-31Printing Dimensions NEW90Anna Fali
1018Clifford N RutaJapan2024-04-04Dorl, James J Esq NEGOTIATION48Asiya Javayant
1019Ashley R SaylorsGermany2024-04-15Buckley Miller Wright NEW53Asiya Javayant
1020Kadeem D DilliardRussia2024-04-14Rangoni Of Florence PROPOSAL78Ioni Bowcher
1021Clifford S FollerSpain2024-04-02Benton, John B Jr NEGOTIATION38Stephen Shaw
1022Ricardo Z MorascaCanada2024-04-23Chanay, Jeffrey A Esq RENEWAL69Onyama Limba
1023James F MaletUnited Kingdom2024-04-24Truhlar And Truhlar Attys RENEWAL66Stephen Shaw
1024Morrow Z OstroskyCanada2024-03-30Chapman, Ross E Esq QUALIFIED54Elwin Sharvill
1025Rodrigues O AlbaresBrazil2024-04-16Benton, John B Jr NEGOTIATION59Onyama Limba
1026Misaki T CampainAustralia2024-04-15Printing Dimensions UNQUALIFIED28Xuxue Feng
1027Alejandro E PoquetteSpain2024-04-16Morlong Associates PROPOSAL96Amy Elsner
1028Juan G BowleyIndia2024-04-25Printing Dimensions NEW35Ioni Bowcher
1029Aika T BriddickIndia2024-04-24Benton, John B Jr QUALIFIED89Xuxue Feng
1030Murillo P GillianSpain2024-04-14Printing Dimensions QUALIFIED28Ivan Magalhaes
1031Jennifer Q PerinSpain2024-03-27Feltz Printing Service UNQUALIFIED91Amy Elsner
1032Murillo V AmigonIndia2024-04-22Chapman, Ross E Esq UNQUALIFIED63Anna Fali
1033Greenwood H SergiIndia2024-03-27Chemel, James L Cpa NEW6Xuxue Feng
1034Munro E ButtJapan2024-04-13Rangoni Of Florence UNQUALIFIED63Xuxue Feng
1035Leja V InouyeBrazil2024-04-17Chanay, Jeffrey A Esq NEW89Ioni Bowcher
1036Wickens D PerinBrazil2024-04-16Dorl, James J Esq NEGOTIATION91Stephen Shaw
1037Johnson J FlosiGermany2024-04-10Chanay, Jeffrey A Esq QUALIFIED45Ivan Magalhaes
1038Greenwood H NestleGermany2024-04-02King, Christopher A Esq RENEWAL50Xuxue Feng
1039Murillo M VenereGermany2024-04-03Chapman, Ross E Esq RENEWAL72Ivan Magalhaes
1040Emily N MacleadJapan2024-03-30Commercial Press UNQUALIFIED73Onyama Limba
1041Stacey K BowleyCanada2024-04-16Commercial Press NEW93Ivan Magalhaes
1042Juan M MaletFrance2024-04-15Rangoni Of Florence UNQUALIFIED9Stephen Shaw
1043Darci I RutaGermany2024-03-31Rangoni Of Florence PROPOSAL54Onyama Limba
1044Emily Y CampainFrance2024-04-05Dorl, James J Esq NEW97Stephen Shaw
1045Tony F MacleadSpain2024-04-23Printing Dimensions RENEWAL27Amy Elsner
1046Aruna Z FigeroaUnited Kingdom2024-04-10Dorl, James J Esq UNQUALIFIED92Onyama Limba
1047Johnson X GillianIndia2024-04-17Dorl, James J Esq QUALIFIED88Onyama Limba
1048James X OldroydAustralia2024-04-07Rangoni Of Florence NEGOTIATION19Anna Fali
1049David U MorascaIndia2024-04-12Benton, John B Jr UNQUALIFIED27Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba W RutaRussiaStephen Shaw QUALIFIED
Ricardo Z SaylorsRussiaXuxue Feng RENEWAL
Aika E IturbideRussiaStephen Shaw NEGOTIATION
Mujtaba Z OldroydBrazilStephen Shaw UNQUALIFIED
Silvio S CaudyArgentinaAsiya Javayant PROPOSAL
Clifford X WhobreyFranceOnyama Limba PROPOSAL
Arvin K StensethAustraliaBernardo Dominic PROPOSAL
Morrow R MacleadBrazilAsiya Javayant PROPOSAL
Stacey Y GauchoJapanBernardo Dominic RENEWAL
Juan M NickaAustraliaAnna Fali QUALIFIED
Munro F DoeItalyBernardo Dominic RENEWAL
Francesco S VocelkaRussiaStephen Shaw QUALIFIED
Alejandro Y WaycottJapanIvan Magalhaes QUALIFIED
Claire O VenereSpainAmy Elsner UNQUALIFIED
Silvio R MorascaRussiaAmy Elsner UNQUALIFIED
Octavia L PoquetteAustraliaElwin Sharvill RENEWAL
Murillo W SaylorsBrazilElwin Sharvill RENEWAL
Maisha E BriddickIndiaAnna Fali NEW
Antonio E NickaRussiaStephen Shaw RENEWAL
Stacey E WaycottRussiaStephen Shaw UNQUALIFIED
Octavia C VenereIndiaIoni Bowcher RENEWAL
Salvatore Z BriddickBrazilOnyama Limba UNQUALIFIED
Morrow Z DarakjyBrazilIvan Magalhaes NEW
Wickens J RimArgentinaAsiya Javayant QUALIFIED
Mujtaba L GarufiJapanAsiya Javayant NEW
Maisha K InouyeBrazilStephen Shaw RENEWAL
Mujtaba V AmigonUnited KingdomXuxue Feng QUALIFIED
Alejandro J GauchoRussiaElwin Sharvill NEGOTIATION
Ricardo A ChuiAustraliaBernardo Dominic UNQUALIFIED
Deepesh I ChuiRussiaIoni Bowcher UNQUALIFIED
Ashley F TollnerCanadaIvan Magalhaes NEW
David E MacleadCanadaIvan Magalhaes UNQUALIFIED
Murillo V KuskoBrazilIoni Bowcher NEW
Smith Q VocelkaBrazilAmy Elsner PROPOSAL
Jennifer K MarrierGermanyStephen Shaw UNQUALIFIED
Kaitlin Q NickaCanadaStephen Shaw UNQUALIFIED
Octavia Y ShinkoRussiaXuxue Feng UNQUALIFIED
Salvatore P OstroskyAustraliaIvan Magalhaes NEGOTIATION
Aruna N DarakjyFranceElwin Sharvill UNQUALIFIED
Jefferson F DilliardFranceAnna Fali NEW
Smith B BologniaFranceBernardo Dominic NEW
Isabel W GlickIndiaOnyama Limba UNQUALIFIED
Aditya J MaletFranceElwin Sharvill NEW
Sinclair D GauchoUnited KingdomElwin Sharvill NEW
Smith U NickaArgentinaStephen Shaw NEW
Smith T TollnerItalyAsiya Javayant NEW
Costa Q MaletAustraliaXuxue Feng NEW
Smith H FerenczCanadaXuxue Feng UNQUALIFIED
Maria R FigeroaSpainBernardo Dominic NEGOTIATION
Antonio B IturbideIndiaBernardo Dominic RENEWAL
Frozen Columns
Name
Emily X Chui
Arvin E Figeroa
Cody X Wieser
Claire E Poquette
Maria Y Foller
Cody D Kolmetz
Clifford C Butt
Darci X Campain
Isabel E Butt
Jefferson O Marrier
Aruna W Briddick
Leon P Nicka
Leja E Malet
Aditya B Wieser
Munro V Bowley
Smith O Kolmetz
Adams K Marrier
Izzy A Marrier
Sinclair K Perin
Faith O Tollner
Ashley E Vocelka
Emily P Marrier
Nicolas S Gaucho
Claire W Royster
Greenwood O Perin
Johnson L Albares
Nicolas N Morasca
Antonio O Shinko
Smith X Iturbide
Jennifer V Nestle
Julie S Venere
Costa J Gillian
Maria E Kolmetz
Maisha C Shinko
Tony K Rim
Greenwood B Morasca
Darci G Butt
Emily X Gaucho
Claire I Rim
Rodrigues I Gaucho
Ricardo E Gaucho
Jeanfrancois Y Nicka
Francesco X Slusarski
Aditya E Gillian
Jeanfrancois C Nestle
Salvatore K Maclead
Leon T Glick
Ivar E Maclead
Stacey B Amigon
Octavia Z Schemmer
IdCountryDate
1000Russia2024-04-12
1001Germany2024-04-03
1002Japan2024-04-23
1003United Kingdom2024-04-07
1004Canada2024-03-29
1005Italy2024-03-31
1006Australia2024-03-30
1007Australia2024-03-31
1008Canada2024-04-03
1009Australia2024-04-07
1010Spain2024-04-15
1011India2024-04-25
1012France2024-03-27
1013Japan2024-04-16
1014Argentina2024-04-21
1015Italy2024-04-25
1016Spain2024-04-05
1017Germany2024-04-14
1018Russia2024-03-27
1019United Kingdom2024-04-24
1020Australia2024-04-09
1021France2024-04-08
1022Italy2024-04-08
1023Canada2024-04-03
1024Japan2024-04-03
1025Germany2024-03-29
1026Brazil2024-04-25
1027Germany2024-04-08
1028United Kingdom2024-04-11
1029Japan2024-04-11
1030India2024-04-03
1031Argentina2024-03-27
1032Spain2024-04-22
1033Japan2024-03-31
1034United Kingdom2024-04-11
1035Japan2024-04-21
1036Spain2024-04-21
1037Spain2024-04-08
1038Brazil2024-03-28
1039Brazil2024-04-17
1040Canada2024-04-05
1041Brazil2024-04-15
1042Russia2024-03-30
1043United Kingdom2024-04-05
1044Argentina2024-03-29
1045Germany2024-04-18
1046Germany2024-04-04
1047France2024-04-18
1048Russia2024-04-11
1049Germany2024-03-31

On-Demand Data

NameIdCountryDate
Mujtaba Z Morasca1000Canada2024-04-14
Jefferson S Vocelka1001Russia2024-04-07
Salvatore Z Bowley1002Spain2024-04-12
Octavia S Saylors1003United Kingdom2024-04-23
Rodrigues P Ostrosky1004Italy2024-04-24
David S Dilliard1005France2024-03-28
James A Stockham1006Germany2024-03-30
Maisha W Flosi1007Spain2024-04-08
Leja V Ferencz1008Brazil2024-04-22
Chavez N Perin1009India2024-04-13
Ashley F Briddick1010United Kingdom2024-04-03
Smith O Figeroa1011France2024-04-02
Jones Q Schemmer1012Italy2024-04-11
Deepesh M Slusarski1013Canada2024-04-03
Wickens L Rulapaugh1014Italy2024-04-22
Murillo B Flosi1015India2024-03-29
Faith P Caldarera1016Argentina2024-04-15
Faith C Amigon1017India2024-03-28
Aika B Gillian1018Japan2024-04-21
Wickens R Briddick1019Brazil2024-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson H TollnerFranceStephen Shaw RENEWAL
David N PoquetteItalyAnna Fali RENEWAL
Isabel H SchemmerIndiaOnyama Limba QUALIFIED
Silvio F PaprockiJapanElwin Sharvill PROPOSAL
Kaitlin A NestleCanadaXuxue Feng RENEWAL
Tony L StockhamSpainStephen Shaw NEGOTIATION
Chavez V BologniaJapanXuxue Feng UNQUALIFIED
Adams H GauchoArgentinaIoni Bowcher PROPOSAL
Maisha C MarrierIndiaXuxue Feng UNQUALIFIED
Leon S ButtAustraliaElwin Sharvill NEW
Antonio L PoquetteGermanyElwin Sharvill UNQUALIFIED
Johnson R CampainCanadaStephen Shaw UNQUALIFIED
Mujtaba Y MaletCanadaAnna Fali PROPOSAL
David A DarakjyItalyIoni Bowcher RENEWAL
Izzy O MorascaRussiaIoni Bowcher NEW
Jefferson Q SaylorsRussiaXuxue Feng NEW
Leja C FollerItalyIvan Magalhaes NEW
James O WaycottFranceBernardo Dominic PROPOSAL
Wickens K FollerSpainXuxue Feng NEGOTIATION
Octavia K CaudyItalyAnna Fali NEW
Rodrigues E DilliardItalyStephen Shaw UNQUALIFIED
Aditya N DilliardUnited KingdomIoni Bowcher QUALIFIED
Francesco B BologniaItalyXuxue Feng PROPOSAL
Jefferson S RimFranceElwin Sharvill NEGOTIATION
Wickens J SlusarskiGermanyIoni Bowcher NEW
Nicolas J RimItalyAsiya Javayant NEGOTIATION
Ricardo W CaldareraSpainIvan Magalhaes QUALIFIED
Murillo D StockhamRussiaOnyama Limba PROPOSAL
Ashley G PerinRussiaAmy Elsner UNQUALIFIED
Izzy W GlickIndiaStephen Shaw RENEWAL
Aruna R GauchoJapanIoni Bowcher UNQUALIFIED
Stacey X DoeBrazilOnyama Limba QUALIFIED
Francesco B PerinBrazilStephen Shaw UNQUALIFIED
Darci D StensethSpainAmy Elsner QUALIFIED
Aruna X OstroskyBrazilStephen Shaw PROPOSAL
Kaitlin Z BowleyAustraliaStephen Shaw PROPOSAL
Salvatore F DoeCanadaOnyama Limba RENEWAL
Tony J GillianUnited KingdomAnna Fali QUALIFIED
Clifford U ButtCanadaStephen Shaw QUALIFIED
Antonio Z FerenczAustraliaIoni Bowcher 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>