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
Emily P DoeIndiaIvan Magalhaes UNQUALIFIED
Ivar W IturbideArgentinaStephen Shaw NEW
Jones R PerinArgentinaAnna Fali NEW
Maria A GauchoCanadaOnyama Limba NEW
Wickens S OstroskyJapanXuxue Feng NEGOTIATION
Sinclair J MacleadArgentinaElwin Sharvill UNQUALIFIED
Antonio L SlusarskiAustraliaIvan Magalhaes QUALIFIED
Leja R CaudySpainXuxue Feng RENEWAL
Arvin D SaylorsSpainAnna Fali PROPOSAL
Tony I WieserFranceElwin Sharvill PROPOSAL
Ricardo U TollnerRussiaXuxue Feng UNQUALIFIED
Sinclair O WieserJapanAmy Elsner UNQUALIFIED
Johnson A ButtArgentinaAsiya Javayant NEGOTIATION
Alejandro B TollnerJapanBernardo Dominic PROPOSAL
Aditya M RimItalyAsiya Javayant NEGOTIATION
Antonio O DoeItalyAsiya Javayant NEW
Ashley S CampainGermanyStephen Shaw QUALIFIED
Stacey Y NestleGermanyAnna Fali QUALIFIED
James A AmigonBrazilStephen Shaw QUALIFIED
Izzy A CaudyArgentinaXuxue Feng RENEWAL
Stacey Z VocelkaItalyOnyama Limba RENEWAL
Aruna P MaletAustraliaBernardo Dominic RENEWAL
Kadeem E AlbaresFranceXuxue Feng PROPOSAL
Jefferson A FigeroaGermanyAsiya Javayant NEW
Leon H CaudyCanadaOnyama Limba NEW
Darci F OldroydAustraliaAnna Fali NEW
Clifford M DoeSpainIvan Magalhaes QUALIFIED
Jefferson I FigeroaBrazilBernardo Dominic NEW
Kaitlin G PerinBrazilOnyama Limba RENEWAL
Isabel J NickaIndiaOnyama Limba NEGOTIATION
Tony P MaletUnited KingdomAnna Fali NEW
Octavia A DoeSpainIoni Bowcher RENEWAL
Murillo N PerinRussiaStephen Shaw UNQUALIFIED
Adams E VenereBrazilAnna Fali RENEWAL
Juan B MorascaAustraliaXuxue Feng NEGOTIATION
Alejandro T CampainFranceStephen Shaw UNQUALIFIED
Arvin W VenereArgentinaIvan Magalhaes UNQUALIFIED
Octavia C CaudyAustraliaBernardo Dominic QUALIFIED
Misaki Y AlbaresBrazilElwin Sharvill RENEWAL
Darci B FigeroaSpainIvan Magalhaes PROPOSAL
Smith H MacleadIndiaIoni Bowcher QUALIFIED
Maria A SaylorsSpainXuxue Feng NEGOTIATION
Maria V VenereRussiaStephen Shaw RENEWAL
Jennifer H WhobreyGermanyBernardo Dominic RENEWAL
Mujtaba W ButtIndiaIvan Magalhaes NEW
Cody C FlosiAustraliaIvan Magalhaes UNQUALIFIED
Faith C NickaCanadaOnyama Limba UNQUALIFIED
Costa I CaudyCanadaIoni Bowcher RENEWAL
Mujtaba P StockhamUnited KingdomAmy Elsner PROPOSAL
Adams O RimFranceAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
David J KuskoAustraliaAnna Fali NEGOTIATION
Maria N WieserSpainStephen Shaw NEGOTIATION
Mayumi N AlbaresUnited KingdomIvan Magalhaes NEW
Ivar Y VenereArgentinaStephen Shaw NEGOTIATION
Juan I RimJapanOnyama Limba QUALIFIED
Maisha V MacleadFranceXuxue Feng RENEWAL
Costa V RoysterFranceIvan Magalhaes NEW
Chavez S MorascaAustraliaIvan Magalhaes UNQUALIFIED
Jeanfrancois E RutaIndiaElwin Sharvill PROPOSAL
Maisha G ButtJapanIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya E CampainCanada2024-04-26Feltz Printing Service QUALIFIED8Ioni Bowcher
1001Aditya P MaletAustralia2024-04-11Benton, John B Jr QUALIFIED35Anna Fali
1002Leja A CaudyUnited Kingdom2024-04-10Feltz Printing Service QUALIFIED96Xuxue Feng
1003Kaitlin P MacleadItaly2024-03-31Chapman, Ross E Esq QUALIFIED86Anna Fali
1004Smith G GillianIndia2024-04-12Chanay, Jeffrey A Esq RENEWAL27Asiya Javayant
1005Octavia I TollnerIndia2024-04-19Truhlar And Truhlar Attys PROPOSAL6Bernardo Dominic
1006Adams G VenereBrazil2024-04-16Printing Dimensions NEW34Bernardo Dominic
1007Alejandro X PoquetteJapan2024-04-06King, Christopher A Esq RENEWAL8Amy Elsner
1008Ricardo N TollnerAustralia2024-04-26King, Christopher A Esq QUALIFIED36Bernardo Dominic
1009David Q InouyeRussia2024-04-04Truhlar And Truhlar Attys UNQUALIFIED16Xuxue Feng
1010Maria T SlusarskiBrazil2024-04-01Commercial Press UNQUALIFIED64Amy Elsner
1011Arvin R CampainJapan2024-04-23Morlong Associates NEGOTIATION39Stephen Shaw
1012Cody U ButtBrazil2024-04-06King, Christopher A Esq UNQUALIFIED70Ivan Magalhaes
1013Stacey U SchemmerBrazil2024-04-25Rangoni Of Florence NEW31Ioni Bowcher
1014Emily X DoeFrance2024-03-30Rangoni Of Florence NEGOTIATION29Asiya Javayant
1015Maisha T InouyeGermany2024-04-18King, Christopher A Esq NEW64Onyama Limba
1016Kaitlin Y ShinkoUnited Kingdom2024-04-18Truhlar And Truhlar Attys NEW57Elwin Sharvill
1017Juan C KuskoRussia2024-04-20Truhlar And Truhlar Attys NEW93Ivan Magalhaes
1018Wickens O FigeroaCanada2024-04-12Rousseaux, Michael Esq NEGOTIATION0Ivan Magalhaes
1019Clifford W CampainRussia2024-04-26Morlong Associates QUALIFIED73Onyama Limba
1020Morrow V FerenczItaly2024-04-22Morlong Associates NEGOTIATION81Bernardo Dominic
1021Ricardo C WhobreySpain2024-04-25Feiner Bros NEGOTIATION65Xuxue Feng
1022Sinclair G KuskoGermany2024-04-08Chanay, Jeffrey A Esq PROPOSAL47Anna Fali
1023James U PoquetteUnited Kingdom2024-04-26Commercial Press UNQUALIFIED46Anna Fali
1024Octavia W MarrierUnited Kingdom2024-04-17Printing Dimensions NEGOTIATION20Ivan Magalhaes
1025Francesco W DoeGermany2024-04-26Feiner Bros PROPOSAL39Ioni Bowcher
1026Clifford D VenereAustralia2024-04-02Printing Dimensions PROPOSAL88Ioni Bowcher
1027Costa Z OstroskyUnited Kingdom2024-03-31Chapman, Ross E Esq PROPOSAL23Asiya Javayant
1028Alejandro X OstroskyIndia2024-04-14Printing Dimensions PROPOSAL15Anna Fali
1029Octavia B FollerRussia2024-03-31Feiner Bros UNQUALIFIED8Bernardo Dominic
1030Francesco U BowleyItaly2024-04-17Rousseaux, Michael Esq QUALIFIED87Onyama Limba
1031Misaki E SlusarskiCanada2024-04-19Truhlar And Truhlar Attys PROPOSAL62Onyama Limba
1032Maria Y SergiRussia2024-04-26Commercial Press RENEWAL91Ioni Bowcher
1033Nicolas N FollerCanada2024-04-01Benton, John B Jr NEGOTIATION68Xuxue Feng
1034Nicolas D MarrierItaly2024-04-17Buckley Miller Wright NEW50Amy Elsner
1035Leon C AlbaresIndia2024-04-24Rousseaux, Michael Esq NEW68Elwin Sharvill
1036Clifford T ButtBrazil2024-03-31Chanay, Jeffrey A Esq NEGOTIATION57Anna Fali
1037Claire M IturbideGermany2024-04-02Commercial Press UNQUALIFIED8Stephen Shaw
1038Leja M DoeSpain2024-03-30Morlong Associates NEW57Amy Elsner
1039Juan G GauchoRussia2024-04-13Truhlar And Truhlar Attys NEGOTIATION20Bernardo Dominic
1040Maria X OstroskyAustralia2024-04-07Rangoni Of Florence NEGOTIATION75Onyama Limba
1041Claire M MarrierFrance2024-04-19Chanay, Jeffrey A Esq NEW4Xuxue Feng
1042Salvatore B GlickAustralia2024-04-03Buckley Miller Wright PROPOSAL21Amy Elsner
1043Murillo V KuskoSpain2024-04-19Truhlar And Truhlar Attys UNQUALIFIED73Anna Fali
1044Smith C WhobreyAustralia2024-04-18Chemel, James L Cpa PROPOSAL6Anna Fali
1045Alejandro Q SchemmerUnited Kingdom2024-04-12Printing Dimensions PROPOSAL62Bernardo Dominic
1046Johnson A BowleyJapan2024-04-18Chanay, Jeffrey A Esq NEW30Xuxue Feng
1047Ivar Z BriddickUnited Kingdom2024-04-01Dorl, James J Esq NEGOTIATION12Ioni Bowcher
1048Jeanfrancois Z GlickItaly2024-04-15Morlong Associates NEW88Onyama Limba
1049Claire D KolmetzSpain2024-04-14Feiner Bros RENEWAL66Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Greenwood W MorascaBrazilAmy Elsner QUALIFIED
Stacey G DoeSpainAnna Fali PROPOSAL
Greenwood P FollerJapanAmy Elsner NEGOTIATION
David Y CaudyCanadaIoni Bowcher RENEWAL
Leja V WhobreySpainAsiya Javayant NEW
Deepesh O MaletArgentinaOnyama Limba NEW
Antonio V SaylorsAustraliaOnyama Limba UNQUALIFIED
Deepesh L GlickBrazilElwin Sharvill NEW
Jefferson J WieserSpainAnna Fali NEW
Darci Q DilliardSpainElwin Sharvill PROPOSAL
Costa X OstroskyAustraliaAmy Elsner PROPOSAL
Sinclair G PoquetteAustraliaAnna Fali NEGOTIATION
Cody M MaletJapanStephen Shaw RENEWAL
Izzy S ShinkoItalyIvan Magalhaes QUALIFIED
Ashley R SlusarskiJapanAsiya Javayant NEW
Claire O FigeroaItalyBernardo Dominic NEW
Clifford K InouyeFranceIvan Magalhaes QUALIFIED
Izzy V VocelkaArgentinaAmy Elsner RENEWAL
Jennifer R FerenczUnited KingdomAnna Fali NEW
Nicolas C MacleadGermanyStephen Shaw NEW
Alejandro O MaletBrazilAnna Fali PROPOSAL
Kaitlin C StensethBrazilElwin Sharvill NEGOTIATION
Murillo D WhobreyUnited KingdomIoni Bowcher NEGOTIATION
Ashley D WaycottAustraliaStephen Shaw NEW
Antonio Z StockhamBrazilIoni Bowcher NEW
Costa K TollnerRussiaAmy Elsner RENEWAL
James S PoquetteCanadaOnyama Limba UNQUALIFIED
James Q GlickBrazilIvan Magalhaes RENEWAL
Tony H NestleRussiaAsiya Javayant RENEWAL
Jeanfrancois J ButtSpainIvan Magalhaes QUALIFIED
Ivar C OldroydIndiaIoni Bowcher NEW
Leon E NestleAustraliaBernardo Dominic NEGOTIATION
Mayumi F NestleIndiaIvan Magalhaes RENEWAL
Francesco M PerinCanadaIvan Magalhaes NEGOTIATION
Maisha V MorascaIndiaOnyama Limba RENEWAL
Johnson X VocelkaFranceStephen Shaw PROPOSAL
Isabel I FigeroaSpainBernardo Dominic QUALIFIED
Aika G MacleadArgentinaAsiya Javayant QUALIFIED
Nicolas Z DilliardRussiaAsiya Javayant NEGOTIATION
Antonio L RoysterRussiaBernardo Dominic PROPOSAL
Murillo Q KuskoBrazilIoni Bowcher RENEWAL
Emily U SlusarskiCanadaElwin Sharvill QUALIFIED
Wickens R VenereCanadaStephen Shaw NEGOTIATION
Murillo J DarakjyJapanAnna Fali RENEWAL
Silvio Z GauchoSpainIvan Magalhaes NEW
Antonio J RutaSpainIoni Bowcher PROPOSAL
Jefferson B RoysterArgentinaXuxue Feng UNQUALIFIED
Jeanfrancois S BologniaRussiaBernardo Dominic NEGOTIATION
Arvin L VocelkaItalyOnyama Limba UNQUALIFIED
Murillo S RutaFranceStephen Shaw UNQUALIFIED
Frozen Columns
Name
Alejandro L Tollner
Sinclair E Perin
Aditya T Venere
Greenwood O Glick
Munro E Oldroyd
Misaki X Perin
Rodrigues Z Albares
Octavia G Perin
Murillo H Stockham
Deepesh U Ostrosky
Rodrigues Q Maclead
Maisha Q Vocelka
Julie Q Stenseth
Claire G Garufi
Murillo O Morasca
Arvin W Glick
Octavia O Paprocki
Isabel Q Kolmetz
Francesco I Flosi
Adams F Royster
Octavia S Foller
Arvin N Gaucho
Munro T Morasca
Aditya X Saylors
Faith X Ferencz
Munro W Vocelka
Julie G Tollner
Jones R Rulapaugh
Antonio Q Figeroa
Arvin O Ruta
Nicolas Z Kolmetz
Aditya H Campain
Morrow O Rulapaugh
Jeanfrancois A Caldarera
Cody K Rim
Silvio Y Saylors
Wickens A Iturbide
Arvin R Slusarski
Leon R Butt
Julie D Iturbide
Leon W Vocelka
Deepesh S Butt
James B Royster
Jeanfrancois Y Iturbide
David Y Butt
Juan Y Royster
Alejandro P Slusarski
Silvio Z Caldarera
Munro A Marrier
Maria N Caudy
IdCountryDate
1000United Kingdom2024-04-12
1001Argentina2024-04-14
1002Japan2024-04-23
1003Russia2024-04-17
1004Canada2024-04-05
1005Argentina2024-04-18
1006Argentina2024-04-06
1007Italy2024-04-02
1008Japan2024-04-27
1009India2024-04-15
1010Brazil2024-04-12
1011Italy2024-04-03
1012United Kingdom2024-04-02
1013Russia2024-04-21
1014Spain2024-04-07
1015Japan2024-04-13
1016France2024-04-20
1017France2024-04-17
1018United Kingdom2024-04-16
1019India2024-04-11
1020Brazil2024-04-18
1021United Kingdom2024-04-07
1022Argentina2024-04-15
1023Spain2024-04-04
1024France2024-04-25
1025Spain2024-04-11
1026Russia2024-04-13
1027Japan2024-04-04
1028Canada2024-04-26
1029Germany2024-04-22
1030Spain2024-04-26
1031Japan2024-04-27
1032India2024-04-07
1033Brazil2024-04-19
1034Argentina2024-04-14
1035Japan2024-04-22
1036Spain2024-04-11
1037Italy2024-04-08
1038Australia2024-04-07
1039Russia2024-04-01
1040France2024-04-05
1041Germany2024-04-05
1042India2024-04-08
1043Russia2024-04-23
1044Spain2024-04-07
1045India2024-04-13
1046Brazil2024-04-07
1047Russia2024-04-05
1048Australia2024-04-06
1049Argentina2024-04-19

