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
Greenwood I VocelkaAustraliaIoni Bowcher NEW
Misaki U VenereUnited KingdomStephen Shaw RENEWAL
Izzy O SaylorsJapanXuxue Feng QUALIFIED
Aika R MaletAustraliaAsiya Javayant NEGOTIATION
Salvatore T FlosiRussiaBernardo Dominic NEGOTIATION
Darci B ChuiGermanyAnna Fali NEGOTIATION
Kaitlin B GarufiFranceXuxue Feng RENEWAL
Tony Z FigeroaIndiaBernardo Dominic QUALIFIED
Emily G ChuiBrazilOnyama Limba PROPOSAL
Leon V WhobreyIndiaAsiya Javayant RENEWAL
Darci O PerinGermanyIvan Magalhaes QUALIFIED
Munro U MaletCanadaStephen Shaw PROPOSAL
Smith X NickaIndiaIvan Magalhaes UNQUALIFIED
Sinclair P MarrierCanadaElwin Sharvill NEW
Alejandro L PaprockiBrazilAnna Fali PROPOSAL
Tony K GillianBrazilIoni Bowcher PROPOSAL
Munro B PaprockiArgentinaAmy Elsner QUALIFIED
Antonio I PaprockiGermanyIvan Magalhaes NEGOTIATION
David R MacleadItalyIoni Bowcher RENEWAL
Alejandro J CaudyAustraliaXuxue Feng NEGOTIATION
Stacey B ChuiFranceBernardo Dominic UNQUALIFIED
Murillo U VenereItalyIvan Magalhaes RENEWAL
Adams A FlosiRussiaAsiya Javayant UNQUALIFIED
Tony B DoeCanadaAsiya Javayant NEW
Arvin F CaudyJapanIoni Bowcher PROPOSAL
Wickens V CaldareraBrazilOnyama Limba PROPOSAL
Jefferson W FollerGermanyElwin Sharvill NEW
Cody Z WhobreyArgentinaAmy Elsner NEGOTIATION
Jones S SlusarskiGermanyAmy Elsner PROPOSAL
Izzy K BriddickItalyStephen Shaw UNQUALIFIED
Antonio Z FerenczUnited KingdomOnyama Limba QUALIFIED
Smith S GillianCanadaIoni Bowcher NEW
Octavia K OstroskyAustraliaElwin Sharvill NEW
Leon X MaletJapanAmy Elsner PROPOSAL
Darci N CaldareraAustraliaXuxue Feng RENEWAL
Aika X CampainAustraliaStephen Shaw NEW
Deepesh P MaletAustraliaIvan Magalhaes UNQUALIFIED
Octavia L BriddickCanadaAmy Elsner UNQUALIFIED
Maria M FlosiJapanAmy Elsner QUALIFIED
James P OstroskyBrazilIvan Magalhaes UNQUALIFIED
Aditya U KolmetzUnited KingdomOnyama Limba NEGOTIATION
Alejandro W CaudyJapanStephen Shaw QUALIFIED
Cody W WieserAustraliaBernardo Dominic NEGOTIATION
Francesco B SchemmerJapanBernardo Dominic PROPOSAL
Faith N SaylorsBrazilAmy Elsner RENEWAL
Tony T NestleBrazilIvan Magalhaes RENEWAL
Johnson S SlusarskiJapanElwin Sharvill PROPOSAL
Izzy I FerenczRussiaBernardo Dominic RENEWAL
Ashley A InouyeGermanyXuxue Feng QUALIFIED
Adams S RimArgentinaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar N NickaBrazilStephen Shaw PROPOSAL
Adams J CaudySpainOnyama Limba PROPOSAL
Leja T MaletUnited KingdomXuxue Feng NEGOTIATION
Greenwood C IturbideJapanIoni Bowcher RENEWAL
Julie I SchemmerGermanyAsiya Javayant PROPOSAL
Rodrigues E VenereRussiaElwin Sharvill PROPOSAL
Cody J ShinkoBrazilAmy Elsner QUALIFIED
Tony F WieserArgentinaIvan Magalhaes QUALIFIED
Alejandro H BologniaUnited KingdomAnna Fali RENEWAL
Isabel W ShinkoArgentinaOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues Q VenereIndia2024-04-08Morlong Associates UNQUALIFIED18Onyama Limba
1001Ashley D StockhamSpain2024-03-19Truhlar And Truhlar Attys QUALIFIED95Xuxue Feng
1002Rodrigues D GauchoUnited Kingdom2024-04-17Dorl, James J Esq RENEWAL69Asiya Javayant
1003Adams M RimRussia2024-04-05Buckley Miller Wright NEGOTIATION84Ioni Bowcher
1004Emily C GillianFrance2024-03-31Chanay, Jeffrey A Esq PROPOSAL80Elwin Sharvill
1005Leja M CaldareraGermany2024-03-21King, Christopher A Esq QUALIFIED88Amy Elsner
1006Leon C WieserAustralia2024-04-03Morlong Associates NEGOTIATION87Anna Fali
1007Clifford P MaletSpain2024-04-15Benton, John B Jr UNQUALIFIED4Onyama Limba
1008David V InouyeFrance2024-04-10Benton, John B Jr NEW70Ivan Magalhaes
1009Juan L StockhamFrance2024-03-20Chanay, Jeffrey A Esq NEW76Elwin Sharvill
1010Tony E KolmetzSpain2024-03-30Benton, John B Jr PROPOSAL65Amy Elsner
1011Claire I WhobreyRussia2024-03-31Rousseaux, Michael Esq NEGOTIATION9Asiya Javayant
1012Aditya S PerinBrazil2024-03-27Rangoni Of Florence RENEWAL32Anna Fali
1013Mujtaba X InouyeGermany2024-04-10Feiner Bros PROPOSAL3Xuxue Feng
1014Leja W MaletUnited Kingdom2024-04-10Rangoni Of Florence QUALIFIED30Ioni Bowcher
1015Jennifer K FigeroaGermany2024-03-28Feiner Bros RENEWAL11Asiya Javayant
1016Cody X VocelkaGermany2024-04-04Benton, John B Jr QUALIFIED32Anna Fali
1017Jeanfrancois G SaylorsRussia2024-04-11Chanay, Jeffrey A Esq QUALIFIED81Asiya Javayant
1018Greenwood Q FollerBrazil2024-04-08Rousseaux, Michael Esq NEGOTIATION2Ivan Magalhaes
1019David Z BriddickBrazil2024-03-30Chanay, Jeffrey A Esq PROPOSAL80Asiya Javayant
1020Adams P FollerSpain2024-04-14Chapman, Ross E Esq PROPOSAL22Ioni Bowcher
1021Kaitlin W SaylorsUnited Kingdom2024-04-10Rousseaux, Michael Esq UNQUALIFIED9Ivan Magalhaes
1022Ricardo B StockhamArgentina2024-04-07Printing Dimensions QUALIFIED23Asiya Javayant
1023Izzy P MacleadJapan2024-03-21Morlong Associates UNQUALIFIED61Stephen Shaw
1024Claire P StockhamFrance2024-04-15Rousseaux, Michael Esq PROPOSAL20Bernardo Dominic
1025James O FerenczItaly2024-03-21Truhlar And Truhlar Attys NEGOTIATION91Onyama Limba
1026Mayumi M WhobreyAustralia2024-03-19Feltz Printing Service QUALIFIED74Stephen Shaw
1027Jones Q InouyeRussia2024-03-19Chanay, Jeffrey A Esq UNQUALIFIED5Ioni Bowcher
1028Stacey W PerinBrazil2024-04-10Rousseaux, Michael Esq NEGOTIATION54Ioni Bowcher
1029Rodrigues G MaletArgentina2024-03-24Morlong Associates RENEWAL70Stephen Shaw
1030Ivar N RimArgentina2024-04-04Feiner Bros UNQUALIFIED97Stephen Shaw
1031Ashley M WhobreyRussia2024-04-03Rousseaux, Michael Esq NEGOTIATION35Elwin Sharvill
1032Claire U AlbaresItaly2024-04-17Feltz Printing Service PROPOSAL62Stephen Shaw
1033Octavia D CampainSpain2024-03-27Rangoni Of Florence PROPOSAL18Ioni Bowcher
1034Greenwood B NickaItaly2024-04-13Rangoni Of Florence PROPOSAL57Ioni Bowcher
1035Antonio C InouyeRussia2024-03-25Morlong Associates UNQUALIFIED51Xuxue Feng
1036Morrow B GarufiBrazil2024-04-03Dorl, James J Esq QUALIFIED13Amy Elsner
1037Isabel B BriddickSpain2024-03-29Rangoni Of Florence RENEWAL13Stephen Shaw
1038Darci Y ButtBrazil2024-03-27Printing Dimensions UNQUALIFIED85Onyama Limba
1039Leon D BriddickSpain2024-04-16Rangoni Of Florence PROPOSAL63Amy Elsner
1040Clifford A VocelkaSpain2024-04-16Buckley Miller Wright QUALIFIED78Amy Elsner
1041Isabel U CaudyJapan2024-04-16Rangoni Of Florence UNQUALIFIED4Elwin Sharvill
1042Wickens D BriddickIndia2024-04-01Chemel, James L Cpa UNQUALIFIED50Anna Fali
1043Morrow Q SchemmerBrazil2024-04-13Buckley Miller Wright RENEWAL20Stephen Shaw
1044Misaki V CampainRussia2024-04-15King, Christopher A Esq RENEWAL24Stephen Shaw
1045Octavia F GlickRussia2024-04-06Feiner Bros QUALIFIED37Xuxue Feng
1046Aika Q DarakjySpain2024-04-02Rangoni Of Florence PROPOSAL88Xuxue Feng
1047Deepesh I MarrierArgentina2024-03-27Printing Dimensions QUALIFIED33Stephen Shaw
1048Emily U FollerSpain2024-03-19Truhlar And Truhlar Attys PROPOSAL93Ivan Magalhaes
1049Octavia N ChuiSpain2024-03-24Feltz Printing Service QUALIFIED72Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Salvatore N MorascaCanadaStephen Shaw UNQUALIFIED
Maria Q FlosiJapanElwin Sharvill QUALIFIED
Claire W MaletUnited KingdomOnyama Limba RENEWAL
Emily X StockhamRussiaOnyama Limba QUALIFIED
Maria O AmigonFranceAmy Elsner UNQUALIFIED
Aruna F FlosiBrazilStephen Shaw RENEWAL
Aruna X RoysterRussiaAnna Fali RENEWAL
Maria O NestleUnited KingdomIvan Magalhaes RENEWAL
Julie H KolmetzArgentinaOnyama Limba UNQUALIFIED
Faith G GarufiArgentinaXuxue Feng RENEWAL
Kadeem M WhobreyJapanAnna Fali NEGOTIATION
Deepesh Y MarrierRussiaOnyama Limba PROPOSAL
Munro I GarufiJapanElwin Sharvill UNQUALIFIED
Emily T KuskoAustraliaStephen Shaw UNQUALIFIED
Johnson C SaylorsJapanAmy Elsner NEGOTIATION
Octavia S GillianBrazilOnyama Limba RENEWAL
Silvio Z FigeroaJapanIvan Magalhaes UNQUALIFIED
Izzy A SaylorsItalyOnyama Limba NEW
Tony D PoquetteFranceElwin Sharvill NEW
Izzy B GauchoArgentinaXuxue Feng UNQUALIFIED
Izzy Z MacleadAustraliaIvan Magalhaes QUALIFIED
Wickens E GarufiSpainAsiya Javayant NEGOTIATION
Maria Z FerenczIndiaAsiya Javayant QUALIFIED
Murillo H FollerGermanyIvan Magalhaes QUALIFIED
Alejandro B VenereItalyAmy Elsner NEGOTIATION
Munro W OstroskyAustraliaOnyama Limba NEGOTIATION
Ashley W NickaFranceAnna Fali QUALIFIED
Adams P PerinArgentinaIoni Bowcher QUALIFIED
Juan I CaudyIndiaAsiya Javayant NEW
Aika B InouyeBrazilStephen Shaw NEW
Murillo D ChuiCanadaAmy Elsner QUALIFIED
Emily V PaprockiJapanBernardo Dominic UNQUALIFIED
Munro K CampainIndiaBernardo Dominic UNQUALIFIED
Izzy R StensethItalyIoni Bowcher NEGOTIATION
Kadeem W RoysterBrazilOnyama Limba NEGOTIATION
Johnson X WhobreyFranceOnyama Limba PROPOSAL
Kaitlin A MacleadItalyAsiya Javayant UNQUALIFIED
Ivar P AmigonSpainIvan Magalhaes NEW
Chavez L ButtArgentinaAmy Elsner RENEWAL
Leon K OstroskyUnited KingdomIvan Magalhaes RENEWAL
Ashley H RulapaughBrazilAmy Elsner NEGOTIATION
Octavia G RutaItalyAnna Fali RENEWAL
Darci V RimUnited KingdomAsiya Javayant UNQUALIFIED
Stacey M GauchoCanadaAsiya Javayant NEGOTIATION
Cody P VocelkaJapanBernardo Dominic QUALIFIED
Jones K StockhamBrazilXuxue Feng UNQUALIFIED
Costa S BologniaUnited KingdomBernardo Dominic NEW
Silvio V GauchoArgentinaIvan Magalhaes QUALIFIED
Stacey J PaprockiSpainIvan Magalhaes QUALIFIED
Tony U GarufiSpainXuxue Feng UNQUALIFIED
Frozen Columns
Name
Alejandro J Dilliard
Sinclair M Caldarera
Nicolas R Inouye
James S Briddick
Emily F Ferencz
Maisha Q Shinko
Maria Z Chui
Faith E Rim
Ivar J Stockham
Maria G Albares
Nicolas T Albares
Jennifer O Doe
Kadeem J Caldarera
Octavia H Royster
Aruna J Perin
Kaitlin T Royster
Mujtaba J Shinko
Jeanfrancois Z Glick
Ricardo R Rim
Adams N Doe
Izzy E Chui
David J Whobrey
Arvin Q Amigon
Ricardo V Inouye
Julie L Caudy
Emily F Gillian
Jones Q Glick
Ashley R Briddick
Maisha R Maclead
Mayumi W Campain
Isabel D Stenseth
Nicolas X Paprocki
Faith Z Garufi
Smith D Caudy
Tony N Whobrey
Faith Y Paprocki
Jennifer Z Saylors
Isabel U Campain
Ashley H Paprocki
Claire X Gaucho
Leon H Stockham
Adams Z Stockham
James L Nestle
Faith S Iturbide
Chavez Z Wieser
Adams Q Darakjy
Octavia G Slusarski
James M Schemmer
Adams K Doe
Ashley P Gaucho
IdCountryDate
1000Italy2024-04-02
1001Australia2024-04-05
1002Japan2024-03-30
1003Argentina2024-04-09
1004Italy2024-03-26
1005Brazil2024-03-21
1006Germany2024-04-12
1007Brazil2024-04-02
1008Argentina2024-04-10
1009Japan2024-04-16
1010India2024-03-21
1011Canada2024-04-05
1012Germany2024-03-22
1013Germany2024-04-12
1014France2024-03-25
1015Russia2024-03-25
1016Russia2024-04-03
1017Argentina2024-04-13
1018Germany2024-04-09
1019Brazil2024-03-29
1020Brazil2024-03-29
1021Argentina2024-03-31
1022Spain2024-04-07
1023India2024-04-09
1024India2024-03-27
1025Spain2024-04-06
1026Spain2024-04-12
1027Japan2024-03-23
1028Argentina2024-04-15
1029Spain2024-03-29
1030Spain2024-03-30
1031Italy2024-04-07
1032India2024-04-17
1033Canada2024-03-27
1034United Kingdom2024-03-20
1035Australia2024-03-30
1036Japan2024-04-04
1037Germany2024-04-07
1038India2024-03-25
1039India2024-03-23
1040Russia2024-04-05
1041United Kingdom2024-04-02
1042Canada2024-03-20
1043Italy2024-04-02
1044Brazil2024-04-16
1045Spain2024-03-30
1046Brazil2024-04-03
1047Brazil2024-03-19
1048Spain2024-03-30
1049Argentina2024-04-10

