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
Jefferson N OstroskyUnited KingdomIvan Magalhaes NEGOTIATION
Darci D WhobreyItalyAnna Fali UNQUALIFIED
Smith S KolmetzItalyIoni Bowcher UNQUALIFIED
Aika P TollnerArgentinaXuxue Feng QUALIFIED
James D GlickFranceAnna Fali RENEWAL
Alejandro R MaletSpainStephen Shaw UNQUALIFIED
Wickens T CaudyItalyBernardo Dominic NEW
Morrow O GlickRussiaBernardo Dominic PROPOSAL
Jennifer A SchemmerAustraliaAnna Fali RENEWAL
Greenwood E DilliardRussiaIvan Magalhaes PROPOSAL
Aika Q WieserBrazilOnyama Limba UNQUALIFIED
Greenwood O GauchoFranceAsiya Javayant RENEWAL
Rodrigues Z SlusarskiJapanElwin Sharvill RENEWAL
Jennifer Q SaylorsCanadaAmy Elsner QUALIFIED
Leon Z SergiGermanyIoni Bowcher NEGOTIATION
Mujtaba X DoeRussiaAmy Elsner QUALIFIED
Julie B CaudyBrazilStephen Shaw RENEWAL
Mujtaba E BriddickBrazilIvan Magalhaes RENEWAL
Rodrigues A WieserArgentinaIvan Magalhaes RENEWAL
David Z RulapaughGermanyStephen Shaw RENEWAL
Maria A MaletUnited KingdomStephen Shaw PROPOSAL
Ashley R StockhamRussiaAsiya Javayant PROPOSAL
Alejandro B NickaGermanyIoni Bowcher NEW
Clifford P ChuiIndiaBernardo Dominic NEGOTIATION
Claire E NickaBrazilIvan Magalhaes NEGOTIATION
Morrow I FollerUnited KingdomIoni Bowcher UNQUALIFIED
Aditya R NickaFranceElwin Sharvill UNQUALIFIED
Costa L CaldareraAustraliaBernardo Dominic RENEWAL
Clifford Q DilliardItalyAmy Elsner NEW
Cody X FollerArgentinaElwin Sharvill UNQUALIFIED
Jones A IturbideSpainAsiya Javayant QUALIFIED
Mayumi W InouyeUnited KingdomAsiya Javayant UNQUALIFIED
Kadeem K OstroskyArgentinaAnna Fali QUALIFIED
Aika E BowleySpainAnna Fali NEGOTIATION
Ivar X StockhamRussiaAsiya Javayant NEW
Adams W NickaRussiaElwin Sharvill PROPOSAL
Munro G DarakjyBrazilStephen Shaw UNQUALIFIED
Sinclair I KolmetzBrazilElwin Sharvill UNQUALIFIED
Ashley X OstroskyJapanXuxue Feng RENEWAL
Jefferson Q PoquetteBrazilXuxue Feng UNQUALIFIED
Deepesh L NestleBrazilStephen Shaw NEGOTIATION
Ashley W FollerCanadaElwin Sharvill RENEWAL
Aika B StensethBrazilIoni Bowcher NEW
Wickens R NestleIndiaAmy Elsner RENEWAL
Octavia J StensethAustraliaXuxue Feng NEGOTIATION
Maisha V GarufiIndiaElwin Sharvill NEW
Jefferson L SchemmerUnited KingdomAnna Fali RENEWAL
Wickens O DoeIndiaStephen Shaw RENEWAL
Jones R MorascaSpainStephen Shaw RENEWAL
Ivar T CaudyCanadaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Kadeem O PaprockiIndiaIvan Magalhaes UNQUALIFIED
Johnson G StockhamCanadaIoni Bowcher RENEWAL
James F KuskoFranceOnyama Limba NEGOTIATION
Smith T SchemmerFranceIoni Bowcher RENEWAL
Claire T DilliardUnited KingdomIoni Bowcher PROPOSAL
Maria B RimCanadaAsiya Javayant NEW
Adams W PoquetteArgentinaBernardo Dominic RENEWAL
Wickens B GillianArgentinaStephen Shaw NEGOTIATION
Sinclair U StockhamBrazilAnna Fali RENEWAL
Chavez S VenereItalyStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez Q FollerCanada2024-05-09Chapman, Ross E Esq UNQUALIFIED84Xuxue Feng
1001Leja P BowleyUnited Kingdom2024-04-11Commercial Press UNQUALIFIED53Ioni Bowcher
1002Ashley K StensethUnited Kingdom2024-04-16Feltz Printing Service QUALIFIED49Stephen Shaw
1003Rodrigues E IturbideUnited Kingdom2024-04-24Chapman, Ross E Esq QUALIFIED89Stephen Shaw
1004Clifford I FerenczItaly2024-04-22King, Christopher A Esq NEGOTIATION18Onyama Limba
1005Wickens S BriddickSpain2024-04-11Morlong Associates PROPOSAL5Amy Elsner
1006Deepesh G TollnerCanada2024-04-14Printing Dimensions RENEWAL0Ivan Magalhaes
1007David Q MorascaAustralia2024-04-30Feltz Printing Service UNQUALIFIED36Anna Fali
1008Murillo T PerinAustralia2024-04-25Feiner Bros UNQUALIFIED51Ioni Bowcher
1009Clifford W GarufiArgentina2024-04-11King, Christopher A Esq RENEWAL15Asiya Javayant
1010Jennifer Q IturbideItaly2024-04-16Chanay, Jeffrey A Esq QUALIFIED73Amy Elsner
1011Ivar E ButtArgentina2024-04-14Rousseaux, Michael Esq NEGOTIATION76Xuxue Feng
1012Mujtaba A PoquetteIndia2024-04-21King, Christopher A Esq QUALIFIED16Asiya Javayant
1013Alejandro L VenereJapan2024-04-28Buckley Miller Wright NEW74Asiya Javayant
1014Emily F SergiSpain2024-04-24Feltz Printing Service QUALIFIED53Asiya Javayant
1015Claire U KolmetzUnited Kingdom2024-04-29Buckley Miller Wright PROPOSAL13Xuxue Feng
1016Maisha A KolmetzRussia2024-04-14Morlong Associates NEW49Elwin Sharvill
1017Ashley R NickaFrance2024-05-07Chanay, Jeffrey A Esq QUALIFIED8Anna Fali
1018Tony A RutaFrance2024-04-15Chanay, Jeffrey A Esq PROPOSAL42Xuxue Feng
1019Tony E PoquetteItaly2024-04-16Printing Dimensions QUALIFIED21Xuxue Feng
1020Sinclair F SergiCanada2024-05-07Buckley Miller Wright UNQUALIFIED24Ivan Magalhaes
1021Smith F MacleadSpain2024-04-27Chapman, Ross E Esq NEGOTIATION5Anna Fali
1022Faith D MaletFrance2024-04-26Chapman, Ross E Esq UNQUALIFIED56Stephen Shaw
1023Francesco O BriddickSpain2024-04-17Truhlar And Truhlar Attys QUALIFIED96Onyama Limba
1024Leja J SlusarskiGermany2024-04-14Chapman, Ross E Esq PROPOSAL68Amy Elsner
1025Adams G KolmetzSpain2024-04-23Commercial Press PROPOSAL94Asiya Javayant
1026Munro Q MacleadFrance2024-05-07Rousseaux, Michael Esq NEW92Ivan Magalhaes
1027Ivar G RulapaughCanada2024-05-02Chapman, Ross E Esq NEGOTIATION68Bernardo Dominic
1028Maria Z BologniaGermany2024-04-28Morlong Associates RENEWAL21Asiya Javayant
1029Sinclair P VenereItaly2024-05-08Chanay, Jeffrey A Esq QUALIFIED15Amy Elsner
1030Salvatore K BowleyArgentina2024-04-17Feiner Bros NEGOTIATION86Amy Elsner
1031Stacey F ShinkoJapan2024-05-08Rousseaux, Michael Esq RENEWAL78Xuxue Feng
1032David A MacleadBrazil2024-04-15Rousseaux, Michael Esq UNQUALIFIED12Elwin Sharvill
1033Claire W VocelkaRussia2024-05-01Chapman, Ross E Esq RENEWAL52Xuxue Feng
1034James I WieserItaly2024-05-10Chanay, Jeffrey A Esq RENEWAL13Amy Elsner
1035Claire Q TollnerSpain2024-05-01Commercial Press NEW23Xuxue Feng
1036James K FerenczIndia2024-04-15Chanay, Jeffrey A Esq PROPOSAL78Ivan Magalhaes
1037Misaki K RimItaly2024-04-13Commercial Press QUALIFIED52Amy Elsner
1038Smith Y ChuiUnited Kingdom2024-04-18Truhlar And Truhlar Attys NEGOTIATION62Anna Fali
1039Jennifer V KolmetzGermany2024-05-09Rousseaux, Michael Esq QUALIFIED88Amy Elsner
1040Arvin E ChuiAustralia2024-04-14Chanay, Jeffrey A Esq NEGOTIATION97Xuxue Feng
1041Mujtaba I VocelkaArgentina2024-05-01Chanay, Jeffrey A Esq RENEWAL17Ivan Magalhaes
1042Jefferson J MaletRussia2024-04-24Feltz Printing Service QUALIFIED71Amy Elsner
1043Darci B CaldareraArgentina2024-04-20Truhlar And Truhlar Attys PROPOSAL0Onyama Limba
1044Morrow W RutaCanada2024-04-12Buckley Miller Wright RENEWAL13Elwin Sharvill
1045Kadeem M MacleadGermany2024-04-22Chapman, Ross E Esq NEW91Asiya Javayant
1046Juan D MaletFrance2024-05-09Morlong Associates UNQUALIFIED93Elwin Sharvill
1047Maria N BologniaGermany2024-05-10Commercial Press PROPOSAL27Ioni Bowcher
1048Murillo J BowleyFrance2024-05-02King, Christopher A Esq RENEWAL39Elwin Sharvill
1049Nicolas I StensethAustralia2024-05-06Truhlar And Truhlar Attys NEGOTIATION57Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Stacey M CaldareraGermanyAsiya Javayant QUALIFIED
Stacey G MaletJapanIvan Magalhaes PROPOSAL
David R PoquetteCanadaXuxue Feng RENEWAL
Silvio C TollnerBrazilStephen Shaw NEGOTIATION
Kaitlin E RutaArgentinaAnna Fali PROPOSAL
Ivar T CaudyBrazilIoni Bowcher NEGOTIATION
Leon A RoysterBrazilBernardo Dominic RENEWAL
Isabel A GlickUnited KingdomIoni Bowcher QUALIFIED
Deepesh N ChuiFranceOnyama Limba PROPOSAL
Cody O GauchoJapanAnna Fali UNQUALIFIED
Rodrigues U ButtItalyXuxue Feng UNQUALIFIED
Jones E GarufiRussiaElwin Sharvill NEGOTIATION
Mayumi K AmigonRussiaIvan Magalhaes PROPOSAL
Izzy L VenereIndiaIvan Magalhaes NEGOTIATION
Deepesh S KolmetzFranceIvan Magalhaes QUALIFIED
Johnson T GillianUnited KingdomXuxue Feng PROPOSAL
Ricardo K SergiSpainAsiya Javayant NEGOTIATION
Costa E FlosiUnited KingdomIvan Magalhaes PROPOSAL
Arvin S WaycottBrazilIoni Bowcher RENEWAL
Octavia F OstroskyIndiaAsiya Javayant PROPOSAL
Darci I WieserFranceIvan Magalhaes NEW
Munro A ButtUnited KingdomAsiya Javayant QUALIFIED
Smith E CampainJapanBernardo Dominic UNQUALIFIED
Kadeem K NickaRussiaAmy Elsner PROPOSAL
Leja N GauchoFranceAsiya Javayant PROPOSAL
Morrow A WaycottArgentinaIvan Magalhaes NEGOTIATION
Faith I BriddickCanadaStephen Shaw PROPOSAL
Isabel W OstroskyFranceIvan Magalhaes NEGOTIATION
Mujtaba A InouyeSpainOnyama Limba PROPOSAL
Leon E SlusarskiBrazilXuxue Feng QUALIFIED
Johnson F WieserSpainAmy Elsner QUALIFIED
Clifford Q WhobreyUnited KingdomAsiya Javayant QUALIFIED
Arvin U VocelkaRussiaElwin Sharvill PROPOSAL
Rodrigues E CampainArgentinaAmy Elsner NEW
Morrow O ButtSpainXuxue Feng NEW
Alejandro K InouyeUnited KingdomBernardo Dominic NEW
Julie O MaletItalyXuxue Feng RENEWAL
Maisha A GillianArgentinaStephen Shaw NEW
Rodrigues P FerenczUnited KingdomBernardo Dominic NEW
Octavia N VocelkaUnited KingdomIvan Magalhaes RENEWAL
Claire G GlickCanadaAnna Fali QUALIFIED
Aditya A CaudyCanadaElwin Sharvill UNQUALIFIED
Izzy A KolmetzItalyAmy Elsner RENEWAL
Leon Y MaletJapanAnna Fali UNQUALIFIED
Jefferson R KuskoFranceIvan Magalhaes NEW
Leon U OstroskyCanadaBernardo Dominic QUALIFIED
Faith N IturbideGermanyXuxue Feng RENEWAL
David U WieserGermanyAmy Elsner NEGOTIATION
Deepesh D FerenczFranceXuxue Feng UNQUALIFIED
Morrow S PaprockiIndiaAsiya Javayant QUALIFIED
Frozen Columns
Name
Smith P Sergi
Francesco E Kusko
Maria R Gaucho
Octavia R Oldroyd
James J Nestle
Nicolas S Campain
Aditya X Amigon
Mujtaba Z Figeroa
Tony V Dilliard
Stacey O Nestle
Munro W Inouye
Jones P Stenseth
Emily F Garufi
Aika O Poquette
Ricardo Z Stockham
Isabel R Stockham
Leja R Schemmer
Clifford Q Ferencz
Chavez J Morasca
James C Butt
Aditya W Kolmetz
Murillo X Figeroa
Leja W Caldarera
Maisha D Rulapaugh
Nicolas T Campain
Stacey J Wieser
Aruna Y Stockham
Chavez F Bowley
Jennifer A Ruta
Stacey C Ostrosky
Aika M Campain
Cody C Bowley
Mayumi Q Shinko
Octavia J Waycott
Kaitlin B Gaucho
Leja V Kusko
Jefferson T Gillian
Murillo Q Briddick
Adams M Doe
David O Whobrey
Munro M Campain
David I Kusko
Silvio W Flosi
Wickens H Iturbide
James F Flosi
Morrow Q Tollner
Kadeem T Paprocki
Jefferson I Rim
Aruna Z Nestle
Antonio M Royster
IdCountryDate
1000Russia2024-04-26
1001Germany2024-04-22
1002India2024-04-25
1003Canada2024-05-05
1004France2024-04-16
1005United Kingdom2024-04-25
1006United Kingdom2024-05-04
1007Russia2024-04-21
1008Russia2024-04-24
1009France2024-05-04
1010Italy2024-04-11
1011Germany2024-04-27
1012Argentina2024-04-16
1013Canada2024-05-08
1014Argentina2024-05-10
1015India2024-04-28
1016Germany2024-04-29
1017Canada2024-04-16
1018Germany2024-05-05
1019India2024-04-11
1020Italy2024-04-21
1021Germany2024-04-16
1022Brazil2024-04-15
1023Russia2024-04-20
1024Japan2024-05-04
1025United Kingdom2024-05-02
1026Russia2024-04-23
1027Brazil2024-04-30
1028Argentina2024-04-25
1029Canada2024-04-19
1030Italy2024-04-26
1031Russia2024-05-10
1032Italy2024-04-20
1033India2024-04-17
1034Italy2024-05-02
1035France2024-04-24
1036Italy2024-04-26
1037Japan2024-04-23
1038Japan2024-05-04
1039Brazil2024-04-11
1040Germany2024-04-18
1041France2024-05-03
1042Australia2024-04-18
1043France2024-04-20
1044Australia2024-04-14
1045Japan2024-04-18
1046Australia2024-05-10
1047Canada2024-04-20
1048Canada2024-04-23
1049Italy2024-04-12

