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
Octavia N ChuiItalyXuxue Feng NEW
Julie X ButtSpainOnyama Limba NEW
Jones Y DilliardAustraliaElwin Sharvill PROPOSAL
Arvin C CampainFranceBernardo Dominic NEGOTIATION
Jennifer E WieserSpainAsiya Javayant NEGOTIATION
Smith J PoquetteFranceBernardo Dominic PROPOSAL
Izzy F ChuiAustraliaStephen Shaw QUALIFIED
Adams T RimAustraliaBernardo Dominic NEGOTIATION
Kadeem F SergiAustraliaAnna Fali RENEWAL
Deepesh A CaudyUnited KingdomAsiya Javayant UNQUALIFIED
Clifford D AlbaresIndiaElwin Sharvill QUALIFIED
Izzy G RimSpainIvan Magalhaes PROPOSAL
Sinclair N MaletUnited KingdomOnyama Limba NEW
Greenwood G DilliardAustraliaIvan Magalhaes NEGOTIATION
Morrow V VocelkaJapanElwin Sharvill NEGOTIATION
Antonio S MaletGermanyStephen Shaw UNQUALIFIED
Costa Y DilliardIndiaAsiya Javayant QUALIFIED
Mayumi T FlosiRussiaBernardo Dominic QUALIFIED
Maisha Y BowleyGermanyAmy Elsner PROPOSAL
Deepesh X VenereItalyStephen Shaw RENEWAL
Leja T TollnerRussiaAnna Fali RENEWAL
Isabel V MorascaArgentinaStephen Shaw UNQUALIFIED
Leon E GarufiItalyAnna Fali RENEWAL
Kadeem F GauchoIndiaAnna Fali RENEWAL
Ricardo O IturbideIndiaElwin Sharvill QUALIFIED
Rodrigues Y RoysterJapanXuxue Feng NEGOTIATION
Kaitlin L BowleyIndiaXuxue Feng QUALIFIED
Tony C GarufiBrazilBernardo Dominic PROPOSAL
Emily N SchemmerAustraliaAnna Fali QUALIFIED
Cody V GauchoBrazilIoni Bowcher NEGOTIATION
Leon Z GlickArgentinaStephen Shaw NEW
Smith B FlosiJapanStephen Shaw RENEWAL
Leja A SergiAustraliaIoni Bowcher NEGOTIATION
Cody H BologniaArgentinaXuxue Feng NEW
Mayumi N MaletCanadaStephen Shaw UNQUALIFIED
Mayumi E DarakjyIndiaStephen Shaw NEW
Maria P PerinJapanAmy Elsner RENEWAL
Kaitlin U KolmetzAustraliaAmy Elsner QUALIFIED
Claire S AlbaresIndiaXuxue Feng QUALIFIED
Adams E MarrierRussiaXuxue Feng UNQUALIFIED
Greenwood M SergiItalyStephen Shaw RENEWAL
Tony G WaycottAustraliaAsiya Javayant RENEWAL
Salvatore W VocelkaBrazilOnyama Limba UNQUALIFIED
Clifford D OstroskyJapanOnyama Limba RENEWAL
Salvatore D WieserSpainOnyama Limba PROPOSAL
Adams P ChuiUnited KingdomIoni Bowcher RENEWAL
Alejandro S SaylorsCanadaAmy Elsner QUALIFIED
Leon R MorascaUnited KingdomIoni Bowcher NEW
Clifford Q GarufiItalyAsiya Javayant RENEWAL
Jeanfrancois Q ButtGermanyAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Misaki K GauchoUnited KingdomXuxue Feng RENEWAL
Maisha G FerenczAustraliaBernardo Dominic PROPOSAL
Deepesh N SaylorsJapanIoni Bowcher PROPOSAL
Jeanfrancois V BowleyIndiaStephen Shaw QUALIFIED
Jeanfrancois M KolmetzJapanXuxue Feng QUALIFIED
Emily J GarufiAustraliaAnna Fali UNQUALIFIED
Murillo U FerenczBrazilBernardo Dominic QUALIFIED
Smith C PaprockiUnited KingdomStephen Shaw NEW
Misaki W WieserJapanStephen Shaw PROPOSAL
Johnson V SchemmerCanadaOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood M MorascaUnited Kingdom2024-04-06Feltz Printing Service PROPOSAL85Ivan Magalhaes
1001Jones F OstroskyUnited Kingdom2024-04-23Dorl, James J Esq RENEWAL99Bernardo Dominic
1002Octavia J TollnerAustralia2024-04-27Rousseaux, Michael Esq PROPOSAL43Amy Elsner
1003Deepesh N GlickSpain2024-05-03Chanay, Jeffrey A Esq NEGOTIATION78Asiya Javayant
1004Kadeem M RimCanada2024-05-05Benton, John B Jr PROPOSAL35Amy Elsner
1005Adams Z SaylorsArgentina2024-04-23Feltz Printing Service NEGOTIATION19Asiya Javayant
1006Murillo D PerinGermany2024-04-29Commercial Press UNQUALIFIED34Stephen Shaw
1007Aruna F DilliardRussia2024-04-07Feiner Bros RENEWAL14Elwin Sharvill
1008Claire K KuskoRussia2024-04-23Commercial Press QUALIFIED45Onyama Limba
1009Ricardo D WieserFrance2024-05-05Truhlar And Truhlar Attys NEW73Anna Fali
1010Aika V DilliardCanada2024-04-07Chanay, Jeffrey A Esq QUALIFIED49Ioni Bowcher
1011Isabel E SlusarskiFrance2024-05-03Chapman, Ross E Esq NEW92Elwin Sharvill
1012Maria C SchemmerSpain2024-04-13Dorl, James J Esq QUALIFIED19Bernardo Dominic
1013Darci Y FigeroaSpain2024-04-08Benton, John B Jr NEGOTIATION44Ivan Magalhaes
1014Nicolas R DoeUnited Kingdom2024-04-09Printing Dimensions PROPOSAL58Stephen Shaw
1015Jones K KuskoFrance2024-04-08Commercial Press UNQUALIFIED28Stephen Shaw
1016Salvatore B DoeArgentina2024-04-29Benton, John B Jr NEGOTIATION92Ivan Magalhaes
1017Cody N PaprockiUnited Kingdom2024-04-23Feltz Printing Service UNQUALIFIED89Onyama Limba
1018Leon J MaletJapan2024-04-16Dorl, James J Esq PROPOSAL94Ioni Bowcher
1019Emily Q StockhamArgentina2024-04-14Chanay, Jeffrey A Esq NEGOTIATION13Ioni Bowcher
1020Aditya X OldroydCanada2024-04-15Chanay, Jeffrey A Esq UNQUALIFIED67Onyama Limba
1021Izzy V GlickUnited Kingdom2024-04-22Commercial Press QUALIFIED69Xuxue Feng
1022David S RutaGermany2024-04-08Rangoni Of Florence QUALIFIED85Asiya Javayant
1023Nicolas A TollnerArgentina2024-04-06Chanay, Jeffrey A Esq NEGOTIATION76Onyama Limba
1024Kaitlin Y StensethGermany2024-04-16Truhlar And Truhlar Attys NEGOTIATION71Asiya Javayant
1025Nicolas M GauchoGermany2024-04-08Rangoni Of Florence RENEWAL25Elwin Sharvill
1026Octavia N KuskoJapan2024-04-08Dorl, James J Esq QUALIFIED84Asiya Javayant
1027Costa I KolmetzUnited Kingdom2024-04-10Truhlar And Truhlar Attys PROPOSAL32Asiya Javayant
1028Izzy E SchemmerIndia2024-04-18Morlong Associates NEW99Ioni Bowcher
1029Emily Y StensethJapan2024-05-04Benton, John B Jr QUALIFIED70Elwin Sharvill
1030David K CaudyJapan2024-04-23Morlong Associates NEW21Onyama Limba
1031Tony H GlickIndia2024-04-11King, Christopher A Esq NEGOTIATION54Onyama Limba
1032Mujtaba A MacleadBrazil2024-04-21Benton, John B Jr NEW58Anna Fali
1033Isabel H OldroydUnited Kingdom2024-04-29Rangoni Of Florence QUALIFIED80Bernardo Dominic
1034Octavia I SergiBrazil2024-04-22Chemel, James L Cpa RENEWAL45Elwin Sharvill
1035David J InouyeUnited Kingdom2024-05-02Feiner Bros QUALIFIED83Elwin Sharvill
1036Mujtaba Z KolmetzBrazil2024-04-16Feltz Printing Service NEW42Bernardo Dominic
1037Francesco O WhobreyFrance2024-05-01Buckley Miller Wright UNQUALIFIED58Ivan Magalhaes
1038James O RimRussia2024-04-26Chapman, Ross E Esq NEGOTIATION88Asiya Javayant
1039Silvio S MaletItaly2024-05-05Buckley Miller Wright QUALIFIED69Ivan Magalhaes
1040Clifford G MacleadIndia2024-04-06Rangoni Of Florence PROPOSAL1Xuxue Feng
1041Clifford J BowleyAustralia2024-04-17Benton, John B Jr PROPOSAL84Ioni Bowcher
1042Murillo O AmigonIndia2024-04-21Feiner Bros PROPOSAL7Ioni Bowcher
1043Johnson D FigeroaRussia2024-04-19Chanay, Jeffrey A Esq PROPOSAL75Xuxue Feng
1044Aruna H PaprockiBrazil2024-05-05Commercial Press NEW28Bernardo Dominic
1045David W OldroydBrazil2024-04-26Chanay, Jeffrey A Esq QUALIFIED66Bernardo Dominic
1046Stacey T KuskoBrazil2024-04-26Rangoni Of Florence RENEWAL3Stephen Shaw
1047Murillo B FigeroaGermany2024-04-09King, Christopher A Esq PROPOSAL3Onyama Limba
1048Mayumi Q GarufiUnited Kingdom2024-04-26Benton, John B Jr QUALIFIED36Asiya Javayant
1049Jeanfrancois H StockhamGermany2024-04-18Buckley Miller Wright NEGOTIATION51Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Francesco S RimBrazilXuxue Feng NEW
Juan E GlickIndiaIoni Bowcher QUALIFIED
Stacey Q DilliardCanadaAsiya Javayant RENEWAL
Wickens O FlosiJapanAsiya Javayant PROPOSAL
Jones J IturbideIndiaXuxue Feng RENEWAL
Claire P StensethGermanyXuxue Feng QUALIFIED
Tony I CampainItalyAmy Elsner UNQUALIFIED
Isabel R RulapaughGermanyElwin Sharvill NEGOTIATION
Francesco P GlickAustraliaOnyama Limba NEW
Salvatore P RoysterBrazilBernardo Dominic PROPOSAL
Johnson Y OldroydCanadaBernardo Dominic NEGOTIATION
Clifford U FerenczFranceElwin Sharvill NEW
Sinclair M OldroydIndiaIoni Bowcher NEW
Antonio T OstroskyRussiaAmy Elsner UNQUALIFIED
Stacey Y BologniaRussiaStephen Shaw RENEWAL
Izzy M PoquetteJapanAnna Fali UNQUALIFIED
Jennifer K AmigonRussiaAsiya Javayant RENEWAL
Smith W AlbaresIndiaXuxue Feng NEGOTIATION
Cody I DilliardArgentinaStephen Shaw UNQUALIFIED
David Q OstroskySpainAsiya Javayant RENEWAL
David K ButtAustraliaAmy Elsner UNQUALIFIED
Jennifer E MaletFranceStephen Shaw PROPOSAL
Silvio A BologniaRussiaAnna Fali UNQUALIFIED
Maria W MaletIndiaElwin Sharvill NEW
Johnson Z PoquetteSpainIvan Magalhaes RENEWAL
Costa E ButtUnited KingdomIoni Bowcher NEW
Clifford I AmigonCanadaXuxue Feng QUALIFIED
Darci X FollerUnited KingdomAmy Elsner PROPOSAL
Kaitlin V MacleadSpainAnna Fali PROPOSAL
Misaki B PerinUnited KingdomBernardo Dominic RENEWAL
Cody L PoquetteItalyOnyama Limba RENEWAL
Antonio U DarakjyUnited KingdomElwin Sharvill NEW
Jones A RimSpainXuxue Feng NEW
Ivar Y WaycottFranceXuxue Feng UNQUALIFIED
Jefferson H NestleAustraliaOnyama Limba NEGOTIATION
Faith C TollnerUnited KingdomIvan Magalhaes PROPOSAL
Jones P GlickItalyAmy Elsner NEW
Aruna S SaylorsBrazilAmy Elsner RENEWAL
Smith Q SaylorsBrazilIvan Magalhaes NEW
Chavez W DarakjyIndiaOnyama Limba QUALIFIED
Greenwood X FigeroaItalyOnyama Limba PROPOSAL
Deepesh R BriddickSpainAmy Elsner QUALIFIED
Silvio B MorascaSpainIoni Bowcher UNQUALIFIED
Deepesh G SchemmerCanadaBernardo Dominic NEGOTIATION
Stacey X CampainJapanOnyama Limba PROPOSAL
Cody A TollnerAustraliaOnyama Limba UNQUALIFIED
Cody O ButtGermanyStephen Shaw UNQUALIFIED
Francesco L BologniaJapanAmy Elsner UNQUALIFIED
Tony K OstroskyBrazilAmy Elsner RENEWAL
Tony L PoquetteIndiaXuxue Feng RENEWAL
Frozen Columns
Name
Smith U Ostrosky
Clifford L Caldarera
Ashley G Slusarski
Misaki I Garufi
Sinclair B Nestle
Jefferson U Flosi
Juan V Malet
Octavia E Maclead
Mayumi A Royster
Wickens Y Tollner
Salvatore N Wieser
Deepesh K Chui
Faith H Tollner
Leon D Iturbide
Jennifer H Albares
Alejandro R Shinko
Darci M Perin
Aruna R Albares
Costa F Ostrosky
Smith I Garufi
Aruna V Albares
Leon M Slusarski
Emily O Malet
Izzy Y Nestle
James H Oldroyd
Stacey H Foller
Silvio H Stenseth
Julie N Wieser
Aika L Flosi
Johnson D Schemmer
Kaitlin M Darakjy
Rodrigues P Albares
Salvatore L Flosi
Morrow T Briddick
Isabel O Chui
Francesco Z Darakjy
Smith R Ostrosky
Wickens T Inouye
Arvin H Amigon
Isabel Y Paprocki
Johnson B Kolmetz
Cody J Stockham
Aditya O Shinko
Clifford H Nicka
Claire J Nicka
Alejandro M Wieser
Clifford M Ruta
Darci O Glick
Kadeem I Shinko
Emily M Stenseth
IdCountryDate
1000Japan2024-05-05
1001Australia2024-04-27
1002Japan2024-04-30
1003Japan2024-05-01
1004Brazil2024-04-14
1005France2024-04-12
1006Brazil2024-04-28
1007India2024-04-06
1008United Kingdom2024-05-01
1009Australia2024-04-12
1010Argentina2024-04-28
1011Russia2024-04-26
1012India2024-04-15
1013France2024-04-22
1014Spain2024-05-04
1015Germany2024-04-21
1016United Kingdom2024-04-25
1017Russia2024-04-28
1018Italy2024-04-27
1019Japan2024-05-03
1020Spain2024-04-21
1021France2024-04-09
1022Spain2024-05-01
1023United Kingdom2024-04-09
1024France2024-05-01
1025Russia2024-04-16
1026Germany2024-04-10
1027Spain2024-04-10
1028Argentina2024-04-08
1029Japan2024-04-28
1030Brazil2024-04-26
1031United Kingdom2024-04-25
1032United Kingdom2024-04-29
1033Russia2024-04-09
1034India2024-04-25
1035Russia2024-04-06
1036Spain2024-04-09
1037Italy2024-04-08
1038India2024-05-04
1039Canada2024-04-07
1040Australia2024-05-02
1041United Kingdom2024-05-05
1042Italy2024-04-21
1043India2024-04-15
1044Brazil2024-04-06
1045Russia2024-04-24
1046Canada2024-04-29
1047Italy2024-05-02
1048France2024-04-17
1049Spain2024-04-21

