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
Aika W MorascaCanadaElwin Sharvill NEW
Kadeem T GauchoRussiaIvan Magalhaes QUALIFIED
Emily N NestleFranceAnna Fali PROPOSAL
Smith X ShinkoFranceBernardo Dominic QUALIFIED
Johnson O VenereAustraliaBernardo Dominic UNQUALIFIED
Aruna A VocelkaSpainAsiya Javayant RENEWAL
Emily D CaldareraRussiaAnna Fali RENEWAL
Jeanfrancois D RutaBrazilStephen Shaw RENEWAL
Alejandro B ChuiRussiaIvan Magalhaes PROPOSAL
Claire I VenereIndiaBernardo Dominic PROPOSAL
Jeanfrancois I DoeJapanStephen Shaw QUALIFIED
Cody W MacleadCanadaIoni Bowcher NEW
Misaki S FigeroaJapanAsiya Javayant UNQUALIFIED
Aruna N IturbideRussiaXuxue Feng QUALIFIED
Claire A PerinItalyAmy Elsner QUALIFIED
Ashley V AlbaresCanadaAsiya Javayant UNQUALIFIED
Jefferson W SergiItalyAsiya Javayant UNQUALIFIED
Izzy D BowleyRussiaAnna Fali QUALIFIED
Isabel Y MacleadCanadaIvan Magalhaes UNQUALIFIED
Ricardo V IturbideFranceIoni Bowcher NEGOTIATION
Costa O GillianRussiaOnyama Limba QUALIFIED
Izzy R FollerRussiaXuxue Feng NEW
Stacey Q MacleadJapanElwin Sharvill PROPOSAL
Cody R PerinAustraliaStephen Shaw UNQUALIFIED
Chavez I CampainItalyElwin Sharvill QUALIFIED
Greenwood T WhobreyAustraliaIvan Magalhaes QUALIFIED
Jennifer R WhobreyBrazilIoni Bowcher RENEWAL
Antonio O MorascaJapanOnyama Limba NEW
Stacey T TollnerJapanElwin Sharvill PROPOSAL
Salvatore Y IturbideAustraliaIoni Bowcher NEW
Silvio N GillianFranceOnyama Limba RENEWAL
Darci X InouyeRussiaIvan Magalhaes PROPOSAL
Deepesh R OstroskyAustraliaIvan Magalhaes QUALIFIED
Francesco N PaprockiFranceIvan Magalhaes PROPOSAL
Greenwood T GauchoIndiaAsiya Javayant RENEWAL
Izzy Y FerenczBrazilAnna Fali RENEWAL
Costa R VocelkaFranceIoni Bowcher NEGOTIATION
Morrow B PoquetteSpainStephen Shaw RENEWAL
Antonio W SchemmerAustraliaAmy Elsner NEW
Mayumi J DilliardGermanyIvan Magalhaes QUALIFIED
Maria U VocelkaIndiaXuxue Feng PROPOSAL
Rodrigues X OstroskyBrazilAnna Fali PROPOSAL
Aika O WieserFranceStephen Shaw UNQUALIFIED
Alejandro L VocelkaAustraliaOnyama Limba QUALIFIED
Jennifer T PaprockiArgentinaStephen Shaw RENEWAL
Kadeem O RoysterUnited KingdomStephen Shaw PROPOSAL
Mayumi N DilliardSpainAnna Fali PROPOSAL
Jones R DarakjyJapanXuxue Feng UNQUALIFIED
Alejandro B MarrierUnited KingdomOnyama Limba RENEWAL
Stacey W GillianIndiaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Silvio N CaudySpainAmy Elsner RENEWAL
Wickens C FigeroaJapanAmy Elsner NEW
Aditya W SergiCanadaElwin Sharvill PROPOSAL
Rodrigues C MarrierBrazilStephen Shaw RENEWAL
Silvio W RoysterItalyIoni Bowcher UNQUALIFIED
Misaki J KuskoRussiaAnna Fali NEW
Emily C WieserIndiaOnyama Limba NEGOTIATION
Leon T MaletFranceIoni Bowcher NEW
Jones T SergiArgentinaOnyama Limba UNQUALIFIED
Faith A BriddickFranceOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya P WhobreyBrazil2024-04-17Chemel, James L Cpa NEGOTIATION31Anna Fali
1001Costa T AmigonUnited Kingdom2024-04-27Truhlar And Truhlar Attys NEGOTIATION8Ioni Bowcher
1002Johnson Z SergiFrance2024-05-06Truhlar And Truhlar Attys NEW53Anna Fali
1003Antonio X NestleGermany2024-05-05Feiner Bros NEGOTIATION3Ivan Magalhaes
1004Alejandro U InouyeCanada2024-04-28Printing Dimensions UNQUALIFIED1Elwin Sharvill
1005Octavia L PerinSpain2024-04-24Morlong Associates UNQUALIFIED37Elwin Sharvill
1006Stacey E SchemmerGermany2024-05-03Benton, John B Jr NEW1Bernardo Dominic
1007Mujtaba I PoquetteCanada2024-04-30Chemel, James L Cpa NEGOTIATION14Amy Elsner
1008Tony N KolmetzFrance2024-04-14Dorl, James J Esq UNQUALIFIED82Asiya Javayant
1009Jefferson C WieserRussia2024-05-06Rousseaux, Michael Esq RENEWAL14Stephen Shaw
1010Rodrigues H NickaFrance2024-04-30Chemel, James L Cpa UNQUALIFIED82Anna Fali
1011Rodrigues A BriddickBrazil2024-04-12Commercial Press UNQUALIFIED81Asiya Javayant
1012Julie C PerinArgentina2024-04-27Rousseaux, Michael Esq RENEWAL86Ivan Magalhaes
1013David W OstroskyBrazil2024-04-13Rousseaux, Michael Esq NEGOTIATION13Ivan Magalhaes
1014Smith W PerinFrance2024-04-16Chanay, Jeffrey A Esq NEGOTIATION35Ivan Magalhaes
1015Stacey I CaudyUnited Kingdom2024-04-26Commercial Press NEGOTIATION36Elwin Sharvill
1016Aika Z VocelkaAustralia2024-05-08Chemel, James L Cpa NEGOTIATION90Xuxue Feng
1017Isabel F BriddickIndia2024-05-09Rangoni Of Florence RENEWAL62Anna Fali
1018Smith Q SergiAustralia2024-05-09Chemel, James L Cpa QUALIFIED94Stephen Shaw
1019Claire B FerenczUnited Kingdom2024-05-02Dorl, James J Esq NEGOTIATION28Stephen Shaw
1020Leon J AmigonArgentina2024-05-03Feiner Bros UNQUALIFIED61Onyama Limba
1021Adams N WieserRussia2024-05-02Chemel, James L Cpa UNQUALIFIED14Amy Elsner
1022Smith G KolmetzIndia2024-04-11Morlong Associates RENEWAL77Onyama Limba
1023Smith X ShinkoCanada2024-04-30Benton, John B Jr PROPOSAL56Stephen Shaw
1024Adams Q OstroskyUnited Kingdom2024-04-25Buckley Miller Wright NEGOTIATION56Xuxue Feng
1025Nicolas J SchemmerGermany2024-04-18Printing Dimensions NEW54Stephen Shaw
1026Munro O MaletAustralia2024-04-24Chapman, Ross E Esq QUALIFIED2Elwin Sharvill
1027Greenwood P ShinkoRussia2024-05-02Chemel, James L Cpa QUALIFIED19Anna Fali
1028Wickens W PerinAustralia2024-04-12Chapman, Ross E Esq UNQUALIFIED19Ioni Bowcher
1029Mujtaba O CaldareraBrazil2024-04-22Rousseaux, Michael Esq NEW40Ivan Magalhaes
1030Kaitlin N NestleIndia2024-04-20Feiner Bros PROPOSAL38Bernardo Dominic
1031Antonio B BriddickCanada2024-04-13Morlong Associates NEGOTIATION59Anna Fali
1032Ivar J CampainAustralia2024-05-03Commercial Press PROPOSAL76Anna Fali
1033Kaitlin T GlickIndia2024-04-27Buckley Miller Wright NEW22Amy Elsner
1034Izzy V TollnerSpain2024-04-12Rousseaux, Michael Esq QUALIFIED5Ivan Magalhaes
1035Greenwood W DoeFrance2024-05-08Benton, John B Jr UNQUALIFIED53Elwin Sharvill
1036Chavez K FollerItaly2024-04-17Rousseaux, Michael Esq NEW9Stephen Shaw
1037Kadeem Z WieserCanada2024-04-28Chemel, James L Cpa NEGOTIATION25Elwin Sharvill
1038Johnson M WieserUnited Kingdom2024-04-21Feiner Bros NEW70Xuxue Feng
1039Mayumi A WhobreyCanada2024-04-24Truhlar And Truhlar Attys NEW45Anna Fali
1040Sinclair B DilliardCanada2024-05-05Benton, John B Jr PROPOSAL29Asiya Javayant
1041Tony D WhobreyRussia2024-04-21Printing Dimensions UNQUALIFIED74Xuxue Feng
1042David U MarrierFrance2024-05-01Feiner Bros QUALIFIED46Xuxue Feng
1043Munro Z IturbideArgentina2024-04-20Chanay, Jeffrey A Esq RENEWAL71Bernardo Dominic
1044Munro U FigeroaItaly2024-04-13Feiner Bros PROPOSAL34Amy Elsner
1045Smith R SaylorsIndia2024-04-18Feltz Printing Service UNQUALIFIED81Xuxue Feng
1046Misaki U ShinkoJapan2024-04-23Rangoni Of Florence UNQUALIFIED16Ivan Magalhaes
1047Emily B VocelkaJapan2024-04-16Commercial Press QUALIFIED1Onyama Limba
1048Juan U DoeSpain2024-04-27Chanay, Jeffrey A Esq NEGOTIATION91Anna Fali
1049Smith Y MaletSpain2024-04-15Chapman, Ross E Esq NEW76Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Jones X MaletItalyStephen Shaw NEW
Leon H PoquetteJapanBernardo Dominic QUALIFIED
Octavia A WhobreyRussiaOnyama Limba NEW
Leja C FigeroaFranceAnna Fali PROPOSAL
David W WieserAustraliaAsiya Javayant PROPOSAL
Stacey Q PerinAustraliaAsiya Javayant NEGOTIATION
Nicolas T StensethGermanyAmy Elsner UNQUALIFIED
Jefferson R ButtItalyAnna Fali QUALIFIED
Maisha X RimAustraliaIoni Bowcher NEGOTIATION
Salvatore L ButtGermanyAnna Fali NEW
Antonio Z FigeroaRussiaAmy Elsner NEW
Maria C KuskoArgentinaAmy Elsner RENEWAL
Faith K RulapaughUnited KingdomIvan Magalhaes RENEWAL
Johnson S GlickItalyOnyama Limba PROPOSAL
Silvio T PoquetteAustraliaBernardo Dominic QUALIFIED
Deepesh D CaudyJapanAsiya Javayant PROPOSAL
Juan O SergiIndiaStephen Shaw RENEWAL
Izzy D GauchoFranceIoni Bowcher UNQUALIFIED
Jeanfrancois T CaldareraJapanAnna Fali UNQUALIFIED
Jeanfrancois Z FollerSpainIoni Bowcher NEGOTIATION
Ivar Y CaldareraIndiaStephen Shaw UNQUALIFIED
Arvin H VocelkaArgentinaStephen Shaw NEW
Ashley F WieserGermanyXuxue Feng QUALIFIED
Silvio T CaudyGermanyStephen Shaw NEGOTIATION
Murillo X CaudyUnited KingdomElwin Sharvill NEW
Jennifer V NickaUnited KingdomStephen Shaw RENEWAL
Deepesh L FollerSpainBernardo Dominic UNQUALIFIED
Wickens D SaylorsIndiaXuxue Feng NEW
Munro F BriddickUnited KingdomAsiya Javayant PROPOSAL
Octavia P RulapaughGermanyStephen Shaw QUALIFIED
Faith V KuskoIndiaOnyama Limba QUALIFIED
Leja W BologniaCanadaStephen Shaw QUALIFIED
Julie A SchemmerIndiaIoni Bowcher RENEWAL
Nicolas B FollerBrazilIoni Bowcher RENEWAL
Emily Y PoquetteItalyElwin Sharvill QUALIFIED
Isabel B BriddickJapanStephen Shaw RENEWAL
Julie B CaudyFranceIvan Magalhaes NEW
Claire P GlickItalyAnna Fali RENEWAL
Salvatore E StensethAustraliaStephen Shaw QUALIFIED
Adams V KuskoFranceIoni Bowcher UNQUALIFIED
Morrow B BriddickUnited KingdomIoni Bowcher RENEWAL
Arvin V PaprockiRussiaIoni Bowcher NEW
Cody F CampainItalyXuxue Feng RENEWAL
Jeanfrancois O BowleyFranceAmy Elsner QUALIFIED
Ashley Y FlosiItalyElwin Sharvill PROPOSAL
Johnson X InouyeSpainIvan Magalhaes UNQUALIFIED
Nicolas J GlickGermanyOnyama Limba PROPOSAL
Izzy U GlickRussiaIvan Magalhaes PROPOSAL
Julie P CaldareraItalyBernardo Dominic NEGOTIATION
Juan U MacleadRussiaElwin Sharvill PROPOSAL
Frozen Columns
Name
Silvio S Gillian
Smith R Morasca
Murillo L Sergi
Mayumi I Bolognia
Deepesh P Slusarski
Wickens B Caldarera
Tony W Ferencz
Ivar I Slusarski
Jeanfrancois J Saylors
Aruna V Marrier
Salvatore D Caudy
Alejandro C Glick
Silvio W Stenseth
Tony Z Venere
Misaki U Poquette
Mujtaba V Gillian
Jones H Ruta
Adams C Waycott
Darci D Shinko
Antonio N Gaucho
Stacey Y Darakjy
Costa I Butt
Claire N Malet
Leja B Gillian
Jones A Ruta
Leja O Foller
Aruna R Stockham
Adams B Nestle
Julie V Saylors
Claire B Caldarera
Greenwood W Bowley
Munro B Whobrey
Cody R Perin
Stacey G Wieser
Jefferson K Dilliard
Tony T Shinko
Mayumi S Foller
Clifford N Royster
Smith C Foller
Sinclair B Dilliard
Misaki B Poquette
Munro B Marrier
Mujtaba B Tollner
Faith Q Amigon
Silvio E Paprocki
Johnson Y Oldroyd
Rodrigues H Shinko
Leja J Iturbide
Leja P Stockham
Francesco D Rulapaugh
IdCountryDate
1000Italy2024-05-07
1001United Kingdom2024-04-19
1002United Kingdom2024-05-02
1003Argentina2024-04-15
1004Argentina2024-05-09
1005Brazil2024-04-11
1006France2024-04-28
1007France2024-04-27
1008Canada2024-04-15
1009Germany2024-04-10
1010Italy2024-04-26
1011Brazil2024-04-15
1012France2024-04-14
1013Spain2024-04-16
1014Canada2024-04-26
1015Australia2024-04-25
1016France2024-04-15
1017Germany2024-05-03
1018France2024-04-24
1019Spain2024-04-15
1020India2024-04-25
1021Brazil2024-04-27
1022Brazil2024-04-11
1023Argentina2024-04-16
1024Japan2024-05-07
1025Canada2024-04-26
1026United Kingdom2024-04-27
1027Australia2024-04-26
1028Spain2024-04-28
1029Canada2024-05-04
1030Argentina2024-04-12
1031Japan2024-05-08
1032Australia2024-04-13
1033Spain2024-04-17
1034India2024-04-27
1035France2024-04-10
1036Russia2024-04-25
1037Argentina2024-04-20
1038Germany2024-04-18
1039Brazil2024-04-28
1040India2024-05-06
1041Russia2024-05-03
1042Germany2024-04-13
1043Spain2024-04-30
1044United Kingdom2024-04-10
1045India2024-04-23
1046Argentina2024-04-13
1047Australia2024-04-25
1048Australia2024-05-06
1049United Kingdom2024-05-03

