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
Maisha I MacleadArgentinaStephen Shaw PROPOSAL
Tony Y TollnerRussiaStephen Shaw RENEWAL
Sinclair Y MacleadIndiaIvan Magalhaes NEW
Arvin H ChuiBrazilBernardo Dominic QUALIFIED
Kadeem R MacleadArgentinaAnna Fali UNQUALIFIED
Aika I GauchoFranceAnna Fali NEW
Chavez M FollerFranceAsiya Javayant NEW
Julie V ButtItalyIoni Bowcher UNQUALIFIED
Juan M SchemmerIndiaAsiya Javayant QUALIFIED
Salvatore Q GlickItalyAnna Fali PROPOSAL
Jennifer C MarrierIndiaXuxue Feng RENEWAL
Jennifer M AlbaresGermanyBernardo Dominic NEW
Jennifer J OstroskyUnited KingdomStephen Shaw PROPOSAL
Costa C RulapaughBrazilOnyama Limba UNQUALIFIED
Nicolas O AlbaresIndiaIvan Magalhaes PROPOSAL
James F FerenczBrazilStephen Shaw QUALIFIED
Misaki C VenereBrazilAnna Fali RENEWAL
Jones R StockhamItalyElwin Sharvill UNQUALIFIED
Morrow C SergiBrazilXuxue Feng NEGOTIATION
Sinclair F VenereFranceIvan Magalhaes PROPOSAL
Misaki X MarrierRussiaBernardo Dominic PROPOSAL
Octavia I BriddickSpainBernardo Dominic QUALIFIED
Ricardo V KuskoBrazilAsiya Javayant PROPOSAL
Ricardo V CaldareraIndiaIoni Bowcher PROPOSAL
Clifford Q MaletBrazilOnyama Limba PROPOSAL
Silvio H StockhamUnited KingdomIoni Bowcher QUALIFIED
Ricardo X RulapaughGermanyAmy Elsner RENEWAL
Ricardo J BowleyGermanyAsiya Javayant QUALIFIED
Ricardo C RoysterFranceOnyama Limba UNQUALIFIED
Mujtaba Q DarakjyIndiaIvan Magalhaes PROPOSAL
Rodrigues G FlosiSpainAnna Fali RENEWAL
Aditya T OldroydIndiaXuxue Feng QUALIFIED
Tony I NickaGermanyAsiya Javayant UNQUALIFIED
Aruna H DarakjyBrazilAmy Elsner PROPOSAL
Kaitlin C ChuiIndiaAnna Fali PROPOSAL
Jeanfrancois Y OstroskyBrazilIvan Magalhaes NEGOTIATION
Julie S SergiBrazilXuxue Feng UNQUALIFIED
Jones O CaldareraSpainIoni Bowcher NEGOTIATION
Morrow C MacleadGermanyOnyama Limba UNQUALIFIED
Chavez A ButtArgentinaBernardo Dominic NEW
Morrow I SchemmerJapanOnyama Limba NEW
Leja H PaprockiBrazilAmy Elsner RENEWAL
Julie O DoeIndiaBernardo Dominic PROPOSAL
David V PaprockiUnited KingdomIvan Magalhaes RENEWAL
Aika T AlbaresJapanAsiya Javayant QUALIFIED
Leja J RutaGermanyAmy Elsner NEGOTIATION
Munro F WieserBrazilStephen Shaw NEW
Aika Q DoeFranceBernardo Dominic QUALIFIED
Maria X ChuiGermanyIvan Magalhaes PROPOSAL
Kadeem O PerinFranceAnna Fali NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Mayumi U NickaBrazilXuxue Feng RENEWAL
Jennifer N GlickBrazilIvan Magalhaes UNQUALIFIED
Isabel A AlbaresFranceAmy Elsner RENEWAL
Munro G NickaSpainAnna Fali QUALIFIED
Rodrigues M SlusarskiBrazilElwin Sharvill NEW
Claire Y KolmetzItalyAmy Elsner NEGOTIATION
Mujtaba Y PaprockiArgentinaOnyama Limba NEW
James N GlickSpainOnyama Limba UNQUALIFIED
Claire R DilliardBrazilAsiya Javayant QUALIFIED
Claire X CaudyRussiaXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar J StockhamRussia2024-04-04Truhlar And Truhlar Attys NEW10Amy Elsner
1001Julie O CaudyIndia2024-04-21Buckley Miller Wright QUALIFIED92Anna Fali
1002Aika Y MaletIndia2024-04-06King, Christopher A Esq NEGOTIATION89Bernardo Dominic
1003Leja W PaprockiUnited Kingdom2024-03-29Feiner Bros QUALIFIED16Ivan Magalhaes
1004Sinclair N BowleySpain2024-04-01Dorl, James J Esq PROPOSAL33Ioni Bowcher
1005Costa D FerenczRussia2024-04-13Benton, John B Jr UNQUALIFIED82Anna Fali
1006Darci M InouyeRussia2024-03-30Chemel, James L Cpa PROPOSAL86Stephen Shaw
1007Juan O MaletRussia2024-04-15Benton, John B Jr NEW1Ivan Magalhaes
1008Clifford K CaudyIndia2024-04-15Buckley Miller Wright PROPOSAL97Stephen Shaw
1009Nicolas B NestleRussia2024-04-06Chapman, Ross E Esq RENEWAL68Elwin Sharvill
1010Isabel Q FollerRussia2024-03-30Buckley Miller Wright RENEWAL25Elwin Sharvill
1011Aruna H RimRussia2024-04-23Rousseaux, Michael Esq NEW90Ioni Bowcher
1012Adams G PoquetteRussia2024-04-04Feltz Printing Service NEW25Ioni Bowcher
1013Izzy B KuskoBrazil2024-04-23Rangoni Of Florence RENEWAL3Amy Elsner
1014Silvio V FerenczItaly2024-03-26Commercial Press PROPOSAL73Onyama Limba
1015Jefferson W MorascaBrazil2024-03-26Chanay, Jeffrey A Esq UNQUALIFIED75Amy Elsner
1016Aruna J CampainArgentina2024-03-27Printing Dimensions RENEWAL57Stephen Shaw
1017Arvin B WhobreyBrazil2024-04-14Feltz Printing Service PROPOSAL34Ivan Magalhaes
1018Chavez W CampainAustralia2024-04-23Truhlar And Truhlar Attys QUALIFIED16Ivan Magalhaes
1019Stacey V RoysterFrance2024-04-18Feltz Printing Service RENEWAL95Elwin Sharvill
1020Aika M FollerUnited Kingdom2024-04-19King, Christopher A Esq UNQUALIFIED42Bernardo Dominic
1021Aruna Y GlickIndia2024-04-15Chemel, James L Cpa PROPOSAL19Onyama Limba
1022Emily V MacleadIndia2024-03-29King, Christopher A Esq PROPOSAL58Amy Elsner
1023Kadeem S DilliardFrance2024-04-02Dorl, James J Esq RENEWAL8Onyama Limba
1024Leja C BologniaRussia2024-04-11Morlong Associates UNQUALIFIED89Onyama Limba
1025Darci M CampainBrazil2024-03-31Printing Dimensions RENEWAL50Asiya Javayant
1026Sinclair W GlickFrance2024-04-17King, Christopher A Esq PROPOSAL12Anna Fali
1027Salvatore L SchemmerRussia2024-04-06Chemel, James L Cpa RENEWAL52Asiya Javayant
1028Mujtaba U MaletBrazil2024-04-14Feiner Bros PROPOSAL42Bernardo Dominic
1029Jefferson N RimGermany2024-04-10Benton, John B Jr UNQUALIFIED76Ioni Bowcher
1030Mujtaba W MacleadCanada2024-04-06Feiner Bros NEGOTIATION84Ivan Magalhaes
1031Deepesh R ChuiAustralia2024-04-21King, Christopher A Esq QUALIFIED96Asiya Javayant
1032Julie X MacleadAustralia2024-03-25Commercial Press NEW60Bernardo Dominic
1033Arvin S RoysterUnited Kingdom2024-03-29Buckley Miller Wright UNQUALIFIED91Amy Elsner
1034Costa X PoquetteCanada2024-03-26Dorl, James J Esq UNQUALIFIED11Bernardo Dominic
1035Izzy U FollerArgentina2024-04-18Dorl, James J Esq NEGOTIATION44Asiya Javayant
1036Mujtaba J OstroskyIndia2024-03-26Buckley Miller Wright RENEWAL10Bernardo Dominic
1037Darci E DarakjySpain2024-03-25Printing Dimensions PROPOSAL69Anna Fali
1038Misaki P FollerUnited Kingdom2024-04-12Chanay, Jeffrey A Esq QUALIFIED66Elwin Sharvill
1039Kaitlin H MaletFrance2024-04-20Commercial Press UNQUALIFIED80Amy Elsner
1040Faith P FigeroaBrazil2024-04-03Chanay, Jeffrey A Esq NEW33Stephen Shaw
1041Jones W RulapaughUnited Kingdom2024-04-09Truhlar And Truhlar Attys NEGOTIATION97Asiya Javayant
1042Murillo C VocelkaSpain2024-03-28Chemel, James L Cpa PROPOSAL76Bernardo Dominic
1043Leon Z SergiUnited Kingdom2024-04-08Chapman, Ross E Esq PROPOSAL97Stephen Shaw
1044Smith S BowleyRussia2024-04-12Feiner Bros RENEWAL93Onyama Limba
1045James H MorascaItaly2024-04-13Feiner Bros UNQUALIFIED7Ioni Bowcher
1046Adams I ShinkoCanada2024-04-13Printing Dimensions UNQUALIFIED99Asiya Javayant
1047Adams J SlusarskiGermany2024-04-07Feiner Bros UNQUALIFIED99Ioni Bowcher
1048Leja Q FerenczCanada2024-04-08Chapman, Ross E Esq QUALIFIED58Ivan Magalhaes
1049Jennifer F RimJapan2024-04-02Rousseaux, Michael Esq QUALIFIED10Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Juan A SaylorsIndiaIoni Bowcher RENEWAL
Chavez D BriddickItalyOnyama Limba PROPOSAL
Cody G NickaJapanIvan Magalhaes UNQUALIFIED
Adams L NestleCanadaBernardo Dominic NEGOTIATION
James Q MorascaFranceStephen Shaw QUALIFIED
Deepesh D StockhamSpainAnna Fali UNQUALIFIED
Ivar Q AlbaresSpainOnyama Limba NEW
Stacey S CaldareraJapanIoni Bowcher UNQUALIFIED
Murillo Q DarakjyAustraliaAsiya Javayant NEGOTIATION
Leon H PaprockiIndiaStephen Shaw NEGOTIATION
Francesco Y SchemmerArgentinaIoni Bowcher PROPOSAL
Alejandro C InouyeItalyIvan Magalhaes NEW
Juan J GauchoItalyAnna Fali PROPOSAL
Claire E MorascaFranceElwin Sharvill RENEWAL
Julie D KolmetzUnited KingdomAmy Elsner QUALIFIED
Emily P CampainUnited KingdomXuxue Feng NEGOTIATION
Adams Y RimFranceAsiya Javayant UNQUALIFIED
Misaki P VocelkaRussiaIoni Bowcher NEW
Alejandro D MaletIndiaElwin Sharvill RENEWAL
Arvin S FerenczAustraliaAnna Fali UNQUALIFIED
Clifford R WhobreyCanadaElwin Sharvill NEGOTIATION
Octavia O ChuiCanadaIvan Magalhaes RENEWAL
Jones D SaylorsFranceStephen Shaw PROPOSAL
Munro C MarrierSpainAnna Fali QUALIFIED
Ashley T StockhamAustraliaOnyama Limba NEGOTIATION
Izzy N NickaCanadaOnyama Limba NEGOTIATION
James L BologniaSpainIvan Magalhaes PROPOSAL
Morrow Y DarakjyUnited KingdomIvan Magalhaes NEGOTIATION
Chavez W ShinkoRussiaElwin Sharvill NEGOTIATION
Deepesh Z MarrierIndiaAsiya Javayant RENEWAL
Julie R CaldareraJapanIoni Bowcher NEGOTIATION
Faith K CaudyBrazilXuxue Feng NEGOTIATION
Darci M GillianArgentinaStephen Shaw NEGOTIATION
James P TollnerBrazilIvan Magalhaes PROPOSAL
Alejandro E FlosiItalyBernardo Dominic NEW
Adams Y InouyeGermanyAsiya Javayant UNQUALIFIED
Clifford W GlickIndiaIoni Bowcher NEW
Jones S BriddickRussiaXuxue Feng NEGOTIATION
Ivar O KuskoAustraliaAnna Fali UNQUALIFIED
Kaitlin W GarufiRussiaOnyama Limba QUALIFIED
Alejandro I MacleadSpainXuxue Feng QUALIFIED
Arvin L BriddickUnited KingdomXuxue Feng NEGOTIATION
Darci D DoeJapanIoni Bowcher RENEWAL
Greenwood N DarakjySpainElwin Sharvill RENEWAL
Isabel P CaldareraSpainIvan Magalhaes NEW
James G PoquetteUnited KingdomAsiya Javayant NEW
Rodrigues X AmigonAustraliaAmy Elsner RENEWAL
Misaki V ButtIndiaAsiya Javayant PROPOSAL
Sinclair Z CaudyUnited KingdomElwin Sharvill UNQUALIFIED
Leon H FollerItalyBernardo Dominic NEGOTIATION
Frozen Columns
Name
Aika F Butt
Kaitlin M Darakjy
Munro V Tollner
Octavia N Kolmetz
Jeanfrancois C Schemmer
Antonio Q Nestle
Octavia T Albares
Murillo G Ferencz
Clifford M Perin
Francesco N Malet
Antonio J Morasca
Salvatore F Garufi
Kadeem B Morasca
Claire A Nicka
Nicolas V Campain
Maria G Campain
Stacey Y Royster
Leon U Malet
Julie W Darakjy
Leon C Caudy
Kaitlin T Vocelka
Rodrigues Q Briddick
Deepesh Y Perin
Rodrigues U Amigon
Aika A Caldarera
Greenwood M Tollner
Costa R Maclead
Octavia V Rim
Rodrigues Q Malet
Izzy J Poquette
Juan E Figeroa
Tony O Slusarski
Aditya D Albares
Ivar U Iturbide
Jones C Ruta
Ivar B Flosi
Sinclair E Slusarski
Kadeem S Chui
Wickens E Briddick
Juan D Nestle
Julie W Poquette
Francesco Z Iturbide
Jeanfrancois J Briddick
Emily B Wieser
Jefferson D Saylors
Antonio J Wieser
Clifford D Bolognia
Deepesh H Doe
Greenwood W Ostrosky
Murillo Z Sergi
IdCountryDate
1000Brazil2024-03-29
1001Germany2024-03-30
1002Italy2024-04-12
1003India2024-03-27
1004Brazil2024-03-25
1005France2024-04-11
1006France2024-04-16
1007Germany2024-04-21
1008Canada2024-04-01
1009United Kingdom2024-04-14
1010Canada2024-04-17
1011France2024-04-01
1012Russia2024-04-06
1013Spain2024-04-13
1014Japan2024-04-14
1015Italy2024-03-30
1016Australia2024-04-19
1017Russia2024-04-02
1018Italy2024-04-12
1019Spain2024-04-10
1020Italy2024-03-29
1021Japan2024-03-31
1022Canada2024-04-19
1023Argentina2024-04-12
1024Canada2024-04-08
1025Italy2024-04-05
1026Argentina2024-04-09
1027United Kingdom2024-04-23
1028Spain2024-03-25
1029France2024-04-21
1030Australia2024-03-30
1031United Kingdom2024-03-29
1032Argentina2024-04-02
1033Brazil2024-04-16
1034Japan2024-04-10
1035Canada2024-04-10
1036India2024-04-14
1037Spain2024-04-03
1038Brazil2024-04-21
1039United Kingdom2024-04-12
1040Italy2024-04-21
1041France2024-04-02
1042India2024-03-30
1043Russia2024-04-02
1044Russia2024-03-29
1045Canada2024-04-11
1046Australia2024-04-19
1047India2024-04-14
1048Brazil2024-04-13
1049Argentina2024-04-17

