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
Jones N MacleadCanadaIoni Bowcher RENEWAL
Munro N RoysterGermanyBernardo Dominic NEGOTIATION
Cody I IturbideRussiaIoni Bowcher PROPOSAL
Costa Q MaletRussiaBernardo Dominic RENEWAL
Murillo T VocelkaItalyAmy Elsner NEGOTIATION
Ricardo V RimGermanyAmy Elsner NEW
Mayumi X CaudySpainStephen Shaw QUALIFIED
Arvin Y GillianCanadaOnyama Limba RENEWAL
Murillo X RimFranceIvan Magalhaes NEGOTIATION
Ricardo N OstroskyUnited KingdomIvan Magalhaes UNQUALIFIED
Maria I KolmetzSpainXuxue Feng RENEWAL
Jeanfrancois F SergiCanadaElwin Sharvill QUALIFIED
Clifford T BriddickIndiaStephen Shaw PROPOSAL
Silvio X RoysterBrazilStephen Shaw NEGOTIATION
Tony X MaletItalyIvan Magalhaes UNQUALIFIED
Arvin F StensethJapanOnyama Limba QUALIFIED
Smith R GarufiAustraliaOnyama Limba RENEWAL
Clifford R BriddickFranceAnna Fali UNQUALIFIED
Silvio F StockhamItalyOnyama Limba QUALIFIED
Johnson H FigeroaCanadaStephen Shaw RENEWAL
Cody I PerinItalyOnyama Limba UNQUALIFIED
Maria R NickaItalyIvan Magalhaes QUALIFIED
Tony G NestleSpainXuxue Feng NEW
Emily S VenereIndiaIoni Bowcher PROPOSAL
Darci R StockhamItalyOnyama Limba NEGOTIATION
Jones Z RoysterIndiaXuxue Feng NEW
Faith G MacleadUnited KingdomOnyama Limba NEW
Murillo O KolmetzBrazilElwin Sharvill NEW
Jefferson Y IturbideRussiaBernardo Dominic PROPOSAL
Antonio L SchemmerFranceIoni Bowcher QUALIFIED
Jeanfrancois N NickaUnited KingdomIvan Magalhaes NEW
Jeanfrancois I OstroskyArgentinaXuxue Feng NEW
Leja R IturbideBrazilElwin Sharvill PROPOSAL
Mayumi R MarrierAustraliaIvan Magalhaes UNQUALIFIED
Aika C ChuiArgentinaIoni Bowcher RENEWAL
Aditya D MaletIndiaElwin Sharvill RENEWAL
Emily E DilliardGermanyIoni Bowcher RENEWAL
Ricardo J TollnerUnited KingdomXuxue Feng PROPOSAL
Wickens K SchemmerCanadaBernardo Dominic QUALIFIED
Cody T ChuiBrazilBernardo Dominic PROPOSAL
Wickens F StockhamIndiaXuxue Feng NEW
David G FollerArgentinaElwin Sharvill PROPOSAL
Deepesh Z VenereGermanyXuxue Feng QUALIFIED
Darci V CampainSpainIvan Magalhaes RENEWAL
Ashley F RoysterCanadaIvan Magalhaes UNQUALIFIED
Mayumi H MorascaRussiaIoni Bowcher PROPOSAL
Smith D InouyeSpainAmy Elsner RENEWAL
Alejandro R ButtAustraliaAnna Fali UNQUALIFIED
Francesco Q RoysterGermanyAnna Fali NEW
Morrow Z ChuiArgentinaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco M StensethRussiaElwin Sharvill NEW
Jefferson B CaldareraItalyAnna Fali QUALIFIED
Johnson K RutaArgentinaAnna Fali NEGOTIATION
Clifford G RimFranceOnyama Limba QUALIFIED
Murillo X BowleyItalyIoni Bowcher UNQUALIFIED
Tony Q ButtBrazilStephen Shaw NEW
Ricardo Q PaprockiArgentinaAsiya Javayant NEW
Octavia C SchemmerCanadaElwin Sharvill UNQUALIFIED
Cody M DilliardIndiaAnna Fali RENEWAL
Aditya T MacleadAustraliaAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez I FerenczRussia2024-04-07Printing Dimensions UNQUALIFIED32Onyama Limba
1001Ricardo X RimCanada2024-04-12Chanay, Jeffrey A Esq UNQUALIFIED86Stephen Shaw
1002Tony D SlusarskiBrazil2024-04-17Commercial Press RENEWAL22Amy Elsner
1003Octavia Q AmigonItaly2024-04-27Chapman, Ross E Esq PROPOSAL15Amy Elsner
1004Nicolas V AlbaresItaly2024-04-26Benton, John B Jr RENEWAL67Asiya Javayant
1005Alejandro B SchemmerIndia2024-04-14Printing Dimensions UNQUALIFIED43Bernardo Dominic
1006Faith F VenereRussia2024-04-27Dorl, James J Esq QUALIFIED59Asiya Javayant
1007David G NickaBrazil2024-04-09Rousseaux, Michael Esq NEW65Elwin Sharvill
1008Kaitlin Z KuskoUnited Kingdom2024-04-03Truhlar And Truhlar Attys RENEWAL21Amy Elsner
1009Clifford A SaylorsFrance2024-04-16Buckley Miller Wright PROPOSAL30Bernardo Dominic
1010Izzy V GlickRussia2024-04-10Chapman, Ross E Esq NEW16Asiya Javayant
1011Julie V SlusarskiGermany2024-04-12Commercial Press QUALIFIED57Anna Fali
1012David F FerenczUnited Kingdom2024-04-22Rousseaux, Michael Esq QUALIFIED71Ioni Bowcher
1013Maria G NestleJapan2024-04-12Dorl, James J Esq UNQUALIFIED37Stephen Shaw
1014Ricardo P ButtRussia2024-04-25King, Christopher A Esq NEW8Onyama Limba
1015Aruna M PaprockiSpain2024-04-22Rangoni Of Florence QUALIFIED0Amy Elsner
1016Juan Z FlosiCanada2024-04-12Buckley Miller Wright QUALIFIED9Onyama Limba
1017Izzy F DarakjyGermany2024-04-02Rousseaux, Michael Esq UNQUALIFIED28Xuxue Feng
1018Aruna T OldroydCanada2024-04-11Commercial Press RENEWAL36Onyama Limba
1019Faith D TollnerAustralia2024-04-08Printing Dimensions NEW54Stephen Shaw
1020Clifford G PoquetteItaly2024-04-05King, Christopher A Esq NEW71Asiya Javayant
1021Munro U MorascaCanada2024-04-16Chapman, Ross E Esq PROPOSAL81Anna Fali
1022Antonio K RulapaughGermany2024-04-06Rangoni Of Florence NEGOTIATION19Onyama Limba
1023David K RutaIndia2024-04-13Truhlar And Truhlar Attys NEW83Ioni Bowcher
1024Rodrigues K OldroydFrance2024-04-08Morlong Associates NEGOTIATION1Amy Elsner
1025Aditya N CampainFrance2024-04-27Rangoni Of Florence QUALIFIED54Elwin Sharvill
1026Ricardo Y CaldareraItaly2024-04-08Chapman, Ross E Esq RENEWAL94Xuxue Feng
1027Wickens K GillianJapan2024-04-02Printing Dimensions RENEWAL88Xuxue Feng
1028James U SlusarskiItaly2024-03-31King, Christopher A Esq PROPOSAL4Elwin Sharvill
1029Morrow V FigeroaArgentina2024-04-25Benton, John B Jr PROPOSAL63Onyama Limba
1030Darci D WaycottUnited Kingdom2024-04-22Rangoni Of Florence NEW98Elwin Sharvill
1031David S SchemmerSpain2024-03-29Morlong Associates NEGOTIATION89Anna Fali
1032Isabel T MaletJapan2024-04-13Chemel, James L Cpa RENEWAL67Onyama Limba
1033David G RulapaughArgentina2024-04-04Chanay, Jeffrey A Esq QUALIFIED56Ivan Magalhaes
1034Faith D RulapaughSpain2024-03-31Feiner Bros PROPOSAL31Bernardo Dominic
1035Aditya K StensethArgentina2024-04-15Rousseaux, Michael Esq NEW54Xuxue Feng
1036Ivar A VocelkaFrance2024-04-16Rousseaux, Michael Esq RENEWAL6Amy Elsner
1037Misaki R GarufiArgentina2024-04-24Commercial Press QUALIFIED50Ioni Bowcher
1038Arvin O StensethIndia2024-04-11Feltz Printing Service QUALIFIED56Elwin Sharvill
1039Faith H MaletUnited Kingdom2024-03-29Rousseaux, Michael Esq UNQUALIFIED45Elwin Sharvill
1040Emily F RimUnited Kingdom2024-04-12Feiner Bros QUALIFIED20Stephen Shaw
1041Greenwood J KolmetzIndia2024-04-09Rangoni Of Florence NEW2Xuxue Feng
1042Mayumi F StockhamUnited Kingdom2024-04-25Benton, John B Jr NEW29Elwin Sharvill
1043Mayumi O PoquetteArgentina2024-04-04Feiner Bros NEW40Elwin Sharvill
1044Clifford E MaletAustralia2024-04-05Feiner Bros UNQUALIFIED92Onyama Limba
1045Stacey X SlusarskiBrazil2024-04-17Feiner Bros UNQUALIFIED34Ioni Bowcher
1046Cody A FigeroaSpain2024-04-10Truhlar And Truhlar Attys PROPOSAL41Stephen Shaw
1047Mujtaba H GauchoIndia2024-04-08Feiner Bros NEW25Elwin Sharvill
1048Morrow B RulapaughArgentina2024-04-15Rangoni Of Florence RENEWAL18Bernardo Dominic
1049Emily O GauchoUnited Kingdom2024-04-08Feltz Printing Service QUALIFIED87Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Stacey I WhobreyGermanyBernardo Dominic NEGOTIATION
Francesco N RutaCanadaIvan Magalhaes NEW
Stacey U FigeroaItalyIoni Bowcher QUALIFIED
Mayumi I WaycottAustraliaXuxue Feng NEGOTIATION
Darci N RutaSpainIvan Magalhaes PROPOSAL
Greenwood J SaylorsIndiaIoni Bowcher NEGOTIATION
Ricardo K WaycottJapanStephen Shaw NEW
Aika Q MorascaIndiaIvan Magalhaes QUALIFIED
Costa N FollerGermanyAmy Elsner QUALIFIED
Deepesh R MaletCanadaBernardo Dominic NEW
Smith S AmigonFranceAsiya Javayant UNQUALIFIED
Aruna K FollerGermanyElwin Sharvill NEGOTIATION
Ivar G RoysterSpainAsiya Javayant NEW
Francesco E InouyeCanadaOnyama Limba NEGOTIATION
Stacey X CampainAustraliaElwin Sharvill NEGOTIATION
Murillo H DarakjyRussiaBernardo Dominic UNQUALIFIED
Nicolas B FerenczUnited KingdomAnna Fali QUALIFIED
David V MaletGermanyElwin Sharvill UNQUALIFIED
Cody T OldroydItalyElwin Sharvill QUALIFIED
David W BologniaAustraliaAmy Elsner UNQUALIFIED
Maisha S FlosiAustraliaOnyama Limba QUALIFIED
Francesco Z ShinkoUnited KingdomBernardo Dominic NEW
Isabel W MacleadItalyAmy Elsner RENEWAL
David T RulapaughJapanXuxue Feng PROPOSAL
Adams Q FollerAustraliaAmy Elsner PROPOSAL
Jennifer O CampainBrazilIvan Magalhaes RENEWAL
Maisha G RulapaughBrazilAnna Fali PROPOSAL
Isabel C WaycottSpainXuxue Feng NEGOTIATION
Tony T AmigonSpainIoni Bowcher QUALIFIED
Deepesh K BriddickFranceOnyama Limba PROPOSAL
Adams I FollerCanadaStephen Shaw NEGOTIATION
David M BriddickIndiaBernardo Dominic RENEWAL
Jeanfrancois Y ButtJapanBernardo Dominic UNQUALIFIED
Chavez O RulapaughAustraliaAmy Elsner QUALIFIED
Antonio C PerinGermanyIvan Magalhaes NEW
Francesco B FerenczItalyIvan Magalhaes NEGOTIATION
Leja Y NestleSpainIoni Bowcher UNQUALIFIED
Silvio Q IturbideIndiaIoni Bowcher NEGOTIATION
Clifford M WieserUnited KingdomIvan Magalhaes NEW
Kaitlin V VenereGermanyElwin Sharvill NEGOTIATION
Julie N RulapaughArgentinaAmy Elsner NEGOTIATION
Clifford P RutaSpainAsiya Javayant UNQUALIFIED
Francesco V BowleyItalyElwin Sharvill UNQUALIFIED
Nicolas V GauchoBrazilAsiya Javayant PROPOSAL
Maria A RimFranceIoni Bowcher NEGOTIATION
Jones J TollnerIndiaElwin Sharvill NEW
Deepesh J StensethSpainStephen Shaw NEGOTIATION
Munro L GlickUnited KingdomIvan Magalhaes NEGOTIATION
Alejandro U VenereBrazilAmy Elsner NEGOTIATION
Smith D IturbideArgentinaAsiya Javayant NEW
Frozen Columns
Name
Kadeem X Nestle
Munro T Morasca
Chavez F Bowley
Mujtaba K Flosi
Silvio Z Schemmer
Faith J Caldarera
Sinclair H Caudy
Mujtaba C Kusko
Alejandro O Figeroa
Johnson B Poquette
Johnson O Amigon
Adams K Garufi
Faith A Garufi
Leja Z Bolognia
Juan S Stockham
Emily F Iturbide
Adams O Paprocki
Mujtaba S Poquette
Francesco B Perin
David D Foller
Mayumi Q Darakjy
Clifford D Venere
Maisha O Paprocki
Aika G Poquette
Maisha J Gillian
Rodrigues R Morasca
Deepesh G Garufi
Aruna V Caudy
Antonio W Rulapaugh
Jones Y Bolognia
Greenwood T Saylors
James J Malet
Jones N Albares
Jones C Wieser
Francesco G Briddick
Tony R Darakjy
Arvin A Sergi
Costa O Ostrosky
Nicolas J Malet
Jennifer H Paprocki
David E Marrier
Francesco F Garufi
Misaki O Oldroyd
Faith F Vocelka
Salvatore F Waycott
Salvatore O Perin
Johnson T Nestle
Isabel L Chui
Chavez Q Venere
Mayumi W Glick
IdCountryDate
1000United Kingdom2024-04-05
1001France2024-04-19
1002Russia2024-04-20
1003France2024-04-22
1004United Kingdom2024-04-15
1005Argentina2024-04-22
1006Brazil2024-03-30
1007Russia2024-04-09
1008Argentina2024-04-10
1009United Kingdom2024-04-23
1010Germany2024-04-15
1011Brazil2024-04-14
1012Italy2024-04-14
1013Spain2024-04-19
1014Brazil2024-04-20
1015Brazil2024-04-24
1016Japan2024-04-22
1017India2024-04-08
1018India2024-04-11
1019Argentina2024-04-06
1020United Kingdom2024-04-21
1021Brazil2024-04-23
1022Canada2024-04-18
1023Spain2024-04-21
1024India2024-04-03
1025Argentina2024-04-12
1026Spain2024-04-25
1027Italy2024-04-10
1028Argentina2024-04-23
1029Japan2024-04-12
1030Brazil2024-04-04
1031Australia2024-04-24
1032Russia2024-04-24
1033France2024-04-20
1034Canada2024-04-08
1035Russia2024-04-17
1036Germany2024-04-23
1037Germany2024-04-26
1038Germany2024-04-23
1039India2024-04-10
1040Japan2024-04-22
1041Germany2024-04-21
1042Italy2024-04-12
1043India2024-04-21
1044United Kingdom2024-03-29
1045Germany2024-04-13
1046Spain2024-04-25
1047Argentina2024-04-14
1048Japan2024-04-19
1049Australia2024-03-30

