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
Munro J MaletIndiaAnna Fali UNQUALIFIED
Murillo B WieserRussiaStephen Shaw UNQUALIFIED
Francesco N MorascaCanadaXuxue Feng RENEWAL
Cody M AlbaresAustraliaElwin Sharvill NEW
Deepesh Y GlickItalyXuxue Feng PROPOSAL
Nicolas B DilliardJapanOnyama Limba PROPOSAL
Ivar I AlbaresUnited KingdomBernardo Dominic NEW
Silvio V OldroydGermanyIoni Bowcher NEGOTIATION
Kaitlin C OstroskyBrazilStephen Shaw PROPOSAL
Murillo U PaprockiArgentinaXuxue Feng QUALIFIED
Juan Y KuskoAustraliaOnyama Limba QUALIFIED
Ashley R GillianRussiaOnyama Limba PROPOSAL
Ivar T CaldareraAustraliaXuxue Feng RENEWAL
David B OstroskyFranceIoni Bowcher UNQUALIFIED
Kaitlin E OstroskyUnited KingdomAnna Fali QUALIFIED
Johnson L StensethAustraliaXuxue Feng UNQUALIFIED
Cody Q RimGermanyIvan Magalhaes RENEWAL
Ashley R FlosiBrazilAmy Elsner NEW
Mujtaba K ButtUnited KingdomAsiya Javayant NEW
Kaitlin F MaletCanadaOnyama Limba RENEWAL
Adams G DarakjyItalyIoni Bowcher QUALIFIED
Emily P GarufiAustraliaElwin Sharvill QUALIFIED
Stacey B NickaSpainElwin Sharvill RENEWAL
Ricardo S GlickRussiaElwin Sharvill QUALIFIED
Stacey W PaprockiUnited KingdomAmy Elsner QUALIFIED
David Z OldroydSpainElwin Sharvill NEGOTIATION
Salvatore E NestleIndiaBernardo Dominic QUALIFIED
Salvatore D NestleBrazilIoni Bowcher UNQUALIFIED
Octavia I WhobreyIndiaAmy Elsner NEGOTIATION
Rodrigues F BriddickGermanyAmy Elsner RENEWAL
Maisha C BologniaCanadaBernardo Dominic RENEWAL
Izzy X IturbideAustraliaAsiya Javayant NEW
Kadeem D RulapaughSpainIoni Bowcher PROPOSAL
Claire T CaudyFranceElwin Sharvill UNQUALIFIED
Chavez Y RimSpainAsiya Javayant NEGOTIATION
Tony U DilliardGermanyXuxue Feng NEW
Greenwood X DilliardGermanyStephen Shaw UNQUALIFIED
Aditya R AmigonAustraliaElwin Sharvill NEGOTIATION
Arvin E DoeBrazilIvan Magalhaes QUALIFIED
Ivar G WieserCanadaIoni Bowcher PROPOSAL
Munro R SchemmerArgentinaXuxue Feng RENEWAL
Murillo O KuskoFranceXuxue Feng NEW
Aditya A NestleAustraliaIvan Magalhaes NEGOTIATION
Juan V RutaArgentinaAnna Fali QUALIFIED
Greenwood Z CampainGermanyAnna Fali QUALIFIED
Costa T WieserIndiaOnyama Limba UNQUALIFIED
Ivar K MaletUnited KingdomStephen Shaw NEW
Adams X GlickItalyOnyama Limba QUALIFIED
Maisha J GarufiRussiaIvan Magalhaes PROPOSAL
Izzy G FerenczIndiaOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Kaitlin U GillianFranceAsiya Javayant NEGOTIATION
Leja Y MacleadRussiaAmy Elsner NEW
Emily V MacleadFranceAsiya Javayant NEGOTIATION
Faith G CampainFranceAsiya Javayant NEW
Salvatore M AmigonItalyXuxue Feng QUALIFIED
Kaitlin T MacleadArgentinaIoni Bowcher RENEWAL
Clifford I CaudyFranceXuxue Feng RENEWAL
Greenwood E GarufiCanadaElwin Sharvill NEW
Arvin X NestleArgentinaXuxue Feng PROPOSAL
Claire M WieserAustraliaAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia K DarakjyFrance2024-03-30Chanay, Jeffrey A Esq RENEWAL37Anna Fali
1001Smith O MaletJapan2024-04-06King, Christopher A Esq QUALIFIED71Stephen Shaw
1002Izzy X OldroydSpain2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED70Elwin Sharvill
1003Clifford V CaldareraIndia2024-04-20Chemel, James L Cpa NEW70Onyama Limba
1004Jennifer F DarakjyCanada2024-04-07Feiner Bros NEW63Amy Elsner
1005Ricardo B CampainArgentina2024-04-21Rangoni Of Florence QUALIFIED98Bernardo Dominic
1006Greenwood X FlosiJapan2024-04-07Printing Dimensions NEGOTIATION81Amy Elsner
1007Ashley K CaldareraArgentina2024-04-27Rangoni Of Florence QUALIFIED30Asiya Javayant
1008Julie D GlickFrance2024-04-13King, Christopher A Esq NEGOTIATION31Bernardo Dominic
1009Kaitlin D NestleCanada2024-04-23Morlong Associates UNQUALIFIED78Amy Elsner
1010Adams O RulapaughFrance2024-04-03Rangoni Of Florence NEW1Xuxue Feng
1011Jones A OstroskyIndia2024-04-06Chemel, James L Cpa RENEWAL55Asiya Javayant
1012Kaitlin V TollnerFrance2024-04-14Truhlar And Truhlar Attys NEGOTIATION82Onyama Limba
1013David Z IturbideIndia2024-04-23Chanay, Jeffrey A Esq RENEWAL81Xuxue Feng
1014Leon M SchemmerJapan2024-04-19Chanay, Jeffrey A Esq NEGOTIATION8Anna Fali
1015Ivar R VenereItaly2024-04-08Dorl, James J Esq UNQUALIFIED99Bernardo Dominic
1016Isabel J ChuiGermany2024-04-09King, Christopher A Esq RENEWAL70Amy Elsner
1017Leja N CampainAustralia2024-03-31Feltz Printing Service PROPOSAL32Elwin Sharvill
1018Emily W KuskoRussia2024-04-11Benton, John B Jr NEGOTIATION14Anna Fali
1019Munro J FigeroaRussia2024-04-03Printing Dimensions QUALIFIED87Bernardo Dominic
1020Jennifer Q CaldareraArgentina2024-04-15Commercial Press NEGOTIATION35Anna Fali
1021Aditya U PaprockiFrance2024-04-18Rangoni Of Florence RENEWAL59Onyama Limba
1022Aditya P WieserGermany2024-04-28Commercial Press NEGOTIATION79Onyama Limba
1023Darci E ButtSpain2024-04-25Feiner Bros NEGOTIATION23Amy Elsner
1024Jennifer Q BowleySpain2024-04-19Feltz Printing Service UNQUALIFIED88Anna Fali
1025Aika C MarrierJapan2024-04-13Dorl, James J Esq UNQUALIFIED88Bernardo Dominic
1026Sinclair L MaletCanada2024-04-20Chanay, Jeffrey A Esq NEGOTIATION49Xuxue Feng
1027Johnson Z MarrierFrance2024-04-05King, Christopher A Esq PROPOSAL68Stephen Shaw
1028Jefferson D GauchoFrance2024-04-12Rangoni Of Florence PROPOSAL75Amy Elsner
1029Nicolas J MaletArgentina2024-04-08Feltz Printing Service NEW80Bernardo Dominic
1030Alejandro X FollerRussia2024-04-16Morlong Associates NEGOTIATION49Ioni Bowcher
1031Stacey T CampainSpain2024-04-13Printing Dimensions RENEWAL11Elwin Sharvill
1032Salvatore A RutaFrance2024-04-28Rousseaux, Michael Esq QUALIFIED93Amy Elsner
1033Antonio C RoysterSpain2024-04-05Truhlar And Truhlar Attys NEW29Amy Elsner
1034Misaki B CaldareraArgentina2024-04-16Feltz Printing Service NEW58Anna Fali
1035Leja B BriddickSpain2024-04-19Buckley Miller Wright NEGOTIATION80Onyama Limba
1036Aruna H CaudyAustralia2024-04-23Rangoni Of Florence UNQUALIFIED46Xuxue Feng
1037Murillo O FerenczItaly2024-04-05Chemel, James L Cpa NEW8Anna Fali
1038Chavez P MaletFrance2024-04-09Truhlar And Truhlar Attys UNQUALIFIED91Asiya Javayant
1039Aditya I WhobreyArgentina2024-04-15Buckley Miller Wright PROPOSAL48Ioni Bowcher
1040Antonio C ChuiJapan2024-04-13Chanay, Jeffrey A Esq NEW35Amy Elsner
1041Emily O WaycottGermany2024-04-09Benton, John B Jr QUALIFIED11Amy Elsner
1042Aditya P RulapaughCanada2024-04-20Rousseaux, Michael Esq RENEWAL70Xuxue Feng
1043Aika X FlosiRussia2024-04-01Feiner Bros NEGOTIATION54Anna Fali
1044Sinclair R GauchoRussia2024-04-27Feiner Bros RENEWAL70Asiya Javayant
1045Ashley R GarufiArgentina2024-04-26Feltz Printing Service UNQUALIFIED35Onyama Limba
1046Aditya K RutaCanada2024-04-28King, Christopher A Esq RENEWAL22Stephen Shaw
1047Nicolas G DoeAustralia2024-04-12King, Christopher A Esq QUALIFIED99Anna Fali
1048Juan B RutaRussia2024-04-18Benton, John B Jr NEW29Elwin Sharvill
1049Costa P BowleyCanada2024-04-03Feltz Printing Service PROPOSAL0Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Darci T RimAustraliaIoni Bowcher PROPOSAL
Morrow P FlosiAustraliaOnyama Limba NEW
Octavia J SchemmerArgentinaAmy Elsner UNQUALIFIED
Emily B BowleyIndiaAsiya Javayant NEGOTIATION
Izzy L GauchoFranceElwin Sharvill PROPOSAL
Tony C FerenczItalyAmy Elsner RENEWAL
Maisha P OldroydBrazilXuxue Feng PROPOSAL
Maria X ButtItalyAsiya Javayant RENEWAL
Jennifer T CaldareraArgentinaAsiya Javayant NEW
James T StockhamJapanAnna Fali UNQUALIFIED
Ivar Y MorascaGermanyAmy Elsner PROPOSAL
Octavia P StockhamSpainAnna Fali QUALIFIED
Ivar Y WhobreyBrazilIoni Bowcher UNQUALIFIED
Costa P TollnerFranceXuxue Feng RENEWAL
Leon M WieserCanadaAnna Fali PROPOSAL
Jennifer F MarrierBrazilAnna Fali QUALIFIED
Kaitlin A SchemmerUnited KingdomBernardo Dominic NEGOTIATION
Leja E BriddickSpainBernardo Dominic QUALIFIED
Kadeem C FerenczGermanyIvan Magalhaes PROPOSAL
Maisha P ChuiRussiaIvan Magalhaes NEGOTIATION
David W DilliardBrazilElwin Sharvill RENEWAL
Ashley O CaudyCanadaXuxue Feng NEGOTIATION
Wickens D RulapaughIndiaIvan Magalhaes NEGOTIATION
Isabel N ShinkoIndiaOnyama Limba RENEWAL
Misaki P FlosiGermanyAmy Elsner RENEWAL
Deepesh J GauchoCanadaStephen Shaw UNQUALIFIED
Aika Z SaylorsItalyAsiya Javayant NEGOTIATION
Salvatore Y ShinkoSpainIvan Magalhaes NEGOTIATION
Morrow K WhobreyArgentinaAsiya Javayant NEGOTIATION
Jefferson F MacleadItalyElwin Sharvill NEGOTIATION
James X KuskoArgentinaAnna Fali PROPOSAL
Johnson V GillianAustraliaAmy Elsner PROPOSAL
Rodrigues K GlickRussiaIoni Bowcher NEGOTIATION
Wickens W KolmetzJapanIvan Magalhaes NEGOTIATION
Kadeem K GarufiJapanXuxue Feng NEGOTIATION
Emily S AmigonItalyOnyama Limba PROPOSAL
Maria Z InouyeJapanIvan Magalhaes PROPOSAL
Isabel Z PaprockiIndiaXuxue Feng QUALIFIED
Arvin W BowleyItalyAmy Elsner NEW
Claire G BowleyIndiaElwin Sharvill NEGOTIATION
Nicolas P CampainUnited KingdomXuxue Feng NEW
Octavia B SergiFranceAmy Elsner QUALIFIED
Antonio G FollerBrazilXuxue Feng NEW
Ricardo K VenereFranceIoni Bowcher RENEWAL
Johnson N FerenczRussiaIvan Magalhaes UNQUALIFIED
Johnson M WhobreyJapanIoni Bowcher UNQUALIFIED
Francesco M IturbideCanadaAmy Elsner NEGOTIATION
Emily Z VenereBrazilAsiya Javayant RENEWAL
Antonio C WieserBrazilXuxue Feng NEGOTIATION
Leja N BriddickJapanStephen Shaw RENEWAL
Frozen Columns
Name
Costa S Stenseth
Aruna P Caldarera
Morrow H Poquette
Sinclair T Ferencz
Kadeem D Iturbide
Mujtaba R Caudy
Faith V Malet
Leja R Royster
Alejandro A Garufi
Aruna X Campain
Wickens J Caldarera
Antonio A Ostrosky
Wickens E Doe
Aruna F Marrier
Sinclair I Saylors
Stacey M Royster
Murillo W Shinko
Silvio X Inouye
Francesco E Maclead
Leja D Caldarera
Antonio P Ostrosky
Salvatore M Flosi
Kaitlin P Venere
Wickens H Campain
David R Shinko
Clifford W Albares
Rodrigues D Ferencz
Alejandro M Briddick
Johnson P Campain
Ashley X Shinko
James A Dilliard
Leon T Kolmetz
Salvatore J Stockham
Deepesh U Stockham
Wickens U Amigon
Smith K Wieser
Sinclair E Schemmer
Murillo P Ferencz
Emily J Inouye
Arvin U Foller
Ricardo L Doe
Kadeem V Kolmetz
Aika J Ferencz
Tony T Bolognia
Arvin M Darakjy
Silvio Q Slusarski
Aika N Perin
Greenwood Y Iturbide
James U Figeroa
Faith T Albares
IdCountryDate
1000Italy2024-04-14
1001Italy2024-04-18
1002Argentina2024-04-10
1003Spain2024-04-04
1004Russia2024-03-31
1005Germany2024-04-05
1006France2024-04-10
1007Japan2024-04-03
1008Spain2024-04-01
1009Australia2024-04-18
1010Argentina2024-04-13
1011Canada2024-04-13
1012Brazil2024-04-14
1013France2024-04-27
1014Spain2024-04-09
1015France2024-04-28
1016Canada2024-04-21
1017United Kingdom2024-04-17
1018Russia2024-04-10
1019Argentina2024-04-20
1020Argentina2024-03-30
1021Argentina2024-04-22
1022Russia2024-04-19
1023Italy2024-04-22
1024France2024-04-17
1025Brazil2024-04-12
1026Australia2024-03-31
1027Spain2024-04-07
1028Russia2024-04-07
1029United Kingdom2024-04-01
1030United Kingdom2024-04-24
1031Russia2024-04-19
1032France2024-04-02
1033Russia2024-04-15
1034United Kingdom2024-03-30
1035Germany2024-04-22
1036Australia2024-04-09
1037France2024-04-09
1038Australia2024-04-22
1039France2024-04-16
1040Japan2024-04-23
1041Italy2024-04-25
1042Argentina2024-04-16
1043Canada2024-04-08
1044Brazil2024-04-05
1045Brazil2024-04-24
1046Germany2024-04-25
1047Argentina2024-04-11
1048Japan2024-04-18
1049France2024-04-04