On-Demand Data

NameIdCountryDate
Murillo H Caudy1000Brazil2024-04-28
Alejandro R Campain1001Japan2024-05-05
Jones R Caldarera1002Russia2024-04-27
Mayumi O Garufi1003Italy2024-04-19
James R Bolognia1004Canada2024-04-14
Faith T Kolmetz1005Spain2024-04-20
Ivar P Foller1006Australia2024-04-14
Izzy Q Shinko1007United Kingdom2024-05-04
Francesco Q Chui1008Argentina2024-04-16
Kaitlin C Bolognia1009Argentina2024-05-08
Antonio R Dilliard1010Argentina2024-04-11
Francesco I Paprocki1011Australia2024-04-28
Claire F Albares1012India2024-04-17
Rodrigues X Gillian1013Japan2024-04-20
Mujtaba R Sergi1014Italy2024-05-08
Leon C Caldarera1015Italy2024-04-29
Claire H Butt1016Argentina2024-04-24
Salvatore D Nicka1017Argentina2024-05-04
Leon I Royster1018India2024-05-08
Antonio J Nicka1019Germany2024-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro G SlusarskiAustraliaAmy Elsner NEW
Silvio Y RoysterJapanIoni Bowcher UNQUALIFIED
Costa C FigeroaCanadaBernardo Dominic NEW
Nicolas F DoeArgentinaAnna Fali QUALIFIED
Munro O MorascaCanadaIvan Magalhaes UNQUALIFIED
Ivar I VocelkaSpainStephen Shaw PROPOSAL
Ricardo S SaylorsBrazilOnyama Limba NEGOTIATION
Silvio T WieserJapanAsiya Javayant PROPOSAL
Juan A DilliardArgentinaBernardo Dominic NEW
Jennifer G CaudyGermanyAnna Fali NEGOTIATION
Mujtaba X IturbideBrazilAsiya Javayant QUALIFIED
Antonio Y VenereRussiaBernardo Dominic QUALIFIED
Smith W DilliardSpainOnyama Limba UNQUALIFIED
Faith R FollerRussiaIoni Bowcher RENEWAL
Arvin H AlbaresItalyBernardo Dominic UNQUALIFIED
Munro T WhobreyCanadaIoni Bowcher NEW
Silvio Q TollnerIndiaIoni Bowcher NEW
Adams D FerenczFranceAsiya Javayant PROPOSAL
Mujtaba K DilliardJapanIvan Magalhaes QUALIFIED
Antonio F MaletFranceStephen Shaw NEW
Izzy Y NestleCanadaAsiya Javayant UNQUALIFIED
Jones U VenereRussiaStephen Shaw UNQUALIFIED
Ricardo M GauchoAustraliaAnna Fali PROPOSAL
Mujtaba W RimUnited KingdomXuxue Feng UNQUALIFIED
Mayumi J OstroskyUnited KingdomBernardo Dominic RENEWAL
Costa J NestleIndiaIoni Bowcher RENEWAL
Munro H KolmetzBrazilAmy Elsner NEGOTIATION
Aruna M RimAustraliaXuxue Feng PROPOSAL
Octavia L GillianAustraliaIvan Magalhaes QUALIFIED
Mayumi L VocelkaFranceOnyama Limba NEW
Mujtaba L SergiUnited KingdomBernardo Dominic RENEWAL
Jennifer G RimSpainOnyama Limba RENEWAL
Stacey N PerinJapanElwin Sharvill QUALIFIED
Leon O StensethSpainAsiya Javayant NEGOTIATION
Ashley M PaprockiRussiaElwin Sharvill NEW
Darci K PoquetteJapanAsiya Javayant RENEWAL
Stacey P MaletArgentinaAnna Fali RENEWAL
Wickens D PaprockiItalyIvan Magalhaes PROPOSAL
Ashley O DarakjyGermanyAnna Fali UNQUALIFIED
Adams L WaycottArgentinaBernardo Dominic NEW

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