On-Demand Data

NameIdCountryDate
Ricardo F Malet1000Argentina2024-04-26
Aika L Oldroyd1001Argentina2024-04-25
Kadeem B Tollner1002Russia2024-04-21
Kadeem I Wieser1003Brazil2024-04-17
Misaki F Caudy1004United Kingdom2024-04-27
Juan M Oldroyd1005Australia2024-03-30
Misaki H Garufi1006Japan2024-04-11
Aika R Flosi1007Russia2024-04-01
Emily Z Venere1008United Kingdom2024-04-21
Mayumi T Gillian1009Germany2024-03-29
Wickens P Poquette1010India2024-04-15
Chavez L Maclead1011United Kingdom2024-04-14
Wickens J Vocelka1012Australia2024-04-07
Leon I Gaucho1013Australia2024-03-29
Salvatore I Doe1014Germany2024-04-09
Cody X Garufi1015Russia2024-04-03
Greenwood S Dilliard1016Spain2024-04-24
Deepesh V Inouye1017India2024-04-10
Darci L Campain1018Russia2024-04-27
Murillo F Nestle1019Australia2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood R OldroydUnited KingdomStephen Shaw NEGOTIATION
Octavia T AlbaresRussiaElwin Sharvill NEGOTIATION
Ashley D SchemmerCanadaAnna Fali PROPOSAL
Wickens W SergiSpainStephen Shaw UNQUALIFIED
Darci L AmigonGermanyElwin Sharvill UNQUALIFIED
Clifford U SlusarskiCanadaIvan Magalhaes NEW
Isabel J BologniaItalyIoni Bowcher UNQUALIFIED
Maisha Q PerinUnited KingdomOnyama Limba NEW
Cody O WhobreyIndiaElwin Sharvill UNQUALIFIED
Leon Q DoeIndiaAnna Fali RENEWAL
Darci E TollnerItalyAnna Fali NEGOTIATION
Isabel G MorascaRussiaIvan Magalhaes QUALIFIED
James P GillianRussiaAmy Elsner NEW
Silvio I GillianItalyAsiya Javayant QUALIFIED
Misaki V RimAustraliaIvan Magalhaes NEGOTIATION
James O WhobreyArgentinaAmy Elsner PROPOSAL
Nicolas A CaldareraJapanOnyama Limba NEGOTIATION
Johnson C WieserGermanyIvan Magalhaes NEGOTIATION
Jeanfrancois J CaldareraGermanyAmy Elsner NEW
David A StockhamUnited KingdomIvan Magalhaes QUALIFIED
Morrow W ButtCanadaAsiya Javayant UNQUALIFIED
Alejandro Z DarakjySpainIoni Bowcher NEW
Chavez L RimFranceIoni Bowcher UNQUALIFIED
Darci W GillianItalyStephen Shaw QUALIFIED
Antonio G KuskoBrazilIvan Magalhaes UNQUALIFIED
Silvio X RimAustraliaAsiya Javayant RENEWAL
Alejandro E CaldareraGermanyAsiya Javayant NEW
Maria M GillianJapanAmy Elsner RENEWAL
Sinclair Q VenereFranceBernardo Dominic QUALIFIED
Aditya B PerinArgentinaIoni Bowcher UNQUALIFIED
Leon H WhobreyJapanIoni Bowcher NEW
Jones S IturbideUnited KingdomOnyama Limba NEGOTIATION
Sinclair R RimJapanOnyama Limba NEW
Alejandro E ChuiRussiaXuxue Feng RENEWAL
Maria L StockhamItalyElwin Sharvill PROPOSAL
Silvio M SergiItalyBernardo Dominic QUALIFIED
Sinclair I GarufiArgentinaBernardo Dominic QUALIFIED
Morrow O InouyeAustraliaElwin Sharvill NEW
Octavia X SlusarskiAustraliaAmy Elsner NEW
Jennifer P FerenczGermanyStephen Shaw 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>