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
Juan K AlbaresArgentinaElwin Sharvill RENEWAL
James C NickaUnited KingdomOnyama Limba PROPOSAL
Emily K BologniaAustraliaElwin Sharvill NEW
Aruna O PaprockiJapanIvan Magalhaes NEW
Ashley W GarufiGermanyAnna Fali UNQUALIFIED
Morrow G CaudyRussiaIoni Bowcher NEW
Wickens S KuskoItalyXuxue Feng RENEWAL
Maria L KuskoIndiaBernardo Dominic QUALIFIED
Aika I MaletSpainAnna Fali QUALIFIED
Francesco G ShinkoArgentinaAnna Fali PROPOSAL
Costa V RutaFranceElwin Sharvill NEGOTIATION
Juan Z NestleFranceIvan Magalhaes QUALIFIED
Isabel M VocelkaUnited KingdomXuxue Feng QUALIFIED
Cody H IturbideBrazilElwin Sharvill PROPOSAL
Aika K CaudyBrazilElwin Sharvill UNQUALIFIED
Silvio G PoquetteGermanyAnna Fali NEW
Aditya W VenereRussiaIvan Magalhaes PROPOSAL
Murillo S GarufiSpainIvan Magalhaes QUALIFIED
Tony O CaldareraGermanyXuxue Feng PROPOSAL
Faith Q GauchoBrazilAmy Elsner UNQUALIFIED
Ashley Q OstroskyJapanStephen Shaw NEW
Emily W BowleyBrazilIoni Bowcher QUALIFIED
David D PaprockiRussiaXuxue Feng NEW
Adams Y TollnerItalyBernardo Dominic UNQUALIFIED
Maisha T BologniaCanadaAsiya Javayant UNQUALIFIED
Murillo L MaletBrazilAnna Fali PROPOSAL
Adams P AlbaresUnited KingdomOnyama Limba NEGOTIATION
Antonio J PerinItalyIvan Magalhaes PROPOSAL
Leon R DoeIndiaOnyama Limba QUALIFIED
Kadeem B ChuiRussiaOnyama Limba NEW
Maria Q AlbaresBrazilOnyama Limba RENEWAL
Leon Y DarakjyAustraliaIvan Magalhaes RENEWAL
Johnson O StockhamFranceStephen Shaw RENEWAL
Misaki A MaletJapanIoni Bowcher QUALIFIED
Juan Q GauchoAustraliaXuxue Feng PROPOSAL
Morrow U FigeroaCanadaElwin Sharvill NEGOTIATION
Arvin G FigeroaFranceAsiya Javayant NEW
Arvin D TollnerAustraliaOnyama Limba PROPOSAL
Octavia T GauchoItalyXuxue Feng PROPOSAL
Arvin J PoquetteBrazilAnna Fali QUALIFIED
Octavia K MaletArgentinaAmy Elsner RENEWAL
Murillo H VocelkaIndiaAmy Elsner QUALIFIED
Izzy U TollnerArgentinaElwin Sharvill NEGOTIATION
Leon R SaylorsItalyAmy Elsner UNQUALIFIED
Johnson U RutaRussiaIoni Bowcher NEW
Kaitlin X DarakjyGermanyXuxue Feng UNQUALIFIED
Aditya A GlickAustraliaAmy Elsner NEW
Octavia K StensethItalyAsiya Javayant NEW
Wickens L FlosiIndiaIoni Bowcher NEW
Julie W SlusarskiCanadaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Munro S GauchoGermanyAmy Elsner QUALIFIED
Aika P StensethFranceAnna Fali QUALIFIED
Jeanfrancois A BologniaRussiaElwin Sharvill RENEWAL
Nicolas J RoysterRussiaAmy Elsner PROPOSAL
Darci R PerinRussiaStephen Shaw UNQUALIFIED
Octavia W AlbaresBrazilElwin Sharvill RENEWAL
Stacey O VenereItalyAmy Elsner RENEWAL
Aika R VocelkaArgentinaAmy Elsner PROPOSAL
Silvio I GarufiAustraliaXuxue Feng RENEWAL
Mayumi T BologniaItalyAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey Z AlbaresItaly2024-04-19Chanay, Jeffrey A Esq QUALIFIED8Asiya Javayant
1001Stacey F BowleyRussia2024-04-16Buckley Miller Wright QUALIFIED35Asiya Javayant
1002Aruna V BowleyUnited Kingdom2024-04-22King, Christopher A Esq NEGOTIATION68Stephen Shaw
1003David E StensethUnited Kingdom2024-04-15Chapman, Ross E Esq PROPOSAL74Ivan Magalhaes
1004Octavia J FerenczBrazil2024-05-09Commercial Press QUALIFIED15Anna Fali
1005Darci V RoysterCanada2024-04-30Chemel, James L Cpa NEW24Xuxue Feng
1006Juan I IturbideSpain2024-04-13Commercial Press UNQUALIFIED67Anna Fali
1007Ashley B ChuiUnited Kingdom2024-05-09Printing Dimensions RENEWAL19Bernardo Dominic
1008Greenwood W DoeItaly2024-04-23Chapman, Ross E Esq NEGOTIATION39Asiya Javayant
1009Ricardo R DoeIndia2024-05-07Truhlar And Truhlar Attys NEGOTIATION22Xuxue Feng
1010Munro M IturbideUnited Kingdom2024-05-08Feiner Bros PROPOSAL25Amy Elsner
1011Arvin E WaycottIndia2024-04-15Feltz Printing Service NEGOTIATION37Stephen Shaw
1012Rodrigues F CaudyCanada2024-04-27Benton, John B Jr NEW99Onyama Limba
1013Maria F RoysterUnited Kingdom2024-04-16Chemel, James L Cpa NEGOTIATION89Asiya Javayant
1014Nicolas I RoysterBrazil2024-04-29Morlong Associates RENEWAL88Amy Elsner
1015Misaki J BologniaItaly2024-04-23Rangoni Of Florence NEGOTIATION50Bernardo Dominic
1016Jones K GlickUnited Kingdom2024-04-29Chemel, James L Cpa UNQUALIFIED25Ioni Bowcher
1017Juan Y StockhamCanada2024-04-18Feltz Printing Service PROPOSAL37Stephen Shaw
1018Alejandro S ButtFrance2024-05-05Feiner Bros UNQUALIFIED1Onyama Limba
1019Aruna X StensethIndia2024-04-30Rousseaux, Michael Esq QUALIFIED33Xuxue Feng
1020Jones S WieserItaly2024-04-23King, Christopher A Esq RENEWAL76Anna Fali
1021Stacey R MacleadArgentina2024-05-11Morlong Associates QUALIFIED35Asiya Javayant
1022Sinclair O GlickFrance2024-05-03Rousseaux, Michael Esq QUALIFIED12Anna Fali
1023Rodrigues R MarrierIndia2024-04-18Chemel, James L Cpa UNQUALIFIED12Anna Fali
1024Maisha T ChuiRussia2024-04-13Dorl, James J Esq NEGOTIATION99Bernardo Dominic
1025Julie N TollnerFrance2024-04-16Dorl, James J Esq PROPOSAL2Stephen Shaw
1026Munro D NickaAustralia2024-05-05Truhlar And Truhlar Attys QUALIFIED97Asiya Javayant
1027Antonio T MorascaSpain2024-04-30Morlong Associates NEGOTIATION57Amy Elsner
1028Juan M NestleGermany2024-05-10Feltz Printing Service NEW37Stephen Shaw
1029Mayumi T DarakjyArgentina2024-04-17Buckley Miller Wright NEW47Asiya Javayant
1030Sinclair W IturbideSpain2024-05-03Rousseaux, Michael Esq UNQUALIFIED9Onyama Limba
1031Stacey Z IturbideRussia2024-04-14Rousseaux, Michael Esq NEW66Elwin Sharvill
1032Salvatore I MarrierJapan2024-05-11Benton, John B Jr NEGOTIATION60Amy Elsner
1033Aika W WhobreyArgentina2024-04-20Buckley Miller Wright UNQUALIFIED87Ivan Magalhaes
1034Octavia G OstroskyAustralia2024-04-24Buckley Miller Wright NEGOTIATION95Xuxue Feng
1035Kaitlin N VenereRussia2024-04-21Chapman, Ross E Esq PROPOSAL82Ivan Magalhaes
1036Ricardo A FerenczSpain2024-05-11Chanay, Jeffrey A Esq RENEWAL59Anna Fali
1037Morrow U ChuiJapan2024-04-26Dorl, James J Esq QUALIFIED64Bernardo Dominic
1038Sinclair M SchemmerUnited Kingdom2024-04-19Dorl, James J Esq NEW67Bernardo Dominic
1039Jennifer Q MacleadBrazil2024-05-08Rousseaux, Michael Esq NEGOTIATION82Ivan Magalhaes
1040Darci Z VenereJapan2024-04-22Rousseaux, Michael Esq UNQUALIFIED28Amy Elsner
1041Mayumi V CaudyArgentina2024-04-28Truhlar And Truhlar Attys NEGOTIATION87Stephen Shaw
1042David M MaletFrance2024-04-22Chanay, Jeffrey A Esq NEGOTIATION8Onyama Limba
1043David E GauchoJapan2024-05-12Feltz Printing Service PROPOSAL58Stephen Shaw
1044Ivar C SlusarskiAustralia2024-05-12Chemel, James L Cpa RENEWAL36Amy Elsner
1045Nicolas J KolmetzGermany2024-04-16Benton, John B Jr QUALIFIED18Asiya Javayant
1046Maisha K RoysterUnited Kingdom2024-04-23Printing Dimensions NEW50Ioni Bowcher
1047Smith V InouyeBrazil2024-05-02Benton, John B Jr NEGOTIATION47Xuxue Feng
1048Murillo U PerinGermany2024-04-13Chapman, Ross E Esq QUALIFIED62Asiya Javayant
1049Cody D MarrierAustralia2024-05-05Morlong Associates NEW98Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Alejandro Y DarakjySpainAmy Elsner NEGOTIATION
Ivar Q StockhamIndiaStephen Shaw PROPOSAL
Deepesh K FlosiGermanyBernardo Dominic RENEWAL
Morrow E OstroskyAustraliaAmy Elsner NEGOTIATION
Chavez Z PerinAustraliaStephen Shaw PROPOSAL
Francesco B GillianBrazilIvan Magalhaes UNQUALIFIED
Deepesh Q FigeroaJapanAnna Fali RENEWAL
Sinclair Z GarufiCanadaAmy Elsner NEGOTIATION
Salvatore C InouyeGermanyBernardo Dominic NEW
Greenwood B BriddickJapanAsiya Javayant QUALIFIED
Jeanfrancois C KuskoBrazilAnna Fali PROPOSAL
Mujtaba S FigeroaJapanElwin Sharvill RENEWAL
Jeanfrancois T ChuiBrazilIvan Magalhaes UNQUALIFIED
Arvin R GlickAustraliaIvan Magalhaes NEGOTIATION
Misaki M MaletArgentinaIvan Magalhaes UNQUALIFIED
Kadeem E RoysterIndiaAsiya Javayant NEW
Sinclair Z PaprockiGermanyAsiya Javayant NEGOTIATION
Arvin G DilliardAustraliaAmy Elsner QUALIFIED
Costa X WhobreyCanadaOnyama Limba NEGOTIATION
James V AmigonJapanOnyama Limba UNQUALIFIED
Smith B ButtAustraliaOnyama Limba RENEWAL
Munro W StensethRussiaIoni Bowcher NEW
Kaitlin O MaletBrazilAmy Elsner RENEWAL
Arvin U GlickSpainXuxue Feng PROPOSAL
Morrow B CampainArgentinaAsiya Javayant NEGOTIATION
Misaki G InouyeJapanAmy Elsner QUALIFIED
Rodrigues F FlosiSpainOnyama Limba NEGOTIATION
Juan W MorascaArgentinaAnna Fali PROPOSAL
Juan K MacleadArgentinaIoni Bowcher UNQUALIFIED
Sinclair X RutaIndiaAnna Fali NEGOTIATION
Wickens D KolmetzArgentinaIoni Bowcher UNQUALIFIED
Clifford A CampainFranceAmy Elsner QUALIFIED
Wickens R PaprockiIndiaIoni Bowcher RENEWAL
Jennifer K GlickSpainOnyama Limba QUALIFIED
Julie E DoeFranceAnna Fali RENEWAL
Greenwood Q TollnerGermanyIoni Bowcher NEW
Deepesh J RoysterJapanOnyama Limba QUALIFIED
Ivar S PerinGermanyElwin Sharvill NEW
Kaitlin T KolmetzBrazilStephen Shaw QUALIFIED
Izzy H VocelkaBrazilStephen Shaw QUALIFIED
Isabel C FerenczAustraliaIvan Magalhaes NEW
Maria O PaprockiSpainOnyama Limba QUALIFIED
Deepesh H StensethSpainElwin Sharvill QUALIFIED
Jones D GlickAustraliaElwin Sharvill NEW
Jennifer D VenereCanadaStephen Shaw PROPOSAL
Silvio T SchemmerRussiaXuxue Feng PROPOSAL
Aruna Q StockhamItalyAmy Elsner QUALIFIED
Cody N GillianSpainIvan Magalhaes PROPOSAL
Misaki O StensethFranceXuxue Feng RENEWAL
Leon Z TollnerIndiaIoni Bowcher NEW
Frozen Columns
Name
Misaki C Chui
Isabel P Gaucho
Julie D Rim
Chavez S Garufi
Aruna D Whobrey
Silvio X Stockham
Silvio H Whobrey
Ashley A Glick
Chavez O Shinko
Mujtaba H Rim
Stacey C Sergi
Jefferson Z Dilliard
Maisha I Albares
Cody L Ferencz
Deepesh R Paprocki
Silvio O Butt
Alejandro B Inouye
Julie Y Sergi
Jones P Garufi
Murillo O Venere
Wickens J Venere
Arvin N Wieser
Deepesh Q Waycott
Maisha Y Kusko
Salvatore Y Butt
Wickens M Iturbide
Cody M Sergi
Jones W Flosi
Misaki K Caudy
Isabel S Maclead
Mujtaba D Venere
Claire J Whobrey
Julie N Iturbide
Johnson K Kolmetz
Salvatore M Ferencz
Aruna N Shinko
Clifford L Poquette
David I Vocelka
Aika T Paprocki
Aruna I Albares
Maisha V Perin
Tony C Ruta
Costa D Waycott
Maisha A Schemmer
Ashley G Tollner
Faith O Albares
Leja H Doe
Stacey V Whobrey
Mujtaba Q Briddick
Claire D Glick
IdCountryDate
1000France2024-04-26
1001United Kingdom2024-04-14
1002Japan2024-04-14
1003Germany2024-05-03
1004Spain2024-04-30
1005Italy2024-05-08
1006Argentina2024-05-02
1007United Kingdom2024-04-16
1008India2024-05-07
1009Spain2024-05-07
1010France2024-05-03
1011Italy2024-04-24
1012India2024-04-16
1013Australia2024-04-24
1014Brazil2024-05-02
1015Brazil2024-04-13
1016Spain2024-05-07
1017Canada2024-04-28
1018Italy2024-05-07
1019Germany2024-05-06
1020Australia2024-04-30
1021Germany2024-05-03
1022United Kingdom2024-04-20
1023Brazil2024-05-04
1024Argentina2024-05-12
1025United Kingdom2024-04-16
1026Canada2024-04-28
1027Russia2024-04-18
1028Russia2024-05-04
1029Brazil2024-05-08
1030France2024-05-09
1031Germany2024-05-04
1032Japan2024-05-12
1033Canada2024-04-29
1034Italy2024-05-11
1035France2024-04-13
1036Spain2024-04-26
1037Spain2024-04-18
1038France2024-05-05
1039Spain2024-04-19
1040United Kingdom2024-04-18
1041Brazil2024-04-25
1042Argentina2024-05-02
1043Spain2024-05-01
1044United Kingdom2024-04-21
1045Japan2024-04-16
1046India2024-04-25
1047Spain2024-04-27
1048Canada2024-04-28
1049Canada2024-05-07

