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
Isabel H ButtBrazilStephen Shaw QUALIFIED
Izzy D FerenczBrazilOnyama Limba NEGOTIATION
Greenwood X CaldareraUnited KingdomIvan Magalhaes NEGOTIATION
Mujtaba R BriddickGermanyBernardo Dominic RENEWAL
Jones O TollnerSpainAsiya Javayant RENEWAL
Julie S GlickIndiaXuxue Feng NEGOTIATION
Salvatore F TollnerRussiaXuxue Feng NEW
Chavez C AlbaresArgentinaOnyama Limba PROPOSAL
Jones O BowleyJapanStephen Shaw QUALIFIED
Tony Z BologniaUnited KingdomXuxue Feng QUALIFIED
Salvatore L PoquetteRussiaAsiya Javayant NEW
Darci G RimJapanXuxue Feng RENEWAL
Octavia H CaudyJapanXuxue Feng PROPOSAL
Leon W RutaSpainOnyama Limba QUALIFIED
Silvio U RulapaughBrazilXuxue Feng NEW
Ricardo L SergiBrazilIvan Magalhaes UNQUALIFIED
Mayumi M PoquetteSpainAmy Elsner NEW
Jennifer B BologniaBrazilElwin Sharvill NEGOTIATION
Jeanfrancois M StensethGermanyIvan Magalhaes UNQUALIFIED
Leon Y VocelkaJapanStephen Shaw PROPOSAL
Kadeem T ChuiIndiaAsiya Javayant QUALIFIED
Jones K InouyeItalyIvan Magalhaes NEW
Leja R FerenczFranceOnyama Limba RENEWAL
Munro R SaylorsItalyBernardo Dominic UNQUALIFIED
Jeanfrancois K BowleyGermanyElwin Sharvill RENEWAL
Ashley R KuskoSpainXuxue Feng NEGOTIATION
Arvin R SergiGermanyAnna Fali UNQUALIFIED
Arvin G StockhamIndiaOnyama Limba QUALIFIED
Claire Y ShinkoCanadaAmy Elsner UNQUALIFIED
Greenwood Z WhobreySpainIvan Magalhaes NEW
Silvio H TollnerBrazilAnna Fali QUALIFIED
Mujtaba N CaudyArgentinaIvan Magalhaes NEGOTIATION
Mujtaba P MaletCanadaAmy Elsner NEW
Nicolas A WieserFranceBernardo Dominic PROPOSAL
Wickens D BriddickUnited KingdomAsiya Javayant NEGOTIATION
Francesco D FerenczBrazilAmy Elsner QUALIFIED
Smith R MorascaSpainOnyama Limba UNQUALIFIED
Chavez X SaylorsUnited KingdomElwin Sharvill QUALIFIED
Greenwood F CaldareraAustraliaAnna Fali QUALIFIED
Emily K NickaFranceAnna Fali PROPOSAL
Faith Z CaudySpainAsiya Javayant UNQUALIFIED
Mujtaba K GlickGermanyElwin Sharvill NEGOTIATION
Aruna V ShinkoAustraliaOnyama Limba RENEWAL
Stacey U FerenczArgentinaOnyama Limba RENEWAL
Maisha Y ButtItalyIvan Magalhaes UNQUALIFIED
Maria Y MorascaBrazilOnyama Limba NEW
Leja D MarrierUnited KingdomAmy Elsner UNQUALIFIED
Claire T CaudySpainIvan Magalhaes NEW
Chavez Z BowleyItalyAmy Elsner UNQUALIFIED
Juan N GlickGermanyBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Octavia X MaletJapanOnyama Limba UNQUALIFIED
Deepesh R PerinCanadaAnna Fali RENEWAL
Juan H StensethJapanStephen Shaw UNQUALIFIED
Tony D MorascaBrazilAmy Elsner RENEWAL
Salvatore U TollnerRussiaStephen Shaw RENEWAL
Chavez J NestleSpainOnyama Limba RENEWAL
Izzy M RutaSpainElwin Sharvill PROPOSAL
Aruna I RimBrazilAmy Elsner PROPOSAL
Johnson B SchemmerCanadaXuxue Feng RENEWAL
Darci D VocelkaSpainAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson B AmigonFrance2024-04-14King, Christopher A Esq NEW76Asiya Javayant
1001Faith S KuskoRussia2024-04-26Chanay, Jeffrey A Esq UNQUALIFIED9Bernardo Dominic
1002Costa G TollnerFrance2024-03-31Dorl, James J Esq NEW71Elwin Sharvill
1003Munro P MaletArgentina2024-04-24Truhlar And Truhlar Attys RENEWAL49Bernardo Dominic
1004Jeanfrancois R RutaCanada2024-04-22Commercial Press UNQUALIFIED41Elwin Sharvill
1005Izzy A SaylorsSpain2024-04-08Chanay, Jeffrey A Esq UNQUALIFIED99Stephen Shaw
1006Faith J WaycottAustralia2024-04-10Rousseaux, Michael Esq RENEWAL88Ivan Magalhaes
1007Ivar X RimIndia2024-04-18Dorl, James J Esq NEGOTIATION96Ioni Bowcher
1008Antonio Z SaylorsSpain2024-04-11Feiner Bros NEW32Stephen Shaw
1009Adams E VocelkaAustralia2024-03-30Rangoni Of Florence NEGOTIATION72Elwin Sharvill
1010Stacey J SaylorsCanada2024-04-11Chapman, Ross E Esq NEW36Amy Elsner
1011Ashley A RoysterCanada2024-04-07Rousseaux, Michael Esq UNQUALIFIED7Onyama Limba
1012Smith X SergiIndia2024-04-07Feltz Printing Service UNQUALIFIED99Stephen Shaw
1013Clifford Z AmigonRussia2024-04-14Buckley Miller Wright NEGOTIATION99Elwin Sharvill
1014Cody D FollerGermany2024-04-04Commercial Press RENEWAL40Bernardo Dominic
1015Kadeem J StensethCanada2024-04-03Feiner Bros RENEWAL5Elwin Sharvill
1016Maria M OstroskyCanada2024-04-24Printing Dimensions RENEWAL28Elwin Sharvill
1017Francesco R SaylorsIndia2024-03-31Commercial Press RENEWAL22Ivan Magalhaes
1018Octavia Z CaldareraSpain2024-04-15Printing Dimensions UNQUALIFIED63Stephen Shaw
1019Sinclair B AlbaresRussia2024-04-10Chanay, Jeffrey A Esq NEW44Xuxue Feng
1020Maisha I OstroskySpain2024-04-25Benton, John B Jr PROPOSAL23Ioni Bowcher
1021Kaitlin L BriddickFrance2024-03-31Truhlar And Truhlar Attys NEW70Bernardo Dominic
1022Jennifer Y ButtArgentina2024-04-22King, Christopher A Esq NEW30Asiya Javayant
1023Jefferson O SlusarskiRussia2024-04-13Rousseaux, Michael Esq PROPOSAL55Ivan Magalhaes
1024Maria U AlbaresAustralia2024-04-04Commercial Press NEW66Asiya Javayant
1025Ricardo T WhobreyCanada2024-03-31King, Christopher A Esq UNQUALIFIED22Asiya Javayant
1026Emily A RimIndia2024-04-14Chapman, Ross E Esq RENEWAL4Ioni Bowcher
1027Maisha N ButtAustralia2024-04-20Feltz Printing Service NEGOTIATION17Xuxue Feng
1028Johnson S RulapaughCanada2024-04-23Benton, John B Jr UNQUALIFIED56Xuxue Feng
1029Murillo Q MarrierArgentina2024-04-14Morlong Associates NEW97Stephen Shaw
1030Isabel M WaycottRussia2024-04-03Printing Dimensions NEGOTIATION27Stephen Shaw
1031Misaki E FigeroaFrance2024-04-08Rousseaux, Michael Esq NEW27Xuxue Feng
1032Salvatore Y NickaBrazil2024-04-04Dorl, James J Esq NEW8Ioni Bowcher
1033Claire G AlbaresFrance2024-04-25Feltz Printing Service NEW0Ioni Bowcher
1034Maria W PerinGermany2024-04-21Rousseaux, Michael Esq RENEWAL45Stephen Shaw
1035Ricardo K ShinkoGermany2024-04-11Buckley Miller Wright UNQUALIFIED2Xuxue Feng
1036Francesco X MacleadItaly2024-04-10King, Christopher A Esq QUALIFIED31Asiya Javayant
1037Johnson C AlbaresSpain2024-03-29Chemel, James L Cpa QUALIFIED49Asiya Javayant
1038Adams R AmigonSpain2024-04-02Chapman, Ross E Esq QUALIFIED47Asiya Javayant
1039Isabel R FlosiBrazil2024-04-07Dorl, James J Esq PROPOSAL91Ivan Magalhaes
1040Isabel Q OldroydSpain2024-04-03Chanay, Jeffrey A Esq RENEWAL71Stephen Shaw
1041Silvio D BowleyAustralia2024-04-24Printing Dimensions PROPOSAL88Amy Elsner
1042Faith Y WhobreyBrazil2024-04-16Buckley Miller Wright NEW42Asiya Javayant
1043Darci E AmigonSpain2024-04-09Buckley Miller Wright NEW18Bernardo Dominic
1044Munro A RimFrance2024-04-11Feiner Bros QUALIFIED69Amy Elsner
1045Rodrigues K GauchoBrazil2024-04-21Feltz Printing Service QUALIFIED22Xuxue Feng
1046Wickens R OstroskyGermany2024-04-17Rangoni Of Florence PROPOSAL15Xuxue Feng
1047Aika G RulapaughFrance2024-04-10Printing Dimensions NEW60Bernardo Dominic
1048Aika D RimItaly2024-04-01King, Christopher A Esq QUALIFIED97Anna Fali
1049Faith B GlickArgentina2024-03-29Rangoni Of Florence NEGOTIATION40Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Salvatore M CaldareraGermanyAmy Elsner UNQUALIFIED
Emily M OstroskySpainStephen Shaw PROPOSAL
Emily A ButtRussiaAsiya Javayant QUALIFIED
Tony J RulapaughBrazilAsiya Javayant QUALIFIED
Maria D RoysterBrazilIoni Bowcher NEW
Jeanfrancois X GlickJapanOnyama Limba NEGOTIATION
Mujtaba K RutaIndiaIoni Bowcher RENEWAL
Mujtaba J BriddickRussiaAsiya Javayant PROPOSAL
Stacey A OstroskyAustraliaBernardo Dominic QUALIFIED
Smith S NestleItalyElwin Sharvill UNQUALIFIED
Murillo O WaycottRussiaIvan Magalhaes NEGOTIATION
Julie D SchemmerUnited KingdomIvan Magalhaes QUALIFIED
Cody X ShinkoIndiaElwin Sharvill PROPOSAL
Leon Y GauchoBrazilOnyama Limba RENEWAL
Costa I MacleadIndiaIoni Bowcher PROPOSAL
Leon R GlickIndiaBernardo Dominic UNQUALIFIED
Ivar U KuskoCanadaElwin Sharvill QUALIFIED
Deepesh B NestleAustraliaAnna Fali NEGOTIATION
Mayumi R InouyeCanadaIoni Bowcher NEW
Kaitlin A CampainJapanIvan Magalhaes QUALIFIED
Aditya O ShinkoArgentinaAnna Fali UNQUALIFIED
David A RutaSpainOnyama Limba UNQUALIFIED
Darci J CampainAustraliaBernardo Dominic NEGOTIATION
Adams N PerinUnited KingdomXuxue Feng NEGOTIATION
Adams K SlusarskiRussiaXuxue Feng PROPOSAL
Clifford F MorascaCanadaAnna Fali UNQUALIFIED
Adams N RutaAustraliaElwin Sharvill UNQUALIFIED
Antonio E BriddickSpainAnna Fali QUALIFIED
Salvatore L MaletGermanyOnyama Limba QUALIFIED
Aditya J VocelkaRussiaBernardo Dominic NEGOTIATION
Jefferson Y TollnerIndiaStephen Shaw RENEWAL
Maria I CaudyCanadaElwin Sharvill UNQUALIFIED
Maisha S PerinSpainStephen Shaw QUALIFIED
James Q MaletIndiaXuxue Feng NEGOTIATION
Chavez A FollerSpainIoni Bowcher NEGOTIATION
Morrow V SchemmerCanadaAmy Elsner NEW
Mujtaba Q RimRussiaXuxue Feng UNQUALIFIED
David C VocelkaCanadaAsiya Javayant NEW
Ricardo B NestleFranceIoni Bowcher PROPOSAL
Aruna P DilliardSpainAmy Elsner UNQUALIFIED
Sinclair J DoeItalyElwin Sharvill QUALIFIED
Clifford F WaycottSpainXuxue Feng QUALIFIED
Wickens A OldroydRussiaAnna Fali UNQUALIFIED
Greenwood R FollerBrazilElwin Sharvill PROPOSAL
Mujtaba L FerenczJapanAnna Fali QUALIFIED
Jennifer V WaycottRussiaXuxue Feng QUALIFIED
Stacey J NickaJapanStephen Shaw UNQUALIFIED
Stacey Y PoquetteBrazilAmy Elsner PROPOSAL
Alejandro Q SergiUnited KingdomAsiya Javayant UNQUALIFIED
Munro G DilliardSpainBernardo Dominic NEGOTIATION
Frozen Columns
Name
Johnson L Bolognia
Arvin E Briddick
Smith C Campain
Emily L Whobrey
Octavia A Sergi
Faith X Campain
Claire J Flosi
Francesco U Ostrosky
Munro F Chui
Claire N Vocelka
Aruna L Gillian
Maria U Inouye
Wickens I Paprocki
Isabel R Royster
Kaitlin B Kusko
Darci N Caldarera
Kadeem J Foller
James E Rim
Murillo C Ruta
Aika N Royster
Wickens E Tollner
Kadeem N Perin
David M Slusarski
Leja E Caudy
Kadeem K Rulapaugh
Smith L Gillian
Sinclair B Shinko
Jones G Whobrey
Francesco B Shinko
Wickens D Nicka
Maisha P Oldroyd
Clifford A Campain
Juan B Butt
Clifford H Albares
Francesco W Dilliard
Stacey C Vocelka
Chavez N Stenseth
Antonio G Rulapaugh
Isabel J Paprocki
Adams N Slusarski
Antonio S Briddick
Francesco J Garufi
Cody T Ostrosky
Claire I Stockham
Leja A Nicka
Darci X Butt
Costa E Nicka
Morrow Z Paprocki
Julie D Figeroa
Clifford E Vocelka
IdCountryDate
1000Argentina2024-04-07
1001Brazil2024-04-25
1002Australia2024-04-02
1003Germany2024-04-15
1004Argentina2024-03-30
1005Germany2024-03-30
1006Italy2024-03-30
1007Canada2024-03-31
1008Argentina2024-04-16
1009Japan2024-04-25
1010Australia2024-04-20
1011Germany2024-04-20
1012United Kingdom2024-03-28
1013Argentina2024-04-09
1014India2024-04-03
1015Argentina2024-04-13
1016Brazil2024-04-17
1017France2024-03-30
1018Spain2024-03-28
1019Argentina2024-04-07
1020Argentina2024-04-23
1021Japan2024-04-02
1022Australia2024-04-11
1023Australia2024-04-07
1024Argentina2024-04-09
1025Canada2024-04-17
1026Argentina2024-04-06
1027Argentina2024-03-29
1028Japan2024-04-05
1029France2024-04-12
1030Spain2024-04-08
1031France2024-04-05
1032Argentina2024-04-25
1033France2024-04-24
1034Japan2024-04-07
1035Japan2024-04-12
1036India2024-04-23
1037Japan2024-04-22
1038United Kingdom2024-04-16
1039Japan2024-04-25
1040India2024-04-01
1041Canada2024-04-24
1042Italy2024-04-24
1043Spain2024-04-03
1044United Kingdom2024-04-18
1045United Kingdom2024-04-05
1046Russia2024-04-19
1047Canada2024-04-14
1048Spain2024-04-01
1049Russia2024-04-16

