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
Antonio Q MacleadAustraliaXuxue Feng NEGOTIATION
Aditya J KuskoRussiaBernardo Dominic UNQUALIFIED
Jennifer H MaletBrazilAnna Fali NEGOTIATION
Adams L GlickJapanOnyama Limba NEW
Jefferson E MacleadJapanElwin Sharvill NEW
Leja P MaletJapanElwin Sharvill UNQUALIFIED
Cody C FerenczArgentinaAsiya Javayant PROPOSAL
Alejandro S ButtAustraliaBernardo Dominic QUALIFIED
Johnson Y FlosiAustraliaAsiya Javayant QUALIFIED
Deepesh G IturbideIndiaOnyama Limba UNQUALIFIED
Johnson O BriddickIndiaAnna Fali QUALIFIED
Aruna I InouyeCanadaAsiya Javayant UNQUALIFIED
Smith C DarakjyAustraliaStephen Shaw NEGOTIATION
Arvin M GlickAustraliaBernardo Dominic NEGOTIATION
Leja X StockhamFranceStephen Shaw UNQUALIFIED
Claire S MaletUnited KingdomXuxue Feng QUALIFIED
Ashley I StensethSpainAmy Elsner PROPOSAL
Deepesh W GarufiUnited KingdomStephen Shaw QUALIFIED
Stacey S OldroydCanadaOnyama Limba RENEWAL
Nicolas P TollnerRussiaAsiya Javayant QUALIFIED
Faith H PaprockiIndiaAnna Fali NEW
Tony H TollnerAustraliaIoni Bowcher NEW
Antonio S PerinSpainIoni Bowcher RENEWAL
Sinclair T KuskoArgentinaAsiya Javayant UNQUALIFIED
Chavez J VenereIndiaOnyama Limba PROPOSAL
Wickens X RulapaughArgentinaElwin Sharvill QUALIFIED
David P PaprockiIndiaAsiya Javayant NEW
Misaki P MaletRussiaAnna Fali UNQUALIFIED
Faith B TollnerUnited KingdomAsiya Javayant PROPOSAL
Maisha I AmigonRussiaBernardo Dominic RENEWAL
Wickens F VocelkaRussiaElwin Sharvill NEW
Misaki Z GillianJapanOnyama Limba PROPOSAL
Misaki D InouyeCanadaStephen Shaw UNQUALIFIED
Munro M CaldareraCanadaXuxue Feng QUALIFIED
Maria T DarakjyItalyIvan Magalhaes RENEWAL
Johnson B NestleRussiaAmy Elsner RENEWAL
Izzy N StensethBrazilElwin Sharvill NEW
Isabel L WhobreyIndiaIvan Magalhaes RENEWAL
Stacey Z GarufiBrazilAsiya Javayant QUALIFIED
Ricardo S BologniaBrazilOnyama Limba PROPOSAL
Murillo N OldroydFranceIoni Bowcher RENEWAL
Greenwood G MaletJapanAsiya Javayant RENEWAL
Silvio F FollerUnited KingdomAsiya Javayant NEGOTIATION
Juan F KuskoGermanyBernardo Dominic QUALIFIED
Mayumi Z NestleItalyIvan Magalhaes NEW
Rodrigues V GarufiArgentinaIvan Magalhaes NEW
Silvio K SlusarskiAustraliaXuxue Feng QUALIFIED
Maria P RutaArgentinaIvan Magalhaes PROPOSAL
Alejandro E ButtCanadaXuxue Feng NEW
Stacey E AmigonAustraliaAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Antonio U CaudySpainElwin Sharvill PROPOSAL
Chavez E MaletCanadaIoni Bowcher NEW
Arvin B OstroskyCanadaAsiya Javayant NEGOTIATION
Misaki W PerinJapanBernardo Dominic RENEWAL
Leja T PerinRussiaAsiya Javayant QUALIFIED
Deepesh T BowleySpainStephen Shaw NEW
Ashley K PerinBrazilAsiya Javayant NEW
Arvin L VenereIndiaIvan Magalhaes UNQUALIFIED
Leon R RoysterArgentinaOnyama Limba NEGOTIATION
Maria D RutaJapanIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore R CaldareraBrazil2024-04-23Chanay, Jeffrey A Esq PROPOSAL21Asiya Javayant
1001Antonio R NickaSpain2024-04-24Truhlar And Truhlar Attys QUALIFIED74Stephen Shaw
1002Francesco G GauchoUnited Kingdom2024-04-07Rangoni Of Florence QUALIFIED0Ivan Magalhaes
1003Aditya L BriddickGermany2024-04-20Rousseaux, Michael Esq NEW32Ioni Bowcher
1004David N MarrierFrance2024-04-09Buckley Miller Wright NEW99Xuxue Feng
1005Maria L RimJapan2024-04-03Chapman, Ross E Esq QUALIFIED20Stephen Shaw
1006Antonio X MorascaIndia2024-04-10Rousseaux, Michael Esq NEGOTIATION7Asiya Javayant
1007Adams J CampainArgentina2024-04-03Dorl, James J Esq QUALIFIED39Elwin Sharvill
1008Smith Z RulapaughJapan2024-04-04Chapman, Ross E Esq PROPOSAL8Xuxue Feng
1009Julie K TollnerItaly2024-04-10Chapman, Ross E Esq NEW70Bernardo Dominic
1010Jeanfrancois T WaycottRussia2024-04-24Feltz Printing Service NEGOTIATION6Anna Fali
1011Ivar B BriddickJapan2024-04-15Dorl, James J Esq PROPOSAL85Elwin Sharvill
1012Adams N CampainBrazil2024-04-24Dorl, James J Esq NEGOTIATION44Amy Elsner
1013Greenwood C SchemmerAustralia2024-04-15Feltz Printing Service RENEWAL70Ivan Magalhaes
1014Claire S FlosiGermany2024-04-14Chanay, Jeffrey A Esq RENEWAL4Anna Fali
1015David K CaudyBrazil2024-04-02Feiner Bros QUALIFIED86Xuxue Feng
1016Juan G FlosiGermany2024-03-26King, Christopher A Esq NEW78Ioni Bowcher
1017Munro N FollerCanada2024-04-23Chanay, Jeffrey A Esq QUALIFIED84Amy Elsner
1018Darci P WieserFrance2024-04-02Chanay, Jeffrey A Esq NEW57Bernardo Dominic
1019Murillo G RutaIndia2024-04-10Chapman, Ross E Esq QUALIFIED10Anna Fali
1020Maisha L InouyeRussia2024-04-05King, Christopher A Esq NEW27Xuxue Feng
1021Alejandro H StensethSpain2024-03-26Truhlar And Truhlar Attys PROPOSAL87Asiya Javayant
1022Maria M DilliardArgentina2024-04-21Printing Dimensions RENEWAL67Onyama Limba
1023Nicolas D SaylorsArgentina2024-04-13Feltz Printing Service RENEWAL87Ivan Magalhaes
1024Leja V IturbideItaly2024-04-22Dorl, James J Esq NEGOTIATION66Asiya Javayant
1025Adams U OstroskyRussia2024-04-03Chemel, James L Cpa NEGOTIATION78Xuxue Feng
1026Stacey U RimFrance2024-04-19Dorl, James J Esq UNQUALIFIED80Anna Fali
1027Jefferson U AlbaresGermany2024-04-15Commercial Press NEW70Ioni Bowcher
1028Adams C RoysterItaly2024-04-21Chanay, Jeffrey A Esq NEGOTIATION6Asiya Javayant
1029Tony Y AlbaresIndia2024-03-28King, Christopher A Esq NEW85Onyama Limba
1030Sinclair H NickaArgentina2024-03-27Chapman, Ross E Esq NEW88Bernardo Dominic
1031Misaki Y NickaJapan2024-04-23Feiner Bros QUALIFIED57Bernardo Dominic
1032Munro L OldroydAustralia2024-04-13Morlong Associates PROPOSAL29Ivan Magalhaes
1033Julie Q FollerRussia2024-04-22Chemel, James L Cpa NEGOTIATION84Ivan Magalhaes
1034Stacey F WieserRussia2024-03-26Feiner Bros RENEWAL69Stephen Shaw
1035Deepesh F PoquetteArgentina2024-04-09Buckley Miller Wright PROPOSAL72Stephen Shaw
1036Adams P MorascaCanada2024-03-27Buckley Miller Wright NEW74Stephen Shaw
1037Sinclair D InouyeSpain2024-03-26Rousseaux, Michael Esq NEGOTIATION39Amy Elsner
1038Izzy M MorascaArgentina2024-04-07Chemel, James L Cpa UNQUALIFIED52Ioni Bowcher
1039Octavia T ShinkoSpain2024-04-21King, Christopher A Esq PROPOSAL48Anna Fali
1040Costa X WaycottGermany2024-04-21Chapman, Ross E Esq NEGOTIATION33Onyama Limba
1041Aruna H OstroskySpain2024-04-08Truhlar And Truhlar Attys NEW77Anna Fali
1042Izzy P ButtSpain2024-04-17Buckley Miller Wright PROPOSAL56Ivan Magalhaes
1043Salvatore B OldroydArgentina2024-04-17Chapman, Ross E Esq RENEWAL95Bernardo Dominic
1044Greenwood W OstroskyItaly2024-04-09Feltz Printing Service QUALIFIED30Stephen Shaw
1045Morrow J NestleSpain2024-04-08Feltz Printing Service PROPOSAL69Stephen Shaw
1046Leja F IturbideGermany2024-04-15Rousseaux, Michael Esq RENEWAL36Elwin Sharvill
1047Julie T VenereAustralia2024-04-13Feiner Bros QUALIFIED19Amy Elsner
1048Chavez F CaudyFrance2024-04-23Buckley Miller Wright NEW82Onyama Limba
1049Maria Q SlusarskiFrance2024-03-28Dorl, James J Esq NEW81Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues O GauchoUnited KingdomElwin Sharvill NEW
Greenwood X RulapaughRussiaAmy Elsner QUALIFIED
James K StensethCanadaAnna Fali NEW
Cody Y BowleyBrazilBernardo Dominic NEGOTIATION
Arvin C CampainArgentinaIvan Magalhaes PROPOSAL
Antonio X AmigonItalyAnna Fali NEGOTIATION
Julie J PerinGermanyStephen Shaw PROPOSAL
Aditya F SlusarskiUnited KingdomXuxue Feng QUALIFIED
Cody X RoysterIndiaXuxue Feng QUALIFIED
Costa U InouyeRussiaBernardo Dominic UNQUALIFIED
Aditya D PerinIndiaBernardo Dominic NEGOTIATION
Costa C StensethBrazilElwin Sharvill RENEWAL
Kadeem K ShinkoArgentinaBernardo Dominic NEW
Stacey K OldroydUnited KingdomAsiya Javayant NEW
Nicolas Y ShinkoArgentinaStephen Shaw UNQUALIFIED
Jennifer N CampainRussiaIoni Bowcher NEW
David L BologniaUnited KingdomAsiya Javayant RENEWAL
Deepesh E CampainArgentinaAmy Elsner RENEWAL
Greenwood Q KuskoSpainStephen Shaw RENEWAL
Aditya N OstroskyBrazilElwin Sharvill QUALIFIED
Julie A DilliardFranceElwin Sharvill NEGOTIATION
James U DilliardRussiaElwin Sharvill UNQUALIFIED
Chavez R OldroydJapanAmy Elsner NEGOTIATION
Juan H CampainFranceOnyama Limba QUALIFIED
James R SchemmerItalyIvan Magalhaes PROPOSAL
Morrow W TollnerUnited KingdomBernardo Dominic QUALIFIED
Costa Y GlickAustraliaAsiya Javayant PROPOSAL
Juan X WaycottFranceIvan Magalhaes PROPOSAL
David D MorascaAustraliaOnyama Limba RENEWAL
Sinclair N TollnerBrazilIvan Magalhaes NEGOTIATION
Arvin X PoquetteAustraliaIvan Magalhaes PROPOSAL
Julie C FerenczSpainBernardo Dominic NEW
Kaitlin V SaylorsArgentinaStephen Shaw PROPOSAL
Faith A MarrierUnited KingdomXuxue Feng NEGOTIATION
Munro J SchemmerFranceIvan Magalhaes UNQUALIFIED
Alejandro Z PoquetteAustraliaAmy Elsner RENEWAL
Munro H WaycottAustraliaElwin Sharvill NEGOTIATION
Costa A KuskoRussiaAnna Fali UNQUALIFIED
Cody D VenereAustraliaElwin Sharvill RENEWAL
Jennifer K GarufiUnited KingdomAmy Elsner UNQUALIFIED
Rodrigues D CaldareraUnited KingdomAsiya Javayant QUALIFIED
Mujtaba S WaycottItalyBernardo Dominic QUALIFIED
Aika J RulapaughItalyXuxue Feng QUALIFIED
Cody C RimArgentinaAsiya Javayant NEW
Maisha Y StockhamCanadaXuxue Feng RENEWAL
Nicolas R DarakjyArgentinaElwin Sharvill UNQUALIFIED
Octavia P IturbideUnited KingdomOnyama Limba NEW
Ashley B MorascaArgentinaIoni Bowcher NEGOTIATION
Leja E KolmetzCanadaIoni Bowcher RENEWAL
Antonio L SlusarskiAustraliaOnyama Limba NEGOTIATION
Frozen Columns
Name
Darci T Gaucho
Jones P Chui
Emily Y Garufi
Munro S Caudy
Kaitlin A Doe
David L Gillian
Smith U Gaucho
Stacey N Perin
Murillo A Darakjy
Johnson B Bowley
Leja L Iturbide
Leon T Caldarera
Salvatore T Chui
Silvio M Ferencz
Antonio K Slusarski
Mujtaba K Doe
Juan Z Bolognia
Ashley M Malet
Rodrigues S Kolmetz
Greenwood H Bolognia
Francesco Y Rim
Murillo Y Gillian
Leja P Royster
Jefferson X Malet
Costa I Malet
Misaki W Butt
Salvatore L Glick
Wickens Z Morasca
Smith M Figeroa
Darci P Figeroa
Mayumi U Iturbide
Ivar U Kusko
Antonio V Oldroyd
Kaitlin P Caudy
Faith D Amigon
Claire I Chui
Ashley B Gillian
Leon S Saylors
Kadeem C Butt
Stacey L Albares
Ivar W Gaucho
Ashley U Kolmetz
Izzy C Gillian
Arvin D Dilliard
Jeanfrancois P Doe
James X Stockham
Clifford O Schemmer
Sinclair X Amigon
Murillo K Bolognia
Sinclair H Butt
IdCountryDate
1000France2024-04-12
1001Australia2024-04-13
1002India2024-04-20
1003Brazil2024-04-16
1004Australia2024-03-29
1005Russia2024-04-02
1006Canada2024-04-24
1007Canada2024-03-27
1008Russia2024-04-01
1009Brazil2024-04-02
1010Canada2024-04-23
1011Canada2024-04-21
1012Brazil2024-04-19
1013Canada2024-03-26
1014Japan2024-03-26
1015Italy2024-03-26
1016Argentina2024-04-19
1017Canada2024-04-13
1018Argentina2024-03-28
1019Spain2024-04-04
1020Spain2024-04-18
1021United Kingdom2024-03-26
1022India2024-03-31
1023Germany2024-04-05
1024Brazil2024-04-23
1025Italy2024-04-04
1026Russia2024-03-29
1027Spain2024-04-12
1028France2024-04-02
1029Japan2024-04-03
1030Russia2024-03-28
1031Spain2024-04-22
1032United Kingdom2024-04-22
1033Japan2024-04-14
1034Italy2024-04-14
1035Japan2024-03-27
1036Italy2024-04-13
1037Argentina2024-04-19
1038Japan2024-03-27
1039United Kingdom2024-03-31
1040Russia2024-04-04
1041France2024-04-07
1042Canada2024-04-04
1043Italy2024-03-30
1044United Kingdom2024-04-02
1045France2024-04-14
1046Italy2024-03-26
1047Brazil2024-04-16
1048Spain2024-04-01
1049Russia2024-04-09

