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
Darci M FerenczArgentinaAnna Fali UNQUALIFIED
Maisha P ButtArgentinaXuxue Feng QUALIFIED
Kaitlin B ButtRussiaAmy Elsner NEGOTIATION
Wickens E PoquetteRussiaBernardo Dominic QUALIFIED
Darci N KolmetzUnited KingdomAmy Elsner NEW
Arvin N ButtSpainXuxue Feng NEGOTIATION
Adams K MarrierUnited KingdomOnyama Limba RENEWAL
Aditya L OstroskyJapanAmy Elsner NEW
Aika Y BowleyUnited KingdomAmy Elsner RENEWAL
Stacey Z WaycottJapanElwin Sharvill NEW
Chavez Y IturbideFranceAnna Fali RENEWAL
David Y BriddickIndiaElwin Sharvill NEGOTIATION
Leja N GillianArgentinaBernardo Dominic NEGOTIATION
Salvatore H BowleyIndiaAsiya Javayant QUALIFIED
Leon A StensethItalyXuxue Feng RENEWAL
Silvio H SlusarskiItalyAsiya Javayant QUALIFIED
Costa N StensethCanadaAmy Elsner PROPOSAL
Ricardo Q GillianJapanOnyama Limba NEGOTIATION
Johnson M GarufiJapanAnna Fali NEGOTIATION
Juan E OldroydRussiaIoni Bowcher QUALIFIED
Smith R PaprockiUnited KingdomAmy Elsner QUALIFIED
James M DarakjyAustraliaOnyama Limba PROPOSAL
Wickens D SergiSpainIvan Magalhaes NEGOTIATION
Aika P SchemmerGermanyElwin Sharvill NEW
Maria D AmigonRussiaElwin Sharvill QUALIFIED
Isabel N TollnerFranceXuxue Feng NEGOTIATION
Leon J MaletRussiaIvan Magalhaes NEGOTIATION
Ricardo L DoeJapanIoni Bowcher NEW
Mayumi W PerinArgentinaXuxue Feng PROPOSAL
Sinclair T StockhamFranceXuxue Feng NEW
David D DilliardItalyBernardo Dominic RENEWAL
Darci Y TollnerGermanyBernardo Dominic NEGOTIATION
Sinclair E MorascaFranceXuxue Feng RENEWAL
Rodrigues X IturbideSpainIvan Magalhaes NEGOTIATION
Jefferson X RimItalyAmy Elsner QUALIFIED
Wickens P VocelkaBrazilOnyama Limba NEW
Octavia W SergiJapanBernardo Dominic QUALIFIED
Francesco S NestleArgentinaBernardo Dominic PROPOSAL
Emily X FlosiRussiaIvan Magalhaes UNQUALIFIED
Ivar P DarakjyGermanyAmy Elsner RENEWAL
Francesco U BowleyArgentinaBernardo Dominic RENEWAL
Faith C RoysterBrazilAsiya Javayant PROPOSAL
Aditya O KuskoIndiaOnyama Limba PROPOSAL
Julie I DilliardCanadaIoni Bowcher NEGOTIATION
Jeanfrancois K FerenczRussiaStephen Shaw PROPOSAL
Morrow I FerenczAustraliaStephen Shaw PROPOSAL
Smith W RimSpainIoni Bowcher QUALIFIED
Deepesh B SaylorsArgentinaIoni Bowcher UNQUALIFIED
Leon Q MacleadArgentinaElwin Sharvill NEGOTIATION
Maisha K WhobreyFranceAsiya Javayant UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Izzy M MarrierSpainXuxue Feng PROPOSAL
Darci H IturbideBrazilAsiya Javayant NEW
Munro K MaletAustraliaStephen Shaw UNQUALIFIED
Morrow I MaletAustraliaAnna Fali UNQUALIFIED
Cody G GillianBrazilIvan Magalhaes UNQUALIFIED
Johnson W FerenczBrazilAsiya Javayant NEW
Stacey V RimIndiaIoni Bowcher PROPOSAL
Darci Z BowleyIndiaBernardo Dominic QUALIFIED
Munro N SaylorsFranceOnyama Limba PROPOSAL
Alejandro X CaldareraSpainIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci Y NickaRussia2024-04-12Chemel, James L Cpa NEGOTIATION44Bernardo Dominic
1001Clifford T CaudyUnited Kingdom2024-04-10Chanay, Jeffrey A Esq QUALIFIED38Amy Elsner
1002Silvio N DarakjySpain2024-04-25Morlong Associates QUALIFIED85Elwin Sharvill
1003Kaitlin L ChuiItaly2024-04-27Chemel, James L Cpa PROPOSAL29Bernardo Dominic
1004Deepesh H BriddickSpain2024-04-07King, Christopher A Esq RENEWAL70Amy Elsner
1005Sinclair G CaldareraIndia2024-04-20Chapman, Ross E Esq QUALIFIED62Elwin Sharvill
1006Kadeem E GarufiSpain2024-04-11Buckley Miller Wright NEW33Onyama Limba
1007Leon U RutaItaly2024-04-30Printing Dimensions PROPOSAL71Elwin Sharvill
1008Munro W BologniaFrance2024-04-08Printing Dimensions NEW73Anna Fali
1009Greenwood N RimBrazil2024-04-14Feltz Printing Service PROPOSAL19Bernardo Dominic
1010Faith B RutaRussia2024-04-18Dorl, James J Esq NEW53Ivan Magalhaes
1011Juan C MaletItaly2024-05-04Printing Dimensions UNQUALIFIED16Stephen Shaw
1012Stacey N SlusarskiCanada2024-05-02Dorl, James J Esq QUALIFIED95Xuxue Feng
1013Ivar K MarrierSpain2024-04-21Chemel, James L Cpa RENEWAL25Amy Elsner
1014Arvin T MorascaFrance2024-04-28Commercial Press RENEWAL29Bernardo Dominic
1015Darci D FerenczRussia2024-04-24King, Christopher A Esq NEGOTIATION58Anna Fali
1016Leja Y IturbideIndia2024-04-11Commercial Press NEGOTIATION92Anna Fali
1017Cody M KolmetzGermany2024-04-18Rangoni Of Florence PROPOSAL56Bernardo Dominic
1018Smith M KuskoUnited Kingdom2024-04-23King, Christopher A Esq PROPOSAL14Xuxue Feng
1019Greenwood W DarakjySpain2024-04-16Buckley Miller Wright NEGOTIATION36Ivan Magalhaes
1020Emily F PoquetteCanada2024-04-09Feltz Printing Service NEW93Onyama Limba
1021Rodrigues R AlbaresAustralia2024-05-04Chanay, Jeffrey A Esq RENEWAL73Bernardo Dominic
1022James X FerenczSpain2024-04-06King, Christopher A Esq PROPOSAL75Stephen Shaw
1023Smith Z NestleJapan2024-04-25Chanay, Jeffrey A Esq UNQUALIFIED38Bernardo Dominic
1024Claire P MacleadBrazil2024-04-15Benton, John B Jr QUALIFIED1Xuxue Feng
1025Johnson G DilliardBrazil2024-04-12Feiner Bros QUALIFIED93Amy Elsner
1026Deepesh O FigeroaJapan2024-04-22Feiner Bros NEW85Onyama Limba
1027Jennifer W DoeIndia2024-04-28Feiner Bros NEGOTIATION67Ioni Bowcher
1028Maisha C SchemmerBrazil2024-04-16Chapman, Ross E Esq NEGOTIATION94Amy Elsner
1029Kaitlin P ShinkoSpain2024-04-18King, Christopher A Esq QUALIFIED82Ivan Magalhaes
1030Aika J WhobreyGermany2024-04-15Benton, John B Jr NEW7Elwin Sharvill
1031Izzy L VocelkaUnited Kingdom2024-04-10Chapman, Ross E Esq NEW66Onyama Limba
1032Aruna Y SergiArgentina2024-04-11Feiner Bros UNQUALIFIED18Asiya Javayant
1033Misaki A TollnerArgentina2024-05-04Buckley Miller Wright NEGOTIATION69Amy Elsner
1034Wickens H OstroskyBrazil2024-04-07Chapman, Ross E Esq NEW15Bernardo Dominic
1035Maria C BologniaBrazil2024-04-22Feiner Bros QUALIFIED70Onyama Limba
1036Misaki A MorascaIndia2024-04-13Morlong Associates RENEWAL11Ivan Magalhaes
1037Emily I DarakjyArgentina2024-04-06Rangoni Of Florence NEW63Elwin Sharvill
1038Wickens Y DoeSpain2024-04-23Morlong Associates PROPOSAL81Ivan Magalhaes
1039Juan A MorascaUnited Kingdom2024-04-23Truhlar And Truhlar Attys UNQUALIFIED68Elwin Sharvill
1040Ashley I MaletCanada2024-04-06Printing Dimensions NEW28Stephen Shaw
1041Morrow G RoysterFrance2024-04-19Chapman, Ross E Esq UNQUALIFIED75Bernardo Dominic
1042Adams L StockhamFrance2024-04-17Feltz Printing Service QUALIFIED76Amy Elsner
1043Izzy O NickaGermany2024-04-07Buckley Miller Wright NEGOTIATION35Stephen Shaw
1044Johnson M DilliardJapan2024-04-24King, Christopher A Esq NEW15Onyama Limba
1045Greenwood E RimRussia2024-04-14Printing Dimensions QUALIFIED84Ivan Magalhaes
1046Izzy I PaprockiRussia2024-04-18Feiner Bros PROPOSAL5Amy Elsner
1047Jennifer Q WieserGermany2024-04-29Commercial Press UNQUALIFIED81Elwin Sharvill
1048Aruna D PerinAustralia2024-04-08Printing Dimensions PROPOSAL8Amy Elsner
1049Adams J GlickBrazil2024-04-08Commercial Press QUALIFIED49Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Emily G CaldareraGermanyStephen Shaw QUALIFIED
Wickens N GillianRussiaOnyama Limba PROPOSAL
Tony H IturbideSpainBernardo Dominic QUALIFIED
Morrow W SergiSpainIvan Magalhaes QUALIFIED
Jefferson C WieserIndiaOnyama Limba RENEWAL
Maria O BologniaFranceAsiya Javayant PROPOSAL
James M AmigonFranceBernardo Dominic UNQUALIFIED
Maisha Y ShinkoItalyAmy Elsner QUALIFIED
Nicolas S PaprockiUnited KingdomStephen Shaw RENEWAL
Ashley X VocelkaJapanIoni Bowcher QUALIFIED
Alejandro Z MacleadUnited KingdomOnyama Limba PROPOSAL
Chavez T ChuiRussiaIvan Magalhaes UNQUALIFIED
Kaitlin J ChuiUnited KingdomIoni Bowcher NEGOTIATION
Misaki J StockhamGermanyIvan Magalhaes RENEWAL
Leon O BowleyIndiaAsiya Javayant PROPOSAL
Mujtaba U DoeJapanElwin Sharvill QUALIFIED
Aika H MaletItalyAmy Elsner NEW
Smith X WieserBrazilXuxue Feng UNQUALIFIED
Misaki W ChuiUnited KingdomXuxue Feng QUALIFIED
Faith N WhobreyIndiaOnyama Limba PROPOSAL
Nicolas H ShinkoCanadaIvan Magalhaes RENEWAL
Murillo L CaldareraItalyIvan Magalhaes UNQUALIFIED
Tony N MaletUnited KingdomBernardo Dominic PROPOSAL
Clifford N RutaIndiaAnna Fali PROPOSAL
Ricardo F BowleyArgentinaAmy Elsner NEGOTIATION
Claire L PaprockiCanadaIoni Bowcher UNQUALIFIED
Juan R GauchoFranceStephen Shaw UNQUALIFIED
Izzy K RimGermanyAsiya Javayant PROPOSAL
Darci H SergiJapanElwin Sharvill QUALIFIED
Isabel H FerenczItalyAmy Elsner QUALIFIED
Ashley G CampainCanadaAmy Elsner UNQUALIFIED
Ricardo I BowleyUnited KingdomStephen Shaw NEW
Salvatore C FigeroaArgentinaIvan Magalhaes QUALIFIED
Costa B PaprockiJapanElwin Sharvill UNQUALIFIED
Claire I SaylorsAustraliaAsiya Javayant UNQUALIFIED
Julie J GillianIndiaOnyama Limba NEW
Nicolas L FlosiGermanyBernardo Dominic PROPOSAL
Juan V DoeCanadaAmy Elsner PROPOSAL
Octavia H StensethItalyXuxue Feng QUALIFIED
Murillo R OstroskyItalyIvan Magalhaes NEGOTIATION
Aruna V RoysterIndiaAmy Elsner NEW
Jefferson W GillianItalyIvan Magalhaes PROPOSAL
Jennifer K RimUnited KingdomIvan Magalhaes NEGOTIATION
Ricardo M NickaItalyOnyama Limba RENEWAL
Silvio O MarrierCanadaBernardo Dominic QUALIFIED
Smith D KolmetzSpainAsiya Javayant UNQUALIFIED
Francesco U BriddickItalyIvan Magalhaes UNQUALIFIED
Johnson I BologniaBrazilIoni Bowcher UNQUALIFIED
Leon J TollnerIndiaStephen Shaw RENEWAL
Ricardo J CaldareraCanadaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Silvio W Slusarski
Isabel N Ferencz
Deepesh S Caldarera
Deepesh T Gillian
Aditya I Bowley
Leja D Venere
Murillo M Poquette
Jeanfrancois F Albares
Leon D Vocelka
Maisha P Rulapaugh
Murillo B Poquette
Mayumi P Figeroa
Juan R Malet
Jones Q Tollner
Aika H Oldroyd
Deepesh L Caldarera
Murillo R Figeroa
Morrow N Maclead
Francesco U Oldroyd
Smith Y Maclead
James B Caudy
Juan C Maclead
Mujtaba W Shinko
Jones S Vocelka
Aditya F Inouye
Jefferson B Royster
Greenwood H Maclead
Aika N Nestle
Leon N Rulapaugh
Adams A Paprocki
Izzy K Wieser
Munro J Butt
Jefferson L Albares
Izzy X Wieser
Julie W Foller
Mayumi R Waycott
Deepesh G Rulapaugh
Izzy C Kolmetz
Maria F Slusarski
Cody R Briddick
Arvin M Whobrey
Tony W Glick
David Q Paprocki
Octavia D Foller
Ivar D Rim
Mujtaba G Kusko
Aruna X Chui
Octavia T Shinko
Antonio Q Briddick
Silvio M Campain
IdCountryDate
1000Japan2024-04-29
1001Australia2024-04-11
1002India2024-04-24
1003Spain2024-05-02
1004Japan2024-04-06
1005Italy2024-04-13
1006Spain2024-04-30
1007Argentina2024-04-26
1008Spain2024-04-09
1009India2024-04-21
1010Argentina2024-04-10
1011Japan2024-04-23
1012United Kingdom2024-04-12
1013Spain2024-04-23
1014Australia2024-04-08
1015Brazil2024-04-13
1016Japan2024-04-19
1017United Kingdom2024-04-29
1018Canada2024-04-07
1019Russia2024-04-22
1020Brazil2024-05-01
1021Germany2024-04-21
1022Canada2024-04-13
1023Germany2024-04-16
1024United Kingdom2024-04-24
1025Russia2024-04-15
1026Japan2024-04-14
1027Spain2024-04-23
1028Germany2024-04-16
1029Italy2024-05-04
1030India2024-04-21
1031Brazil2024-04-23
1032Canada2024-04-18
1033Brazil2024-04-17
1034India2024-04-19
1035France2024-04-13
1036Brazil2024-04-06
1037Germany2024-04-14
1038United Kingdom2024-04-11
1039Japan2024-04-22
1040Italy2024-05-01
1041Australia2024-05-01
1042Argentina2024-04-30
1043Italy2024-04-13
1044Spain2024-04-21
1045United Kingdom2024-05-02
1046France2024-05-04
1047Argentina2024-04-19
1048Australia2024-04-12
1049United Kingdom2024-04-07