On-Demand Data

NameIdCountryDate
Maisha I Maclead1000Spain2024-05-12
Aditya F Tollner1001Canada2024-05-11
Kaitlin V Garufi1002Germany2024-04-13
Octavia I Marrier1003Spain2024-05-11
Maria P Caudy1004Italy2024-04-28
Ricardo Z Paprocki1005Spain2024-04-13
Aditya Q Kusko1006Italy2024-04-27
Tony W Kusko1007Argentina2024-05-10
Julie V Whobrey1008France2024-05-02
Jones R Malet1009Spain2024-05-10
Darci B Ferencz1010Brazil2024-05-06
Ivar N Butt1011France2024-04-24
Darci S Doe1012France2024-04-28
Morrow A Perin1013India2024-05-12
Jones G Kolmetz1014India2024-04-22
Darci A Foller1015Argentina2024-04-20
Aika R Tollner1016United Kingdom2024-05-05
Rodrigues I Royster1017France2024-04-24
Salvatore K Nicka1018Australia2024-04-27
Chavez J Stenseth1019Canada2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford V AmigonArgentinaOnyama Limba QUALIFIED
Wickens R FlosiJapanIvan Magalhaes NEGOTIATION
Izzy M FigeroaAustraliaOnyama Limba UNQUALIFIED
Leja L MaletIndiaIoni Bowcher RENEWAL
Francesco W RoysterAustraliaAmy Elsner NEGOTIATION
Tony Y GlickItalyXuxue Feng UNQUALIFIED
Izzy L GarufiGermanyElwin Sharvill NEW
Costa N CaldareraSpainAnna Fali PROPOSAL
Chavez B FlosiRussiaStephen Shaw PROPOSAL
Aditya F WieserGermanyElwin Sharvill PROPOSAL
Julie U RulapaughRussiaAmy Elsner NEW
Julie L PerinGermanyStephen Shaw NEGOTIATION
Cody V NickaBrazilIvan Magalhaes NEW
Munro U VenereUnited KingdomXuxue Feng PROPOSAL
Arvin V FerenczBrazilStephen Shaw NEGOTIATION
Claire A RimArgentinaAmy Elsner NEGOTIATION
Ivar K WhobreyArgentinaOnyama Limba RENEWAL
Silvio I GarufiIndiaAnna Fali UNQUALIFIED
Misaki V WieserRussiaIoni Bowcher NEW
Francesco J BriddickItalyIvan Magalhaes QUALIFIED
Misaki H WaycottGermanyIoni Bowcher PROPOSAL
Alejandro H FollerSpainOnyama Limba RENEWAL
Leja Q GarufiGermanyAmy Elsner NEGOTIATION
Faith L FollerSpainAsiya Javayant PROPOSAL
Wickens T PoquetteSpainAmy Elsner PROPOSAL
Aika B BriddickArgentinaXuxue Feng NEGOTIATION
Mayumi Z StockhamCanadaAnna Fali NEGOTIATION
Jeanfrancois M BriddickJapanElwin Sharvill RENEWAL
Wickens X DoeItalyBernardo Dominic PROPOSAL
Claire Y KolmetzFranceAnna Fali NEGOTIATION
Nicolas S DilliardItalyAsiya Javayant UNQUALIFIED
Alejandro L StensethItalyXuxue Feng RENEWAL
Francesco U VocelkaRussiaAnna Fali QUALIFIED
Smith J VenereRussiaAmy Elsner UNQUALIFIED
David K KolmetzRussiaXuxue Feng RENEWAL
Emily T PaprockiItalyBernardo Dominic PROPOSAL
Munro D CaudyCanadaAsiya Javayant NEW
Alejandro W OldroydUnited KingdomElwin Sharvill NEW
Costa C NickaIndiaOnyama Limba NEGOTIATION
Tony L ChuiCanadaStephen Shaw NEGOTIATION

<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>