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
Stacey B MarrierArgentinaAnna Fali NEGOTIATION
Misaki V DoeRussiaIoni Bowcher PROPOSAL
David L InouyeSpainAsiya Javayant UNQUALIFIED
Ashley Y RulapaughItalyOnyama Limba PROPOSAL
Stacey R MorascaCanadaXuxue Feng QUALIFIED
Izzy V GlickCanadaAsiya Javayant QUALIFIED
Cody Q CaldareraCanadaIvan Magalhaes NEGOTIATION
Arvin H GauchoGermanyXuxue Feng RENEWAL
Jefferson G WieserUnited KingdomBernardo Dominic RENEWAL
Silvio I StensethUnited KingdomElwin Sharvill PROPOSAL
Leja M KuskoGermanyOnyama Limba NEGOTIATION
Greenwood V SlusarskiIndiaBernardo Dominic NEGOTIATION
Deepesh X FigeroaRussiaElwin Sharvill NEGOTIATION
Wickens N OstroskyGermanyOnyama Limba NEGOTIATION
Darci J AlbaresBrazilAmy Elsner PROPOSAL
Rodrigues I MorascaRussiaXuxue Feng PROPOSAL
Kaitlin O CaldareraArgentinaIvan Magalhaes QUALIFIED
Emily V DoeItalyAmy Elsner NEGOTIATION
Arvin C AlbaresAustraliaElwin Sharvill QUALIFIED
Jeanfrancois A InouyeBrazilOnyama Limba PROPOSAL
Rodrigues Z RutaSpainIoni Bowcher PROPOSAL
Claire V DarakjyCanadaIoni Bowcher NEGOTIATION
Aditya E CaldareraAustraliaStephen Shaw NEGOTIATION
Jefferson D DoeCanadaXuxue Feng UNQUALIFIED
Morrow G GlickAustraliaBernardo Dominic NEGOTIATION
Aruna R InouyeJapanElwin Sharvill RENEWAL
Mujtaba M FigeroaItalyIoni Bowcher PROPOSAL
Clifford T SchemmerFranceOnyama Limba NEW
Mujtaba H RulapaughBrazilAmy Elsner PROPOSAL
Jennifer W RoysterJapanAsiya Javayant QUALIFIED
Murillo P MaletSpainAnna Fali PROPOSAL
Mujtaba L SaylorsArgentinaAsiya Javayant PROPOSAL
Darci F DilliardCanadaBernardo Dominic NEGOTIATION
Adams U RutaSpainAmy Elsner RENEWAL
Faith A OstroskyRussiaStephen Shaw NEGOTIATION
Maria D PoquetteRussiaXuxue Feng RENEWAL
Jeanfrancois F StensethUnited KingdomOnyama Limba UNQUALIFIED
Aika V ButtCanadaAsiya Javayant NEGOTIATION
Cody U ShinkoBrazilXuxue Feng NEGOTIATION
Morrow I SlusarskiRussiaAsiya Javayant QUALIFIED
Faith W InouyeBrazilOnyama Limba RENEWAL
Rodrigues Q ButtGermanyStephen Shaw NEGOTIATION
Chavez K WhobreyBrazilIvan Magalhaes PROPOSAL
Francesco B TollnerGermanyOnyama Limba QUALIFIED
Juan T VocelkaFranceAmy Elsner QUALIFIED
Francesco M WieserArgentinaIoni Bowcher UNQUALIFIED
Johnson M KolmetzArgentinaAmy Elsner QUALIFIED
Francesco I WaycottGermanyStephen Shaw NEW
Aditya M TollnerAustraliaXuxue Feng QUALIFIED
Julie E MaletUnited KingdomIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Julie A OldroydItalyBernardo Dominic QUALIFIED
Jones F SchemmerJapanStephen Shaw PROPOSAL
Antonio U CaudyCanadaIvan Magalhaes RENEWAL
Alejandro N GillianSpainAmy Elsner RENEWAL
Arvin R SaylorsAustraliaIvan Magalhaes UNQUALIFIED
David K GlickBrazilAsiya Javayant RENEWAL
Rodrigues V RimItalyXuxue Feng RENEWAL
Cody C CampainGermanyBernardo Dominic UNQUALIFIED
Jennifer J WaycottJapanAmy Elsner NEW
David D SergiSpainXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas N MaletJapan2024-04-26Rousseaux, Michael Esq NEGOTIATION58Bernardo Dominic
1001Kadeem S ButtIndia2024-04-23Chemel, James L Cpa PROPOSAL44Stephen Shaw
1002James K BologniaUnited Kingdom2024-04-04Buckley Miller Wright RENEWAL8Ioni Bowcher
1003Wickens P AmigonSpain2024-04-05Truhlar And Truhlar Attys PROPOSAL7Elwin Sharvill
1004Darci E KolmetzUnited Kingdom2024-04-25Dorl, James J Esq PROPOSAL41Ivan Magalhaes
1005Murillo W RoysterJapan2024-04-11Chanay, Jeffrey A Esq RENEWAL66Amy Elsner
1006Jennifer U MorascaGermany2024-04-14Buckley Miller Wright NEGOTIATION69Asiya Javayant
1007Ashley X GauchoBrazil2024-03-31Rangoni Of Florence NEGOTIATION67Stephen Shaw
1008Izzy X MorascaSpain2024-04-27Printing Dimensions NEW87Stephen Shaw
1009Cody M CampainGermany2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED65Asiya Javayant
1010Morrow U WieserRussia2024-04-06Truhlar And Truhlar Attys NEGOTIATION94Ioni Bowcher
1011Ricardo T SergiSpain2024-04-19Commercial Press RENEWAL36Xuxue Feng
1012Tony V WhobreySpain2024-04-14Truhlar And Truhlar Attys NEGOTIATION94Ivan Magalhaes
1013Smith M BriddickFrance2024-04-04Truhlar And Truhlar Attys PROPOSAL21Onyama Limba
1014Morrow D MaletBrazil2024-04-27Rousseaux, Michael Esq RENEWAL86Ioni Bowcher
1015Jones L WieserGermany2024-04-19Morlong Associates UNQUALIFIED59Stephen Shaw
1016Alejandro J GlickAustralia2024-04-16Buckley Miller Wright NEGOTIATION34Onyama Limba
1017Darci D DoeArgentina2024-04-08Dorl, James J Esq QUALIFIED74Ioni Bowcher
1018James B InouyeIndia2024-04-07Dorl, James J Esq NEGOTIATION43Anna Fali
1019Silvio G AmigonSpain2024-04-27Benton, John B Jr QUALIFIED37Bernardo Dominic
1020Nicolas G PerinJapan2024-04-08Rousseaux, Michael Esq NEGOTIATION6Bernardo Dominic
1021Munro P SergiJapan2024-04-20Printing Dimensions UNQUALIFIED86Stephen Shaw
1022Izzy N PerinSpain2024-04-17Feltz Printing Service QUALIFIED46Asiya Javayant
1023Octavia Q SlusarskiArgentina2024-04-14Rousseaux, Michael Esq NEGOTIATION55Anna Fali
1024Darci X InouyeIndia2024-04-06Commercial Press NEW56Asiya Javayant
1025Darci J CaldareraFrance2024-03-30Chemel, James L Cpa RENEWAL50Onyama Limba
1026James C BowleyFrance2024-04-14King, Christopher A Esq PROPOSAL76Xuxue Feng
1027Kadeem T StockhamRussia2024-04-14Commercial Press UNQUALIFIED9Amy Elsner
1028Misaki F StensethUnited Kingdom2024-04-27Dorl, James J Esq PROPOSAL37Bernardo Dominic
1029Munro Y WieserFrance2024-04-06Commercial Press PROPOSAL50Anna Fali
1030Clifford I GillianAustralia2024-04-23Printing Dimensions UNQUALIFIED86Amy Elsner
1031Tony D StensethSpain2024-04-23Rousseaux, Michael Esq PROPOSAL88Onyama Limba
1032Aditya T PaprockiBrazil2024-04-12Morlong Associates QUALIFIED87Onyama Limba
1033Deepesh X AmigonUnited Kingdom2024-03-31Printing Dimensions RENEWAL14Elwin Sharvill
1034Johnson G RimBrazil2024-04-08Dorl, James J Esq QUALIFIED35Amy Elsner
1035Mayumi J CaudyIndia2024-04-06Printing Dimensions UNQUALIFIED12Onyama Limba
1036Mujtaba P MaletFrance2024-04-22Rangoni Of Florence RENEWAL87Elwin Sharvill
1037Salvatore T MorascaGermany2024-04-27Benton, John B Jr QUALIFIED81Anna Fali
1038Antonio K GarufiArgentina2024-04-08Rousseaux, Michael Esq NEGOTIATION34Stephen Shaw
1039Leon M OstroskyRussia2024-04-04Rangoni Of Florence QUALIFIED39Anna Fali
1040Claire O FerenczJapan2024-03-29Commercial Press QUALIFIED7Asiya Javayant
1041Misaki N TollnerAustralia2024-04-06Chemel, James L Cpa QUALIFIED4Asiya Javayant
1042Maisha Z IturbideFrance2024-04-26Chemel, James L Cpa NEGOTIATION65Stephen Shaw
1043Salvatore I InouyeBrazil2024-04-15Chanay, Jeffrey A Esq NEGOTIATION9Onyama Limba
1044Murillo Q PoquetteArgentina2024-04-10Feltz Printing Service PROPOSAL36Stephen Shaw
1045Darci N RimJapan2024-04-03Printing Dimensions QUALIFIED72Stephen Shaw
1046Clifford T OldroydItaly2024-04-25Dorl, James J Esq NEGOTIATION40Amy Elsner
1047Stacey R StockhamUnited Kingdom2024-04-23Truhlar And Truhlar Attys UNQUALIFIED29Amy Elsner
1048Munro C CaldareraSpain2024-04-11Rangoni Of Florence QUALIFIED22Asiya Javayant
1049Ashley X WhobreyJapan2024-04-26Buckley Miller Wright QUALIFIED0Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Francesco D TollnerJapanIvan Magalhaes PROPOSAL
Izzy B MarrierJapanXuxue Feng NEGOTIATION
Smith L VocelkaRussiaAmy Elsner RENEWAL
Emily U GillianItalyOnyama Limba RENEWAL
Jennifer U GauchoSpainXuxue Feng RENEWAL
Emily W MorascaUnited KingdomStephen Shaw NEGOTIATION
Stacey X WieserRussiaAnna Fali UNQUALIFIED
Chavez L StensethItalyAnna Fali NEGOTIATION
Maria V WhobreySpainBernardo Dominic UNQUALIFIED
Morrow F WieserJapanAnna Fali RENEWAL
Nicolas K RutaArgentinaAnna Fali UNQUALIFIED
Tony T MacleadAustraliaAmy Elsner UNQUALIFIED
Kaitlin Q VenereCanadaAsiya Javayant RENEWAL
Alejandro B StockhamArgentinaIoni Bowcher NEGOTIATION
Stacey W RutaIndiaXuxue Feng RENEWAL
Maria B CampainSpainAsiya Javayant UNQUALIFIED
Tony G GlickArgentinaIoni Bowcher PROPOSAL
Leja E CampainAustraliaIoni Bowcher NEGOTIATION
Leja L GauchoIndiaAsiya Javayant PROPOSAL
Adams Q IturbideAustraliaXuxue Feng NEGOTIATION
Alejandro D FigeroaArgentinaXuxue Feng NEW
Aruna O BriddickCanadaIoni Bowcher UNQUALIFIED
Alejandro J MorascaBrazilStephen Shaw QUALIFIED
Jones W NickaIndiaIoni Bowcher PROPOSAL
Wickens G MorascaBrazilXuxue Feng RENEWAL
Aruna L KolmetzSpainElwin Sharvill RENEWAL
Mujtaba K WieserAustraliaAsiya Javayant NEGOTIATION
Maisha F DilliardGermanyBernardo Dominic RENEWAL
Aruna X GlickFranceBernardo Dominic PROPOSAL
Cody K WaycottSpainIvan Magalhaes RENEWAL
Maisha W ShinkoRussiaAsiya Javayant QUALIFIED
Murillo M SchemmerRussiaIvan Magalhaes QUALIFIED
Leja Z TollnerJapanStephen Shaw NEGOTIATION
Adams M DoeRussiaBernardo Dominic UNQUALIFIED
Jefferson I RutaArgentinaAnna Fali NEGOTIATION
Ashley H FlosiBrazilAmy Elsner NEW
James D BologniaAustraliaBernardo Dominic PROPOSAL
Claire D PaprockiJapanXuxue Feng QUALIFIED
Aditya B StensethUnited KingdomIvan Magalhaes PROPOSAL
Francesco H DilliardItalyAnna Fali UNQUALIFIED
Munro O KolmetzGermanyIoni Bowcher NEW
Cody G PaprockiArgentinaIvan Magalhaes NEGOTIATION
Maria F DoeFranceOnyama Limba NEW
Mujtaba C PoquetteFranceStephen Shaw UNQUALIFIED
Kadeem A VenereSpainElwin Sharvill NEGOTIATION
Cody I CaldareraUnited KingdomAsiya Javayant QUALIFIED
Aika O ButtAustraliaOnyama Limba QUALIFIED
Costa T CaudyAustraliaIoni Bowcher RENEWAL
Jones C FlosiRussiaAmy Elsner UNQUALIFIED
Kaitlin C NestleItalyIvan Magalhaes RENEWAL
Frozen Columns
Name
Alejandro U Ruta
Deepesh O Stenseth
Morrow Z Marrier
Aruna X Caldarera
Maisha W Iturbide
Arvin T Morasca
Leja E Slusarski
Maisha G Stockham
Julie D Maclead
Clifford S Perin
Julie H Kusko
Francesco V Caudy
Mayumi M Maclead
Johnson I Perin
Arvin I Doe
Francesco T Paprocki
Smith U Briddick
Misaki F Nestle
Nicolas M Darakjy
Leon S Rim
Jennifer K Nestle
Juan L Inouye
Maria J Schemmer
Darci C Nestle
David F Malet
Leon T Albares
Arvin V Gaucho
Greenwood H Rim
Isabel J Rim
Morrow M Ferencz
Julie Q Doe
Darci L Vocelka
Silvio A Inouye
Rodrigues L Iturbide
David H Flosi
Isabel Z Campain
Kadeem D Shinko
Clifford G Slusarski
Morrow X Bolognia
Smith X Rulapaugh
Maisha W Butt
Maisha S Caldarera
Alejandro M Paprocki
Jones F Stenseth
Rodrigues M Sergi
Ricardo M Ferencz
Juan V Foller
Nicolas K Garufi
Kadeem E Glick
Morrow R Malet
IdCountryDate
1000Russia2024-04-08
1001Brazil2024-04-09
1002Italy2024-04-03
1003Russia2024-03-31
1004Spain2024-04-16
1005Italy2024-04-14
1006France2024-04-17
1007Germany2024-04-15
1008France2024-04-02
1009United Kingdom2024-04-20
1010Russia2024-04-17
1011India2024-04-12
1012Brazil2024-04-14
1013Russia2024-04-23
1014Italy2024-04-02
1015Australia2024-04-02
1016Italy2024-03-29
1017India2024-04-15
1018United Kingdom2024-04-19
1019Brazil2024-04-26
1020Russia2024-04-18
1021Brazil2024-04-11
1022Brazil2024-04-07
1023Canada2024-04-21
1024France2024-04-24
1025Spain2024-04-19
1026Australia2024-04-04
1027Japan2024-04-12
1028India2024-03-30
1029France2024-04-18
1030United Kingdom2024-04-07
1031United Kingdom2024-04-22
1032Japan2024-04-11
1033France2024-04-13
1034Argentina2024-04-09
1035Australia2024-04-07
1036Argentina2024-04-07
1037Argentina2024-04-27
1038Brazil2024-04-16
1039Spain2024-04-10
1040Italy2024-03-31
1041Brazil2024-04-22
1042United Kingdom2024-03-29
1043Spain2024-04-15
1044India2024-04-18
1045Italy2024-04-22
1046Germany2024-04-11
1047Germany2024-04-22
1048Canada2024-04-09
1049Russia2024-04-07

