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
Chavez C OstroskyCanadaBernardo Dominic UNQUALIFIED
Salvatore F GauchoCanadaIvan Magalhaes QUALIFIED
Adams M OstroskyUnited KingdomOnyama Limba RENEWAL
Jones Y WieserGermanyXuxue Feng RENEWAL
Nicolas I PoquetteSpainXuxue Feng RENEWAL
Arvin W GarufiFranceBernardo Dominic PROPOSAL
Adams L OldroydJapanAsiya Javayant NEW
Mujtaba F WaycottArgentinaAsiya Javayant PROPOSAL
Maisha D AmigonRussiaAnna Fali UNQUALIFIED
Darci S WhobreyRussiaXuxue Feng RENEWAL
Aruna L GlickUnited KingdomAnna Fali QUALIFIED
Ivar Z ChuiBrazilIoni Bowcher UNQUALIFIED
Morrow F DoeFranceAsiya Javayant RENEWAL
Leon O SergiAustraliaAmy Elsner NEGOTIATION
Mayumi S SaylorsCanadaXuxue Feng NEGOTIATION
Munro S NickaFranceIvan Magalhaes QUALIFIED
Alejandro L MorascaRussiaAnna Fali RENEWAL
Aruna Y FlosiBrazilBernardo Dominic RENEWAL
Smith N VenereFranceBernardo Dominic UNQUALIFIED
Emily M MaletJapanBernardo Dominic UNQUALIFIED
Faith P WaycottAustraliaAsiya Javayant QUALIFIED
Faith V OstroskyJapanBernardo Dominic PROPOSAL
Emily R WhobreyRussiaBernardo Dominic PROPOSAL
Nicolas Z KolmetzFranceAsiya Javayant NEW
Stacey P PaprockiSpainAmy Elsner UNQUALIFIED
Alejandro L FigeroaCanadaStephen Shaw NEGOTIATION
Claire P AlbaresJapanAsiya Javayant RENEWAL
Johnson O GarufiSpainAmy Elsner RENEWAL
Deepesh S RulapaughSpainStephen Shaw QUALIFIED
Johnson E MaletFranceIoni Bowcher QUALIFIED
Emily C CampainGermanyAmy Elsner NEW
Murillo U WieserCanadaOnyama Limba QUALIFIED
Munro W CampainUnited KingdomIoni Bowcher NEGOTIATION
Adams S ButtArgentinaAmy Elsner NEGOTIATION
Kaitlin X MaletSpainAnna Fali PROPOSAL
Cody G SaylorsBrazilXuxue Feng UNQUALIFIED
Ivar Q ButtUnited KingdomIvan Magalhaes PROPOSAL
Julie F GauchoBrazilAnna Fali PROPOSAL
Ashley O KolmetzGermanyAnna Fali UNQUALIFIED
Emily F WieserUnited KingdomAnna Fali QUALIFIED
Smith E RulapaughSpainIvan Magalhaes RENEWAL
Emily V SergiCanadaStephen Shaw QUALIFIED
Octavia F StockhamSpainIoni Bowcher QUALIFIED
Costa X GauchoArgentinaIvan Magalhaes QUALIFIED
Ricardo H CampainGermanyOnyama Limba NEW
Misaki O VocelkaUnited KingdomBernardo Dominic RENEWAL
Munro Q WhobreyCanadaIvan Magalhaes UNQUALIFIED
Munro B DarakjyRussiaAnna Fali NEW
Jeanfrancois I SchemmerAustraliaAmy Elsner NEGOTIATION
Sinclair N FigeroaUnited KingdomElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Misaki G WaycottArgentinaAsiya Javayant NEGOTIATION
Ashley O WhobreyItalyAmy Elsner RENEWAL
Cody V NickaFranceStephen Shaw NEGOTIATION
Sinclair I FerenczSpainIoni Bowcher NEW
Tony E WaycottAustraliaIvan Magalhaes NEW
Misaki Q VocelkaJapanAsiya Javayant RENEWAL
Julie U IturbideFranceIvan Magalhaes NEGOTIATION
Chavez P SaylorsFranceAnna Fali RENEWAL
Aditya T PerinItalyAnna Fali UNQUALIFIED
Leja C GlickGermanyIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria G VenereRussia2024-04-22Chanay, Jeffrey A Esq RENEWAL42Asiya Javayant
1001Ricardo X OldroydArgentina2024-04-23Feltz Printing Service NEW1Asiya Javayant
1002Aika H IturbideItaly2024-03-31Feiner Bros QUALIFIED71Onyama Limba
1003Kaitlin F WaycottAustralia2024-04-19Rousseaux, Michael Esq UNQUALIFIED97Onyama Limba
1004Ashley T RoysterSpain2024-04-25Dorl, James J Esq NEW40Ivan Magalhaes
1005Jeanfrancois I RulapaughCanada2024-04-27Commercial Press PROPOSAL16Anna Fali
1006Juan K BriddickGermany2024-04-07Feiner Bros PROPOSAL32Xuxue Feng
1007Tony W FerenczSpain2024-04-25Dorl, James J Esq QUALIFIED22Elwin Sharvill
1008Maisha H InouyeIndia2024-04-27Printing Dimensions QUALIFIED69Amy Elsner
1009Wickens V PoquetteJapan2024-04-03Printing Dimensions QUALIFIED55Asiya Javayant
1010Deepesh M SchemmerCanada2024-04-04Rousseaux, Michael Esq PROPOSAL48Ioni Bowcher
1011Ivar H GlickSpain2024-04-11Benton, John B Jr NEGOTIATION79Stephen Shaw
1012Octavia C AmigonFrance2024-04-07Rousseaux, Michael Esq UNQUALIFIED55Asiya Javayant
1013Julie I MaletSpain2024-04-15Chanay, Jeffrey A Esq RENEWAL59Xuxue Feng
1014Izzy C BowleyArgentina2024-04-02Commercial Press UNQUALIFIED19Bernardo Dominic
1015Darci V PoquetteCanada2024-04-18Truhlar And Truhlar Attys NEW85Onyama Limba
1016Aika B MorascaJapan2024-04-05Truhlar And Truhlar Attys PROPOSAL65Asiya Javayant
1017Smith Q MorascaRussia2024-04-01Buckley Miller Wright NEGOTIATION6Asiya Javayant
1018Nicolas Y KuskoUnited Kingdom2024-04-02King, Christopher A Esq NEGOTIATION89Onyama Limba
1019Izzy S FigeroaAustralia2024-04-17Chapman, Ross E Esq NEW89Anna Fali
1020Mayumi A DoeIndia2024-04-03Feiner Bros NEW51Anna Fali
1021David G BriddickJapan2024-03-30Commercial Press UNQUALIFIED52Amy Elsner
1022James V MaletArgentina2024-03-31Chapman, Ross E Esq QUALIFIED68Ioni Bowcher
1023Ricardo L ButtItaly2024-04-18Chapman, Ross E Esq UNQUALIFIED96Elwin Sharvill
1024Antonio M SchemmerJapan2024-04-06Commercial Press NEW56Stephen Shaw
1025Salvatore O SlusarskiArgentina2024-04-21Rangoni Of Florence RENEWAL53Anna Fali
1026Arvin L MaletJapan2024-04-12Chapman, Ross E Esq RENEWAL0Elwin Sharvill
1027Maisha R WieserIndia2024-04-04Rousseaux, Michael Esq UNQUALIFIED2Bernardo Dominic
1028Rodrigues Q PaprockiBrazil2024-04-01Printing Dimensions UNQUALIFIED4Stephen Shaw
1029Julie T SergiRussia2024-03-30Rousseaux, Michael Esq QUALIFIED52Bernardo Dominic
1030Ivar F NestleSpain2024-04-24Truhlar And Truhlar Attys NEW76Stephen Shaw
1031Mujtaba N FerenczCanada2024-04-28King, Christopher A Esq RENEWAL2Amy Elsner
1032Munro I CaudyAustralia2024-04-28Printing Dimensions NEGOTIATION58Bernardo Dominic
1033Mayumi J FerenczArgentina2024-04-16King, Christopher A Esq NEGOTIATION44Elwin Sharvill
1034Mayumi M FollerBrazil2024-04-10King, Christopher A Esq NEW16Stephen Shaw
1035Greenwood D SaylorsItaly2024-04-07Buckley Miller Wright QUALIFIED76Ivan Magalhaes
1036Kaitlin D AlbaresRussia2024-03-30Feiner Bros PROPOSAL77Stephen Shaw
1037Jeanfrancois M CampainGermany2024-04-18Truhlar And Truhlar Attys UNQUALIFIED12Asiya Javayant
1038Maisha R PerinSpain2024-04-25Feiner Bros RENEWAL65Stephen Shaw
1039Mujtaba S ShinkoSpain2024-04-03Feltz Printing Service QUALIFIED69Anna Fali
1040Tony G IturbideItaly2024-04-05Rangoni Of Florence NEGOTIATION23Amy Elsner
1041Sinclair Y PerinRussia2024-03-30Rousseaux, Michael Esq NEGOTIATION45Asiya Javayant
1042Munro N SchemmerAustralia2024-04-10Chemel, James L Cpa NEW83Anna Fali
1043Ivar P BologniaIndia2024-04-04Rousseaux, Michael Esq UNQUALIFIED30Amy Elsner
1044Mujtaba T SaylorsSpain2024-04-18Rousseaux, Michael Esq NEW68Anna Fali
1045James M CaudyAustralia2024-04-05Commercial Press UNQUALIFIED5Asiya Javayant
1046Mayumi V RimGermany2024-04-19Printing Dimensions RENEWAL97Anna Fali
1047Morrow I SaylorsIndia2024-04-02Buckley Miller Wright PROPOSAL42Onyama Limba
1048Mujtaba I SchemmerJapan2024-04-12Benton, John B Jr QUALIFIED9Ioni Bowcher
1049Stacey M MacleadArgentina2024-04-28King, Christopher A Esq UNQUALIFIED33Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Juan Z InouyeIndiaIvan Magalhaes RENEWAL
David D MacleadBrazilElwin Sharvill QUALIFIED
Misaki M StensethJapanIoni Bowcher RENEWAL
Izzy D MaletArgentinaIvan Magalhaes NEGOTIATION
Silvio V FollerArgentinaIoni Bowcher NEW
Deepesh V StensethArgentinaXuxue Feng UNQUALIFIED
Nicolas S RoysterAustraliaAnna Fali NEW
Jones K SlusarskiGermanyAsiya Javayant NEW
Ashley F MacleadGermanyAsiya Javayant QUALIFIED
Kaitlin C BologniaRussiaAsiya Javayant PROPOSAL
Aika H FigeroaGermanyBernardo Dominic QUALIFIED
Adams W GarufiArgentinaAmy Elsner NEW
Maria I VocelkaIndiaElwin Sharvill NEW
Murillo I MarrierAustraliaAmy Elsner PROPOSAL
Darci N GillianAustraliaElwin Sharvill NEGOTIATION
David W WieserSpainOnyama Limba NEGOTIATION
Jennifer D KuskoGermanyStephen Shaw NEGOTIATION
Stacey G DoeJapanStephen Shaw PROPOSAL
Cody I GarufiAustraliaOnyama Limba NEW
Aruna U MaletCanadaAsiya Javayant QUALIFIED
Jefferson T CaudyFranceStephen Shaw NEGOTIATION
Leon S AlbaresBrazilAsiya Javayant UNQUALIFIED
Rodrigues V DoeGermanyAmy Elsner NEW
Maisha M CaldareraFranceIoni Bowcher UNQUALIFIED
Nicolas I KolmetzBrazilAmy Elsner PROPOSAL
James O MacleadJapanIoni Bowcher RENEWAL
Aruna N RoysterAustraliaIoni Bowcher PROPOSAL
Aditya Z DoeSpainIoni Bowcher UNQUALIFIED
Alejandro U MorascaGermanyStephen Shaw NEGOTIATION
Morrow N GarufiRussiaStephen Shaw UNQUALIFIED
Stacey U FerenczAustraliaIvan Magalhaes QUALIFIED
Julie J CampainUnited KingdomAsiya Javayant NEW
Leon O AmigonGermanyXuxue Feng NEGOTIATION
Deepesh A GarufiUnited KingdomIvan Magalhaes NEGOTIATION
Maria X NestleItalyStephen Shaw UNQUALIFIED
Greenwood X FerenczIndiaStephen Shaw QUALIFIED
Stacey X BriddickArgentinaAsiya Javayant PROPOSAL
Mujtaba G PerinRussiaAsiya Javayant QUALIFIED
Aruna T MorascaArgentinaIoni Bowcher PROPOSAL
Greenwood K RoysterArgentinaXuxue Feng NEGOTIATION
Nicolas F FigeroaCanadaAmy Elsner PROPOSAL
Sinclair K KuskoRussiaIoni Bowcher RENEWAL
Kadeem U RulapaughArgentinaAnna Fali NEW
Ashley C WhobreyAustraliaElwin Sharvill RENEWAL
Arvin W RulapaughBrazilAmy Elsner UNQUALIFIED
Morrow N FollerAustraliaElwin Sharvill UNQUALIFIED
Kadeem H WhobreyAustraliaIoni Bowcher NEW
Octavia B SergiItalyIoni Bowcher QUALIFIED
Cody F BriddickRussiaAnna Fali PROPOSAL
Izzy N MacleadCanadaXuxue Feng QUALIFIED
Frozen Columns
Name
Johnson P Darakjy
Tony E Shinko
James Z Oldroyd
Isabel P Kusko
Leon X Foller
Smith G Kusko
Murillo V Bowley
Mayumi Y Tollner
Clifford W Nestle
Cody S Doe
Maria C Darakjy
Smith E Gillian
Faith A Saylors
Izzy A Malet
Sinclair L Caudy
Ivar U Schemmer
Costa A Nestle
Arvin M Foller
Salvatore F Royster
Adams P Bowley
Mayumi J Ruta
Aika R Saylors
Octavia P Darakjy
Johnson A Tollner
Chavez K Kusko
Juan R Venere
Tony Q Saylors
David D Ferencz
Mujtaba R Perin
David X Rim
Morrow N Slusarski
Cody W Maclead
Izzy P Vocelka
Nicolas D Rulapaugh
Rodrigues S Wieser
Faith X Iturbide
Isabel H Morasca
Murillo T Tollner
Costa C Poquette
Ivar Y Caudy
Mayumi P Morasca
Antonio J Wieser
Mayumi Q Caudy
Smith Z Nestle
Johnson L Ostrosky
Jefferson F Stenseth
James L Royster
Jefferson Q Whobrey
Sinclair O Ferencz
Ivar Y Garufi
IdCountryDate
1000Spain2024-04-10
1001Spain2024-04-02
1002India2024-04-22
1003Canada2024-04-09
1004India2024-04-05
1005Australia2024-04-14
1006Germany2024-04-02
1007United Kingdom2024-04-06
1008Argentina2024-04-15
1009India2024-04-05
1010France2024-04-12
1011United Kingdom2024-03-31
1012Germany2024-04-15
1013Japan2024-04-07
1014France2024-04-12
1015Japan2024-04-16
1016India2024-04-10
1017Italy2024-04-23
1018Australia2024-04-14
1019Brazil2024-04-14
1020Germany2024-04-26
1021France2024-04-18
1022Australia2024-04-01
1023Germany2024-04-14
1024India2024-04-08
1025Argentina2024-04-06
1026Italy2024-04-16
1027France2024-04-06
1028Italy2024-03-30
1029United Kingdom2024-04-10
1030India2024-04-18
1031Brazil2024-04-13
1032Japan2024-04-11
1033Brazil2024-04-24
1034United Kingdom2024-04-25
1035Argentina2024-04-11
1036Brazil2024-04-08
1037Russia2024-04-13
1038Germany2024-04-13
1039France2024-04-26
1040India2024-03-31
1041Italy2024-04-22
1042Germany2024-04-04
1043Italy2024-04-08
1044Canada2024-04-23
1045Canada2024-04-04
1046India2024-03-30
1047Argentina2024-04-05
1048Spain2024-03-30
1049Italy2024-04-08

