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
Alejandro P CaudyCanadaIoni Bowcher NEW
Clifford N AlbaresFranceXuxue Feng RENEWAL
Kadeem B RutaRussiaIoni Bowcher UNQUALIFIED
Misaki C ChuiAustraliaIvan Magalhaes QUALIFIED
Ricardo R BriddickJapanOnyama Limba QUALIFIED
Misaki K TollnerItalyXuxue Feng NEGOTIATION
Aditya D FollerItalyIvan Magalhaes RENEWAL
Mayumi J WieserGermanyBernardo Dominic QUALIFIED
Juan V KolmetzFranceXuxue Feng NEGOTIATION
Tony U DoeAustraliaAnna Fali RENEWAL
Rodrigues H SaylorsAustraliaElwin Sharvill QUALIFIED
Darci V MorascaArgentinaAnna Fali RENEWAL
Clifford V PaprockiJapanBernardo Dominic QUALIFIED
Morrow V CampainArgentinaIvan Magalhaes RENEWAL
Ricardo J CaldareraIndiaIvan Magalhaes QUALIFIED
Costa A CaldareraRussiaAmy Elsner NEGOTIATION
Jeanfrancois P DoeFranceBernardo Dominic NEGOTIATION
Arvin U SergiFranceElwin Sharvill NEGOTIATION
Silvio Y SergiRussiaXuxue Feng NEGOTIATION
Sinclair G DarakjyGermanyBernardo Dominic PROPOSAL
Darci A CaudySpainStephen Shaw NEW
Maria U InouyeItalyOnyama Limba PROPOSAL
Tony C DoeArgentinaIvan Magalhaes NEGOTIATION
Sinclair B TollnerJapanElwin Sharvill PROPOSAL
Jefferson B MarrierBrazilOnyama Limba PROPOSAL
Mujtaba C GlickIndiaXuxue Feng NEW
Arvin J MorascaBrazilIoni Bowcher QUALIFIED
Arvin H MorascaUnited KingdomOnyama Limba NEW
James Z AmigonAustraliaXuxue Feng RENEWAL
Johnson C SlusarskiBrazilOnyama Limba PROPOSAL
Juan B IturbideGermanyAnna Fali NEGOTIATION
Deepesh O TollnerFranceAnna Fali PROPOSAL
Leja Y FigeroaCanadaIoni Bowcher UNQUALIFIED
Nicolas X MarrierAustraliaIvan Magalhaes NEW
Costa D AmigonGermanyBernardo Dominic RENEWAL
Jefferson Z DoeUnited KingdomIvan Magalhaes PROPOSAL
Octavia N RimCanadaElwin Sharvill NEW
Alejandro U VenereGermanyElwin Sharvill RENEWAL
Greenwood R MaletJapanIvan Magalhaes RENEWAL
Maria F MarrierArgentinaElwin Sharvill NEW
Misaki Y FlosiIndiaAnna Fali QUALIFIED
Maisha F OstroskyJapanIvan Magalhaes NEW
Antonio S VenereRussiaIvan Magalhaes QUALIFIED
Rodrigues J NickaFranceBernardo Dominic RENEWAL
Deepesh W RutaIndiaAsiya Javayant PROPOSAL
Maisha R CaudyItalyBernardo Dominic NEGOTIATION
Salvatore I AmigonGermanyIoni Bowcher PROPOSAL
Octavia B WieserBrazilOnyama Limba UNQUALIFIED
Stacey I DoeJapanAmy Elsner NEW
James S MaletSpainXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Salvatore L SaylorsRussiaStephen Shaw UNQUALIFIED
Chavez B FerenczAustraliaXuxue Feng QUALIFIED
David M SergiFranceStephen Shaw NEW
Mujtaba R WaycottRussiaIvan Magalhaes PROPOSAL
Nicolas H FollerBrazilElwin Sharvill QUALIFIED
Greenwood G CampainRussiaBernardo Dominic QUALIFIED
Mujtaba J MorascaGermanyStephen Shaw NEGOTIATION
Salvatore F GlickItalyIoni Bowcher RENEWAL
Antonio K WhobreyAustraliaIoni Bowcher RENEWAL
Costa A CaldareraItalyAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja H PerinJapan2024-05-04Dorl, James J Esq PROPOSAL81Ioni Bowcher
1001Smith S ButtItaly2024-04-26King, Christopher A Esq NEW25Anna Fali
1002Salvatore L IturbideIndia2024-05-01Buckley Miller Wright NEW51Amy Elsner
1003Faith T IturbideAustralia2024-05-06King, Christopher A Esq RENEWAL79Stephen Shaw
1004Tony O ShinkoGermany2024-05-14Buckley Miller Wright RENEWAL6Anna Fali
1005Izzy E MaletAustralia2024-04-15Buckley Miller Wright UNQUALIFIED98Ioni Bowcher
1006Misaki T OstroskyAustralia2024-04-15Benton, John B Jr PROPOSAL30Amy Elsner
1007Greenwood W KolmetzAustralia2024-05-08Dorl, James J Esq UNQUALIFIED31Bernardo Dominic
1008Misaki A DoeUnited Kingdom2024-04-17Rousseaux, Michael Esq UNQUALIFIED93Asiya Javayant
1009Munro Q SaylorsAustralia2024-05-04Feiner Bros PROPOSAL77Amy Elsner
1010Octavia Q NestleGermany2024-04-15Morlong Associates NEW31Onyama Limba
1011Misaki U GarufiGermany2024-05-02Buckley Miller Wright QUALIFIED72Ivan Magalhaes
1012Ivar M SlusarskiArgentina2024-04-29Chanay, Jeffrey A Esq UNQUALIFIED84Elwin Sharvill
1013Francesco O RutaRussia2024-04-29Rousseaux, Michael Esq NEGOTIATION84Elwin Sharvill
1014Jefferson Q KolmetzArgentina2024-04-19King, Christopher A Esq UNQUALIFIED20Ivan Magalhaes
1015Silvio A GlickIndia2024-04-28Morlong Associates RENEWAL67Asiya Javayant
1016Misaki T NestleUnited Kingdom2024-04-27Benton, John B Jr NEW21Ivan Magalhaes
1017Sinclair P CampainSpain2024-04-26Rangoni Of Florence RENEWAL88Bernardo Dominic
1018Aditya N DarakjyRussia2024-05-14Truhlar And Truhlar Attys UNQUALIFIED43Onyama Limba
1019Alejandro A CampainJapan2024-04-21Benton, John B Jr NEGOTIATION37Ivan Magalhaes
1020Mayumi M BowleyCanada2024-05-08King, Christopher A Esq UNQUALIFIED51Xuxue Feng
1021Ashley L OstroskyCanada2024-04-21Commercial Press RENEWAL23Xuxue Feng
1022Antonio O SergiUnited Kingdom2024-05-10Rangoni Of Florence RENEWAL41Onyama Limba
1023Aika X NestleRussia2024-04-22Truhlar And Truhlar Attys QUALIFIED0Elwin Sharvill
1024Mujtaba Q PoquetteJapan2024-04-29Chapman, Ross E Esq RENEWAL37Bernardo Dominic
1025Chavez L RimCanada2024-04-26Buckley Miller Wright NEW67Ioni Bowcher
1026David M WaycottSpain2024-05-14Commercial Press PROPOSAL14Xuxue Feng
1027Aditya H AmigonUnited Kingdom2024-04-19King, Christopher A Esq NEW29Asiya Javayant
1028Greenwood T FerenczBrazil2024-04-26Dorl, James J Esq PROPOSAL70Stephen Shaw
1029Tony E MarrierGermany2024-05-07Buckley Miller Wright NEW88Anna Fali
1030Deepesh P RimItaly2024-04-17Rousseaux, Michael Esq UNQUALIFIED53Ivan Magalhaes
1031Deepesh E MaletGermany2024-04-25Rangoni Of Florence NEGOTIATION63Bernardo Dominic
1032Smith J SaylorsSpain2024-05-04Rangoni Of Florence QUALIFIED88Amy Elsner
1033Jeanfrancois I SergiBrazil2024-04-20Chapman, Ross E Esq NEGOTIATION18Ivan Magalhaes
1034Juan K AmigonJapan2024-05-08Chemel, James L Cpa NEW2Asiya Javayant
1035Salvatore K MarrierBrazil2024-04-28Rangoni Of Florence PROPOSAL13Anna Fali
1036James K BowleyCanada2024-05-12Chemel, James L Cpa NEW42Amy Elsner
1037Jennifer X MorascaCanada2024-04-28Dorl, James J Esq PROPOSAL38Onyama Limba
1038Kadeem H CaldareraCanada2024-05-07King, Christopher A Esq RENEWAL56Bernardo Dominic
1039Chavez Y DoeCanada2024-05-05Dorl, James J Esq NEW20Amy Elsner
1040Maisha R ChuiBrazil2024-05-12Chanay, Jeffrey A Esq QUALIFIED61Ivan Magalhaes
1041Deepesh A PaprockiArgentina2024-04-19King, Christopher A Esq PROPOSAL54Elwin Sharvill
1042Darci K DarakjySpain2024-05-01Buckley Miller Wright UNQUALIFIED61Elwin Sharvill
1043Cody L CaldareraCanada2024-04-21Dorl, James J Esq UNQUALIFIED74Onyama Limba
1044Kaitlin E BriddickItaly2024-05-08Chapman, Ross E Esq NEW1Onyama Limba
1045Ivar S FollerUnited Kingdom2024-05-07Commercial Press RENEWAL9Bernardo Dominic
1046Kadeem Y StensethAustralia2024-05-14Rousseaux, Michael Esq QUALIFIED81Asiya Javayant
1047Costa X MaletAustralia2024-05-13Commercial Press NEW55Bernardo Dominic
1048Leja M PoquetteAustralia2024-05-07Rousseaux, Michael Esq QUALIFIED66Stephen Shaw
1049Antonio R IturbideItaly2024-05-05Feltz Printing Service NEW90Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Aditya Y MacleadArgentinaBernardo Dominic PROPOSAL
James W InouyeSpainIvan Magalhaes PROPOSAL
Izzy V OldroydAustraliaIoni Bowcher PROPOSAL
Maisha K GauchoAustraliaIoni Bowcher RENEWAL
Silvio L CaldareraAustraliaElwin Sharvill PROPOSAL
Wickens B RimSpainIvan Magalhaes PROPOSAL
Cody L ChuiGermanyAnna Fali NEW
Deepesh M IturbideUnited KingdomAnna Fali PROPOSAL
Maria G SaylorsArgentinaOnyama Limba RENEWAL
Adams Z PoquetteBrazilIvan Magalhaes PROPOSAL
Francesco M FollerItalyAmy Elsner NEGOTIATION
Adams E CaldareraFranceAnna Fali UNQUALIFIED
Alejandro J WhobreyAustraliaElwin Sharvill UNQUALIFIED
Rodrigues X OstroskyUnited KingdomAmy Elsner RENEWAL
Emily R VenereJapanIvan Magalhaes UNQUALIFIED
Francesco J WieserAustraliaStephen Shaw RENEWAL
Salvatore O SlusarskiSpainElwin Sharvill UNQUALIFIED
Munro T CaldareraBrazilAnna Fali NEGOTIATION
Darci L StockhamArgentinaIoni Bowcher UNQUALIFIED
Tony R RulapaughJapanIoni Bowcher RENEWAL
Ivar N SergiBrazilOnyama Limba NEGOTIATION
Misaki N BriddickCanadaStephen Shaw NEGOTIATION
Smith F MaletUnited KingdomBernardo Dominic RENEWAL
Chavez G FerenczIndiaElwin Sharvill UNQUALIFIED
Johnson H InouyeIndiaXuxue Feng QUALIFIED
Munro D SaylorsSpainAmy Elsner NEGOTIATION
Costa Q CaldareraSpainAsiya Javayant UNQUALIFIED
Maria L RutaItalyAnna Fali PROPOSAL
Smith K WhobreyIndiaAsiya Javayant PROPOSAL
Wickens X VenereGermanyBernardo Dominic RENEWAL
Greenwood D SlusarskiCanadaXuxue Feng NEW
Cody Y SlusarskiFranceIvan Magalhaes NEW
Jennifer N NestleArgentinaElwin Sharvill NEGOTIATION
Munro O WieserSpainAsiya Javayant QUALIFIED
Antonio T NestleCanadaIoni Bowcher NEGOTIATION
Jennifer A FollerCanadaIvan Magalhaes NEGOTIATION
Kadeem V AlbaresRussiaAsiya Javayant PROPOSAL
Mujtaba A PerinUnited KingdomAsiya Javayant PROPOSAL
Rodrigues S ButtUnited KingdomXuxue Feng RENEWAL
Julie M DarakjyBrazilOnyama Limba NEW
Emily B FigeroaBrazilAmy Elsner RENEWAL
Rodrigues J RoysterAustraliaXuxue Feng PROPOSAL
Morrow B DoeUnited KingdomAsiya Javayant RENEWAL
Darci C FollerCanadaStephen Shaw RENEWAL
Darci V RimIndiaIvan Magalhaes PROPOSAL
James T SergiBrazilOnyama Limba UNQUALIFIED
Julie C SlusarskiRussiaXuxue Feng NEW
Deepesh L WieserRussiaOnyama Limba RENEWAL
Mujtaba N BowleyFranceBernardo Dominic NEGOTIATION
Clifford A GauchoAustraliaOnyama Limba NEGOTIATION
Frozen Columns
Name
Aditya V Inouye
Deepesh U Flosi
Isabel E Morasca
Adams M Rulapaugh
Stacey U Gaucho
Leja B Bolognia
Antonio U Venere
Izzy W Campain
Ivar O Ruta
Misaki B Marrier
Clifford H Saylors
Aditya T Morasca
Isabel P Stenseth
Ivar W Inouye
Stacey A Gaucho
Jefferson L Slusarski
Jones F Schemmer
Kaitlin K Kolmetz
Salvatore B Venere
Mayumi I Bowley
Jeanfrancois G Paprocki
Darci V Amigon
Maisha G Maclead
Mujtaba X Wieser
Clifford N Sergi
Smith A Sergi
David T Butt
Julie J Schemmer
Chavez S Garufi
Antonio P Paprocki
Mujtaba J Gaucho
Mayumi O Flosi
Maria L Gillian
Silvio S Inouye
Kadeem E Whobrey
Octavia I Bolognia
Francesco Q Ostrosky
Arvin U Figeroa
Deepesh U Venere
Morrow K Venere
Arvin L Vocelka
Aditya G Rim
Cody J Butt
Emily R Darakjy
Wickens W Wieser
Izzy Y Bolognia
Sinclair B Kolmetz
Jennifer N Sergi
Misaki J Campain
Munro U Garufi
IdCountryDate
1000Argentina2024-05-09
1001Russia2024-04-27
1002India2024-05-11
1003United Kingdom2024-04-29
1004United Kingdom2024-04-24
1005Australia2024-04-16
1006Spain2024-04-27
1007Argentina2024-05-08
1008Canada2024-04-22
1009India2024-05-08
1010Russia2024-05-09
1011Australia2024-05-04
1012Japan2024-05-05
1013United Kingdom2024-04-29
1014Russia2024-05-06
1015Japan2024-04-16
1016Australia2024-04-19
1017Russia2024-05-14
1018India2024-04-28
1019Argentina2024-05-08
1020Japan2024-05-01
1021Canada2024-05-06
1022Argentina2024-05-14
1023Germany2024-05-09
1024Canada2024-04-24
1025Canada2024-05-13
1026Spain2024-04-25
1027Japan2024-04-18
1028Russia2024-05-13
1029United Kingdom2024-05-03
1030Germany2024-05-10
1031United Kingdom2024-04-20
1032Germany2024-04-29
1033India2024-04-15
1034United Kingdom2024-05-14
1035Germany2024-04-25
1036Brazil2024-04-18
1037Canada2024-05-12
1038Brazil2024-04-18
1039Russia2024-05-04
1040France2024-04-16
1041Argentina2024-05-09
1042Argentina2024-04-23
1043Argentina2024-04-22
1044Japan2024-05-10
1045India2024-04-27
1046Japan2024-04-26
1047Japan2024-05-08
1048Spain2024-04-16
1049Argentina2024-04-21

