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
Aika L DilliardArgentinaIoni Bowcher NEW
Kaitlin V GlickRussiaIvan Magalhaes NEW
Jennifer G OstroskySpainIoni Bowcher NEW
Sinclair L RulapaughSpainXuxue Feng NEGOTIATION
Greenwood O CaudyArgentinaStephen Shaw NEW
Nicolas J NestleRussiaAsiya Javayant NEW
Emily N VenereAustraliaAsiya Javayant UNQUALIFIED
Jennifer W RulapaughBrazilElwin Sharvill PROPOSAL
Jefferson Q RutaUnited KingdomStephen Shaw QUALIFIED
Ivar C RulapaughItalyXuxue Feng NEW
Leja G RutaBrazilBernardo Dominic NEGOTIATION
Leja N FlosiArgentinaAmy Elsner NEW
Leja D OldroydArgentinaIvan Magalhaes NEW
Jones M IturbideGermanyBernardo Dominic NEW
Isabel G MaletUnited KingdomAmy Elsner NEGOTIATION
Maisha F PoquetteBrazilIoni Bowcher RENEWAL
Francesco R CampainIndiaIoni Bowcher PROPOSAL
Murillo O RulapaughGermanyAmy Elsner NEGOTIATION
Leon V RutaJapanElwin Sharvill PROPOSAL
James C ShinkoBrazilXuxue Feng PROPOSAL
Smith T RoysterRussiaAsiya Javayant QUALIFIED
Ivar R SlusarskiRussiaStephen Shaw NEGOTIATION
Antonio Q KuskoIndiaOnyama Limba PROPOSAL
Arvin L MorascaBrazilAnna Fali UNQUALIFIED
Jefferson B FlosiUnited KingdomBernardo Dominic UNQUALIFIED
David L KuskoSpainXuxue Feng RENEWAL
Adams Z MaletItalyAsiya Javayant RENEWAL
Costa V MorascaRussiaXuxue Feng NEW
Deepesh S InouyeGermanyIvan Magalhaes RENEWAL
Smith A SchemmerFranceXuxue Feng QUALIFIED
Jefferson B CampainJapanElwin Sharvill QUALIFIED
Greenwood N OstroskyGermanyXuxue Feng RENEWAL
Aditya Q StockhamFranceElwin Sharvill UNQUALIFIED
James G NestleJapanAnna Fali QUALIFIED
Ivar D MaletCanadaAsiya Javayant NEW
Nicolas I VenereSpainAsiya Javayant QUALIFIED
Tony J IturbideRussiaAmy Elsner PROPOSAL
Kaitlin W AlbaresBrazilStephen Shaw NEW
Alejandro D MaletJapanElwin Sharvill NEGOTIATION
Claire N CaldareraIndiaAmy Elsner NEW
Adams Y FigeroaItalyBernardo Dominic PROPOSAL
Leon U BowleyArgentinaXuxue Feng NEW
Octavia U GarufiIndiaOnyama Limba QUALIFIED
Mayumi E MarrierArgentinaIvan Magalhaes NEW
Octavia W DarakjyArgentinaIoni Bowcher NEGOTIATION
Deepesh R NickaFranceAnna Fali RENEWAL
Darci N DilliardSpainXuxue Feng RENEWAL
Tony X ChuiItalyAnna Fali NEGOTIATION
Izzy U GlickCanadaIvan Magalhaes NEW
Deepesh M ButtSpainOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Aika W NickaRussiaBernardo Dominic UNQUALIFIED
Cody D PerinGermanyOnyama Limba NEW
James I CaudyRussiaBernardo Dominic NEW
Darci V SergiUnited KingdomElwin Sharvill UNQUALIFIED
Smith X NickaCanadaAmy Elsner UNQUALIFIED
Ricardo G PerinIndiaAsiya Javayant RENEWAL
Greenwood G RoysterJapanElwin Sharvill RENEWAL
Cody A KuskoRussiaOnyama Limba UNQUALIFIED
James A NickaBrazilElwin Sharvill RENEWAL
Kadeem L RutaIndiaAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia T BowleyItaly2024-05-15Dorl, James J Esq QUALIFIED83Amy Elsner
1001Kaitlin H MorascaSpain2024-05-15Commercial Press RENEWAL44Elwin Sharvill
1002Isabel V GauchoArgentina2024-04-26Feltz Printing Service NEW66Anna Fali
1003Faith Y GillianFrance2024-05-09Chanay, Jeffrey A Esq UNQUALIFIED13Ioni Bowcher
1004Francesco F RoysterFrance2024-05-17Rangoni Of Florence NEGOTIATION63Bernardo Dominic
1005Jennifer N DilliardIndia2024-05-04King, Christopher A Esq UNQUALIFIED5Ivan Magalhaes
1006Juan O GauchoCanada2024-05-14Benton, John B Jr UNQUALIFIED25Bernardo Dominic
1007Tony E RimIndia2024-04-30Truhlar And Truhlar Attys NEW42Anna Fali
1008Stacey C CampainItaly2024-05-06Buckley Miller Wright QUALIFIED16Amy Elsner
1009Chavez S MaletFrance2024-05-11Printing Dimensions RENEWAL20Amy Elsner
1010Antonio M MarrierAustralia2024-05-05King, Christopher A Esq NEGOTIATION71Stephen Shaw
1011Faith U MarrierFrance2024-05-21Feiner Bros PROPOSAL52Bernardo Dominic
1012Aika X RimCanada2024-05-14Truhlar And Truhlar Attys UNQUALIFIED6Anna Fali
1013Costa H NestleFrance2024-05-14Chanay, Jeffrey A Esq UNQUALIFIED15Onyama Limba
1014Isabel W CampainUnited Kingdom2024-05-09King, Christopher A Esq UNQUALIFIED32Elwin Sharvill
1015Smith F StensethItaly2024-04-22King, Christopher A Esq RENEWAL47Anna Fali
1016Johnson T MaletSpain2024-04-26King, Christopher A Esq NEGOTIATION70Xuxue Feng
1017Aditya O ShinkoArgentina2024-05-21Feiner Bros NEW89Ivan Magalhaes
1018Clifford R KolmetzIndia2024-04-27Rangoni Of Florence NEW65Asiya Javayant
1019Maisha K CampainRussia2024-05-10Feiner Bros NEGOTIATION75Amy Elsner
1020Costa Y TollnerCanada2024-05-10Printing Dimensions NEGOTIATION18Anna Fali
1021David U RoysterUnited Kingdom2024-05-02Rangoni Of Florence UNQUALIFIED3Stephen Shaw
1022Tony K RulapaughJapan2024-05-15Rangoni Of Florence UNQUALIFIED68Elwin Sharvill
1023Leja J WieserUnited Kingdom2024-05-16Benton, John B Jr NEGOTIATION97Onyama Limba
1024Octavia D BriddickAustralia2024-04-30Feiner Bros NEW48Stephen Shaw
1025Leon W PaprockiAustralia2024-04-29Buckley Miller Wright NEGOTIATION29Stephen Shaw
1026Octavia K GauchoBrazil2024-04-29Commercial Press NEW99Elwin Sharvill
1027Isabel H KuskoArgentina2024-05-10Benton, John B Jr PROPOSAL8Onyama Limba
1028David M MaletSpain2024-05-21Benton, John B Jr UNQUALIFIED49Stephen Shaw
1029Stacey L MaletGermany2024-04-25Chanay, Jeffrey A Esq NEGOTIATION20Xuxue Feng
1030Deepesh D DilliardAustralia2024-05-06Printing Dimensions NEW85Ioni Bowcher
1031Rodrigues W NickaGermany2024-04-26Rangoni Of Florence NEGOTIATION7Xuxue Feng
1032Adams X OldroydIndia2024-05-01Morlong Associates QUALIFIED42Stephen Shaw
1033Faith E FigeroaRussia2024-05-15King, Christopher A Esq RENEWAL66Anna Fali
1034Kaitlin A PerinGermany2024-05-16Feiner Bros NEGOTIATION88Xuxue Feng
1035Mayumi N StockhamRussia2024-05-14Printing Dimensions NEW67Stephen Shaw
1036Jefferson R PoquetteAustralia2024-04-28Feltz Printing Service UNQUALIFIED13Amy Elsner
1037Murillo G FollerJapan2024-05-14Buckley Miller Wright UNQUALIFIED25Amy Elsner
1038David U VocelkaSpain2024-05-19Chapman, Ross E Esq QUALIFIED39Xuxue Feng
1039James F SchemmerItaly2024-05-09Rangoni Of Florence NEGOTIATION19Elwin Sharvill
1040Maisha K ChuiAustralia2024-04-25Printing Dimensions RENEWAL50Ivan Magalhaes
1041Ivar T MarrierBrazil2024-04-28Rangoni Of Florence UNQUALIFIED27Onyama Limba
1042Aditya Y StockhamItaly2024-05-08King, Christopher A Esq PROPOSAL68Anna Fali
1043Isabel O RulapaughIndia2024-05-21Chanay, Jeffrey A Esq QUALIFIED20Asiya Javayant
1044Misaki P MaletRussia2024-05-17Buckley Miller Wright PROPOSAL57Amy Elsner
1045Darci G WhobreyFrance2024-05-08Feltz Printing Service QUALIFIED23Onyama Limba
1046Darci V SergiFrance2024-05-02Buckley Miller Wright UNQUALIFIED25Elwin Sharvill
1047Costa I SlusarskiJapan2024-04-23Truhlar And Truhlar Attys NEGOTIATION66Bernardo Dominic
1048Chavez P KolmetzGermany2024-04-29Chanay, Jeffrey A Esq UNQUALIFIED55Xuxue Feng
1049Isabel V MaletFrance2024-05-15Benton, John B Jr NEGOTIATION7Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Costa Q BologniaItalyStephen Shaw RENEWAL
Leja A ChuiBrazilOnyama Limba NEGOTIATION
Octavia J VenereJapanAsiya Javayant QUALIFIED
Clifford N GlickBrazilBernardo Dominic NEW
Arvin H GarufiAustraliaOnyama Limba UNQUALIFIED
Deepesh A KuskoAustraliaElwin Sharvill QUALIFIED
Maisha V ChuiCanadaStephen Shaw RENEWAL
Salvatore W DoeAustraliaAmy Elsner NEGOTIATION
Sinclair R CaldareraCanadaAsiya Javayant RENEWAL
Aruna P OstroskyArgentinaBernardo Dominic PROPOSAL
Jones U RoysterItalyStephen Shaw UNQUALIFIED
Deepesh R GillianIndiaBernardo Dominic NEW
Sinclair T CaldareraRussiaIvan Magalhaes QUALIFIED
Mayumi O AlbaresCanadaAsiya Javayant NEGOTIATION
Francesco N MaletAustraliaBernardo Dominic PROPOSAL
Murillo E MaletGermanyAsiya Javayant QUALIFIED
Jones W GlickBrazilBernardo Dominic RENEWAL
Octavia E KuskoAustraliaXuxue Feng RENEWAL
Deepesh E FerenczAustraliaXuxue Feng RENEWAL
Julie J IturbideJapanIvan Magalhaes UNQUALIFIED
Octavia U SergiGermanyOnyama Limba UNQUALIFIED
Cody M FlosiArgentinaStephen Shaw RENEWAL
Antonio Z PerinCanadaOnyama Limba UNQUALIFIED
Aruna F NickaUnited KingdomOnyama Limba NEGOTIATION
Morrow Z RutaArgentinaOnyama Limba PROPOSAL
Aruna R CaldareraJapanAnna Fali PROPOSAL
Emily S AlbaresFranceBernardo Dominic QUALIFIED
Faith Y MaletIndiaStephen Shaw QUALIFIED
Alejandro U PaprockiSpainElwin Sharvill PROPOSAL
Murillo A MacleadGermanyIvan Magalhaes NEGOTIATION
Nicolas E CaudyFranceOnyama Limba NEGOTIATION
Darci L CaudyItalyXuxue Feng NEGOTIATION
Maria G MacleadBrazilAnna Fali NEW
Kadeem Y OstroskyUnited KingdomXuxue Feng QUALIFIED
Salvatore N SaylorsArgentinaXuxue Feng UNQUALIFIED
Deepesh U NestleSpainAmy Elsner QUALIFIED
Octavia A DarakjyJapanOnyama Limba PROPOSAL
Juan P RutaAustraliaOnyama Limba PROPOSAL
Maisha M PoquetteCanadaAnna Fali NEGOTIATION
Isabel T ButtCanadaStephen Shaw NEGOTIATION
Arvin Y PoquetteCanadaAsiya Javayant RENEWAL
Ashley U PerinItalyAsiya Javayant QUALIFIED
Salvatore R WaycottIndiaAsiya Javayant UNQUALIFIED
Johnson Z MaletGermanyIvan Magalhaes QUALIFIED
Costa N MaletRussiaBernardo Dominic NEW
Aditya M SlusarskiFranceAmy Elsner NEW
Misaki Q MaletIndiaXuxue Feng UNQUALIFIED
Emily L RimBrazilIvan Magalhaes UNQUALIFIED
Octavia L FollerRussiaBernardo Dominic RENEWAL
Isabel Z MarrierBrazilBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Silvio B Ruta
Arvin P Rim
Maisha E Kusko
James S Wieser
Faith B Oldroyd
Kadeem V Stenseth
Morrow F Morasca
Greenwood L Tollner
Juan J Caldarera
Ashley X Venere
Faith P Gillian
Antonio B Iturbide
Nicolas F Amigon
Smith H Oldroyd
Aditya J Shinko
Deepesh X Venere
Aruna R Marrier
Tony S Campain
Adams Q Kolmetz
Faith M Briddick
Mayumi F Morasca
Darci R Flosi
Tony T Caldarera
Jeanfrancois Z Dilliard
Claire Y Perin
Salvatore T Whobrey
Chavez S Amigon
Antonio V Ostrosky
Silvio X Nestle
Aditya X Malet
Maria B Stockham
Cody T Caudy
Ashley F Morasca
Ashley W Perin
Greenwood C Kolmetz
Chavez U Bowley
Izzy Z Iturbide
Ricardo V Malet
Cody O Kusko
Leon Z Ferencz
Leon I Flosi
Rodrigues M Albares
Wickens H Gillian
Silvio P Ferencz
Jefferson E Caldarera
Ashley M Whobrey
Faith I Flosi
Faith Q Butt
Nicolas V Kusko
Claire G Garufi
IdCountryDate
1000Italy2024-05-14
1001United Kingdom2024-05-14
1002Germany2024-05-03
1003India2024-04-28
1004Spain2024-05-01
1005Australia2024-05-19
1006Germany2024-05-07
1007Russia2024-05-17
1008Japan2024-05-19
1009United Kingdom2024-05-19
1010Australia2024-04-28
1011India2024-05-11
1012Germany2024-05-03
1013Russia2024-04-29
1014India2024-05-20
1015Brazil2024-05-07
1016Italy2024-04-23
1017Germany2024-05-02
1018India2024-04-23
1019Canada2024-05-01
1020India2024-04-27
1021France2024-05-20
1022Japan2024-05-03
1023Russia2024-05-06
1024India2024-05-01
1025India2024-04-28
1026United Kingdom2024-05-20
1027Germany2024-05-05
1028India2024-04-29
1029Spain2024-05-15
1030Japan2024-05-03
1031Australia2024-04-22
1032Spain2024-05-17
1033Germany2024-05-16
1034Italy2024-05-17
1035India2024-05-04
1036United Kingdom2024-05-16
1037Argentina2024-05-01
1038Italy2024-05-14
1039United Kingdom2024-05-09
1040Brazil2024-05-21
1041Japan2024-04-22
1042United Kingdom2024-04-23
1043Japan2024-04-26
1044Japan2024-05-18
1045India2024-04-27
1046Australia2024-05-19
1047Canada2024-05-02
1048Argentina2024-05-21
1049Canada2024-05-17