On-Demand Data

NameIdCountryDate
Rodrigues H Ostrosky1000Brazil2024-04-20
Misaki P Glick1001Russia2024-04-13
Wickens E Kusko1002France2024-04-17
Costa O Slusarski1003Brazil2024-04-04
Murillo P Tollner1004Spain2024-04-16
Mayumi E Gaucho1005Spain2024-04-14
David Z Perin1006Brazil2024-04-08
Kadeem O Royster1007Argentina2024-04-14
Jeanfrancois T Bowley1008Brazil2024-04-13
Mayumi O Kusko1009India2024-04-07
Munro E Stenseth1010United Kingdom2024-04-24
Juan F Tollner1011Brazil2024-03-30
Ashley V Amigon1012India2024-04-22
Murillo Z Slusarski1013Argentina2024-04-04
Julie U Royster1014India2024-03-31
Julie T Inouye1015United Kingdom2024-04-11
Leja D Nestle1016Brazil2024-04-28
Kadeem U Malet1017United Kingdom2024-04-25
Octavia S Inouye1018Italy2024-04-19
Jeanfrancois B Poquette1019India2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro G MacleadRussiaStephen Shaw QUALIFIED
Cody O FerenczAustraliaXuxue Feng QUALIFIED
Ivar Q BriddickSpainAnna Fali NEGOTIATION
Francesco O NickaAustraliaIvan Magalhaes NEW
Jones K WieserJapanAsiya Javayant RENEWAL
Isabel P SergiGermanyBernardo Dominic RENEWAL
Maisha Q CaldareraItalyOnyama Limba PROPOSAL
Claire S DarakjyItalyAnna Fali RENEWAL
Greenwood O NickaUnited KingdomAsiya Javayant PROPOSAL
Jennifer B CaldareraGermanyStephen Shaw RENEWAL
Maisha W SaylorsArgentinaAsiya Javayant PROPOSAL
Wickens G ButtJapanAsiya Javayant QUALIFIED
Antonio M GarufiRussiaBernardo Dominic QUALIFIED
Aruna H VenereUnited KingdomXuxue Feng PROPOSAL
Kaitlin A RulapaughIndiaAsiya Javayant NEW
Aditya C FollerUnited KingdomAsiya Javayant QUALIFIED
Stacey J KolmetzBrazilOnyama Limba NEW
Salvatore F KuskoFranceElwin Sharvill NEW
Aika H GarufiIndiaAmy Elsner PROPOSAL
Francesco Z WieserCanadaBernardo Dominic RENEWAL
Mayumi M AmigonUnited KingdomAmy Elsner NEGOTIATION
Salvatore X StockhamSpainStephen Shaw NEW
Francesco M PoquetteIndiaAmy Elsner RENEWAL
Maria R GlickGermanyStephen Shaw NEW
Clifford W PaprockiRussiaOnyama Limba UNQUALIFIED
Greenwood Q KuskoBrazilXuxue Feng UNQUALIFIED
Munro A BologniaIndiaXuxue Feng NEW
Salvatore V SlusarskiJapanAsiya Javayant RENEWAL
Ashley V VenereJapanIvan Magalhaes RENEWAL
Smith B MacleadSpainAnna Fali RENEWAL
Maisha L VenereArgentinaAmy Elsner QUALIFIED
Tony M InouyeFranceIvan Magalhaes QUALIFIED
Ricardo W RimRussiaIoni Bowcher PROPOSAL
Costa L MacleadSpainAnna Fali QUALIFIED
Maria C OstroskyArgentinaXuxue Feng QUALIFIED
Jefferson T KuskoSpainBernardo Dominic UNQUALIFIED
Greenwood O GlickJapanBernardo Dominic UNQUALIFIED
Rodrigues M PerinAustraliaStephen Shaw QUALIFIED
Izzy W BowleyBrazilAnna Fali PROPOSAL
Kadeem D CaudyCanadaStephen Shaw 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>