On-Demand Data

NameIdCountryDate
Clifford N Caldarera1000Spain2024-04-21
Francesco R Caudy1001Canada2024-04-19
Mujtaba Z Bolognia1002Argentina2024-03-31
Maisha D Saylors1003Germany2024-04-23
Rodrigues R Glick1004Russia2024-04-27
Stacey Y Iturbide1005France2024-04-15
Izzy F Royster1006India2024-04-28
Arvin F Wieser1007Brazil2024-04-11
Aruna P Gillian1008Germany2024-04-27
Ricardo E Waycott1009United Kingdom2024-04-12
Kadeem O Chui1010Spain2024-04-10
Jeanfrancois U Stockham1011Japan2024-04-18
Rodrigues S Paprocki1012Canada2024-04-03
Mayumi M Saylors1013France2024-04-02
Morrow I Rulapaugh1014India2024-04-08
Kaitlin H Morasca1015Italy2024-04-11
Francesco D Caldarera1016Russia2024-04-18
Adams Y Malet1017Canada2024-04-10
Maria X Garufi1018India2024-04-18
Faith T Butt1019Argentina2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer G PerinUnited KingdomElwin Sharvill QUALIFIED
Jones G VocelkaUnited KingdomElwin Sharvill NEGOTIATION
Jones S InouyeItalyAnna Fali NEGOTIATION
Greenwood X SaylorsFranceOnyama Limba UNQUALIFIED
Mujtaba J VocelkaGermanyAsiya Javayant PROPOSAL
Sinclair B ShinkoSpainIvan Magalhaes QUALIFIED
Mayumi C KuskoUnited KingdomAmy Elsner NEW
Cody D GauchoFranceBernardo Dominic NEW
Ivar H SergiBrazilIvan Magalhaes NEW
Aruna C WieserRussiaStephen Shaw PROPOSAL
Julie S RulapaughSpainAnna Fali PROPOSAL
Aditya Z SchemmerAustraliaAnna Fali NEW
Clifford F GauchoSpainBernardo Dominic PROPOSAL
Maria F RimIndiaElwin Sharvill NEW
David A GarufiAustraliaStephen Shaw QUALIFIED
James J SchemmerArgentinaBernardo Dominic NEW
Kadeem V MaletAustraliaOnyama Limba NEW
Mayumi K DoeRussiaXuxue Feng QUALIFIED
Morrow T FigeroaArgentinaIoni Bowcher PROPOSAL
Munro L ShinkoArgentinaAmy Elsner QUALIFIED
Murillo K ShinkoBrazilBernardo Dominic NEGOTIATION
Rodrigues F FollerArgentinaOnyama Limba RENEWAL
Aruna O DoeJapanAnna Fali UNQUALIFIED
Mujtaba K AmigonItalyOnyama Limba NEGOTIATION
Nicolas M IturbideBrazilOnyama Limba UNQUALIFIED
Tony X InouyeGermanyAnna Fali NEGOTIATION
Kaitlin G MacleadItalyIoni Bowcher PROPOSAL
Claire H StensethArgentinaAnna Fali QUALIFIED
Leja P OldroydCanadaXuxue Feng RENEWAL
Maria W BriddickFranceXuxue Feng PROPOSAL
Ricardo E SaylorsUnited KingdomStephen Shaw RENEWAL
James U KuskoUnited KingdomIoni Bowcher QUALIFIED
Jones U FollerRussiaIoni Bowcher UNQUALIFIED
Arvin D CaudyFranceIvan Magalhaes NEGOTIATION
David A FlosiAustraliaAnna Fali UNQUALIFIED
Emily W MarrierBrazilAmy Elsner UNQUALIFIED
Isabel F PerinGermanyStephen Shaw PROPOSAL
Silvio R KuskoSpainStephen Shaw NEW
Arvin R IturbideBrazilElwin Sharvill UNQUALIFIED
Jennifer K GarufiAustraliaStephen Shaw 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>