On-Demand Data

NameIdCountryDate
Leja G Wieser1000Japan2024-03-28
Maria E Oldroyd1001United Kingdom2024-04-06
Clifford G Ostrosky1002Australia2024-04-20
Maisha E Perin1003United Kingdom2024-04-04
Ivar F Paprocki1004Germany2024-04-20
Mayumi P Shinko1005Australia2024-04-11
Kaitlin E Dilliard1006Canada2024-04-25
Clifford F Campain1007Brazil2024-04-24
Juan O Butt1008Russia2024-04-13
Maisha M Iturbide1009Italy2024-03-31
David C Gaucho1010India2024-04-25
Ashley V Nicka1011Russia2024-03-31
Jeanfrancois Z Dilliard1012Spain2024-04-03
Leja Z Marrier1013Australia2024-04-23
Sinclair W Gillian1014Brazil2024-04-24
Kadeem E Malet1015Australia2024-03-29
Aika T Inouye1016Argentina2024-04-06
Jefferson E Caudy1017Italy2024-04-05
Jones N Sergi1018Russia2024-04-06
Jennifer T Malet1019Argentina2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar J FerenczAustraliaIvan Magalhaes NEGOTIATION
Misaki K SaylorsSpainAmy Elsner PROPOSAL
Maisha H FigeroaItalyAmy Elsner PROPOSAL
Izzy N VocelkaUnited KingdomAmy Elsner PROPOSAL
Arvin U RulapaughItalyIvan Magalhaes NEW
Greenwood O SchemmerJapanAsiya Javayant NEW
Darci T SlusarskiGermanyAsiya Javayant NEW
Alejandro P ButtFranceAnna Fali NEGOTIATION
Leja O MarrierGermanyElwin Sharvill UNQUALIFIED
Chavez N FlosiGermanyAnna Fali RENEWAL
Cody C BriddickBrazilBernardo Dominic UNQUALIFIED
Chavez H OstroskyItalyAnna Fali NEW
Jones O SaylorsFranceIvan Magalhaes NEGOTIATION
Chavez D PaprockiAustraliaIoni Bowcher UNQUALIFIED
Aika R VocelkaCanadaXuxue Feng QUALIFIED
Maria I WaycottArgentinaIoni Bowcher RENEWAL
Clifford L FollerItalyBernardo Dominic RENEWAL
Cody A MacleadCanadaIoni Bowcher NEGOTIATION
Ashley Y WieserSpainBernardo Dominic PROPOSAL
Octavia X AmigonJapanAsiya Javayant UNQUALIFIED
Francesco I OldroydSpainAnna Fali NEW
Wickens K GauchoAustraliaBernardo Dominic RENEWAL
Aika O ChuiArgentinaBernardo Dominic PROPOSAL
Mujtaba J IturbideArgentinaBernardo Dominic QUALIFIED
Stacey B DarakjyRussiaStephen Shaw NEW
Isabel X SaylorsFranceAsiya Javayant PROPOSAL
Kaitlin G NestleBrazilStephen Shaw NEGOTIATION
Izzy I SergiArgentinaIvan Magalhaes QUALIFIED
Salvatore I IturbideIndiaAnna Fali PROPOSAL
James S OstroskyFranceAnna Fali NEW
Izzy T KuskoRussiaAsiya Javayant QUALIFIED
Octavia U RutaCanadaAsiya Javayant NEGOTIATION
Jennifer X MaletSpainIoni Bowcher UNQUALIFIED
David H BologniaGermanyElwin Sharvill QUALIFIED
Greenwood Z CaldareraSpainAnna Fali PROPOSAL
Mujtaba J MaletArgentinaElwin Sharvill UNQUALIFIED
Adams Z NickaArgentinaStephen Shaw PROPOSAL
Chavez H FollerUnited KingdomAsiya Javayant QUALIFIED
Faith C PerinBrazilXuxue Feng RENEWAL
Jeanfrancois L IturbideCanadaIvan Magalhaes 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>