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
David I SaylorsUnited KingdomAmy Elsner QUALIFIED
Smith U BriddickAustraliaAnna Fali QUALIFIED
Stacey U BriddickSpainStephen Shaw RENEWAL
Rodrigues E KolmetzGermanyStephen Shaw RENEWAL
Tony Z BologniaAustraliaIvan Magalhaes NEGOTIATION
James R AmigonItalyAnna Fali NEW
Sinclair H DoeArgentinaElwin Sharvill QUALIFIED
Silvio G CaldareraJapanOnyama Limba UNQUALIFIED
Costa T IturbideArgentinaStephen Shaw QUALIFIED
Rodrigues P SchemmerIndiaOnyama Limba UNQUALIFIED
Mayumi J BologniaItalyIvan Magalhaes PROPOSAL
Jeanfrancois F FigeroaGermanyXuxue Feng QUALIFIED
Izzy V ShinkoFranceElwin Sharvill NEGOTIATION
Wickens E MaletUnited KingdomAsiya Javayant NEGOTIATION
Claire W StensethItalyXuxue Feng NEGOTIATION
Jeanfrancois X WhobreyJapanAnna Fali PROPOSAL
Jennifer L ButtCanadaBernardo Dominic UNQUALIFIED
Izzy D GlickItalyXuxue Feng QUALIFIED
Mayumi C DoeUnited KingdomAsiya Javayant PROPOSAL
Isabel Q DoeItalyStephen Shaw PROPOSAL
Mayumi B CaudyUnited KingdomIoni Bowcher QUALIFIED
Isabel S KolmetzIndiaAmy Elsner PROPOSAL
Jefferson V NickaCanadaIvan Magalhaes NEW
Emily W IturbideBrazilOnyama Limba UNQUALIFIED
Stacey K NickaSpainElwin Sharvill PROPOSAL
Rodrigues I PoquetteJapanBernardo Dominic NEW
Jefferson D FerenczItalyXuxue Feng QUALIFIED
Munro X BriddickGermanyElwin Sharvill PROPOSAL
Adams M AlbaresSpainIvan Magalhaes QUALIFIED
Kadeem W SlusarskiUnited KingdomBernardo Dominic QUALIFIED
Salvatore H PoquetteFranceStephen Shaw NEGOTIATION
Murillo C SaylorsFranceAsiya Javayant NEGOTIATION
David K SergiItalyStephen Shaw PROPOSAL
Misaki X GauchoRussiaElwin Sharvill PROPOSAL
Rodrigues L PerinCanadaBernardo Dominic NEGOTIATION
Sinclair V IturbideIndiaAmy Elsner PROPOSAL
Clifford D MaletJapanElwin Sharvill NEW
Misaki E SlusarskiUnited KingdomElwin Sharvill UNQUALIFIED
Adams T DarakjyFranceAsiya Javayant NEW
Nicolas H TollnerFranceElwin Sharvill RENEWAL
Cody K SchemmerFranceAsiya Javayant RENEWAL
Faith W CaudyAustraliaIvan Magalhaes QUALIFIED
Kaitlin S BowleyFranceAsiya Javayant UNQUALIFIED
Jeanfrancois O ButtJapanOnyama Limba QUALIFIED
Cody K DoeItalyElwin Sharvill UNQUALIFIED
Cody N RimIndiaAnna Fali NEW
Claire K RoysterSpainStephen Shaw NEW
Jennifer U VocelkaRussiaBernardo Dominic PROPOSAL
Ashley R CaldareraJapanIvan Magalhaes QUALIFIED
Cody I FigeroaAustraliaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Adams C RoysterItalyAnna Fali NEW
Jefferson N ShinkoGermanyAnna Fali PROPOSAL
Leja L MaletItalyBernardo Dominic UNQUALIFIED
Emily W CaudyJapanAmy Elsner UNQUALIFIED
Adams H FerenczUnited KingdomBernardo Dominic RENEWAL
Jennifer P DarakjyAustraliaStephen Shaw NEGOTIATION
Maria V CaudyCanadaAmy Elsner PROPOSAL
Maisha I SergiCanadaAnna Fali NEW
Emily E SaylorsIndiaAnna Fali QUALIFIED
Johnson M RimUnited KingdomAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David I MaletAustralia2024-04-10Chapman, Ross E Esq UNQUALIFIED25Xuxue Feng
1001Alejandro T BologniaBrazil2024-04-15Feiner Bros RENEWAL87Stephen Shaw
1002Wickens S NestleItaly2024-04-22Rousseaux, Michael Esq PROPOSAL96Stephen Shaw
1003Jefferson T CampainSpain2024-04-12Chapman, Ross E Esq UNQUALIFIED58Onyama Limba
1004Misaki N GauchoBrazil2024-04-09Chemel, James L Cpa PROPOSAL27Amy Elsner
1005Aruna W FerenczSpain2024-04-04Feltz Printing Service UNQUALIFIED49Stephen Shaw
1006David V DarakjyIndia2024-04-01Morlong Associates QUALIFIED10Asiya Javayant
1007Arvin D IturbideSpain2024-04-03Dorl, James J Esq NEGOTIATION40Ioni Bowcher
1008Morrow H FlosiArgentina2024-04-15Rangoni Of Florence RENEWAL57Bernardo Dominic
1009Maisha Y PaprockiBrazil2024-04-09Printing Dimensions QUALIFIED69Ioni Bowcher
1010Ashley L TollnerIndia2024-04-04Benton, John B Jr RENEWAL35Bernardo Dominic
1011Cody J MorascaAustralia2024-04-30Benton, John B Jr PROPOSAL55Amy Elsner
1012Mayumi H VenereUnited Kingdom2024-04-19Rangoni Of Florence QUALIFIED73Amy Elsner
1013Emily D RulapaughItaly2024-04-12Chapman, Ross E Esq UNQUALIFIED88Onyama Limba
1014Murillo F OstroskyRussia2024-04-16Rousseaux, Michael Esq RENEWAL87Asiya Javayant
1015Chavez S BowleyItaly2024-04-02Commercial Press NEGOTIATION36Amy Elsner
1016Chavez E WaycottAustralia2024-04-01Rangoni Of Florence UNQUALIFIED39Onyama Limba
1017Aditya O MaletAustralia2024-04-01Morlong Associates NEGOTIATION19Onyama Limba
1018Octavia I WieserSpain2024-04-27King, Christopher A Esq QUALIFIED59Stephen Shaw
1019Murillo L PoquetteUnited Kingdom2024-04-01Benton, John B Jr PROPOSAL78Elwin Sharvill
1020Clifford V ButtIndia2024-04-08Feiner Bros NEGOTIATION81Stephen Shaw
1021Stacey M GauchoJapan2024-04-14Rousseaux, Michael Esq NEW93Xuxue Feng
1022Jefferson M ChuiRussia2024-04-16Benton, John B Jr PROPOSAL43Bernardo Dominic
1023Morrow B BologniaItaly2024-04-03King, Christopher A Esq QUALIFIED52Onyama Limba
1024Greenwood X OldroydGermany2024-04-05Benton, John B Jr QUALIFIED51Stephen Shaw
1025Jefferson X OstroskyItaly2024-04-29Printing Dimensions NEGOTIATION84Ivan Magalhaes
1026Misaki E RutaArgentina2024-04-14Morlong Associates NEW44Xuxue Feng
1027Leja S SaylorsCanada2024-04-11Rangoni Of Florence NEW1Bernardo Dominic
1028Leja B DoeGermany2024-04-11Buckley Miller Wright QUALIFIED62Xuxue Feng
1029Maisha W NestleAustralia2024-04-23Buckley Miller Wright RENEWAL18Ioni Bowcher
1030Salvatore G WaycottCanada2024-04-30Chemel, James L Cpa NEGOTIATION44Bernardo Dominic
1031Leja B FigeroaJapan2024-04-08King, Christopher A Esq UNQUALIFIED56Onyama Limba
1032Smith K FerenczBrazil2024-04-02Rousseaux, Michael Esq NEW55Ioni Bowcher
1033Cody G ButtIndia2024-04-18Commercial Press QUALIFIED22Xuxue Feng
1034Tony W GauchoIndia2024-04-17Chapman, Ross E Esq NEW50Asiya Javayant
1035Francesco O CaldareraFrance2024-04-15Chapman, Ross E Esq PROPOSAL35Stephen Shaw
1036David J FigeroaItaly2024-04-21Commercial Press QUALIFIED86Xuxue Feng
1037Clifford O GarufiGermany2024-04-05Benton, John B Jr UNQUALIFIED3Bernardo Dominic
1038Ashley Y ShinkoBrazil2024-04-19King, Christopher A Esq RENEWAL89Stephen Shaw
1039Smith S PerinIndia2024-04-10Chapman, Ross E Esq QUALIFIED34Onyama Limba
1040Kaitlin J VenereAustralia2024-04-18King, Christopher A Esq RENEWAL70Ioni Bowcher
1041Leon M StensethAustralia2024-04-02Rangoni Of Florence NEW17Xuxue Feng
1042Cody C StockhamItaly2024-04-24Rangoni Of Florence NEGOTIATION6Xuxue Feng
1043Juan J CaldareraGermany2024-04-17Chanay, Jeffrey A Esq UNQUALIFIED75Amy Elsner
1044Claire Z ShinkoArgentina2024-04-24Dorl, James J Esq NEW13Anna Fali
1045Tony O NickaFrance2024-04-10Benton, John B Jr QUALIFIED40Ivan Magalhaes
1046Greenwood E InouyeGermany2024-04-29Dorl, James J Esq PROPOSAL67Ioni Bowcher
1047Jennifer U CampainSpain2024-04-14Morlong Associates NEW38Xuxue Feng
1048Ricardo F BowleyIndia2024-04-14Truhlar And Truhlar Attys UNQUALIFIED60Onyama Limba
1049Arvin T BologniaArgentina2024-04-28Dorl, James J Esq RENEWAL41Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Ricardo O RutaAustraliaXuxue Feng UNQUALIFIED
Stacey T CaudyGermanyElwin Sharvill PROPOSAL
Morrow W DarakjyJapanIoni Bowcher NEGOTIATION
Rodrigues S MaletIndiaAnna Fali NEW
Jones Y DoeBrazilBernardo Dominic QUALIFIED
Johnson L PerinIndiaIvan Magalhaes QUALIFIED
James O DilliardGermanyAsiya Javayant RENEWAL
Adams F DarakjyAustraliaStephen Shaw RENEWAL
James Q MacleadUnited KingdomAmy Elsner PROPOSAL
Deepesh S OstroskyRussiaBernardo Dominic NEW
Faith X ChuiIndiaAnna Fali NEW
Ivar C WhobreySpainIvan Magalhaes RENEWAL
Kaitlin E NestleFranceIvan Magalhaes QUALIFIED
Rodrigues B MaletGermanyIoni Bowcher RENEWAL
Stacey B NestleItalyElwin Sharvill NEGOTIATION
Greenwood V FlosiCanadaOnyama Limba QUALIFIED
Ricardo J RimGermanyBernardo Dominic QUALIFIED
Wickens W GillianBrazilStephen Shaw NEGOTIATION
Munro R WieserAustraliaOnyama Limba NEW
Maria U ShinkoIndiaElwin Sharvill NEW
Maisha U SaylorsBrazilIvan Magalhaes NEGOTIATION
Tony H RoysterSpainAnna Fali PROPOSAL
Claire Q VocelkaCanadaXuxue Feng RENEWAL
Johnson N FollerJapanXuxue Feng QUALIFIED
Stacey S ChuiBrazilOnyama Limba RENEWAL
Deepesh Z GillianArgentinaStephen Shaw NEGOTIATION
Aika A FigeroaRussiaElwin Sharvill NEW
Octavia K SchemmerIndiaIoni Bowcher UNQUALIFIED
Jefferson D RimFranceElwin Sharvill RENEWAL
Deepesh K AmigonJapanAsiya Javayant QUALIFIED
Jones E SlusarskiUnited KingdomStephen Shaw PROPOSAL
Mayumi D SlusarskiCanadaStephen Shaw QUALIFIED
Mujtaba D CampainUnited KingdomElwin Sharvill QUALIFIED
Tony T MaletRussiaBernardo Dominic RENEWAL
Faith E DarakjyGermanyElwin Sharvill QUALIFIED
Aruna F WaycottGermanyElwin Sharvill NEGOTIATION
Kadeem M IturbideFranceAmy Elsner UNQUALIFIED
Ashley V MaletArgentinaAmy Elsner RENEWAL
Alejandro C BriddickArgentinaAnna Fali UNQUALIFIED
Adams Q MaletArgentinaStephen Shaw RENEWAL
Darci S StockhamAustraliaAmy Elsner QUALIFIED
Jennifer Q ChuiSpainAnna Fali NEW
Smith C SchemmerIndiaElwin Sharvill PROPOSAL
Francesco I CaldareraCanadaBernardo Dominic QUALIFIED
Izzy O RimCanadaIvan Magalhaes RENEWAL
Mujtaba G NickaIndiaIoni Bowcher NEGOTIATION
Ivar Y KuskoAustraliaElwin Sharvill UNQUALIFIED
Jennifer Z SchemmerIndiaAnna Fali NEW
Alejandro B AmigonCanadaIvan Magalhaes NEGOTIATION
Isabel S SergiGermanyStephen Shaw RENEWAL
Frozen Columns
Name
Silvio M Foller
Salvatore J Gillian
Ivar V Caldarera
Sinclair D Kolmetz
Rodrigues Z Bowley
Munro V Slusarski
Tony T Kusko
Deepesh O Bowley
Greenwood F Wieser
Octavia N Campain
Aruna T Oldroyd
Jennifer X Caldarera
Nicolas R Campain
Isabel C Slusarski
Jefferson O Morasca
Jones R Schemmer
Salvatore S Marrier
Maria G Amigon
Emily O Campain
Izzy C Inouye
Juan N Sergi
Deepesh L Garufi
Wickens A Saylors
Jones B Rulapaugh
Emily N Briddick
Arvin E Whobrey
Leon U Malet
Leon D Albares
Deepesh K Stenseth
Cody K Caldarera
Leon G Kolmetz
Kaitlin C Schemmer
Misaki X Ostrosky
David K Malet
Nicolas Y Amigon
Emily H Schemmer
Munro N Venere
Tony B Dilliard
Sinclair H Venere
Ivar R Briddick
Maisha E Morasca
Francesco L Malet
Misaki B Whobrey
Jefferson D Tollner
Sinclair N Darakjy
Ashley P Iturbide
Maria N Saylors
Mayumi J Campain
Ivar V Poquette
Misaki B Glick
IdCountryDate
1000Japan2024-04-02
1001Russia2024-04-07
1002France2024-04-12
1003Russia2024-04-13
1004Argentina2024-04-16
1005Russia2024-04-04
1006Japan2024-04-17
1007United Kingdom2024-04-20
1008India2024-04-29
1009Italy2024-04-22
1010Italy2024-04-04
1011France2024-04-01
1012France2024-04-25
1013Brazil2024-04-18
1014India2024-04-26
1015Spain2024-04-06
1016France2024-04-27
1017Russia2024-04-24
1018Brazil2024-04-13
1019Japan2024-04-08
1020Argentina2024-04-15
1021Spain2024-04-28
1022Australia2024-04-10
1023Canada2024-04-28
1024Australia2024-04-24
1025United Kingdom2024-04-30
1026France2024-04-23
1027France2024-04-29
1028Canada2024-04-08
1029France2024-04-02
1030Japan2024-04-05
1031Spain2024-04-17
1032India2024-04-28
1033Japan2024-04-09
1034Spain2024-04-06
1035Australia2024-04-20
1036India2024-04-22
1037Germany2024-04-04
1038Canada2024-04-28
1039United Kingdom2024-04-21
1040Russia2024-04-07
1041Japan2024-04-19
1042Germany2024-04-19
1043Germany2024-04-12
1044Spain2024-04-25
1045Russia2024-04-01
1046Spain2024-04-28
1047Japan2024-04-05
1048Spain2024-04-03
1049India2024-04-24