On-Demand Data

NameIdCountryDate
Ashley H Oldroyd1000Germany2024-04-04
Costa I Caldarera1001Germany2024-04-15
Cody Y Kolmetz1002Italy2024-03-26
Mayumi X Dilliard1003Italy2024-04-22
Octavia U Morasca1004Germany2024-04-13
David Y Perin1005Australia2024-04-08
David X Nestle1006Brazil2024-04-08
Tony E Wieser1007Germany2024-04-03
Maria W Schemmer1008Germany2024-04-08
Claire Z Ferencz1009Spain2024-04-10
Salvatore R Stockham1010France2024-03-26
Morrow E Ostrosky1011Brazil2024-04-02
Arvin S Bowley1012France2024-04-01
Kaitlin W Kolmetz1013Italy2024-04-21
Darci S Kolmetz1014Germany2024-04-13
Clifford K Marrier1015Japan2024-04-10
Arvin N Glick1016Brazil2024-04-04
Ivar V Figeroa1017France2024-04-21
Aditya N Maclead1018Brazil2024-04-24
Kadeem E Bolognia1019Germany2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony L BowleyGermanyIoni Bowcher NEGOTIATION
Stacey V RulapaughRussiaAmy Elsner NEW
Tony U ButtIndiaAmy Elsner QUALIFIED
Costa Y RutaFranceAnna Fali RENEWAL
Leon W VocelkaItalyXuxue Feng NEW
Aruna H DarakjyArgentinaAsiya Javayant NEW
Jones I MaletBrazilStephen Shaw UNQUALIFIED
Francesco A CampainArgentinaAnna Fali UNQUALIFIED
Aruna N CaudyAustraliaAmy Elsner UNQUALIFIED
Ivar X SergiIndiaElwin Sharvill NEGOTIATION
Isabel T RimGermanyXuxue Feng UNQUALIFIED
Kaitlin M NestleUnited KingdomIoni Bowcher PROPOSAL
Smith U BologniaArgentinaIoni Bowcher UNQUALIFIED
Izzy Z DarakjyFranceAsiya Javayant UNQUALIFIED
Deepesh P MarrierGermanyBernardo Dominic QUALIFIED
Cody R FollerCanadaOnyama Limba RENEWAL
Ashley S GarufiIndiaOnyama Limba QUALIFIED
Adams O InouyeRussiaAnna Fali QUALIFIED
Stacey T BriddickAustraliaStephen Shaw UNQUALIFIED
Morrow P CaudyBrazilBernardo Dominic NEGOTIATION
Smith V TollnerArgentinaElwin Sharvill PROPOSAL
Jefferson T KolmetzUnited KingdomIvan Magalhaes NEW
Greenwood I VocelkaIndiaElwin Sharvill UNQUALIFIED
Jones K SlusarskiIndiaXuxue Feng QUALIFIED
Chavez A WieserFranceAmy Elsner NEW
Wickens K BologniaAustraliaIoni Bowcher RENEWAL
Darci M VocelkaArgentinaStephen Shaw QUALIFIED
Sinclair L GlickUnited KingdomStephen Shaw QUALIFIED
Sinclair B OldroydBrazilElwin Sharvill QUALIFIED
Isabel M RulapaughFranceAnna Fali UNQUALIFIED
Mujtaba Q VenereUnited KingdomAsiya Javayant RENEWAL
Mujtaba U MorascaGermanyBernardo Dominic RENEWAL
Nicolas H DilliardGermanyAnna Fali QUALIFIED
Deepesh J RulapaughUnited KingdomXuxue Feng QUALIFIED
Jefferson I SaylorsBrazilIoni Bowcher PROPOSAL
Aika X PaprockiFranceElwin Sharvill NEW
James S SchemmerItalyBernardo Dominic NEW
Arvin Q StensethFranceAnna Fali RENEWAL
Deepesh D VocelkaCanadaStephen Shaw QUALIFIED
Arvin B NestleJapanAnna Fali 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>