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
Claire Z VenereAustraliaAnna Fali NEW
Murillo I VenereUnited KingdomAnna Fali RENEWAL
Aika G VocelkaGermanyAsiya Javayant QUALIFIED
Jones Q MarrierCanadaElwin Sharvill UNQUALIFIED
Murillo A MarrierFranceOnyama Limba UNQUALIFIED
Aditya W BowleyGermanyElwin Sharvill PROPOSAL
Greenwood G GauchoUnited KingdomStephen Shaw RENEWAL
Munro A KuskoAustraliaIvan Magalhaes UNQUALIFIED
Isabel B MorascaAustraliaStephen Shaw QUALIFIED
Aditya T AmigonBrazilOnyama Limba RENEWAL
Mujtaba I CampainBrazilElwin Sharvill NEGOTIATION
Stacey O PerinFranceAnna Fali NEW
Leja P CaudyIndiaAnna Fali RENEWAL
Mayumi J FollerGermanyXuxue Feng NEW
Jennifer B VenereUnited KingdomOnyama Limba NEW
Kadeem M SchemmerItalyStephen Shaw RENEWAL
Silvio R WhobreyGermanyAmy Elsner PROPOSAL
Arvin Q BowleyBrazilStephen Shaw PROPOSAL
Kadeem Z PerinUnited KingdomAnna Fali NEW
Ashley Q WieserItalyBernardo Dominic PROPOSAL
Claire X FollerRussiaAmy Elsner RENEWAL
Octavia E WhobreyItalyXuxue Feng PROPOSAL
Isabel R RoysterAustraliaStephen Shaw RENEWAL
Alejandro E BologniaUnited KingdomElwin Sharvill NEGOTIATION
David D VocelkaIndiaStephen Shaw RENEWAL
Ricardo P FlosiSpainAsiya Javayant NEW
Salvatore P SergiFranceElwin Sharvill NEGOTIATION
Johnson F GlickRussiaStephen Shaw NEGOTIATION
Silvio F BriddickArgentinaAnna Fali NEW
Leja G BologniaRussiaIvan Magalhaes UNQUALIFIED
Johnson H SchemmerFranceAnna Fali NEGOTIATION
James M WieserFranceElwin Sharvill QUALIFIED
Maria U FerenczRussiaAsiya Javayant QUALIFIED
Emily B ChuiRussiaAmy Elsner RENEWAL
Murillo U CaldareraIndiaOnyama Limba NEW
Morrow Q FlosiJapanStephen Shaw QUALIFIED
Darci P WhobreyItalyIvan Magalhaes UNQUALIFIED
Jefferson L WaycottRussiaIvan Magalhaes QUALIFIED
Morrow D KolmetzBrazilAsiya Javayant NEW
Kaitlin C CaudyUnited KingdomIvan Magalhaes NEW
Mujtaba W GlickSpainStephen Shaw UNQUALIFIED
Juan J BriddickGermanyAnna Fali UNQUALIFIED
Rodrigues I MaletItalyAsiya Javayant PROPOSAL
Jefferson Z MorascaBrazilXuxue Feng QUALIFIED
Mayumi Z StensethUnited KingdomElwin Sharvill QUALIFIED
Leja R CampainUnited KingdomElwin Sharvill NEW
Deepesh F CaldareraItalyBernardo Dominic QUALIFIED
Murillo O OstroskyJapanIoni Bowcher UNQUALIFIED
Mayumi D FollerJapanStephen Shaw PROPOSAL
Smith O DarakjyCanadaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ivar G NestleFranceXuxue Feng PROPOSAL
James Y ChuiAustraliaIvan Magalhaes UNQUALIFIED
Ricardo P PerinGermanyIoni Bowcher PROPOSAL
Morrow P BologniaGermanyAsiya Javayant PROPOSAL
Clifford P GauchoItalyXuxue Feng NEGOTIATION
Izzy R NickaIndiaIvan Magalhaes RENEWAL
Stacey Z DilliardCanadaStephen Shaw RENEWAL
Jefferson P PaprockiRussiaBernardo Dominic QUALIFIED
Juan G TollnerRussiaElwin Sharvill QUALIFIED
Salvatore I CampainItalyAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson E WaycottItaly2024-03-28Buckley Miller Wright NEGOTIATION0Onyama Limba
1001Ricardo T SchemmerUnited Kingdom2024-04-02Chapman, Ross E Esq RENEWAL3Elwin Sharvill
1002Claire M GillianRussia2024-03-29Benton, John B Jr UNQUALIFIED83Ioni Bowcher
1003Deepesh Z IturbideUnited Kingdom2024-03-21Feiner Bros NEGOTIATION37Stephen Shaw
1004Jeanfrancois X DilliardBrazil2024-03-22Chemel, James L Cpa RENEWAL19Bernardo Dominic
1005Mujtaba K PoquetteFrance2024-04-13Rangoni Of Florence UNQUALIFIED12Elwin Sharvill
1006James V WhobreyAustralia2024-04-18Chapman, Ross E Esq QUALIFIED5Ioni Bowcher
1007Ashley A WieserCanada2024-03-27Feiner Bros NEW92Xuxue Feng
1008Claire D MaletBrazil2024-04-06Printing Dimensions QUALIFIED26Ivan Magalhaes
1009James K GauchoJapan2024-04-03Morlong Associates NEGOTIATION4Bernardo Dominic
1010Mayumi S RimFrance2024-04-13Feiner Bros NEW69Ivan Magalhaes
1011Jeanfrancois W DoeUnited Kingdom2024-04-17Rangoni Of Florence PROPOSAL84Asiya Javayant
1012Aruna U PoquetteJapan2024-04-10Benton, John B Jr QUALIFIED55Amy Elsner
1013Rodrigues Q PaprockiRussia2024-03-26Morlong Associates RENEWAL97Amy Elsner
1014Ivar T BowleyUnited Kingdom2024-03-28Dorl, James J Esq NEGOTIATION66Stephen Shaw
1015Rodrigues P StockhamUnited Kingdom2024-04-12Dorl, James J Esq RENEWAL68Amy Elsner
1016Maisha U KuskoFrance2024-04-10Chanay, Jeffrey A Esq NEW90Ivan Magalhaes
1017Darci C AmigonGermany2024-04-10Dorl, James J Esq RENEWAL72Xuxue Feng
1018Murillo C SaylorsCanada2024-03-23Printing Dimensions NEW69Stephen Shaw
1019Emily U DoeUnited Kingdom2024-04-06Rangoni Of Florence NEW93Anna Fali
1020Jennifer X PerinSpain2024-04-17Morlong Associates PROPOSAL13Stephen Shaw
1021Jeanfrancois R DilliardSpain2024-04-12King, Christopher A Esq RENEWAL17Anna Fali
1022Rodrigues B DoeAustralia2024-04-04Morlong Associates NEW30Stephen Shaw
1023Maisha X SlusarskiItaly2024-04-13Chemel, James L Cpa PROPOSAL95Xuxue Feng
1024Aditya C FerenczUnited Kingdom2024-03-26Chapman, Ross E Esq RENEWAL31Elwin Sharvill
1025Francesco A VocelkaFrance2024-04-17Benton, John B Jr NEGOTIATION25Elwin Sharvill
1026Francesco L ButtGermany2024-04-05Commercial Press NEGOTIATION71Elwin Sharvill
1027Tony U ShinkoCanada2024-03-28Dorl, James J Esq QUALIFIED16Bernardo Dominic
1028Aditya M GlickUnited Kingdom2024-03-30King, Christopher A Esq UNQUALIFIED16Bernardo Dominic
1029James V RutaCanada2024-03-23Chapman, Ross E Esq QUALIFIED28Xuxue Feng
1030Leja Y KolmetzGermany2024-04-13Printing Dimensions NEW16Ioni Bowcher
1031Alejandro P DarakjyBrazil2024-04-15Morlong Associates NEW29Ioni Bowcher
1032Mujtaba J VocelkaItaly2024-04-06Chemel, James L Cpa UNQUALIFIED42Bernardo Dominic
1033Alejandro Q PoquetteCanada2024-03-23Benton, John B Jr QUALIFIED4Bernardo Dominic
1034Darci O NickaGermany2024-03-22Commercial Press NEGOTIATION54Stephen Shaw
1035Rodrigues S ButtUnited Kingdom2024-04-11Dorl, James J Esq NEGOTIATION21Stephen Shaw
1036Ivar K MaletGermany2024-04-15Commercial Press NEGOTIATION41Onyama Limba
1037Julie Q CaudyUnited Kingdom2024-03-27Morlong Associates UNQUALIFIED31Ivan Magalhaes
1038Tony Z SaylorsBrazil2024-04-13King, Christopher A Esq UNQUALIFIED51Ioni Bowcher
1039Cody W GillianIndia2024-04-09Rousseaux, Michael Esq NEW3Ioni Bowcher
1040Chavez N PaprockiUnited Kingdom2024-04-02Feltz Printing Service PROPOSAL78Ioni Bowcher
1041Jennifer L MorascaFrance2024-04-12King, Christopher A Esq UNQUALIFIED50Amy Elsner
1042Ricardo V FollerIndia2024-04-17Chanay, Jeffrey A Esq QUALIFIED0Elwin Sharvill
1043Munro E FerenczCanada2024-04-10Truhlar And Truhlar Attys UNQUALIFIED67Ivan Magalhaes
1044Clifford Y GlickArgentina2024-04-09Buckley Miller Wright PROPOSAL16Asiya Javayant
1045Tony Y SlusarskiJapan2024-04-14Morlong Associates QUALIFIED10Bernardo Dominic
1046Greenwood P StensethFrance2024-03-25Feltz Printing Service PROPOSAL57Stephen Shaw
1047Salvatore C NickaSpain2024-03-23Morlong Associates QUALIFIED48Bernardo Dominic
1048David I IturbideBrazil2024-04-11Dorl, James J Esq UNQUALIFIED23Bernardo Dominic
1049Leon T ShinkoCanada2024-04-18Benton, John B Jr QUALIFIED81Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Kadeem J FerenczItalyAnna Fali PROPOSAL
Aika K AlbaresItalyIvan Magalhaes RENEWAL
Julie P SaylorsItalyBernardo Dominic UNQUALIFIED
Mujtaba E PaprockiItalyAnna Fali UNQUALIFIED
Isabel Y AlbaresRussiaOnyama Limba PROPOSAL
Octavia W RutaFranceAsiya Javayant UNQUALIFIED
James N GauchoGermanyOnyama Limba NEW
Leja F PoquetteUnited KingdomOnyama Limba PROPOSAL
Ashley G OstroskyRussiaIvan Magalhaes NEW
Aditya E SlusarskiUnited KingdomStephen Shaw UNQUALIFIED
Costa Z GlickSpainStephen Shaw NEW
Darci P GauchoItalyIvan Magalhaes NEW
Maisha J WaycottAustraliaOnyama Limba QUALIFIED
Arvin T KuskoCanadaElwin Sharvill UNQUALIFIED
Faith E BowleyIndiaIvan Magalhaes NEW
Mayumi G IturbideItalyAnna Fali UNQUALIFIED
Wickens E BriddickItalyIvan Magalhaes UNQUALIFIED
Tony A DarakjyItalyStephen Shaw NEGOTIATION
Silvio U SchemmerAustraliaStephen Shaw NEW
Darci A RimIndiaStephen Shaw QUALIFIED
Costa S RoysterUnited KingdomAmy Elsner UNQUALIFIED
Ashley B SaylorsAustraliaOnyama Limba QUALIFIED
Arvin T ChuiArgentinaStephen Shaw QUALIFIED
Leon H FerenczUnited KingdomAmy Elsner UNQUALIFIED
Arvin M BriddickJapanOnyama Limba RENEWAL
Rodrigues P BologniaArgentinaXuxue Feng UNQUALIFIED
Jones J BriddickAustraliaIoni Bowcher NEW
Morrow N SaylorsUnited KingdomXuxue Feng RENEWAL
Johnson E DarakjyBrazilOnyama Limba NEGOTIATION
Aika F GauchoFranceOnyama Limba QUALIFIED
Nicolas G RimFranceIvan Magalhaes NEW
Alejandro N PaprockiSpainAnna Fali PROPOSAL
Sinclair X AmigonCanadaXuxue Feng QUALIFIED
Jennifer D InouyeAustraliaIoni Bowcher NEGOTIATION
Emily V MacleadFranceAsiya Javayant UNQUALIFIED
Leja C OstroskyAustraliaIoni Bowcher RENEWAL
Ivar J PerinArgentinaStephen Shaw QUALIFIED
Wickens K MaletRussiaElwin Sharvill QUALIFIED
Faith G IturbideSpainIoni Bowcher QUALIFIED
Arvin R CaldareraIndiaStephen Shaw NEW
Jones R SaylorsSpainIvan Magalhaes PROPOSAL
Faith I GarufiAustraliaAnna Fali PROPOSAL
Stacey N AmigonAustraliaOnyama Limba UNQUALIFIED
Leja E BologniaSpainAsiya Javayant NEGOTIATION
Faith Q WhobreyJapanBernardo Dominic QUALIFIED
Ashley F DoeSpainIvan Magalhaes RENEWAL
Arvin K InouyeItalyElwin Sharvill QUALIFIED
Tony O WieserGermanyElwin Sharvill UNQUALIFIED
Isabel C GarufiCanadaIvan Magalhaes UNQUALIFIED
Aditya Q InouyeJapanElwin Sharvill NEW
Frozen Columns
Name
Francesco C Malet
Ricardo F Malet
Jeanfrancois D Poquette
Deepesh P Morasca
Rodrigues B Paprocki
Juan X Garufi
Jeanfrancois H Marrier
Alejandro G Malet
Johnson X Oldroyd
Ivar Q Ruta
Francesco A Inouye
Antonio T Malet
Alejandro U Butt
Alejandro B Iturbide
Mayumi Q Garufi
Ricardo U Saylors
Chavez V Tollner
Aika W Marrier
Aruna K Stockham
Aruna J Marrier
Jennifer M Kusko
Ricardo O Maclead
Jones B Shinko
Johnson S Gaucho
Costa Q Tollner
Izzy S Marrier
Mayumi X Glick
Munro Z Foller
Deepesh F Doe
Silvio A Glick
Aika P Stockham
Mujtaba I Oldroyd
Maisha H Whobrey
Cody V Paprocki
Julie L Stockham
Arvin K Ruta
Isabel X Bowley
Ashley U Nicka
Deepesh K Sergi
Julie X Gillian
Deepesh M Albares
David A Schemmer
Isabel A Oldroyd
Aika P Wieser
Munro O Rim
Cody Y Garufi
Morrow M Waycott
Stacey R Doe
Greenwood X Gaucho
Rodrigues W Shinko
IdCountryDate
1000Brazil2024-04-18
1001United Kingdom2024-04-10
1002Italy2024-04-18
1003Italy2024-03-31
1004Spain2024-03-31
1005Canada2024-04-03
1006Japan2024-04-09
1007Spain2024-04-04
1008Russia2024-04-13
1009Italy2024-04-18
1010Germany2024-04-11
1011Japan2024-03-25
1012India2024-04-13
1013Australia2024-04-12
1014Australia2024-04-13
1015Italy2024-04-02
1016Germany2024-04-18
1017United Kingdom2024-04-04
1018Canada2024-04-11
1019Russia2024-04-09
1020Canada2024-03-26
1021Germany2024-04-01
1022Japan2024-03-25
1023Russia2024-03-23
1024Argentina2024-04-16
1025Australia2024-04-18
1026France2024-03-28
1027United Kingdom2024-04-13
1028Canada2024-03-22
1029Brazil2024-04-05
1030Italy2024-03-21
1031Argentina2024-04-02
1032Italy2024-04-09
1033Japan2024-04-19
1034India2024-03-25
1035Argentina2024-03-24
1036Spain2024-04-17
1037United Kingdom2024-04-07
1038France2024-04-07
1039France2024-04-12
1040France2024-04-07
1041Argentina2024-03-28
1042United Kingdom2024-03-24
1043Germany2024-04-03
1044Spain2024-03-29
1045Germany2024-04-09
1046Germany2024-03-26
1047United Kingdom2024-04-09
1048Russia2024-04-05
1049India2024-04-08