On-Demand Data

NameIdCountryDate
Adams R Vocelka1000Russia2024-04-11
Leja V Inouye1001Brazil2024-04-23
Murillo X Perin1002Australia2024-04-22
Aika W Gillian1003Germany2024-04-02
Chavez V Kusko1004Spain2024-04-12
Leon H Campain1005France2024-04-09
Smith P Royster1006Canada2024-04-21
Octavia C Rim1007France2024-04-02
Mayumi O Darakjy1008Brazil2024-03-30
Mayumi A Iturbide1009India2024-04-17
Aika Z Shinko1010France2024-03-31
Misaki Y Caudy1011United Kingdom2024-04-19
Chavez C Waycott1012France2024-04-09
Cody T Gaucho1013Germany2024-04-19
Darci V Bowley1014Brazil2024-04-02
Murillo W Saylors1015United Kingdom2024-04-18
Munro N Schemmer1016Brazil2024-04-14
Mayumi A Waycott1017United Kingdom2024-04-01
Francesco T Dilliard1018Russia2024-04-16
Murillo J Flosi1019Argentina2024-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin P MorascaAustraliaIvan Magalhaes UNQUALIFIED
Octavia U GarufiIndiaElwin Sharvill NEW
Mayumi I SaylorsIndiaOnyama Limba UNQUALIFIED
Tony N AlbaresBrazilXuxue Feng NEW
Kaitlin D MorascaGermanyXuxue Feng QUALIFIED
Jennifer C RutaUnited KingdomBernardo Dominic NEGOTIATION
Kaitlin R ShinkoBrazilAsiya Javayant PROPOSAL
Clifford E PerinAustraliaOnyama Limba RENEWAL
Mayumi S TollnerArgentinaAmy Elsner NEW
Chavez N KolmetzJapanAsiya Javayant NEW
Aditya A FerenczItalyElwin Sharvill RENEWAL
Julie K FlosiArgentinaOnyama Limba QUALIFIED
Rodrigues J PoquetteFranceAsiya Javayant PROPOSAL
Leja F MacleadItalyOnyama Limba NEW
Leja I RulapaughFranceAmy Elsner NEGOTIATION
Cody C GarufiBrazilStephen Shaw RENEWAL
Alejandro S TollnerIndiaOnyama Limba PROPOSAL
Clifford L MacleadBrazilElwin Sharvill UNQUALIFIED
Tony S SchemmerSpainAsiya Javayant UNQUALIFIED
Mujtaba U RimUnited KingdomIoni Bowcher PROPOSAL
Faith T WhobreyUnited KingdomAsiya Javayant NEGOTIATION
Clifford T CaldareraJapanXuxue Feng PROPOSAL
Antonio Z IturbideFranceAnna Fali NEW
Stacey W StensethItalyOnyama Limba PROPOSAL
Nicolas H TollnerItalyIvan Magalhaes UNQUALIFIED
Morrow Y SergiArgentinaXuxue Feng NEGOTIATION
Darci S VocelkaArgentinaOnyama Limba QUALIFIED
Aika Y BowleyUnited KingdomXuxue Feng UNQUALIFIED
Emily E NickaJapanIvan Magalhaes UNQUALIFIED
Deepesh K OstroskyFranceAnna Fali NEGOTIATION
Jennifer Y DilliardGermanyIoni Bowcher PROPOSAL
Morrow F FerenczItalyElwin Sharvill UNQUALIFIED
Julie Z MaletUnited KingdomAsiya Javayant NEW
Munro H VocelkaBrazilOnyama Limba NEW
Aika X AmigonBrazilAnna Fali QUALIFIED
Cody J CampainRussiaOnyama Limba PROPOSAL
Wickens C VocelkaGermanyAmy Elsner QUALIFIED
Izzy E OldroydCanadaAnna Fali UNQUALIFIED
Mujtaba X WaycottJapanElwin Sharvill RENEWAL
Claire B MarrierSpainAnna Fali NEGOTIATION

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