On-Demand Data

NameIdCountryDate
James H Tollner1000Australia2024-04-21
Claire L Oldroyd1001United Kingdom2024-05-05
Salvatore U Foller1002United Kingdom2024-04-29
Salvatore F Malet1003Germany2024-04-12
Aditya Y Campain1004United Kingdom2024-04-23
Leja D Maclead1005Argentina2024-04-29
Maria A Schemmer1006Germany2024-05-03
Faith Q Venere1007Canada2024-05-03
Tony Q Amigon1008Brazil2024-05-09
Nicolas R Briddick1009Argentina2024-05-08
Greenwood S Stockham1010United Kingdom2024-05-03
Kaitlin Y Perin1011Spain2024-04-26
Salvatore Q Shinko1012Italy2024-05-08
Jeanfrancois F Stockham1013Italy2024-05-04
Tony M Nicka1014Australia2024-05-06
Nicolas V Bowley1015Brazil2024-04-26
Isabel R Nicka1016Japan2024-04-23
James E Dilliard1017United Kingdom2024-04-22
Isabel O Gaucho1018Brazil2024-04-23
Clifford A Poquette1019Japan2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon K DilliardGermanyAnna Fali UNQUALIFIED
James Y WaycottUnited KingdomIoni Bowcher QUALIFIED
Murillo A BriddickBrazilElwin Sharvill UNQUALIFIED
Kadeem A MaletFranceIoni Bowcher NEW
Wickens V RoysterCanadaElwin Sharvill UNQUALIFIED
Kadeem C NickaBrazilAsiya Javayant UNQUALIFIED
Tony L AmigonArgentinaAsiya Javayant PROPOSAL
Claire U GarufiIndiaAnna Fali QUALIFIED
Octavia G FerenczAustraliaAmy Elsner RENEWAL
Chavez O InouyeAustraliaAnna Fali NEGOTIATION
Faith L AlbaresBrazilIoni Bowcher NEW
Clifford W FlosiCanadaIvan Magalhaes NEW
Tony K KuskoAustraliaAnna Fali UNQUALIFIED
Aruna G StensethArgentinaIoni Bowcher PROPOSAL
Francesco A CaudyIndiaXuxue Feng RENEWAL
Tony G MaletJapanBernardo Dominic QUALIFIED
Maisha N KuskoItalyOnyama Limba UNQUALIFIED
Mayumi T RulapaughSpainAsiya Javayant NEW
Kaitlin O RulapaughFranceAmy Elsner QUALIFIED
Stacey H KolmetzFranceAnna Fali QUALIFIED
Maisha D RoysterFranceAnna Fali UNQUALIFIED
Rodrigues E IturbideFranceIoni Bowcher RENEWAL
Munro A OldroydJapanAnna Fali UNQUALIFIED
Izzy Q KuskoFranceXuxue Feng UNQUALIFIED
Jennifer P CampainArgentinaIvan Magalhaes NEW
Ivar Z BowleyRussiaAnna Fali PROPOSAL
Kadeem G NestleAustraliaIoni Bowcher NEW
Munro P MacleadIndiaIoni Bowcher PROPOSAL
Darci J VenereJapanAmy Elsner UNQUALIFIED
Alejandro D BowleyJapanAnna Fali RENEWAL
Rodrigues G KolmetzGermanyXuxue Feng QUALIFIED
Ashley S AlbaresArgentinaAsiya Javayant NEGOTIATION
Claire A KolmetzBrazilAnna Fali PROPOSAL
Maisha M VenereGermanyAmy Elsner NEW
Adams Y FerenczRussiaOnyama Limba NEW
Isabel Z GauchoGermanyBernardo Dominic UNQUALIFIED
Costa U AlbaresGermanyAsiya Javayant QUALIFIED
Jeanfrancois M VenereUnited KingdomIvan Magalhaes NEW
Julie V MorascaAustraliaOnyama Limba QUALIFIED
Octavia B RimItalyStephen 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>