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
Ricardo K OstroskyJapanAnna Fali QUALIFIED
Chavez G ShinkoJapanBernardo Dominic UNQUALIFIED
Clifford P FollerItalyOnyama Limba QUALIFIED
Tony V MacleadCanadaXuxue Feng NEGOTIATION
Chavez D MarrierIndiaIvan Magalhaes UNQUALIFIED
Francesco B DilliardFranceStephen Shaw RENEWAL
Nicolas F TollnerAustraliaAsiya Javayant RENEWAL
Costa X PaprockiFranceAsiya Javayant NEGOTIATION
Deepesh X DoeArgentinaAsiya Javayant RENEWAL
Costa W WhobreyBrazilAnna Fali RENEWAL
Octavia P RoysterBrazilXuxue Feng QUALIFIED
Francesco Q BriddickRussiaAsiya Javayant RENEWAL
Alejandro E BowleyUnited KingdomElwin Sharvill RENEWAL
Faith Q PerinGermanyIoni Bowcher PROPOSAL
Clifford P StensethRussiaIvan Magalhaes QUALIFIED
Antonio F MarrierAustraliaAnna Fali UNQUALIFIED
Salvatore U MaletItalyOnyama Limba QUALIFIED
Johnson Y CaudyCanadaAnna Fali NEW
Munro J WieserSpainAmy Elsner UNQUALIFIED
Faith H FerenczItalyElwin Sharvill NEW
Salvatore A WhobreyUnited KingdomAsiya Javayant QUALIFIED
Arvin Y StensethBrazilBernardo Dominic NEGOTIATION
Adams T DilliardIndiaAnna Fali NEGOTIATION
Jennifer T GlickJapanAsiya Javayant QUALIFIED
Emily T SlusarskiUnited KingdomIoni Bowcher RENEWAL
Maria C RulapaughCanadaXuxue Feng RENEWAL
Aika O CampainUnited KingdomElwin Sharvill NEW
Izzy P MorascaAustraliaAsiya Javayant NEW
Darci W StockhamJapanIoni Bowcher UNQUALIFIED
Sinclair K DarakjyRussiaAmy Elsner UNQUALIFIED
Octavia Q StensethRussiaBernardo Dominic UNQUALIFIED
Aika X PoquetteRussiaBernardo Dominic UNQUALIFIED
Costa A DoeAustraliaStephen Shaw QUALIFIED
Clifford Y FlosiItalyIoni Bowcher QUALIFIED
Octavia I MarrierItalyElwin Sharvill QUALIFIED
Cody E GauchoBrazilAsiya Javayant RENEWAL
Jones H StockhamItalyAnna Fali QUALIFIED
Aika A RoysterFranceIvan Magalhaes PROPOSAL
Francesco X MorascaUnited KingdomIvan Magalhaes PROPOSAL
Aditya I IturbideAustraliaAsiya Javayant RENEWAL
David O RutaGermanyAmy Elsner QUALIFIED
Aditya K KuskoArgentinaBernardo Dominic PROPOSAL
Cody I ShinkoRussiaStephen Shaw UNQUALIFIED
David U FerenczRussiaAnna Fali QUALIFIED
Johnson F VocelkaUnited KingdomElwin Sharvill PROPOSAL
Claire I VocelkaCanadaOnyama Limba QUALIFIED
Emily N SchemmerFranceAsiya Javayant NEGOTIATION
Ashley Z FerenczSpainAmy Elsner NEW
Arvin L MaletRussiaIvan Magalhaes RENEWAL
Arvin G FigeroaCanadaStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Octavia K SlusarskiItalyBernardo Dominic PROPOSAL
Izzy E OldroydSpainIvan Magalhaes NEGOTIATION
Darci M MaletAustraliaElwin Sharvill UNQUALIFIED
Morrow C PoquetteCanadaOnyama Limba RENEWAL
Mujtaba L CaldareraArgentinaBernardo Dominic NEGOTIATION
Alejandro B InouyeCanadaAmy Elsner PROPOSAL
Sinclair K GarufiFranceIvan Magalhaes PROPOSAL
Izzy Y CampainCanadaBernardo Dominic UNQUALIFIED
Mayumi J KolmetzArgentinaBernardo Dominic NEGOTIATION
Rodrigues L VenereSpainOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones N MaletBrazil2024-04-14Feltz Printing Service NEW56Ivan Magalhaes
1001Munro Y MorascaSpain2024-04-15Buckley Miller Wright QUALIFIED36Elwin Sharvill
1002Leja L VocelkaAustralia2024-04-21Commercial Press RENEWAL52Elwin Sharvill
1003David Y ShinkoIndia2024-04-26Chanay, Jeffrey A Esq NEGOTIATION8Onyama Limba
1004Nicolas W DilliardAustralia2024-04-13Benton, John B Jr NEGOTIATION91Asiya Javayant
1005Cody K OstroskyBrazil2024-04-08Printing Dimensions PROPOSAL97Onyama Limba
1006Salvatore I SergiFrance2024-04-24Rousseaux, Michael Esq UNQUALIFIED58Stephen Shaw
1007Kaitlin X WaycottBrazil2024-04-05Rousseaux, Michael Esq QUALIFIED29Asiya Javayant
1008David P BriddickItaly2024-04-09Chemel, James L Cpa PROPOSAL90Anna Fali
1009Misaki H IturbideJapan2024-04-07Commercial Press NEGOTIATION84Ivan Magalhaes
1010Mayumi C VenereFrance2024-04-13Chemel, James L Cpa QUALIFIED34Stephen Shaw
1011Cody V SaylorsAustralia2024-04-03Dorl, James J Esq PROPOSAL53Ivan Magalhaes
1012Misaki J RimAustralia2024-04-25Printing Dimensions RENEWAL21Asiya Javayant
1013Kaitlin H CaldareraSpain2024-04-04Chemel, James L Cpa NEGOTIATION29Asiya Javayant
1014Antonio K FerenczBrazil2024-04-14Benton, John B Jr UNQUALIFIED64Stephen Shaw
1015Julie D GauchoCanada2024-04-11Feiner Bros UNQUALIFIED34Amy Elsner
1016Kaitlin T BowleyRussia2024-04-27Rangoni Of Florence NEGOTIATION63Bernardo Dominic
1017Chavez N GlickRussia2024-04-08Chanay, Jeffrey A Esq QUALIFIED68Amy Elsner
1018Sinclair M PaprockiBrazil2024-04-07Feltz Printing Service RENEWAL87Amy Elsner
1019Isabel M RulapaughAustralia2024-04-21Chemel, James L Cpa UNQUALIFIED71Elwin Sharvill
1020David A SchemmerSpain2024-04-05Chanay, Jeffrey A Esq NEGOTIATION86Elwin Sharvill
1021Wickens A RimBrazil2024-03-31Chanay, Jeffrey A Esq NEGOTIATION35Xuxue Feng
1022Nicolas H NestleIndia2024-03-29Benton, John B Jr UNQUALIFIED61Anna Fali
1023Wickens X DoeIndia2024-03-29Buckley Miller Wright RENEWAL32Bernardo Dominic
1024Adams N NickaIndia2024-04-23Chapman, Ross E Esq NEW57Asiya Javayant
1025David R MarrierJapan2024-04-26Chemel, James L Cpa QUALIFIED49Anna Fali
1026Emily F MacleadSpain2024-04-04Buckley Miller Wright RENEWAL8Ioni Bowcher
1027Izzy A IturbideArgentina2024-03-29Chanay, Jeffrey A Esq NEGOTIATION92Bernardo Dominic
1028Alejandro Z OstroskyRussia2024-03-30Printing Dimensions RENEWAL46Bernardo Dominic
1029Greenwood P AlbaresBrazil2024-04-22Chemel, James L Cpa NEGOTIATION97Elwin Sharvill
1030Ricardo G FollerUnited Kingdom2024-04-26Chemel, James L Cpa NEW3Stephen Shaw
1031Smith P OldroydAustralia2024-04-16Morlong Associates RENEWAL96Bernardo Dominic
1032Rodrigues B BriddickIndia2024-04-13Truhlar And Truhlar Attys NEW69Anna Fali
1033Mayumi U GlickArgentina2024-04-13Morlong Associates NEGOTIATION10Xuxue Feng
1034Ricardo D NickaJapan2024-04-19Chapman, Ross E Esq QUALIFIED73Ivan Magalhaes
1035Munro G SergiGermany2024-04-01King, Christopher A Esq UNQUALIFIED13Amy Elsner
1036Antonio L SergiUnited Kingdom2024-04-12Feiner Bros NEW1Onyama Limba
1037Aditya Q KuskoBrazil2024-04-10Rangoni Of Florence QUALIFIED98Asiya Javayant
1038Jennifer O CampainBrazil2024-04-04Rousseaux, Michael Esq UNQUALIFIED93Asiya Javayant
1039Mujtaba R SchemmerUnited Kingdom2024-03-29Printing Dimensions NEGOTIATION17Ioni Bowcher
1040Ricardo J FerenczSpain2024-04-19Feiner Bros PROPOSAL22Stephen Shaw
1041Aditya I GlickIndia2024-04-13Morlong Associates QUALIFIED34Ioni Bowcher
1042Greenwood Y InouyeFrance2024-04-24Commercial Press UNQUALIFIED94Bernardo Dominic
1043Costa P KuskoCanada2024-04-07Feltz Printing Service PROPOSAL11Ivan Magalhaes
1044Maria N SergiAustralia2024-04-13Truhlar And Truhlar Attys QUALIFIED42Xuxue Feng
1045Mayumi X MacleadUnited Kingdom2024-04-26Rangoni Of Florence NEW83Ioni Bowcher
1046Jeanfrancois M MacleadCanada2024-04-23Morlong Associates PROPOSAL96Onyama Limba
1047Ivar P BowleyAustralia2024-04-10Morlong Associates UNQUALIFIED87Amy Elsner
1048Antonio V WaycottCanada2024-04-19Morlong Associates UNQUALIFIED13Stephen Shaw
1049Jefferson V ButtIndia2024-03-31Feiner Bros RENEWAL13Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Nicolas V StockhamArgentinaOnyama Limba UNQUALIFIED
Maisha I GauchoArgentinaOnyama Limba UNQUALIFIED
Darci O DilliardIndiaStephen Shaw QUALIFIED
Murillo F AlbaresJapanOnyama Limba NEGOTIATION
Nicolas K FigeroaCanadaOnyama Limba UNQUALIFIED
Ivar C PerinUnited KingdomStephen Shaw NEGOTIATION
Deepesh T SlusarskiUnited KingdomElwin Sharvill PROPOSAL
Darci S OstroskyAustraliaStephen Shaw NEGOTIATION
Aditya T TollnerJapanBernardo Dominic NEW
Deepesh C GarufiCanadaIoni Bowcher UNQUALIFIED
Jeanfrancois X FlosiCanadaBernardo Dominic PROPOSAL
Maisha R WaycottCanadaBernardo Dominic RENEWAL
Claire X BriddickAustraliaIoni Bowcher RENEWAL
Leon F MorascaCanadaAnna Fali NEW
Aditya X KuskoSpainAnna Fali UNQUALIFIED
Morrow E SlusarskiBrazilAmy Elsner NEW
Claire K RulapaughCanadaXuxue Feng UNQUALIFIED
Murillo Q GlickFranceElwin Sharvill UNQUALIFIED
Chavez I MacleadRussiaBernardo Dominic PROPOSAL
Octavia I VenereUnited KingdomStephen Shaw NEW
Silvio G AlbaresCanadaXuxue Feng UNQUALIFIED
Ashley Z MaletIndiaXuxue Feng NEGOTIATION
Antonio R GauchoFranceIoni Bowcher UNQUALIFIED
Cody D MaletGermanyBernardo Dominic UNQUALIFIED
Deepesh C FigeroaSpainAsiya Javayant UNQUALIFIED
Jefferson A KuskoRussiaAnna Fali UNQUALIFIED
Silvio V FlosiFranceXuxue Feng PROPOSAL
Darci W BriddickIndiaOnyama Limba QUALIFIED
Murillo B SergiAustraliaBernardo Dominic RENEWAL
Wickens V ChuiIndiaElwin Sharvill PROPOSAL
Ricardo M RulapaughJapanOnyama Limba NEGOTIATION
Mayumi G WaycottFranceAsiya Javayant PROPOSAL
Murillo F RimCanadaOnyama Limba QUALIFIED
Jeanfrancois U ChuiGermanyIoni Bowcher RENEWAL
Juan M FerenczRussiaBernardo Dominic UNQUALIFIED
Julie I RutaIndiaIoni Bowcher UNQUALIFIED
Kadeem V StensethRussiaAmy Elsner PROPOSAL
Leja K FlosiCanadaIoni Bowcher NEGOTIATION
James A CaldareraSpainIvan Magalhaes NEW
Sinclair W MarrierBrazilElwin Sharvill PROPOSAL
Ricardo Q VenereBrazilXuxue Feng QUALIFIED
Ivar W FollerUnited KingdomOnyama Limba QUALIFIED
Jones G MorascaSpainElwin Sharvill UNQUALIFIED
Costa O MorascaUnited KingdomIoni Bowcher NEW
Nicolas X MarrierItalyIoni Bowcher NEW
Claire G WhobreyAustraliaAsiya Javayant PROPOSAL
Leon F SaylorsSpainXuxue Feng QUALIFIED
Alejandro D IturbideFranceAnna Fali QUALIFIED
Kaitlin T ButtFranceElwin Sharvill PROPOSAL
Maisha D WieserItalyAnna Fali RENEWAL
Frozen Columns
Name
Munro S Tollner
Leon A Nestle
Chavez J Ostrosky
Juan X Kolmetz
Jones Z Briddick
Kadeem A Inouye
Stacey N Perin
Deepesh Z Sergi
Chavez K Inouye
Maria X Malet
Darci E Gaucho
Clifford S Glick
Kaitlin V Bolognia
Clifford B Morasca
Wickens A Whobrey
Arvin J Ruta
Claire O Gaucho
Leja V Glick
Misaki Y Shinko
Chavez D Royster
Greenwood Z Maclead
Jones D Saylors
Smith E Iturbide
Jeanfrancois S Malet
Ashley Q Ferencz
Mujtaba Z Perin
David B Iturbide
Aruna E Caudy
Francesco U Foller
Deepesh O Gaucho
Chavez X Butt
Emily V Iturbide
Murillo Y Inouye
Francesco G Flosi
Smith Q Marrier
Juan P Perin
Emily I Slusarski
Deepesh K Ostrosky
Francesco Y Wieser
Izzy P Caldarera
Darci M Amigon
Wickens P Rulapaugh
Sinclair N Butt
Arvin A Ostrosky
Antonio P Glick
Juan X Sergi
Aditya S Rim
Greenwood K Iturbide
Costa O Stockham
Morrow S Stockham
IdCountryDate
1000Italy2024-04-13
1001Argentina2024-04-24
1002Germany2024-04-24
1003Argentina2024-04-11
1004Canada2024-04-17
1005United Kingdom2024-04-15
1006United Kingdom2024-04-07
1007Spain2024-04-22
1008Spain2024-03-30
1009United Kingdom2024-04-22
1010Australia2024-04-10
1011United Kingdom2024-04-20
1012Australia2024-04-15
1013United Kingdom2024-04-27
1014Australia2024-04-24
1015Canada2024-04-07
1016Brazil2024-04-02
1017France2024-04-24
1018France2024-04-19
1019United Kingdom2024-04-26
1020Italy2024-04-18
1021Argentina2024-04-02
1022Russia2024-04-21
1023United Kingdom2024-04-01
1024Germany2024-04-11
1025Canada2024-04-15
1026Spain2024-03-30
1027India2024-04-27
1028Argentina2024-04-01
1029Australia2024-04-13
1030Brazil2024-04-03
1031Japan2024-04-06
1032Canada2024-04-23
1033United Kingdom2024-04-14
1034Australia2024-04-22
1035Japan2024-04-05
1036Brazil2024-04-01
1037India2024-04-18
1038Spain2024-04-04
1039Canada2024-04-26
1040France2024-04-09
1041Canada2024-04-22
1042Japan2024-04-11
1043Brazil2024-04-27
1044Brazil2024-03-29
1045Australia2024-04-19
1046Russia2024-04-24
1047France2024-04-10
1048Japan2024-04-01
1049India2024-04-22

