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
Ashley V WieserBrazilAsiya Javayant RENEWAL
Jefferson C DarakjyCanadaBernardo Dominic QUALIFIED
Misaki T VocelkaAustraliaIoni Bowcher QUALIFIED
Francesco M AmigonGermanyOnyama Limba PROPOSAL
Alejandro S FerenczFranceAnna Fali RENEWAL
Leja R WieserRussiaIoni Bowcher QUALIFIED
Jones U WieserArgentinaAnna Fali QUALIFIED
Morrow X KuskoJapanIvan Magalhaes RENEWAL
Claire T WaycottCanadaXuxue Feng PROPOSAL
Jones A MorascaUnited KingdomBernardo Dominic NEW
Munro Z DoeGermanyOnyama Limba PROPOSAL
Leja G BologniaIndiaAnna Fali QUALIFIED
Jennifer E TollnerGermanyAsiya Javayant NEGOTIATION
Munro J OldroydFranceIoni Bowcher RENEWAL
Claire D AmigonCanadaIoni Bowcher QUALIFIED
Stacey U SaylorsIndiaBernardo Dominic PROPOSAL
Arvin L SchemmerUnited KingdomAmy Elsner NEGOTIATION
Leja A ShinkoRussiaAmy Elsner PROPOSAL
Cody G ButtIndiaIoni Bowcher PROPOSAL
Mujtaba L WhobreyUnited KingdomStephen Shaw UNQUALIFIED
Leon T BologniaCanadaAsiya Javayant NEGOTIATION
James A CaldareraGermanyBernardo Dominic NEW
Arvin G RulapaughSpainAnna Fali PROPOSAL
Maria T MaletJapanAnna Fali RENEWAL
Aika W NickaIndiaIoni Bowcher PROPOSAL
Rodrigues R FlosiFranceStephen Shaw UNQUALIFIED
Arvin B GarufiAustraliaXuxue Feng UNQUALIFIED
Wickens R ButtArgentinaXuxue Feng RENEWAL
Maisha T GarufiFranceIvan Magalhaes RENEWAL
Francesco B MorascaArgentinaAsiya Javayant UNQUALIFIED
Clifford R BowleyItalyOnyama Limba PROPOSAL
Ricardo O OstroskyItalyBernardo Dominic RENEWAL
Adams U PaprockiItalyIoni Bowcher NEW
Jefferson V MarrierUnited KingdomIvan Magalhaes RENEWAL
Maisha R SchemmerIndiaOnyama Limba UNQUALIFIED
Jennifer S VenereJapanStephen Shaw UNQUALIFIED
Jefferson B GarufiFranceAmy Elsner RENEWAL
Nicolas X AlbaresIndiaIoni Bowcher UNQUALIFIED
Kaitlin N VocelkaCanadaOnyama Limba NEW
Cody L DarakjySpainIvan Magalhaes UNQUALIFIED
Costa G TollnerBrazilStephen Shaw UNQUALIFIED
Leja G ButtArgentinaIvan Magalhaes QUALIFIED
Costa X BologniaSpainOnyama Limba PROPOSAL
Leja H FollerUnited KingdomStephen Shaw NEW
Nicolas T BowleyJapanIvan Magalhaes QUALIFIED
Adams O BologniaJapanStephen Shaw QUALIFIED
Izzy E DoeFranceStephen Shaw QUALIFIED
Ivar O StockhamItalyAsiya Javayant QUALIFIED
Ashley Z IturbideUnited KingdomStephen Shaw PROPOSAL
Arvin S FigeroaItalyAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Chavez Z TollnerGermanyXuxue Feng RENEWAL
Chavez H IturbideBrazilAnna Fali NEW
Chavez Z SaylorsSpainAnna Fali QUALIFIED
Misaki R DoeGermanyIoni Bowcher NEW
Misaki E DilliardIndiaIvan Magalhaes NEW
Mujtaba A BowleyCanadaStephen Shaw NEW
Jeanfrancois L DoeIndiaBernardo Dominic UNQUALIFIED
Arvin M AlbaresGermanyStephen Shaw UNQUALIFIED
Maisha Q CaldareraBrazilStephen Shaw UNQUALIFIED
Johnson M IturbideFranceStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore K FollerIndia2024-04-12Chapman, Ross E Esq NEW72Stephen Shaw
1001Maria V AlbaresGermany2024-03-30Morlong Associates NEGOTIATION42Elwin Sharvill
1002Ashley R CaudySpain2024-04-18King, Christopher A Esq NEW10Xuxue Feng
1003Aika T BriddickAustralia2024-03-31Feiner Bros PROPOSAL4Onyama Limba
1004Cody T WaycottUnited Kingdom2024-04-04Chanay, Jeffrey A Esq NEW99Amy Elsner
1005Aditya S SaylorsArgentina2024-04-04Chapman, Ross E Esq PROPOSAL24Xuxue Feng
1006Adams M IturbideRussia2024-04-10Rousseaux, Michael Esq QUALIFIED22Amy Elsner
1007Aruna G StensethIndia2024-04-09Rousseaux, Michael Esq NEGOTIATION22Elwin Sharvill
1008Arvin W DilliardUnited Kingdom2024-03-29King, Christopher A Esq NEW59Xuxue Feng
1009Octavia Y OldroydCanada2024-04-27Feiner Bros NEW79Ivan Magalhaes
1010Leon O FollerAustralia2024-04-10Morlong Associates RENEWAL13Bernardo Dominic
1011Aika T OstroskyUnited Kingdom2024-04-27Commercial Press UNQUALIFIED5Onyama Limba
1012Claire X OldroydUnited Kingdom2024-04-23Truhlar And Truhlar Attys NEW24Elwin Sharvill
1013Johnson D SaylorsAustralia2024-04-09Feltz Printing Service NEGOTIATION89Asiya Javayant
1014Francesco U FollerUnited Kingdom2024-04-21Chapman, Ross E Esq NEGOTIATION51Elwin Sharvill
1015Maisha C CampainIndia2024-04-02Commercial Press PROPOSAL97Stephen Shaw
1016Smith R TollnerIndia2024-04-13Truhlar And Truhlar Attys NEW1Xuxue Feng
1017Ricardo O RimAustralia2024-04-26Chemel, James L Cpa RENEWAL23Xuxue Feng
1018Aditya T ShinkoSpain2024-04-05Rousseaux, Michael Esq NEW28Ioni Bowcher
1019Faith I CaudyBrazil2024-04-12Commercial Press PROPOSAL11Asiya Javayant
1020Darci I AmigonJapan2024-04-12Rousseaux, Michael Esq PROPOSAL80Onyama Limba
1021Rodrigues A WieserUnited Kingdom2024-04-13Rangoni Of Florence RENEWAL69Onyama Limba
1022James N VenereCanada2024-04-20Commercial Press NEW10Ivan Magalhaes
1023Stacey Z RimAustralia2024-04-27Feiner Bros NEGOTIATION76Bernardo Dominic
1024Kaitlin W OstroskyUnited Kingdom2024-04-12Printing Dimensions NEW27Bernardo Dominic
1025Wickens L RoysterBrazil2024-04-03Buckley Miller Wright PROPOSAL41Xuxue Feng
1026Francesco K SchemmerAustralia2024-04-01Chapman, Ross E Esq NEW36Amy Elsner
1027Johnson L StensethArgentina2024-04-26Chanay, Jeffrey A Esq NEW91Ioni Bowcher
1028Kadeem U BologniaSpain2024-04-12Feiner Bros RENEWAL79Stephen Shaw
1029Leja K OldroydJapan2024-04-09Rangoni Of Florence UNQUALIFIED41Onyama Limba
1030Murillo X GarufiJapan2024-04-03Chapman, Ross E Esq QUALIFIED84Ioni Bowcher
1031Francesco P PoquetteItaly2024-04-24Dorl, James J Esq PROPOSAL78Ivan Magalhaes
1032Silvio S StockhamBrazil2024-04-14Chemel, James L Cpa RENEWAL42Anna Fali
1033Leon U IturbideArgentina2024-04-01Feiner Bros UNQUALIFIED1Ivan Magalhaes
1034Tony T ChuiUnited Kingdom2024-04-22Rangoni Of Florence PROPOSAL29Ivan Magalhaes
1035Nicolas T ButtJapan2024-04-24Truhlar And Truhlar Attys NEW74Ivan Magalhaes
1036Misaki Q MaletSpain2024-04-26Rousseaux, Michael Esq PROPOSAL60Ioni Bowcher
1037Rodrigues X WaycottUnited Kingdom2024-04-10Feltz Printing Service UNQUALIFIED81Amy Elsner
1038Murillo Q StockhamItaly2024-04-26Rangoni Of Florence UNQUALIFIED25Bernardo Dominic
1039Mayumi Q CaudyCanada2024-04-05Chanay, Jeffrey A Esq UNQUALIFIED64Anna Fali
1040Leja Z ShinkoBrazil2024-04-06Chanay, Jeffrey A Esq PROPOSAL56Xuxue Feng
1041Nicolas H OldroydGermany2024-04-27Feiner Bros UNQUALIFIED66Asiya Javayant
1042Salvatore W NickaAustralia2024-04-25Morlong Associates PROPOSAL38Ivan Magalhaes
1043Cody S MaletArgentina2024-04-26Rangoni Of Florence RENEWAL6Xuxue Feng
1044Ivar I MaletArgentina2024-04-27Rousseaux, Michael Esq QUALIFIED53Ivan Magalhaes
1045Misaki N StensethSpain2024-04-26Rousseaux, Michael Esq QUALIFIED36Xuxue Feng
1046Claire O BriddickCanada2024-04-21Rangoni Of Florence QUALIFIED64Ivan Magalhaes
1047Julie Z CampainRussia2024-04-17Chanay, Jeffrey A Esq PROPOSAL11Xuxue Feng
1048Kaitlin W CampainSpain2024-04-15Morlong Associates NEGOTIATION1Asiya Javayant
1049Maria Q BologniaAustralia2024-04-23Truhlar And Truhlar Attys UNQUALIFIED78Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Greenwood P OstroskyIndiaElwin Sharvill NEW
Francesco D FerenczFranceXuxue Feng UNQUALIFIED
Izzy E PerinSpainElwin Sharvill QUALIFIED
Darci R IturbideIndiaAsiya Javayant NEW
Cody H StensethRussiaStephen Shaw NEGOTIATION
Ivar H GillianItalyElwin Sharvill NEGOTIATION
Chavez L FollerUnited KingdomAsiya Javayant PROPOSAL
Francesco T CaldareraCanadaAmy Elsner NEW
Aika Q AlbaresJapanAnna Fali NEW
Maisha U AlbaresGermanyBernardo Dominic NEW
Silvio D KolmetzCanadaAnna Fali RENEWAL
Mujtaba H DoeJapanXuxue Feng RENEWAL
Ricardo K KolmetzItalyBernardo Dominic NEGOTIATION
Costa Y OstroskyAustraliaAsiya Javayant NEW
Maria I PerinFranceOnyama Limba QUALIFIED
Antonio T DarakjyBrazilOnyama Limba PROPOSAL
Mayumi Y NickaArgentinaAmy Elsner PROPOSAL
Rodrigues Z WhobreyFranceIoni Bowcher UNQUALIFIED
Jefferson R TollnerIndiaStephen Shaw PROPOSAL
Smith V OldroydJapanIoni Bowcher QUALIFIED
Emily O OstroskyItalyStephen Shaw UNQUALIFIED
Ivar J WieserBrazilElwin Sharvill PROPOSAL
James T GarufiFranceIoni Bowcher UNQUALIFIED
Ricardo F PoquetteBrazilOnyama Limba QUALIFIED
Faith R SergiGermanyAnna Fali NEGOTIATION
Cody I IturbideItalyElwin Sharvill QUALIFIED
Mayumi Q OldroydBrazilStephen Shaw NEGOTIATION
David G FerenczUnited KingdomXuxue Feng QUALIFIED
Kadeem M MarrierItalyXuxue Feng NEGOTIATION
Jefferson D ButtBrazilAnna Fali NEGOTIATION
Nicolas V AlbaresAustraliaAsiya Javayant QUALIFIED
Mujtaba I OldroydGermanyOnyama Limba QUALIFIED
Darci T InouyeCanadaAmy Elsner NEGOTIATION
Izzy G BowleyItalyStephen Shaw PROPOSAL
Deepesh H KolmetzJapanIoni Bowcher NEW
Kadeem X ChuiArgentinaAnna Fali UNQUALIFIED
Smith K NestleRussiaBernardo Dominic UNQUALIFIED
Isabel O DoeGermanyOnyama Limba NEW
Ricardo Z WhobreyCanadaBernardo Dominic NEW
Aika Y WaycottRussiaElwin Sharvill NEW
Darci R NickaJapanStephen Shaw QUALIFIED
Costa R GlickUnited KingdomOnyama Limba PROPOSAL
Mayumi D NickaAustraliaAsiya Javayant NEGOTIATION
Antonio U CampainIndiaIoni Bowcher NEGOTIATION
Aika T WieserIndiaAmy Elsner NEW
Kaitlin K SlusarskiGermanyIoni Bowcher QUALIFIED
Claire O MorascaJapanIvan Magalhaes NEGOTIATION
Deepesh B IturbideAustraliaAmy Elsner QUALIFIED
Nicolas A MacleadBrazilIoni Bowcher RENEWAL
Julie P DoeFranceBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Isabel J Caudy
Faith J Campain
Mayumi E Gillian
Emily B Kolmetz
Emily V Rulapaugh
Nicolas X Wieser
Silvio Q Gillian
Morrow G Briddick
David K Gaucho
Munro Y Bowley
Emily M Saylors
Faith I Marrier
Deepesh Q Flosi
Antonio L Briddick
Isabel K Caudy
Ricardo E Kolmetz
Kadeem I Whobrey
Faith T Malet
Stacey R Kusko
Cody A Morasca
Ricardo K Chui
David G Kusko
Francesco Q Stenseth
Rodrigues R Whobrey
Isabel G Glick
Octavia M Slusarski
Murillo W Kolmetz
Cody Q Poquette
Rodrigues B Maclead
Leja V Slusarski
Isabel H Campain
Julie O Figeroa
Rodrigues E Bowley
Stacey V Doe
Jeanfrancois S Paprocki
Tony F Doe
Jefferson Q Marrier
Johnson Q Albares
Kadeem B Dilliard
Sinclair U Doe
Wickens K Maclead
Nicolas Q Albares
Mujtaba U Stockham
Ivar F Royster
Greenwood Y Oldroyd
Rodrigues R Stockham
Smith I Figeroa
Stacey N Schemmer
Julie L Darakjy
Kadeem U Malet
IdCountryDate
1000Brazil2024-04-22
1001Japan2024-04-09
1002Brazil2024-04-02
1003Spain2024-04-05
1004Russia2024-04-14
1005Argentina2024-03-30
1006Japan2024-04-18
1007Japan2024-03-29
1008Canada2024-04-26
1009Russia2024-04-19
1010Argentina2024-04-03
1011Argentina2024-04-13
1012Italy2024-04-20
1013France2024-04-19
1014Germany2024-04-05
1015Brazil2024-03-31
1016United Kingdom2024-04-13
1017Russia2024-04-22
1018Argentina2024-04-14
1019United Kingdom2024-04-01
1020India2024-04-05
1021Russia2024-04-13
1022Australia2024-04-04
1023France2024-04-19
1024Australia2024-04-19
1025India2024-04-02
1026Australia2024-04-19
1027Canada2024-04-08
1028Canada2024-04-23
1029Germany2024-04-06
1030Japan2024-04-22
1031France2024-04-24
1032Canada2024-04-09
1033Spain2024-03-31
1034Russia2024-04-15
1035Brazil2024-04-03
1036France2024-04-04
1037United Kingdom2024-04-19
1038Brazil2024-04-26
1039Spain2024-04-27
1040Brazil2024-04-01
1041Canada2024-04-03
1042Germany2024-04-02
1043Argentina2024-04-26
1044United Kingdom2024-04-12
1045Italy2024-04-01
1046Brazil2024-04-21
1047Australia2024-04-03
1048Spain2024-04-18
1049Italy2024-04-05