On-Demand Data

NameIdCountryDate
Aruna L Whobrey1000United Kingdom2024-04-10
Adams V Maclead1001Australia2024-04-07
Clifford T Maclead1002United Kingdom2024-04-22
Faith E Inouye1003Germany2024-04-07
Silvio L Wieser1004Japan2024-04-03
Wickens Y Rim1005United Kingdom2024-04-12
Ivar N Nestle1006Italy2024-04-27
Murillo Z Slusarski1007Spain2024-04-12
Jones R Foller1008Japan2024-03-31
Aika X Nestle1009Argentina2024-04-20
Ivar M Rim1010Spain2024-03-31
Chavez U Slusarski1011Russia2024-04-21
Francesco O Foller1012Spain2024-04-19
Jones S Darakjy1013Germany2024-04-21
Aruna Z Marrier1014Germany2024-04-27
Aika Q Ferencz1015India2024-04-13
Julie U Campain1016Brazil2024-04-11
Adams U Rulapaugh1017Japan2024-04-21
Julie Q Maclead1018Brazil2024-04-04
Adams A Shinko1019Brazil2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens J RoysterItalyStephen Shaw NEW
James P RimJapanOnyama Limba RENEWAL
Wickens K WaycottUnited KingdomOnyama Limba QUALIFIED
Ivar C WieserUnited KingdomAsiya Javayant QUALIFIED
Misaki I CaldareraSpainOnyama Limba PROPOSAL
Izzy T FlosiAustraliaXuxue Feng RENEWAL
Ashley I BriddickItalyStephen Shaw NEGOTIATION
Greenwood J BriddickBrazilIoni Bowcher RENEWAL
Tony P DoeJapanAnna Fali UNQUALIFIED
Juan U ShinkoArgentinaAmy Elsner NEW
Aruna Y DarakjyCanadaAnna Fali PROPOSAL
Leon M NickaBrazilAsiya Javayant QUALIFIED
Tony F NickaFranceAmy Elsner RENEWAL
Murillo C SergiFranceStephen Shaw NEW
Silvio J InouyeIndiaElwin Sharvill PROPOSAL
Smith Q MorascaRussiaStephen Shaw NEGOTIATION
Misaki W WaycottFranceAsiya Javayant PROPOSAL
Kaitlin S OstroskyFranceAsiya Javayant NEGOTIATION
Jennifer T OldroydUnited KingdomAmy Elsner NEW
Clifford L GlickFranceAmy Elsner NEGOTIATION
Cody Q RulapaughArgentinaAnna Fali NEW
Aruna I PaprockiIndiaAsiya Javayant NEGOTIATION
Morrow I IturbideAustraliaOnyama Limba RENEWAL
Costa G KolmetzItalyIoni Bowcher NEW
Claire B MarrierGermanyIvan Magalhaes NEW
Octavia N GillianArgentinaXuxue Feng UNQUALIFIED
Nicolas T RoysterCanadaIoni Bowcher NEGOTIATION
Arvin A ButtSpainOnyama Limba PROPOSAL
Jeanfrancois O KuskoArgentinaAnna Fali PROPOSAL
Claire D SaylorsAustraliaXuxue Feng UNQUALIFIED
Leja J WaycottCanadaIvan Magalhaes NEW
James X DilliardGermanyAsiya Javayant UNQUALIFIED
Jones I ShinkoSpainXuxue Feng UNQUALIFIED
Misaki Y FigeroaFranceXuxue Feng NEW
Stacey D MacleadCanadaIvan Magalhaes QUALIFIED
Jeanfrancois Y WieserIndiaAnna Fali RENEWAL
Tony D CampainAustraliaOnyama Limba RENEWAL
Aruna O OldroydArgentinaXuxue Feng QUALIFIED
Stacey W GarufiCanadaXuxue Feng PROPOSAL
Antonio D CampainGermanyIvan Magalhaes QUALIFIED

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