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
Sinclair Z GillianFranceStephen Shaw UNQUALIFIED
Antonio K PerinSpainXuxue Feng UNQUALIFIED
Misaki A FlosiSpainIvan Magalhaes UNQUALIFIED
Smith K GarufiBrazilIvan Magalhaes RENEWAL
Smith M RulapaughAustraliaOnyama Limba PROPOSAL
Faith Q OldroydBrazilXuxue Feng UNQUALIFIED
Isabel G PaprockiBrazilAnna Fali PROPOSAL
Ricardo P DilliardUnited KingdomAnna Fali NEGOTIATION
Rodrigues K VenereUnited KingdomAnna Fali PROPOSAL
David E FerenczGermanyIoni Bowcher QUALIFIED
Clifford V DilliardRussiaIvan Magalhaes PROPOSAL
Claire O WieserAustraliaOnyama Limba NEW
Aditya Q MaletRussiaAmy Elsner PROPOSAL
Greenwood B RulapaughIndiaAmy Elsner NEGOTIATION
Maisha Z ChuiIndiaAsiya Javayant NEGOTIATION
Misaki D VocelkaBrazilOnyama Limba NEGOTIATION
Antonio G RimArgentinaStephen Shaw RENEWAL
Murillo W SchemmerSpainAmy Elsner RENEWAL
Ricardo L SergiJapanBernardo Dominic NEW
Jefferson H RutaArgentinaAsiya Javayant UNQUALIFIED
Francesco J BologniaRussiaAsiya Javayant QUALIFIED
Deepesh V CampainItalyAsiya Javayant NEW
Wickens O DarakjyItalyOnyama Limba UNQUALIFIED
Greenwood J FerenczFranceAnna Fali NEW
Jefferson D RimJapanIoni Bowcher NEW
Maisha S ChuiUnited KingdomOnyama Limba QUALIFIED
Antonio X NickaIndiaAsiya Javayant NEGOTIATION
Leon W TollnerRussiaAnna Fali PROPOSAL
Aruna Z WieserCanadaStephen Shaw NEGOTIATION
Salvatore H NickaItalyOnyama Limba QUALIFIED
Juan Y ButtUnited KingdomIvan Magalhaes NEGOTIATION
Antonio Y WhobreyRussiaStephen Shaw NEW
Smith L WieserItalyStephen Shaw PROPOSAL
Deepesh H WieserIndiaIvan Magalhaes QUALIFIED
Emily N MaletBrazilAsiya Javayant UNQUALIFIED
Deepesh O RutaSpainStephen Shaw NEW
Emily P KolmetzItalyAsiya Javayant RENEWAL
Maisha D KolmetzIndiaAmy Elsner UNQUALIFIED
Silvio C SlusarskiUnited KingdomAmy Elsner PROPOSAL
Izzy O CaudyArgentinaOnyama Limba NEGOTIATION
Mujtaba E KolmetzUnited KingdomIvan Magalhaes NEW
Smith B CaldareraSpainStephen Shaw PROPOSAL
Maria K CaldareraAustraliaElwin Sharvill NEGOTIATION
Aditya Y SchemmerJapanIoni Bowcher UNQUALIFIED
Silvio S RulapaughUnited KingdomIvan Magalhaes NEW
Jones Y AlbaresAustraliaXuxue Feng QUALIFIED
Jefferson H KuskoItalyOnyama Limba QUALIFIED
Tony S KolmetzAustraliaIvan Magalhaes QUALIFIED
Arvin E GillianBrazilIvan Magalhaes QUALIFIED
David V MaletItalyAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Francesco G ChuiBrazilXuxue Feng UNQUALIFIED
Salvatore Y OstroskyAustraliaStephen Shaw PROPOSAL
Darci U BriddickGermanyIoni Bowcher QUALIFIED
Alejandro Q FollerItalyXuxue Feng UNQUALIFIED
Octavia B VocelkaItalyOnyama Limba QUALIFIED
Deepesh Q VenereRussiaXuxue Feng PROPOSAL
Isabel Y WieserJapanAsiya Javayant UNQUALIFIED
Tony W RimCanadaAsiya Javayant PROPOSAL
Stacey B DoeSpainAsiya Javayant QUALIFIED
Maisha E FigeroaItalyAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro V MaletAustralia2024-05-03Chapman, Ross E Esq PROPOSAL11Onyama Limba
1001Jefferson N InouyeItaly2024-04-20Rousseaux, Michael Esq QUALIFIED54Asiya Javayant
1002Izzy T InouyeArgentina2024-04-17Dorl, James J Esq QUALIFIED78Bernardo Dominic
1003Ashley I PaprockiAustralia2024-05-02Feltz Printing Service NEGOTIATION67Stephen Shaw
1004Mujtaba I FlosiUnited Kingdom2024-04-19Truhlar And Truhlar Attys RENEWAL31Asiya Javayant
1005Aika U MacleadJapan2024-04-09Printing Dimensions UNQUALIFIED81Ivan Magalhaes
1006Clifford T BowleyIndia2024-04-16Commercial Press NEW48Elwin Sharvill
1007Aruna I PerinSpain2024-04-27Printing Dimensions NEGOTIATION59Ioni Bowcher
1008Clifford B FigeroaAustralia2024-04-18King, Christopher A Esq QUALIFIED53Anna Fali
1009Chavez H GauchoBrazil2024-04-28Dorl, James J Esq PROPOSAL85Stephen Shaw
1010Adams S AlbaresUnited Kingdom2024-04-25Dorl, James J Esq PROPOSAL59Ioni Bowcher
1011Leon D KuskoGermany2024-04-08Printing Dimensions PROPOSAL24Anna Fali
1012Darci M MorascaJapan2024-04-21Feiner Bros NEGOTIATION59Anna Fali
1013Mayumi W BriddickCanada2024-04-16Feltz Printing Service UNQUALIFIED39Bernardo Dominic
1014Clifford P GillianItaly2024-04-18King, Christopher A Esq QUALIFIED85Onyama Limba
1015Murillo R RoysterFrance2024-04-18Feltz Printing Service NEW77Amy Elsner
1016Alejandro K NickaBrazil2024-04-25Benton, John B Jr PROPOSAL82Asiya Javayant
1017Tony A AmigonCanada2024-04-15Rousseaux, Michael Esq RENEWAL66Asiya Javayant
1018Misaki F KolmetzSpain2024-04-14Benton, John B Jr UNQUALIFIED48Stephen Shaw
1019Silvio O VocelkaUnited Kingdom2024-05-01Commercial Press NEW42Xuxue Feng
1020Ashley B PerinArgentina2024-05-02Chapman, Ross E Esq NEGOTIATION22Elwin Sharvill
1021Jennifer I SergiAustralia2024-04-24Chapman, Ross E Esq RENEWAL38Asiya Javayant
1022Ivar L SlusarskiArgentina2024-04-14Truhlar And Truhlar Attys UNQUALIFIED80Amy Elsner
1023Ricardo F KuskoRussia2024-04-16Chemel, James L Cpa PROPOSAL32Ioni Bowcher
1024Jefferson V MorascaBrazil2024-04-29Rangoni Of Florence NEGOTIATION28Bernardo Dominic
1025James J MarrierArgentina2024-04-07Chapman, Ross E Esq PROPOSAL28Xuxue Feng
1026Stacey M DilliardAustralia2024-04-30Rousseaux, Michael Esq UNQUALIFIED46Ivan Magalhaes
1027Morrow E RoysterGermany2024-04-25Feltz Printing Service QUALIFIED69Asiya Javayant
1028Isabel E AlbaresJapan2024-04-11Chapman, Ross E Esq QUALIFIED44Onyama Limba
1029Sinclair A DilliardGermany2024-04-15Rangoni Of Florence UNQUALIFIED59Elwin Sharvill
1030Leja E PaprockiSpain2024-04-13Morlong Associates NEGOTIATION58Asiya Javayant
1031Salvatore W GarufiAustralia2024-04-24Morlong Associates PROPOSAL3Onyama Limba
1032Jefferson A DoeGermany2024-04-23Dorl, James J Esq QUALIFIED42Stephen Shaw
1033Tony L RulapaughIndia2024-04-14Printing Dimensions PROPOSAL1Onyama Limba
1034Juan K CaldareraItaly2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED18Xuxue Feng
1035Clifford V DoeSpain2024-04-15Printing Dimensions UNQUALIFIED4Ivan Magalhaes
1036Stacey A OstroskySpain2024-04-13Buckley Miller Wright NEW8Amy Elsner
1037Morrow I DarakjyJapan2024-04-13Morlong Associates RENEWAL50Anna Fali
1038Jeanfrancois E BowleyUnited Kingdom2024-04-07Buckley Miller Wright NEGOTIATION54Ivan Magalhaes
1039Ricardo C GlickJapan2024-05-03Chemel, James L Cpa RENEWAL16Ivan Magalhaes
1040David R AmigonArgentina2024-04-22Feltz Printing Service RENEWAL35Bernardo Dominic
1041Munro Z WhobreyArgentina2024-04-18Rousseaux, Michael Esq QUALIFIED35Bernardo Dominic
1042Chavez K MaletBrazil2024-04-20Feiner Bros PROPOSAL99Elwin Sharvill
1043Maisha V BologniaAustralia2024-04-18Buckley Miller Wright QUALIFIED43Asiya Javayant
1044Morrow S SaylorsGermany2024-04-23Rangoni Of Florence UNQUALIFIED52Ivan Magalhaes
1045Munro S OstroskyJapan2024-04-18Morlong Associates RENEWAL65Elwin Sharvill
1046Deepesh E RimBrazil2024-04-23Morlong Associates NEW7Xuxue Feng
1047Juan P GarufiFrance2024-04-10King, Christopher A Esq UNQUALIFIED13Anna Fali
1048Jones I ButtGermany2024-04-12King, Christopher A Esq UNQUALIFIED80Elwin Sharvill
1049Mujtaba B PerinRussia2024-04-28King, Christopher A Esq NEW83Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Aika N DilliardUnited KingdomXuxue Feng NEW
Mujtaba B CaldareraArgentinaAmy Elsner UNQUALIFIED
Francesco C PerinArgentinaAsiya Javayant RENEWAL
Smith N InouyeJapanAnna Fali UNQUALIFIED
Greenwood Q BowleyItalyStephen Shaw NEW
Aditya U WieserFranceIvan Magalhaes RENEWAL
Aruna N BowleyCanadaAnna Fali NEW
Chavez Z CampainArgentinaAmy Elsner PROPOSAL
Sinclair U TollnerAustraliaIoni Bowcher NEGOTIATION
Rodrigues L ButtSpainIvan Magalhaes NEW
Julie I SaylorsRussiaBernardo Dominic QUALIFIED
Aika W WieserUnited KingdomBernardo Dominic PROPOSAL
Munro O MacleadAustraliaAsiya Javayant NEW
Nicolas I GauchoArgentinaIvan Magalhaes NEGOTIATION
Jefferson K DarakjySpainOnyama Limba QUALIFIED
Maria A KolmetzIndiaBernardo Dominic NEGOTIATION
Juan H PerinArgentinaXuxue Feng UNQUALIFIED
Ricardo U ShinkoUnited KingdomXuxue Feng RENEWAL
Salvatore G ShinkoIndiaBernardo Dominic NEGOTIATION
Francesco B CaudyUnited KingdomAsiya Javayant RENEWAL
Sinclair N WaycottSpainOnyama Limba QUALIFIED
Jeanfrancois V RoysterArgentinaXuxue Feng RENEWAL
Misaki G MorascaGermanyOnyama Limba QUALIFIED
Jennifer V TollnerIndiaBernardo Dominic QUALIFIED
Jennifer Z GarufiIndiaAmy Elsner PROPOSAL
Darci G SchemmerItalyStephen Shaw UNQUALIFIED
Mujtaba W KuskoJapanElwin Sharvill RENEWAL
Isabel Z WaycottBrazilXuxue Feng UNQUALIFIED
Maisha C AlbaresAustraliaStephen Shaw NEGOTIATION
Francesco P BriddickAustraliaStephen Shaw PROPOSAL
Silvio B VocelkaCanadaElwin Sharvill UNQUALIFIED
Octavia L VocelkaGermanyIvan Magalhaes RENEWAL
Jones F NickaJapanAsiya Javayant NEGOTIATION
Darci T TollnerSpainAsiya Javayant QUALIFIED
Antonio S StensethRussiaElwin Sharvill QUALIFIED
Johnson X AlbaresRussiaAmy Elsner NEGOTIATION
Darci K OldroydGermanyAsiya Javayant UNQUALIFIED
Julie Y CampainItalyOnyama Limba QUALIFIED
Darci R NickaGermanyAsiya Javayant PROPOSAL
Juan C ChuiJapanStephen Shaw NEW
Faith I BowleyItalyAnna Fali NEGOTIATION
Cody Y PerinCanadaStephen Shaw PROPOSAL
Francesco O WaycottSpainElwin Sharvill PROPOSAL
Nicolas Q DilliardUnited KingdomOnyama Limba QUALIFIED
Juan R CaudyItalyAnna Fali QUALIFIED
Jefferson P AmigonFranceBernardo Dominic NEGOTIATION
Julie A WieserJapanOnyama Limba NEW
Francesco C StockhamFranceAnna Fali QUALIFIED
Morrow I WhobreyJapanAsiya Javayant QUALIFIED
Deepesh Y PaprockiSpainIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Aika N Iturbide
Octavia Q Stenseth
Antonio L Dilliard
Rodrigues N Bolognia
Rodrigues E Gillian
Jefferson S Stockham
Nicolas C Nestle
Morrow H Gaucho
Antonio R Schemmer
Arvin M Darakjy
Greenwood X Wieser
Costa K Saylors
Leja R Morasca
Izzy Y Foller
Isabel G Rulapaugh
Aika Y Figeroa
Salvatore J Amigon
Izzy M Nicka
David E Whobrey
Antonio J Flosi
Nicolas Z Ferencz
Stacey U Paprocki
Julie C Darakjy
Adams F Morasca
Murillo A Dilliard
Jones X Kusko
Rodrigues B Bowley
David N Sergi
Murillo G Butt
Ashley X Bolognia
Murillo Y Garufi
Mujtaba X Bowley
Tony G Rim
Sinclair Q Campain
Nicolas I Ferencz
Murillo S Inouye
Jeanfrancois N Morasca
Aditya H Poquette
Misaki M Stockham
Leja K Stenseth
Clifford D Malet
Mayumi I Chui
Rodrigues S Foller
Emily I Sergi
Rodrigues S Nestle
Arvin R Caudy
Francesco P Gaucho
Silvio D Wieser
Murillo E Morasca
Ricardo V Doe
IdCountryDate
1000Germany2024-04-29
1001Brazil2024-04-12
1002Brazil2024-05-04
1003Argentina2024-04-17
1004Russia2024-04-27
1005Brazil2024-05-04
1006Germany2024-04-08
1007Argentina2024-05-01
1008Germany2024-04-15
1009Italy2024-05-05
1010Russia2024-04-25
1011Russia2024-04-22
1012Brazil2024-04-20
1013Canada2024-05-03
1014France2024-05-05
1015Japan2024-05-02
1016United Kingdom2024-04-11
1017Brazil2024-05-03
1018Japan2024-04-17
1019France2024-04-27
1020Japan2024-04-07
1021United Kingdom2024-04-14
1022Germany2024-04-17
1023Canada2024-04-26
1024Italy2024-04-27
1025United Kingdom2024-04-20
1026Japan2024-05-04
1027Russia2024-04-22
1028Brazil2024-04-20
1029Italy2024-04-23
1030France2024-04-07
1031Germany2024-04-19
1032Italy2024-04-16
1033Germany2024-04-12
1034Spain2024-04-09
1035France2024-04-21
1036Germany2024-04-20
1037Australia2024-04-28
1038Brazil2024-05-02
1039Brazil2024-04-29
1040Germany2024-04-12
1041Russia2024-04-29
1042Italy2024-05-03
1043Japan2024-05-01
1044India2024-04-09
1045Australia2024-04-20
1046Japan2024-04-12
1047United Kingdom2024-04-13
1048Russia2024-04-23
1049Argentina2024-04-14