On-Demand Data

NameIdCountryDate
Morrow P Stockham1000Germany2024-03-19
Costa K Foller1001Italy2024-04-11
Izzy U Foller1002Spain2024-04-05
Kaitlin A Oldroyd1003Germany2024-03-23
Claire F Wieser1004Japan2024-03-27
Antonio Q Figeroa1005United Kingdom2024-04-16
Maria D Poquette1006Germany2024-03-28
James S Morasca1007India2024-04-05
Greenwood B Shinko1008Japan2024-04-08
Aditya W Darakjy1009Brazil2024-04-09
James H Perin1010Argentina2024-04-04
Jennifer Z Kusko1011Spain2024-04-16
Mayumi E Rim1012France2024-03-30
Antonio K Gaucho1013Italy2024-04-17
Aika E Bolognia1014Japan2024-03-28
Ivar T Tollner1015Australia2024-03-28
Leja W Gillian1016France2024-04-08
Johnson X Rim1017India2024-04-09
Ivar B Gaucho1018India2024-03-31
Morrow N Rim1019Brazil2024-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson G CaldareraCanadaIoni Bowcher PROPOSAL
Juan L OldroydJapanAsiya Javayant PROPOSAL
Claire H MaletSpainIvan Magalhaes UNQUALIFIED
Faith P SaylorsSpainElwin Sharvill UNQUALIFIED
Alejandro S TollnerArgentinaAsiya Javayant UNQUALIFIED
Antonio J CaldareraAustraliaIvan Magalhaes QUALIFIED
Jones F GarufiBrazilXuxue Feng NEGOTIATION
Ashley V WaycottItalyIvan Magalhaes RENEWAL
Mujtaba O KolmetzCanadaIvan Magalhaes QUALIFIED
Jeanfrancois E NickaUnited KingdomAmy Elsner PROPOSAL
James N IturbideRussiaIvan Magalhaes NEW
Ivar M AmigonFranceStephen Shaw NEW
Greenwood H DilliardGermanyIoni Bowcher NEW
Aruna M InouyeGermanyAnna Fali NEGOTIATION
Francesco A GillianSpainXuxue Feng NEW
Faith W VenereArgentinaStephen Shaw UNQUALIFIED
James N GauchoUnited KingdomElwin Sharvill NEGOTIATION
James R FlosiUnited KingdomAsiya Javayant NEGOTIATION
Aruna J WieserAustraliaBernardo Dominic PROPOSAL
Greenwood M StockhamItalyAmy Elsner NEGOTIATION
Stacey A RimAustraliaAsiya Javayant QUALIFIED
Ricardo O OstroskyItalyElwin Sharvill NEGOTIATION
Morrow K VenereSpainElwin Sharvill PROPOSAL
Faith M OstroskyBrazilAsiya Javayant NEW
Sinclair H FollerIndiaIoni Bowcher NEW
Leon J GillianGermanyIoni Bowcher PROPOSAL
Chavez T GillianBrazilElwin Sharvill QUALIFIED
Greenwood O StockhamArgentinaAmy Elsner NEGOTIATION
Chavez C AlbaresArgentinaBernardo Dominic NEW
Wickens J SchemmerBrazilIoni Bowcher UNQUALIFIED
Salvatore M ButtGermanyAmy Elsner NEW
Leja M GlickJapanElwin Sharvill NEGOTIATION
Sinclair X MarrierBrazilAmy Elsner RENEWAL
Costa K GillianIndiaAnna Fali UNQUALIFIED
Clifford G ButtBrazilAmy Elsner QUALIFIED
Darci P WaycottSpainAsiya Javayant UNQUALIFIED
Francesco N MorascaCanadaBernardo Dominic RENEWAL
Ivar T GillianItalyIoni Bowcher UNQUALIFIED
Aditya P PaprockiIndiaAsiya Javayant RENEWAL
Claire O OldroydAustraliaOnyama Limba 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>