On-Demand Data

NameIdCountryDate
Francesco R Oldroyd1000United Kingdom2024-05-05
Jones D Shinko1001Italy2024-04-26
Stacey O Whobrey1002Spain2024-04-27
Misaki E Rulapaugh1003Germany2024-04-26
Mujtaba K Morasca1004Australia2024-05-17
Aika C Ostrosky1005France2024-04-28
Ivar P Gaucho1006United Kingdom2024-04-24
Costa J Rim1007Brazil2024-05-13
Aditya B Paprocki1008Japan2024-05-18
Adams E Bolognia1009Argentina2024-05-04
Maria D Albares1010United Kingdom2024-05-13
Faith J Rim1011India2024-05-17
Salvatore W Iturbide1012United Kingdom2024-05-06
Wickens W Nicka1013Argentina2024-05-21
Emily G Inouye1014Japan2024-05-01
Chavez C Saylors1015Australia2024-05-18
Silvio X Dilliard1016Japan2024-05-19
Jeanfrancois I Dilliard1017Australia2024-05-06
Johnson B Stockham1018Japan2024-04-25
Isabel G Marrier1019India2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon X NickaSpainBernardo Dominic NEGOTIATION
Isabel I GlickIndiaIvan Magalhaes NEW
Jeanfrancois T OldroydBrazilBernardo Dominic NEW
Aika Y WieserFranceAmy Elsner PROPOSAL
Antonio S BriddickArgentinaIoni Bowcher QUALIFIED
Munro R StensethJapanBernardo Dominic PROPOSAL
Silvio W DarakjyItalyBernardo Dominic NEGOTIATION
Morrow Z BriddickJapanBernardo Dominic RENEWAL
Jennifer F SchemmerRussiaBernardo Dominic RENEWAL
David T AlbaresRussiaStephen Shaw QUALIFIED
Smith Q DoeBrazilAmy Elsner PROPOSAL
Antonio B BriddickItalyOnyama Limba NEGOTIATION
Tony A MarrierSpainIvan Magalhaes QUALIFIED
Johnson B SaylorsIndiaElwin Sharvill PROPOSAL
Ivar L MorascaJapanAmy Elsner RENEWAL
Silvio O StensethJapanIoni Bowcher UNQUALIFIED
Silvio F TollnerFranceXuxue Feng QUALIFIED
Aika U OldroydRussiaXuxue Feng PROPOSAL
Ivar A IturbideIndiaAmy Elsner QUALIFIED
David I MaletRussiaXuxue Feng RENEWAL
Jones Z MorascaSpainAmy Elsner PROPOSAL
Francesco Z VenereUnited KingdomXuxue Feng NEGOTIATION
Mayumi J ChuiFranceStephen Shaw RENEWAL
Aditya L RimArgentinaBernardo Dominic NEW
Claire E PaprockiBrazilOnyama Limba RENEWAL
Wickens J RimGermanyXuxue Feng NEW
Silvio E OldroydFranceAmy Elsner RENEWAL
Clifford O MaletItalyXuxue Feng PROPOSAL
Mujtaba Y RoysterFranceBernardo Dominic RENEWAL
Julie P KolmetzAustraliaOnyama Limba PROPOSAL
Aika T SchemmerRussiaIoni Bowcher QUALIFIED
Faith L MaletUnited KingdomBernardo Dominic PROPOSAL
Aditya I DarakjyFranceBernardo Dominic NEGOTIATION
Jefferson S CampainSpainAnna Fali QUALIFIED
Munro H InouyeFranceAnna Fali QUALIFIED
Smith I CaldareraSpainBernardo Dominic NEGOTIATION
Aruna I CaudyUnited KingdomXuxue Feng RENEWAL
Isabel D GlickRussiaBernardo Dominic NEGOTIATION
Mujtaba G KolmetzAustraliaIvan Magalhaes NEW
Alejandro U FollerSpainIoni 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>