On-Demand Data

NameIdCountryDate
Chavez S Ostrosky1000Japan2024-04-17
Maria C Vocelka1001France2024-04-25
Aditya H Iturbide1002Italy2024-04-29
Aditya Z Campain1003Argentina2024-04-15
Clifford T Poquette1004Argentina2024-04-29
Ricardo X Saylors1005Russia2024-05-12
James W Whobrey1006Australia2024-04-15
Clifford K Garufi1007United Kingdom2024-04-22
Ricardo F Garufi1008United Kingdom2024-04-22
Maisha D Albares1009Brazil2024-04-25
Clifford H Nicka1010Russia2024-04-30
Darci C Butt1011Canada2024-05-13
Alejandro D Ferencz1012Germany2024-05-08
Greenwood D Poquette1013India2024-05-09
Adams C Sergi1014United Kingdom2024-05-13
Salvatore Q Waycott1015Argentina2024-05-01
Mujtaba K Campain1016Spain2024-05-09
Nicolas A Stockham1017Japan2024-04-29
Emily H Saylors1018Brazil2024-05-11
Maria R Figeroa1019India2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna F RutaUnited KingdomBernardo Dominic QUALIFIED
Cody H WieserUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois D GlickItalyIvan Magalhaes NEW
Costa R SaylorsCanadaIvan Magalhaes UNQUALIFIED
Deepesh O StockhamItalyIoni Bowcher UNQUALIFIED
Cody Z CampainCanadaAmy Elsner PROPOSAL
Jefferson E WieserItalyAsiya Javayant UNQUALIFIED
Claire Z MorascaGermanyAnna Fali RENEWAL
Sinclair O IturbideJapanXuxue Feng NEGOTIATION
Jones E RimFranceXuxue Feng NEW
Greenwood U FigeroaSpainOnyama Limba PROPOSAL
Rodrigues L BologniaFranceElwin Sharvill QUALIFIED
Izzy W CampainAustraliaAsiya Javayant NEW
Silvio V MaletArgentinaOnyama Limba PROPOSAL
Jones Y VenereSpainBernardo Dominic UNQUALIFIED
Francesco H RimGermanyStephen Shaw NEW
Ricardo I BowleyIndiaStephen Shaw NEGOTIATION
Francesco D SlusarskiItalyXuxue Feng UNQUALIFIED
Mayumi C BriddickSpainOnyama Limba NEW
Francesco M SchemmerRussiaAnna Fali UNQUALIFIED
Aruna U CaudyUnited KingdomAsiya Javayant NEGOTIATION
David D FerenczSpainAmy Elsner QUALIFIED
Julie L PoquetteGermanyXuxue Feng NEGOTIATION
Jones M ButtIndiaOnyama Limba RENEWAL
Clifford F OstroskyFranceOnyama Limba NEGOTIATION
Nicolas T PaprockiIndiaBernardo Dominic PROPOSAL
Adams M ShinkoItalyIvan Magalhaes NEGOTIATION
Morrow R CaudyUnited KingdomStephen Shaw UNQUALIFIED
Tony I MaletArgentinaIvan Magalhaes NEGOTIATION
Isabel H DarakjyItalyIoni Bowcher NEGOTIATION
Maisha O KuskoBrazilStephen Shaw RENEWAL
Salvatore D BriddickSpainBernardo Dominic PROPOSAL
Leon H BriddickArgentinaOnyama Limba UNQUALIFIED
Aika E WaycottFranceAsiya Javayant RENEWAL
Cody H SlusarskiItalyStephen Shaw RENEWAL
Stacey C WieserCanadaAsiya Javayant PROPOSAL
James A RulapaughFranceAnna Fali NEGOTIATION
Antonio O IturbideUnited KingdomBernardo Dominic RENEWAL
Misaki G PoquetteBrazilOnyama Limba PROPOSAL
David E FigeroaIndiaIvan Magalhaes NEGOTIATION

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