On-Demand Data

NameIdCountryDate
Morrow H Figeroa1000Argentina2024-04-13
Julie A Caldarera1001Spain2024-04-24
Jeanfrancois B Paprocki1002Brazil2024-04-03
Jeanfrancois Q Nicka1003Canada2024-04-11
Darci U Briddick1004Italy2024-04-01
Antonio A Foller1005Japan2024-04-04
Mayumi Q Rulapaugh1006Argentina2024-04-02
Aditya X Waycott1007India2024-04-26
Salvatore V Tollner1008Japan2024-03-31
Deepesh X Iturbide1009Spain2024-04-01
Johnson L Garufi1010Australia2024-04-11
Maria L Dilliard1011India2024-04-16
Cody C Briddick1012Russia2024-03-31
Julie Z Gillian1013Spain2024-04-23
Deepesh M Bolognia1014Spain2024-04-21
Leon U Darakjy1015Japan2024-04-23
Emily M Tollner1016Brazil2024-04-18
Johnson Y Stockham1017India2024-04-05
Morrow Y Tollner1018Argentina2024-04-24
Francesco D Butt1019United Kingdom2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci L BologniaItalyElwin Sharvill QUALIFIED
Jennifer U MorascaBrazilOnyama Limba NEGOTIATION
Munro D StensethArgentinaIvan Magalhaes NEGOTIATION
Clifford W SergiIndiaAnna Fali NEW
Rodrigues X OstroskyJapanAmy Elsner QUALIFIED
Greenwood M MarrierAustraliaStephen Shaw NEGOTIATION
Mayumi F PerinAustraliaOnyama Limba QUALIFIED
Deepesh R FollerArgentinaBernardo Dominic PROPOSAL
Nicolas M GauchoAustraliaAnna Fali UNQUALIFIED
Izzy F FollerUnited KingdomElwin Sharvill QUALIFIED
Kadeem R BowleyCanadaOnyama Limba RENEWAL
Rodrigues X GarufiIndiaAnna Fali NEGOTIATION
Aditya X WieserRussiaIoni Bowcher UNQUALIFIED
Chavez J GauchoCanadaOnyama Limba QUALIFIED
James C IturbideSpainElwin Sharvill UNQUALIFIED
Francesco R DarakjyCanadaXuxue Feng RENEWAL
Tony Y AmigonAustraliaOnyama Limba UNQUALIFIED
Mayumi L WaycottArgentinaOnyama Limba RENEWAL
Octavia J WhobreyBrazilAsiya Javayant NEGOTIATION
Mayumi G MarrierUnited KingdomIoni Bowcher NEW
Cody U RoysterGermanyStephen Shaw PROPOSAL
Munro M InouyeItalyAnna Fali NEGOTIATION
Clifford I DoeBrazilAnna Fali RENEWAL
Leja L PoquetteRussiaStephen Shaw QUALIFIED
Chavez M SaylorsCanadaIvan Magalhaes NEGOTIATION
Tony T RimGermanyBernardo Dominic QUALIFIED
Darci R OldroydGermanyXuxue Feng NEW
Silvio Q PoquetteIndiaBernardo Dominic UNQUALIFIED
Deepesh M MaletBrazilBernardo Dominic UNQUALIFIED
Claire J SaylorsJapanOnyama Limba NEGOTIATION
Wickens E OldroydFranceStephen Shaw QUALIFIED
Antonio P PaprockiAustraliaIvan Magalhaes UNQUALIFIED
Emily G MacleadGermanyIvan Magalhaes PROPOSAL
Leja K FerenczSpainAmy Elsner UNQUALIFIED
Stacey L InouyeIndiaStephen Shaw NEW
Aika B GillianRussiaStephen Shaw RENEWAL
Chavez B DarakjyIndiaStephen Shaw NEGOTIATION
Maria B FollerGermanyStephen Shaw QUALIFIED
Salvatore H DarakjyArgentinaOnyama Limba PROPOSAL
Mayumi F MacleadAustraliaAmy Elsner 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>