On-Demand Data

NameIdCountryDate
Smith Q Amigon1000Italy2024-04-22
Claire C Whobrey1001Brazil2024-04-23
Maisha L Briddick1002Japan2024-04-09
Tony D Garufi1003France2024-04-08
Francesco W Rulapaugh1004France2024-05-04
Maria M Waycott1005Argentina2024-04-26
Johnson D Garufi1006Spain2024-04-29
Wickens F Stockham1007Germany2024-04-22
Tony Y Morasca1008India2024-04-12
Chavez L Whobrey1009Brazil2024-04-19
Aruna T Butt1010Argentina2024-04-17
Adams Q Tollner1011Italy2024-04-29
Jones X Kolmetz1012Italy2024-04-08
Jefferson H Sergi1013Japan2024-04-09
Costa C Venere1014Spain2024-04-14
Tony A Darakjy1015India2024-04-25
Jefferson U Saylors1016India2024-04-21
Jefferson M Caudy1017France2024-04-10
Johnson T Gillian1018Spain2024-04-15
Maria O Bowley1019Germany2024-05-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair E WieserArgentinaAmy Elsner RENEWAL
Aditya B MacleadJapanIvan Magalhaes NEGOTIATION
Chavez C SchemmerBrazilAnna Fali PROPOSAL
Leon C MaletIndiaOnyama Limba PROPOSAL
Tony K SlusarskiArgentinaElwin Sharvill NEGOTIATION
Julie V IturbideItalyIvan Magalhaes RENEWAL
David D BowleyUnited KingdomIoni Bowcher UNQUALIFIED
Sinclair F SchemmerArgentinaAmy Elsner RENEWAL
Juan I CampainJapanIvan Magalhaes RENEWAL
Octavia B CaudyUnited KingdomStephen Shaw QUALIFIED
Kaitlin W RoysterFranceAsiya Javayant UNQUALIFIED
James G StensethUnited KingdomAmy Elsner QUALIFIED
Murillo Y CaldareraArgentinaAnna Fali UNQUALIFIED
Ashley I CaudyArgentinaIoni Bowcher RENEWAL
Leon G ButtCanadaIoni Bowcher PROPOSAL
Rodrigues I IturbideJapanAnna Fali RENEWAL
Claire R AlbaresUnited KingdomStephen Shaw RENEWAL
Deepesh T GillianJapanBernardo Dominic PROPOSAL
Rodrigues E MarrierIndiaStephen Shaw NEGOTIATION
Mujtaba N StensethIndiaAmy Elsner UNQUALIFIED
Antonio V NickaJapanStephen Shaw NEW
Maisha N CampainAustraliaOnyama Limba NEGOTIATION
Wickens W GillianJapanAmy Elsner NEGOTIATION
Claire E FollerGermanyIoni Bowcher UNQUALIFIED
Jeanfrancois M CaldareraIndiaIoni Bowcher NEGOTIATION
Izzy E BologniaUnited KingdomIoni Bowcher QUALIFIED
Izzy P GarufiAustraliaXuxue Feng QUALIFIED
Rodrigues R StensethAustraliaElwin Sharvill QUALIFIED
Aruna E AlbaresFranceIvan Magalhaes UNQUALIFIED
Mujtaba H StensethFranceOnyama Limba QUALIFIED
Aditya G RimJapanIvan Magalhaes UNQUALIFIED
Chavez R WaycottCanadaXuxue Feng QUALIFIED
Smith I WhobreyGermanyAsiya Javayant RENEWAL
Alejandro P RoysterJapanStephen Shaw PROPOSAL
Claire U DilliardIndiaAnna Fali UNQUALIFIED
Antonio E SaylorsFranceBernardo Dominic NEW
Murillo X BologniaGermanyElwin Sharvill PROPOSAL
Ashley I ChuiRussiaAmy Elsner NEW
Emily T SlusarskiJapanOnyama Limba UNQUALIFIED
Aika B MaletCanadaAsiya Javayant UNQUALIFIED

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