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
Smith D OstroskyUnited KingdomAmy Elsner PROPOSAL
Deepesh M SergiArgentinaBernardo Dominic NEGOTIATION
Aruna Q CaldareraArgentinaBernardo Dominic UNQUALIFIED
Maria W TollnerUnited KingdomIvan Magalhaes QUALIFIED
Leon C NickaGermanyAnna Fali UNQUALIFIED
Deepesh O SchemmerIndiaAsiya Javayant UNQUALIFIED
Greenwood G GauchoArgentinaOnyama Limba RENEWAL
Octavia I GlickArgentinaStephen Shaw UNQUALIFIED
Leon A MaletUnited KingdomAmy Elsner UNQUALIFIED
Greenwood D GarufiCanadaAmy Elsner NEW
Aruna S PerinCanadaBernardo Dominic UNQUALIFIED
Aruna G BowleyIndiaAmy Elsner NEW
Stacey Q InouyeIndiaOnyama Limba RENEWAL
Emily K RutaIndiaXuxue Feng NEW
Wickens N VocelkaIndiaIoni Bowcher UNQUALIFIED
Smith D DarakjyBrazilXuxue Feng QUALIFIED
Darci V DoeBrazilXuxue Feng PROPOSAL
Murillo I FerenczFranceOnyama Limba RENEWAL
Izzy X BowleyFranceAsiya Javayant QUALIFIED
Jones H AmigonAustraliaIvan Magalhaes UNQUALIFIED
Adams I DilliardFranceBernardo Dominic NEW
Rodrigues M FerenczRussiaIvan Magalhaes RENEWAL
Juan P MarrierItalyAmy Elsner NEGOTIATION
Deepesh U FerenczFranceXuxue Feng UNQUALIFIED
Jones E CaudyUnited KingdomIoni Bowcher NEGOTIATION
Ashley F AlbaresArgentinaAnna Fali NEW
James F ChuiUnited KingdomBernardo Dominic PROPOSAL
Aditya M GlickBrazilIvan Magalhaes PROPOSAL
Juan A VocelkaBrazilAnna Fali RENEWAL
Salvatore T RutaRussiaOnyama Limba NEGOTIATION
Faith I ShinkoGermanyIvan Magalhaes UNQUALIFIED
Sinclair W CampainArgentinaIvan Magalhaes UNQUALIFIED
Cody P SergiIndiaBernardo Dominic UNQUALIFIED
Ashley P RoysterArgentinaIvan Magalhaes UNQUALIFIED
Aditya F FlosiGermanyAmy Elsner PROPOSAL
Munro G CaldareraSpainAmy Elsner PROPOSAL
Costa P OstroskyItalyAnna Fali NEGOTIATION
Maisha A FlosiAustraliaOnyama Limba QUALIFIED
Clifford B ChuiUnited KingdomStephen Shaw PROPOSAL
Murillo G SergiJapanStephen Shaw QUALIFIED
Misaki S SergiBrazilIvan Magalhaes NEGOTIATION
Ricardo B CampainUnited KingdomAsiya Javayant NEW
Smith E FlosiUnited KingdomBernardo Dominic NEW
Antonio L GlickRussiaAnna Fali NEW
Morrow D MaletJapanIvan Magalhaes RENEWAL
Jefferson X AlbaresFranceAmy Elsner UNQUALIFIED
Antonio R NestleFranceElwin Sharvill NEGOTIATION
Jones L SlusarskiItalyXuxue Feng QUALIFIED
Izzy L SlusarskiGermanyAsiya Javayant QUALIFIED
Munro H AmigonRussiaBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Chavez G AmigonBrazilElwin Sharvill UNQUALIFIED
Rodrigues Z RutaItalyOnyama Limba QUALIFIED
Leja K IturbideJapanAmy Elsner NEGOTIATION
Maria U SaylorsIndiaAnna Fali NEGOTIATION
Rodrigues H IturbideFranceAmy Elsner NEGOTIATION
Misaki L InouyeJapanBernardo Dominic PROPOSAL
Leja O IturbideFranceAsiya Javayant NEGOTIATION
Faith V MorascaSpainStephen Shaw RENEWAL
Antonio O BowleyAustraliaStephen Shaw NEW
Misaki B GarufiBrazilAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas A GauchoAustralia2024-03-31Feiner Bros NEGOTIATION6Bernardo Dominic
1001Juan O RimGermany2024-04-12Rangoni Of Florence PROPOSAL34Bernardo Dominic
1002Faith W InouyeJapan2024-04-11Dorl, James J Esq QUALIFIED68Amy Elsner
1003Aditya A GarufiArgentina2024-04-19Buckley Miller Wright NEGOTIATION71Ioni Bowcher
1004Kaitlin X OldroydSpain2024-04-27Chanay, Jeffrey A Esq RENEWAL53Ioni Bowcher
1005Leja B BriddickBrazil2024-04-17Morlong Associates RENEWAL17Elwin Sharvill
1006Alejandro A MorascaBrazil2024-04-07Dorl, James J Esq QUALIFIED89Anna Fali
1007Ricardo O MorascaBrazil2024-04-02Chemel, James L Cpa NEW63Anna Fali
1008Jones A FerenczItaly2024-04-18Benton, John B Jr NEW29Onyama Limba
1009Smith L RoysterItaly2024-04-18Rangoni Of Florence NEW96Elwin Sharvill
1010Aruna K MacleadIndia2024-04-07Rousseaux, Michael Esq QUALIFIED81Ivan Magalhaes
1011Claire A SaylorsSpain2024-04-27Commercial Press UNQUALIFIED49Amy Elsner
1012Darci D WhobreyIndia2024-04-09Benton, John B Jr NEW38Bernardo Dominic
1013Maisha L DilliardUnited Kingdom2024-03-29Printing Dimensions PROPOSAL76Anna Fali
1014Faith Z PaprockiGermany2024-04-04Dorl, James J Esq QUALIFIED18Onyama Limba
1015Emily W ButtBrazil2024-04-06Rousseaux, Michael Esq NEGOTIATION35Bernardo Dominic
1016Costa G MaletCanada2024-04-22Feiner Bros UNQUALIFIED43Ivan Magalhaes
1017Mujtaba O RulapaughRussia2024-03-30Truhlar And Truhlar Attys RENEWAL27Ivan Magalhaes
1018Smith R StensethBrazil2024-04-03Feltz Printing Service PROPOSAL6Stephen Shaw
1019Tony E RoysterAustralia2024-04-08Chanay, Jeffrey A Esq NEGOTIATION13Xuxue Feng
1020Rodrigues Y GillianJapan2024-04-10King, Christopher A Esq UNQUALIFIED73Elwin Sharvill
1021Arvin H SlusarskiFrance2024-04-19Commercial Press UNQUALIFIED96Ivan Magalhaes
1022James X PaprockiAustralia2024-03-30Truhlar And Truhlar Attys NEGOTIATION76Xuxue Feng
1023Arvin K CaldareraJapan2024-04-14Benton, John B Jr NEGOTIATION52Ioni Bowcher
1024Ashley Q KolmetzAustralia2024-04-25Feltz Printing Service QUALIFIED52Elwin Sharvill
1025Julie F BowleySpain2024-04-26Chapman, Ross E Esq RENEWAL46Anna Fali
1026Smith R PerinItaly2024-04-01Benton, John B Jr UNQUALIFIED24Bernardo Dominic
1027Jeanfrancois S DilliardIndia2024-04-08Feiner Bros NEW52Ivan Magalhaes
1028Jeanfrancois F FollerGermany2024-04-23Feiner Bros NEGOTIATION81Ivan Magalhaes
1029Wickens P VenereUnited Kingdom2024-04-18Benton, John B Jr NEGOTIATION29Onyama Limba
1030Jefferson E DoeSpain2024-04-15Buckley Miller Wright NEGOTIATION99Anna Fali
1031Arvin L TollnerUnited Kingdom2024-04-12Morlong Associates NEGOTIATION70Stephen Shaw
1032Aika D MaletItaly2024-04-21Morlong Associates UNQUALIFIED34Xuxue Feng
1033Wickens C InouyeJapan2024-04-14Feiner Bros PROPOSAL44Asiya Javayant
1034Jefferson I NickaFrance2024-04-06Dorl, James J Esq NEGOTIATION75Bernardo Dominic
1035Aditya H GlickIndia2024-04-24Benton, John B Jr UNQUALIFIED26Elwin Sharvill
1036Nicolas R OstroskyItaly2024-04-16Dorl, James J Esq UNQUALIFIED33Stephen Shaw
1037Aruna U MacleadJapan2024-04-04Buckley Miller Wright QUALIFIED38Onyama Limba
1038Murillo S InouyeGermany2024-04-16Rousseaux, Michael Esq PROPOSAL78Ivan Magalhaes
1039Costa G MaletIndia2024-04-22Feiner Bros QUALIFIED40Bernardo Dominic
1040Rodrigues M VenereSpain2024-04-11Feltz Printing Service NEGOTIATION53Xuxue Feng
1041David S FigeroaBrazil2024-03-31Rangoni Of Florence NEW71Stephen Shaw
1042Jones T KolmetzFrance2024-04-22Chapman, Ross E Esq NEGOTIATION60Xuxue Feng
1043Ricardo U MorascaRussia2024-04-18Truhlar And Truhlar Attys UNQUALIFIED88Xuxue Feng
1044Munro A MarrierArgentina2024-04-19Truhlar And Truhlar Attys UNQUALIFIED6Ioni Bowcher
1045Ivar O MaletBrazil2024-04-19Chemel, James L Cpa RENEWAL54Anna Fali
1046Munro J StockhamFrance2024-04-24King, Christopher A Esq QUALIFIED34Bernardo Dominic
1047Mayumi O InouyeJapan2024-03-29Buckley Miller Wright PROPOSAL93Asiya Javayant
1048Emily Z SaylorsJapan2024-04-14Benton, John B Jr NEW85Amy Elsner
1049Salvatore U TollnerFrance2024-04-15Commercial Press QUALIFIED51Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Clifford K WhobreyItalyIvan Magalhaes UNQUALIFIED
Isabel B VocelkaArgentinaAnna Fali NEGOTIATION
Maria N MorascaCanadaIoni Bowcher PROPOSAL
Chavez X DoeFranceAmy Elsner NEGOTIATION
James F DarakjyBrazilAmy Elsner RENEWAL
Smith B NickaCanadaAmy Elsner RENEWAL
Chavez E PoquetteFranceAmy Elsner NEGOTIATION
Deepesh I RutaAustraliaIoni Bowcher PROPOSAL
Ashley Q GlickAustraliaElwin Sharvill UNQUALIFIED
Mayumi H NestleIndiaBernardo Dominic NEGOTIATION
Greenwood B WaycottItalyOnyama Limba UNQUALIFIED
James A StensethIndiaIvan Magalhaes RENEWAL
Kadeem L MacleadRussiaOnyama Limba QUALIFIED
Mujtaba Y DarakjyAustraliaStephen Shaw QUALIFIED
Jeanfrancois C NickaGermanyBernardo Dominic QUALIFIED
Tony W MorascaRussiaAmy Elsner UNQUALIFIED
Murillo V BowleyCanadaAmy Elsner QUALIFIED
Johnson F OstroskyBrazilBernardo Dominic QUALIFIED
Julie F SaylorsIndiaAnna Fali NEW
Alejandro X CaudyRussiaAmy Elsner QUALIFIED
Ricardo O RutaCanadaXuxue Feng RENEWAL
Jones L OstroskyUnited KingdomAnna Fali PROPOSAL
David N BowleyBrazilBernardo Dominic PROPOSAL
Wickens Q AmigonUnited KingdomStephen Shaw QUALIFIED
Munro W InouyeAustraliaOnyama Limba NEGOTIATION
Johnson M MacleadAustraliaXuxue Feng PROPOSAL
Rodrigues B NestleArgentinaOnyama Limba PROPOSAL
Mayumi Y BriddickJapanBernardo Dominic RENEWAL
Adams Y SchemmerCanadaStephen Shaw QUALIFIED
Johnson J CampainGermanyAnna Fali NEW
Izzy Z ButtBrazilIvan Magalhaes NEGOTIATION
Francesco T BowleySpainElwin Sharvill QUALIFIED
Greenwood U GauchoUnited KingdomAmy Elsner UNQUALIFIED
Isabel U CaudyCanadaAmy Elsner QUALIFIED
Cody X MaletCanadaAmy Elsner PROPOSAL
Jennifer X RoysterAustraliaAnna Fali NEW
Misaki V WieserCanadaStephen Shaw NEGOTIATION
Nicolas I NestleFranceElwin Sharvill NEGOTIATION
Jefferson Q RulapaughBrazilBernardo Dominic QUALIFIED
Antonio B ButtItalyAmy Elsner NEGOTIATION
Chavez H StockhamJapanElwin Sharvill RENEWAL
Sinclair U FigeroaFranceAmy Elsner PROPOSAL
Aditya N StensethFranceAnna Fali PROPOSAL
Mujtaba A NestleFranceBernardo Dominic RENEWAL
Adams X GlickAustraliaAsiya Javayant QUALIFIED
Aika M RimGermanyIoni Bowcher UNQUALIFIED
Aruna C MarrierFranceXuxue Feng NEGOTIATION
Cody Q ButtUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas D MaletGermanyAmy Elsner NEGOTIATION
Smith U BowleyFranceAsiya Javayant PROPOSAL
Frozen Columns
Name
Mujtaba W Chui
Sinclair Q Chui
Adams C Flosi
Isabel U Morasca
Cody O Figeroa
Murillo B Sergi
Nicolas A Paprocki
Nicolas S Albares
Chavez Y Venere
James L Iturbide
Isabel E Glick
Alejandro Q Schemmer
Isabel S Ferencz
Salvatore A Figeroa
Jeanfrancois T Darakjy
Leon M Flosi
Costa R Chui
Chavez C Kusko
Munro Q Glick
Rodrigues W Doe
Ricardo C Malet
Nicolas U Briddick
James U Ruta
Isabel Y Nestle
Arvin Z Rulapaugh
Antonio D Sergi
Sinclair E Waycott
Mujtaba E Gillian
James P Bowley
Munro B Amigon
Leon X Iturbide
Johnson U Paprocki
Jefferson I Campain
Aruna K Rim
Misaki X Oldroyd
Emily V Marrier
Wickens O Foller
Claire D Venere
Leja X Darakjy
Leon Q Gaucho
Silvio V Gaucho
Darci R Perin
Julie E Darakjy
Nicolas V Nicka
Mujtaba K Ostrosky
Mayumi F Doe
Morrow I Poquette
Mujtaba S Vocelka
Ashley Z Caldarera
Isabel L Butt
IdCountryDate
1000France2024-03-31
1001France2024-04-19
1002United Kingdom2024-04-08
1003United Kingdom2024-04-25
1004Russia2024-04-12
1005India2024-03-29
1006Argentina2024-04-24
1007Japan2024-04-08
1008Canada2024-04-10
1009United Kingdom2024-04-10
1010Brazil2024-04-26
1011Japan2024-04-15
1012Russia2024-04-01
1013Spain2024-04-04
1014Argentina2024-04-13
1015Russia2024-04-05
1016United Kingdom2024-04-05
1017Brazil2024-03-29
1018Spain2024-04-26
1019Argentina2024-03-29
1020Italy2024-04-11
1021United Kingdom2024-03-29
1022India2024-04-08
1023Germany2024-04-24
1024Brazil2024-04-14
1025India2024-04-04
1026Russia2024-03-30
1027Spain2024-04-25
1028Italy2024-04-09
1029Germany2024-04-14
1030Italy2024-04-19
1031United Kingdom2024-04-03
1032India2024-04-04
1033Japan2024-04-27
1034United Kingdom2024-04-20
1035France2024-04-13
1036France2024-04-24
1037Argentina2024-04-27
1038Brazil2024-04-04
1039Canada2024-04-04
1040United Kingdom2024-03-30
1041Canada2024-04-19
1042Australia2024-04-20
1043Australia2024-04-02
1044United Kingdom2024-04-27
1045Germany2024-04-22
1046France2024-04-03
1047United Kingdom2024-04-07
1048Argentina2024-04-04
1049United Kingdom2024-04-19