On-Demand Data

NameIdCountryDate
Claire K Wieser1000Russia2024-03-27
Leja L Iturbide1001India2024-04-12
Ivar M Doe1002Russia2024-03-22
James A Malet1003Argentina2024-04-01
Jennifer B Wieser1004Brazil2024-04-02
Murillo K Kusko1005Argentina2024-04-01
Ricardo B Garufi1006France2024-03-25
Izzy P Ostrosky1007Italy2024-03-25
Juan B Tollner1008Italy2024-04-19
James S Paprocki1009United Kingdom2024-04-18
Aika U Glick1010Italy2024-04-11
Juan O Ruta1011Brazil2024-03-24
Faith K Malet1012Germany2024-04-10
Isabel J Flosi1013Argentina2024-04-13
Aika M Caldarera1014United Kingdom2024-04-18
Mujtaba Q Rulapaugh1015Italy2024-03-31
Ashley U Darakjy1016France2024-04-03
Jones Z Iturbide1017Japan2024-04-10
Claire S Bowley1018Japan2024-04-01
Rodrigues J Wieser1019Australia2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez J InouyeUnited KingdomOnyama Limba RENEWAL
Munro S RulapaughSpainIoni Bowcher PROPOSAL
Aditya M RutaBrazilOnyama Limba PROPOSAL
Maria C BriddickCanadaAsiya Javayant RENEWAL
Aika E CaldareraFranceIvan Magalhaes PROPOSAL
Antonio F MarrierArgentinaXuxue Feng PROPOSAL
Smith E OldroydArgentinaIvan Magalhaes QUALIFIED
Cody V FerenczItalyElwin Sharvill NEGOTIATION
Greenwood U BologniaIndiaOnyama Limba PROPOSAL
Murillo K IturbideIndiaAmy Elsner NEGOTIATION
Costa Y BologniaItalyAnna Fali UNQUALIFIED
Leon O InouyeBrazilIvan Magalhaes QUALIFIED
Juan S RoysterGermanyStephen Shaw QUALIFIED
Costa A FlosiUnited KingdomAnna Fali NEGOTIATION
Johnson J InouyeSpainOnyama Limba UNQUALIFIED
Sinclair G MacleadItalyElwin Sharvill NEGOTIATION
Sinclair C WieserJapanAmy Elsner QUALIFIED
Alejandro S FlosiRussiaIvan Magalhaes QUALIFIED
Greenwood L GillianCanadaOnyama Limba UNQUALIFIED
Greenwood X FigeroaBrazilIoni Bowcher NEGOTIATION
Leja K BowleyAustraliaAnna Fali QUALIFIED
Alejandro X MorascaIndiaAmy Elsner QUALIFIED
Francesco K NickaArgentinaIvan Magalhaes QUALIFIED
Cody T PaprockiIndiaIvan Magalhaes RENEWAL
Greenwood H VenereFranceXuxue Feng NEW
Tony W DilliardIndiaIoni Bowcher NEW
Aditya S BologniaUnited KingdomXuxue Feng NEGOTIATION
Wickens B FerenczSpainStephen Shaw UNQUALIFIED
Tony X SlusarskiArgentinaXuxue Feng QUALIFIED
Aruna M RutaCanadaOnyama Limba QUALIFIED
Sinclair N DilliardArgentinaIvan Magalhaes QUALIFIED
Rodrigues W AmigonRussiaIvan Magalhaes QUALIFIED
Smith E AmigonItalyAsiya Javayant PROPOSAL
Mayumi I VocelkaItalyAnna Fali RENEWAL
James I IturbideBrazilIvan Magalhaes NEW
Silvio V MarrierItalyBernardo Dominic NEW
Octavia H GarufiCanadaAmy Elsner QUALIFIED
Ricardo D KolmetzItalyIvan Magalhaes UNQUALIFIED
Johnson F FigeroaFranceStephen Shaw RENEWAL
Aika F MarrierUnited KingdomAmy Elsner NEW

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