On-Demand Data

NameIdCountryDate
Alejandro O Saylors1000Russia2024-03-30
Octavia F Wieser1001Canada2024-04-04
Ricardo S Dilliard1002Canada2024-04-03
Murillo R Nestle1003Germany2024-04-17
Kaitlin M Doe1004India2024-04-20
Claire I Foller1005Argentina2024-04-24
Izzy Z Schemmer1006Russia2024-04-21
David T Darakjy1007Canada2024-04-12
Rodrigues V Morasca1008Russia2024-04-18
Greenwood R Tollner1009Russia2024-04-04
Mujtaba O Amigon1010India2024-04-18
Francesco N Campain1011Australia2024-04-18
Leja H Doe1012United Kingdom2024-04-14
Munro K Saylors1013Brazil2024-04-18
Mayumi B Perin1014Spain2024-04-18
Stacey O Caudy1015Australia2024-04-17
Juan Z Dilliard1016Japan2024-04-09
Adams Q Bowley1017Canada2024-04-27
Ricardo C Paprocki1018India2024-04-04
Mujtaba B Bowley1019Spain2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki O MacleadAustraliaStephen Shaw UNQUALIFIED
Kaitlin Y NickaCanadaElwin Sharvill NEW
Ivar C SchemmerIndiaStephen Shaw QUALIFIED
Salvatore Y CampainRussiaAsiya Javayant QUALIFIED
Jefferson Z WaycottBrazilOnyama Limba NEW
Salvatore Z GarufiItalyBernardo Dominic NEW
Maria I SlusarskiFranceAmy Elsner NEGOTIATION
Aika L GillianItalyElwin Sharvill RENEWAL
Alejandro O DilliardJapanIoni Bowcher RENEWAL
James N MaletGermanyOnyama Limba UNQUALIFIED
Ivar Y VocelkaAustraliaAsiya Javayant QUALIFIED
Maisha T BriddickItalyBernardo Dominic RENEWAL
Juan U BologniaCanadaBernardo Dominic NEW
Munro A WieserUnited KingdomAmy Elsner UNQUALIFIED
Francesco U WieserJapanIvan Magalhaes NEGOTIATION
Jennifer B AmigonJapanIoni Bowcher PROPOSAL
Juan I MarrierGermanyStephen Shaw RENEWAL
Octavia X OstroskyArgentinaAmy Elsner QUALIFIED
Leon C IturbideCanadaElwin Sharvill RENEWAL
Maria F BriddickGermanyXuxue Feng NEW
Deepesh C StockhamAustraliaStephen Shaw QUALIFIED
Silvio N OldroydArgentinaAmy Elsner QUALIFIED
James W VocelkaFranceAsiya Javayant NEW
Munro E MarrierAustraliaAmy Elsner RENEWAL
Murillo G MacleadIndiaXuxue Feng PROPOSAL
Stacey P FigeroaSpainAsiya Javayant RENEWAL
Silvio N CaudyRussiaElwin Sharvill NEW
Rodrigues U SergiCanadaIvan Magalhaes UNQUALIFIED
Maria Z NestleRussiaAsiya Javayant NEW
Darci V GauchoBrazilElwin Sharvill NEGOTIATION
Isabel Y FollerGermanyStephen Shaw RENEWAL
Izzy W WaycottRussiaIvan Magalhaes NEGOTIATION
Sinclair I MaletFranceBernardo Dominic RENEWAL
Francesco Q AlbaresSpainStephen Shaw NEW
Murillo J NickaUnited KingdomAsiya Javayant UNQUALIFIED
Leon X VocelkaUnited KingdomElwin Sharvill NEW
Arvin Z CaldareraGermanyXuxue Feng UNQUALIFIED
Munro S DilliardBrazilAmy Elsner PROPOSAL
Emily W PaprockiItalyOnyama Limba UNQUALIFIED
Misaki Y ChuiArgentinaElwin Sharvill 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>