On-Demand Data

NameIdCountryDate
Ivar Z Gillian1000Australia2024-04-14
Adams K Caudy1001Russia2024-04-26
James V Gillian1002India2024-04-03
Rodrigues W Stockham1003Russia2024-04-26
Ivar C Venere1004Brazil2024-04-13
Rodrigues C Sergi1005Australia2024-04-10
Kaitlin E Garufi1006India2024-04-24
David O Gaucho1007India2024-04-15
Aditya E Bowley1008Australia2024-04-27
Darci Q Royster1009Brazil2024-04-05
Octavia G Flosi1010Japan2024-04-04
Faith P Flosi1011France2024-04-22
Kadeem P Tollner1012Brazil2024-04-11
Maisha U Shinko1013Brazil2024-04-20
Kaitlin V Caldarera1014Russia2024-03-30
Tony W Waycott1015Argentina2024-04-18
Juan B Inouye1016United Kingdom2024-04-05
Jennifer S Poquette1017Argentina2024-03-30
Costa R Nestle1018Russia2024-03-30
Mujtaba C Butt1019Germany2024-03-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio F TollnerItalyIoni Bowcher QUALIFIED
Emily U ShinkoItalyElwin Sharvill PROPOSAL
Cody P NickaAustraliaOnyama Limba NEGOTIATION
Stacey N PaprockiGermanyElwin Sharvill RENEWAL
Morrow U RulapaughIndiaXuxue Feng RENEWAL
Murillo Y DarakjyRussiaIvan Magalhaes PROPOSAL
Octavia W RulapaughCanadaAnna Fali QUALIFIED
Jones O StockhamRussiaOnyama Limba PROPOSAL
Mujtaba J BowleyItalyElwin Sharvill NEW
Misaki I SlusarskiUnited KingdomOnyama Limba QUALIFIED
Misaki E ShinkoArgentinaXuxue Feng RENEWAL
Rodrigues A FigeroaArgentinaAmy Elsner QUALIFIED
James J RimUnited KingdomStephen Shaw PROPOSAL
Jones V RutaArgentinaIoni Bowcher PROPOSAL
Mayumi X BowleyRussiaAmy Elsner RENEWAL
Leon V MaletBrazilAnna Fali QUALIFIED
Octavia Z DarakjyRussiaIvan Magalhaes QUALIFIED
Adams F FlosiSpainIoni Bowcher NEW
Jones R DarakjyGermanyElwin Sharvill PROPOSAL
Silvio J DoeSpainBernardo Dominic RENEWAL
Arvin K VocelkaSpainStephen Shaw UNQUALIFIED
Silvio X OstroskyUnited KingdomIoni Bowcher UNQUALIFIED
Octavia X MorascaFranceOnyama Limba RENEWAL
Chavez F GlickItalyXuxue Feng UNQUALIFIED
Aika L CaldareraJapanStephen Shaw QUALIFIED
Stacey F RoysterUnited KingdomAsiya Javayant PROPOSAL
Emily T RimRussiaIvan Magalhaes UNQUALIFIED
Rodrigues K StockhamUnited KingdomAmy Elsner UNQUALIFIED
Rodrigues I SlusarskiCanadaIoni Bowcher NEW
Cody O DarakjySpainXuxue Feng NEGOTIATION
Murillo A FollerRussiaAsiya Javayant QUALIFIED
Maria G SchemmerRussiaElwin Sharvill PROPOSAL
Deepesh E StensethUnited KingdomIvan Magalhaes RENEWAL
Salvatore T OldroydRussiaIvan Magalhaes NEW
Costa S BologniaItalyAsiya Javayant UNQUALIFIED
Smith X OstroskyRussiaXuxue Feng QUALIFIED
Johnson P PaprockiJapanStephen Shaw NEW
Jones F RoysterUnited KingdomAnna Fali NEW
Julie X MaletCanadaAsiya Javayant NEW
Alejandro S AmigonAustraliaIoni Bowcher 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>