On-Demand Data

NameIdCountryDate
Julie Q Venere1000Canada2024-04-11
Ivar S Poquette1001Canada2024-04-11
Julie J Perin1002Australia2024-04-06
Chavez Z Foller1003Italy2024-04-14
Leja Q Malet1004India2024-04-19
Misaki E Morasca1005Japan2024-04-13
Adams M Kolmetz1006United Kingdom2024-04-13
Emily G Figeroa1007Spain2024-04-15
Izzy S Vocelka1008France2024-04-20
Nicolas V Ruta1009Russia2024-04-24
Ashley S Ruta1010Russia2024-04-05
Cody I Vocelka1011Spain2024-04-13
Stacey N Malet1012Canada2024-05-03
Maisha C Albares1013Russia2024-04-23
Murillo N Figeroa1014Italy2024-04-20
Mujtaba T Dilliard1015Brazil2024-04-11
Juan Y Stockham1016France2024-04-19
Chavez C Caudy1017Argentina2024-04-22
Jennifer Z Foller1018Brazil2024-04-16
Claire L Flosi1019Australia2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro F TollnerIndiaAnna Fali UNQUALIFIED
Nicolas M KuskoUnited KingdomOnyama Limba RENEWAL
Izzy C MarrierArgentinaStephen Shaw QUALIFIED
Alejandro H MarrierIndiaIvan Magalhaes NEW
Jennifer P BologniaGermanyXuxue Feng QUALIFIED
Wickens L NickaUnited KingdomBernardo Dominic NEGOTIATION
Ricardo G GlickArgentinaAnna Fali PROPOSAL
Emily A RoysterJapanIvan Magalhaes NEW
Smith D InouyeRussiaAnna Fali UNQUALIFIED
Alejandro I GillianArgentinaOnyama Limba QUALIFIED
Claire V RimCanadaAsiya Javayant QUALIFIED
Jennifer C VenereSpainAsiya Javayant NEW
Johnson O RulapaughIndiaXuxue Feng PROPOSAL
Kaitlin Y GarufiUnited KingdomBernardo Dominic NEGOTIATION
Jennifer V SaylorsItalyElwin Sharvill UNQUALIFIED
Leja C CaudyRussiaElwin Sharvill NEGOTIATION
Aruna G SlusarskiGermanyAmy Elsner NEGOTIATION
Jones I DarakjyArgentinaIoni Bowcher PROPOSAL
Ivar P VocelkaCanadaAmy Elsner RENEWAL
Sinclair X NickaAustraliaAmy Elsner NEGOTIATION
Salvatore T OldroydRussiaOnyama Limba NEGOTIATION
Salvatore K SergiBrazilIoni Bowcher UNQUALIFIED
Ricardo E PoquetteIndiaIoni Bowcher NEW
Johnson R GlickFranceIvan Magalhaes RENEWAL
Claire M DilliardIndiaXuxue Feng QUALIFIED
Aruna Z RimRussiaBernardo Dominic PROPOSAL
Kadeem M BriddickFranceXuxue Feng NEW
Costa I FigeroaGermanyOnyama Limba UNQUALIFIED
Octavia D BriddickCanadaIoni Bowcher QUALIFIED
Stacey A OldroydCanadaIvan Magalhaes UNQUALIFIED
Octavia S KuskoGermanyAnna Fali RENEWAL
Stacey I RulapaughGermanyAsiya Javayant PROPOSAL
Mujtaba R ButtRussiaOnyama Limba QUALIFIED
Kadeem X KuskoIndiaAnna Fali NEGOTIATION
Adams W GillianArgentinaOnyama Limba NEW
Silvio V MaletArgentinaIoni Bowcher RENEWAL
Francesco W KolmetzGermanyElwin Sharvill NEW
Aruna L SaylorsAustraliaStephen Shaw RENEWAL
Kadeem E SergiBrazilBernardo Dominic UNQUALIFIED
Jennifer L DilliardRussiaStephen Shaw QUALIFIED

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