On-Demand Data

NameIdCountryDate
Izzy S Schemmer1000Italy2024-05-02
Adams E Ostrosky1001Germany2024-04-11
Francesco R Kusko1002United Kingdom2024-04-12
Leon G Royster1003Brazil2024-04-06
Salvatore B Kolmetz1004Japan2024-04-27
Jennifer R Wieser1005Australia2024-04-13
Ashley M Nestle1006France2024-04-15
Nicolas F Venere1007Japan2024-04-11
Leon L Caldarera1008Brazil2024-04-28
Antonio J Iturbide1009France2024-04-23
Adams E Kusko1010Russia2024-04-20
Alejandro R Nestle1011Canada2024-04-30
Johnson L Gillian1012Australia2024-04-19
Jefferson O Venere1013Canada2024-04-30
Aruna B Sergi1014Australia2024-05-02
Johnson K Ostrosky1015United Kingdom2024-04-18
Clifford K Doe1016Spain2024-04-16
Nicolas Z Morasca1017United Kingdom2024-04-28
Faith A Amigon1018Australia2024-04-10
Kaitlin K Chui1019India2024-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem T SaylorsJapanIoni Bowcher QUALIFIED
Wickens F RoysterGermanyAnna Fali PROPOSAL
Misaki Y CampainAustraliaIoni Bowcher NEGOTIATION
Johnson J PoquetteIndiaXuxue Feng PROPOSAL
James C AmigonCanadaAnna Fali PROPOSAL
Salvatore R NickaItalyIoni Bowcher NEGOTIATION
Claire Z InouyeJapanStephen Shaw NEW
Mujtaba U FigeroaBrazilIvan Magalhaes NEW
Mayumi I AmigonIndiaStephen Shaw PROPOSAL
Kaitlin E KolmetzArgentinaElwin Sharvill RENEWAL
Kaitlin J MaletBrazilIoni Bowcher NEGOTIATION
Emily Z MacleadFranceIvan Magalhaes PROPOSAL
Julie E StockhamAustraliaStephen Shaw NEGOTIATION
Nicolas V WaycottGermanyXuxue Feng NEW
Octavia T PaprockiBrazilBernardo Dominic QUALIFIED
Maisha U GlickRussiaAmy Elsner UNQUALIFIED
Francesco K WieserArgentinaAmy Elsner QUALIFIED
Deepesh I MaletItalyAnna Fali QUALIFIED
Smith W OstroskyAustraliaElwin Sharvill NEW
Johnson K MaletBrazilStephen Shaw UNQUALIFIED
Jefferson C GillianAustraliaAnna Fali NEGOTIATION
Aditya V ButtGermanyAmy Elsner RENEWAL
Aditya K SlusarskiGermanyStephen Shaw QUALIFIED
Adams X StockhamFranceAsiya Javayant QUALIFIED
Alejandro A KuskoItalyIvan Magalhaes PROPOSAL
Morrow U FigeroaIndiaAsiya Javayant PROPOSAL
James D KolmetzUnited KingdomAsiya Javayant RENEWAL
Jeanfrancois N BowleyRussiaIvan Magalhaes UNQUALIFIED
Aditya O CaldareraCanadaIoni Bowcher NEGOTIATION
Morrow N FigeroaBrazilXuxue Feng QUALIFIED
Clifford M VocelkaFranceIvan Magalhaes RENEWAL
Jennifer N MacleadFranceAsiya Javayant QUALIFIED
Octavia A AmigonItalyElwin Sharvill NEGOTIATION
Wickens M KuskoUnited KingdomAmy Elsner NEGOTIATION
Jennifer V CaldareraItalyStephen Shaw RENEWAL
Jeanfrancois K ChuiUnited KingdomOnyama Limba UNQUALIFIED
Francesco B OstroskyArgentinaAnna Fali NEW
Ashley J SchemmerAustraliaOnyama Limba QUALIFIED
Alejandro A GlickJapanElwin Sharvill NEGOTIATION
Darci R GarufiCanadaXuxue Feng 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>