On-Demand Data

NameIdCountryDate
Munro C Campain1000Japan2024-04-11
Maisha W Poquette1001United Kingdom2024-04-19
Misaki S Poquette1002Australia2024-04-10
Maisha N Perin1003Australia2024-04-14
Antonio Z Gillian1004Spain2024-04-26
Jennifer S Darakjy1005Australia2024-04-26
Greenwood T Garufi1006Australia2024-04-29
Maria O Nicka1007Russia2024-04-15
Jeanfrancois L Maclead1008Russia2024-04-11
Isabel P Dilliard1009Germany2024-04-19
Aruna O Foller1010Argentina2024-04-30
Nicolas T Stenseth1011France2024-04-17
Ivar Q Morasca1012Italy2024-04-25
Kaitlin T Oldroyd1013France2024-04-13
Munro S Glick1014Argentina2024-04-13
Aika G Whobrey1015Russia2024-04-17
Salvatore N Garufi1016Spain2024-04-01
Jones A Royster1017Italy2024-04-28
Kaitlin P Butt1018Spain2024-04-07
Aditya Y Iturbide1019Argentina2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily A BologniaAustraliaIvan Magalhaes RENEWAL
Jefferson L DarakjyJapanAmy Elsner PROPOSAL
Jeanfrancois P BriddickCanadaIoni Bowcher PROPOSAL
Aruna G BologniaFranceXuxue Feng NEW
Aika H FollerItalyIoni Bowcher UNQUALIFIED
Francesco C StensethUnited KingdomAsiya Javayant UNQUALIFIED
Rodrigues H PaprockiJapanAsiya Javayant NEGOTIATION
Isabel H VocelkaUnited KingdomAnna Fali NEW
Rodrigues K GlickBrazilIoni Bowcher RENEWAL
Smith V WhobreyGermanyAsiya Javayant NEGOTIATION
Murillo N CampainJapanBernardo Dominic QUALIFIED
Deepesh Q DilliardJapanIvan Magalhaes QUALIFIED
Ashley E NickaBrazilAsiya Javayant QUALIFIED
Greenwood B WieserIndiaAnna Fali QUALIFIED
Aditya J TollnerRussiaAnna Fali NEGOTIATION
Kadeem K PoquetteBrazilXuxue Feng NEW
Munro F MaletIndiaElwin Sharvill PROPOSAL
Mujtaba S DarakjyCanadaOnyama Limba QUALIFIED
Chavez E InouyeAustraliaBernardo Dominic RENEWAL
Morrow P MorascaArgentinaAnna Fali RENEWAL
David P FerenczItalyStephen Shaw PROPOSAL
Maisha G CaudyGermanyOnyama Limba PROPOSAL
Leja S PoquetteBrazilIvan Magalhaes NEGOTIATION
Wickens O SergiGermanyBernardo Dominic UNQUALIFIED
Silvio T TollnerCanadaBernardo Dominic RENEWAL
Francesco V PaprockiItalyAmy Elsner QUALIFIED
Tony P GarufiArgentinaBernardo Dominic RENEWAL
Ivar Y BologniaSpainIvan Magalhaes NEGOTIATION
Murillo S OldroydSpainXuxue Feng RENEWAL
Jones J WaycottUnited KingdomStephen Shaw QUALIFIED
Rodrigues T OstroskyAustraliaAmy Elsner NEGOTIATION
Greenwood N GlickUnited KingdomElwin Sharvill RENEWAL
Maria I RulapaughSpainIvan Magalhaes NEGOTIATION
Aruna G GarufiItalyBernardo Dominic PROPOSAL
Francesco E FigeroaItalyIvan Magalhaes PROPOSAL
Deepesh G SchemmerArgentinaIoni Bowcher NEW
Morrow Q OldroydRussiaElwin Sharvill PROPOSAL
Kadeem G ButtArgentinaStephen Shaw RENEWAL
Juan F AlbaresFranceAsiya Javayant RENEWAL
Mayumi W OstroskyJapanAnna 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>