On-Demand Data

NameIdCountryDate
James D Dilliard1000Argentina2024-04-19
Morrow K Malet1001Japan2024-04-12
Ricardo H Oldroyd1002India2024-03-29
Juan J Gaucho1003Germany2024-03-31
Nicolas A Iturbide1004Brazil2024-04-14
Juan N Briddick1005India2024-04-02
Leon N Kolmetz1006Japan2024-04-10
Misaki A Kusko1007France2024-04-11
Jeanfrancois Y Kolmetz1008Italy2024-04-20
Tony W Rulapaugh1009Italy2024-04-01
Sinclair S Darakjy1010Italy2024-04-17
Faith A Figeroa1011Spain2024-03-30
James U Royster1012Brazil2024-04-08
Stacey T Figeroa1013United Kingdom2024-04-11
Kadeem W Nicka1014United Kingdom2024-04-22
Jefferson S Doe1015Germany2024-03-31
Cody Q Schemmer1016Canada2024-04-19
Silvio E Rim1017Australia2024-04-18
Murillo T Nestle1018Canada2024-04-01
Francesco L Figeroa1019India2024-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio H InouyeCanadaAsiya Javayant UNQUALIFIED
Adams P WaycottArgentinaAnna Fali QUALIFIED
Kaitlin E ButtUnited KingdomElwin Sharvill PROPOSAL
Mujtaba A RoysterFranceAmy Elsner RENEWAL
Nicolas I RulapaughUnited KingdomBernardo Dominic QUALIFIED
Aruna F WaycottBrazilIoni Bowcher NEW
Ricardo L CaldareraFranceElwin Sharvill NEGOTIATION
Leja Z BowleyAustraliaIvan Magalhaes QUALIFIED
Adams H ShinkoItalyIoni Bowcher NEGOTIATION
Leon R ButtGermanyIvan Magalhaes NEGOTIATION
David A SlusarskiGermanyOnyama Limba UNQUALIFIED
Mujtaba C CaudyIndiaIvan Magalhaes RENEWAL
Juan B MarrierSpainAmy Elsner UNQUALIFIED
Salvatore T SaylorsBrazilAsiya Javayant NEW
Deepesh G PerinFranceAmy Elsner QUALIFIED
Murillo Y ButtJapanAmy Elsner RENEWAL
Ashley N RulapaughItalyIvan Magalhaes UNQUALIFIED
Tony V TollnerGermanyIvan Magalhaes PROPOSAL
Ashley Y FerenczUnited KingdomAmy Elsner PROPOSAL
Misaki A PoquetteCanadaAsiya Javayant QUALIFIED
Misaki E WaycottCanadaIvan Magalhaes QUALIFIED
Arvin G FlosiItalyIvan Magalhaes RENEWAL
Faith T GarufiCanadaAmy Elsner NEW
Misaki G RulapaughArgentinaStephen Shaw UNQUALIFIED
Izzy F IturbideAustraliaAnna Fali NEW
Salvatore G FerenczGermanyIoni Bowcher NEGOTIATION
Izzy A FlosiArgentinaXuxue Feng PROPOSAL
Ashley P AlbaresItalyIvan Magalhaes PROPOSAL
Rodrigues O DarakjyItalyBernardo Dominic NEGOTIATION
Ricardo R FigeroaCanadaAmy Elsner NEGOTIATION
Ashley C PaprockiGermanyIoni Bowcher NEGOTIATION
Sinclair C ButtJapanElwin Sharvill NEGOTIATION
Maria T GillianUnited KingdomStephen Shaw QUALIFIED
Smith S TollnerArgentinaAnna Fali PROPOSAL
Ashley G FerenczItalyElwin Sharvill NEGOTIATION
Munro W BriddickJapanStephen Shaw UNQUALIFIED
David L ShinkoRussiaAsiya Javayant NEW
Ivar X CaldareraBrazilOnyama Limba UNQUALIFIED
Munro N WieserUnited KingdomAnna Fali UNQUALIFIED
Munro E CaldareraArgentinaStephen Shaw RENEWAL

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