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
Cody R WhobreyIndiaIvan Magalhaes QUALIFIED
Cody Q SergiIndiaElwin Sharvill RENEWAL
Stacey Y WaycottFranceStephen Shaw NEW
Adams O CaldareraRussiaAmy Elsner QUALIFIED
Sinclair Q PerinAustraliaAmy Elsner QUALIFIED
Sinclair J WhobreyFranceBernardo Dominic NEGOTIATION
Emily Z OldroydJapanIoni Bowcher NEW
Aika U PaprockiRussiaStephen Shaw RENEWAL
Julie S GlickUnited KingdomStephen Shaw NEGOTIATION
Kadeem L PoquetteIndiaElwin Sharvill NEW
Munro H NickaRussiaIvan Magalhaes RENEWAL
Mayumi Z PaprockiJapanAsiya Javayant NEGOTIATION
Adams O DarakjyRussiaBernardo Dominic NEGOTIATION
James G AlbaresAustraliaAmy Elsner UNQUALIFIED
Tony E VenereFranceAmy Elsner QUALIFIED
Julie Z VenereSpainAmy Elsner NEW
Jennifer J KuskoAustraliaIvan Magalhaes PROPOSAL
Deepesh F StensethUnited KingdomAnna Fali UNQUALIFIED
Kadeem X RutaSpainXuxue Feng PROPOSAL
Aika P RulapaughGermanyAnna Fali NEGOTIATION
Aika E FerenczRussiaBernardo Dominic PROPOSAL
Greenwood P ChuiIndiaXuxue Feng UNQUALIFIED
Kaitlin R MorascaArgentinaAmy Elsner NEGOTIATION
Juan V FigeroaRussiaStephen Shaw NEGOTIATION
David I SergiItalyBernardo Dominic UNQUALIFIED
Mujtaba I SlusarskiFranceAnna Fali RENEWAL
James L SaylorsIndiaAsiya Javayant NEW
Izzy Y RutaRussiaStephen Shaw PROPOSAL
Emily F BowleyCanadaXuxue Feng NEGOTIATION
Leon X BologniaIndiaOnyama Limba UNQUALIFIED
Francesco C BologniaIndiaIoni Bowcher NEW
Costa Z PerinItalyOnyama Limba NEW
Johnson L OldroydSpainOnyama Limba QUALIFIED
Mayumi C WieserGermanyAsiya Javayant RENEWAL
Sinclair Z PerinJapanAsiya Javayant RENEWAL
Alejandro K RutaIndiaXuxue Feng RENEWAL
Misaki X SaylorsJapanXuxue Feng UNQUALIFIED
Isabel B ButtRussiaBernardo Dominic NEW
Morrow X BowleyArgentinaAnna Fali NEGOTIATION
Munro O PoquetteSpainAmy Elsner PROPOSAL
Kaitlin A WhobreyIndiaIvan Magalhaes UNQUALIFIED
Juan Z KuskoUnited KingdomIoni Bowcher UNQUALIFIED
Mujtaba T OstroskyArgentinaBernardo Dominic NEW
Murillo P BologniaJapanStephen Shaw RENEWAL
Isabel I OstroskyArgentinaOnyama Limba NEW
Alejandro E MarrierUnited KingdomXuxue Feng PROPOSAL
Ashley P SlusarskiCanadaAmy Elsner RENEWAL
Isabel O PoquetteAustraliaOnyama Limba NEW
David M RutaFranceXuxue Feng RENEWAL
Maisha P WhobreyUnited KingdomElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Silvio E TollnerCanadaOnyama Limba UNQUALIFIED
Aditya H GarufiAustraliaOnyama Limba RENEWAL
Morrow D RimGermanyXuxue Feng QUALIFIED
Izzy K SlusarskiFranceElwin Sharvill QUALIFIED
Jones X RoysterGermanyXuxue Feng NEGOTIATION
Chavez L InouyeRussiaAmy Elsner QUALIFIED
Sinclair B ButtAustraliaIvan Magalhaes UNQUALIFIED
Leon W BowleyAustraliaAmy Elsner RENEWAL
Rodrigues D SaylorsUnited KingdomIoni Bowcher QUALIFIED
Wickens H DoeBrazilIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James T GlickSpain2024-04-22Chapman, Ross E Esq NEGOTIATION10Bernardo Dominic
1001Kaitlin J TollnerFrance2024-04-15Rangoni Of Florence NEGOTIATION48Anna Fali
1002Izzy W BowleyItaly2024-04-27Printing Dimensions RENEWAL82Stephen Shaw
1003Johnson W FollerItaly2024-04-13Rousseaux, Michael Esq QUALIFIED48Elwin Sharvill
1004Tony X PoquetteJapan2024-04-24Feiner Bros PROPOSAL46Bernardo Dominic
1005Nicolas B GauchoRussia2024-04-30Feltz Printing Service NEGOTIATION99Asiya Javayant
1006Darci U RutaGermany2024-04-08Benton, John B Jr PROPOSAL89Ivan Magalhaes
1007Maisha D ChuiSpain2024-04-18Chapman, Ross E Esq PROPOSAL54Elwin Sharvill
1008Aditya A PoquetteAustralia2024-04-27Rousseaux, Michael Esq QUALIFIED77Ivan Magalhaes
1009Clifford Z WhobreyFrance2024-04-18Chapman, Ross E Esq NEGOTIATION79Ioni Bowcher
1010Octavia M BowleyAustralia2024-04-17Truhlar And Truhlar Attys RENEWAL38Xuxue Feng
1011Francesco J BriddickItaly2024-04-05Chanay, Jeffrey A Esq NEGOTIATION74Onyama Limba
1012Leja J ButtItaly2024-04-13Chapman, Ross E Esq RENEWAL55Ioni Bowcher
1013James O ShinkoJapan2024-04-08Benton, John B Jr PROPOSAL96Bernardo Dominic
1014Antonio Y BologniaItaly2024-04-16King, Christopher A Esq PROPOSAL36Anna Fali
1015Nicolas P ShinkoArgentina2024-04-05Rangoni Of Florence NEGOTIATION3Elwin Sharvill
1016Nicolas C VenereBrazil2024-04-05Rousseaux, Michael Esq PROPOSAL92Anna Fali
1017Jennifer O RoysterAustralia2024-05-01Chanay, Jeffrey A Esq UNQUALIFIED39Anna Fali
1018Leon X PerinItaly2024-04-04Commercial Press NEGOTIATION71Bernardo Dominic
1019Faith A GlickSpain2024-04-28Rousseaux, Michael Esq PROPOSAL87Amy Elsner
1020Isabel N OldroydCanada2024-04-04Buckley Miller Wright RENEWAL35Ivan Magalhaes
1021Octavia Y StensethCanada2024-04-16Chemel, James L Cpa QUALIFIED21Asiya Javayant
1022Murillo F FlosiAustralia2024-04-09Rousseaux, Michael Esq QUALIFIED97Ioni Bowcher
1023Isabel O WaycottJapan2024-04-26Feiner Bros PROPOSAL62Amy Elsner
1024Jennifer I PoquetteFrance2024-04-10King, Christopher A Esq RENEWAL76Amy Elsner
1025Kadeem P BriddickFrance2024-04-05Dorl, James J Esq UNQUALIFIED62Xuxue Feng
1026Mayumi Y MacleadRussia2024-04-06Chanay, Jeffrey A Esq UNQUALIFIED69Amy Elsner
1027Arvin F RimRussia2024-04-10Feiner Bros PROPOSAL41Xuxue Feng
1028Wickens X OstroskyItaly2024-05-03Chemel, James L Cpa UNQUALIFIED82Ioni Bowcher
1029Murillo W IturbideArgentina2024-04-21Buckley Miller Wright UNQUALIFIED63Bernardo Dominic
1030Tony V SlusarskiBrazil2024-05-02Chapman, Ross E Esq PROPOSAL18Onyama Limba
1031Maria X NestleArgentina2024-04-09Dorl, James J Esq QUALIFIED65Asiya Javayant
1032Silvio K GarufiItaly2024-04-21Rousseaux, Michael Esq UNQUALIFIED20Ivan Magalhaes
1033Clifford G ButtUnited Kingdom2024-04-17Dorl, James J Esq PROPOSAL5Ioni Bowcher
1034Julie F VenereAustralia2024-04-22Chemel, James L Cpa UNQUALIFIED74Ivan Magalhaes
1035Kaitlin D VocelkaAustralia2024-04-18Rousseaux, Michael Esq NEGOTIATION99Asiya Javayant
1036Munro J BologniaArgentina2024-04-21Truhlar And Truhlar Attys QUALIFIED28Ivan Magalhaes
1037Izzy K GillianUnited Kingdom2024-04-13Buckley Miller Wright QUALIFIED93Onyama Limba
1038Ricardo P PerinArgentina2024-04-17Chapman, Ross E Esq NEGOTIATION63Xuxue Feng
1039Greenwood J StockhamAustralia2024-04-05Printing Dimensions PROPOSAL29Stephen Shaw
1040Aruna F WaycottItaly2024-04-24Chanay, Jeffrey A Esq RENEWAL30Asiya Javayant
1041Rodrigues S AmigonArgentina2024-04-05Truhlar And Truhlar Attys NEGOTIATION65Amy Elsner
1042Jennifer S IturbideIndia2024-04-11Printing Dimensions NEW13Ioni Bowcher
1043Leja L SlusarskiRussia2024-04-09Feiner Bros NEW85Amy Elsner
1044Izzy A NickaSpain2024-04-20Truhlar And Truhlar Attys QUALIFIED29Asiya Javayant
1045Leon L SergiGermany2024-04-16Chemel, James L Cpa NEGOTIATION5Xuxue Feng
1046David P RulapaughGermany2024-04-04Dorl, James J Esq RENEWAL34Stephen Shaw
1047Clifford E MaletArgentina2024-04-27Chapman, Ross E Esq RENEWAL75Stephen Shaw
1048Jeanfrancois N DilliardGermany2024-04-15Feiner Bros PROPOSAL7Bernardo Dominic
1049Costa H FlosiJapan2024-04-04Rangoni Of Florence UNQUALIFIED41Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
David B SlusarskiItalyElwin Sharvill NEW
Adams P StensethJapanIvan Magalhaes QUALIFIED
Ivar A MarrierJapanIvan Magalhaes RENEWAL
Faith G FigeroaGermanyOnyama Limba RENEWAL
Costa Y CampainAustraliaStephen Shaw QUALIFIED
Francesco I WieserIndiaAmy Elsner NEGOTIATION
Aruna T SlusarskiUnited KingdomIoni Bowcher RENEWAL
Mayumi S RimCanadaIvan Magalhaes QUALIFIED
James Y FerenczCanadaBernardo Dominic NEW
Clifford F MaletBrazilOnyama Limba UNQUALIFIED
Ricardo O PoquetteFranceAmy Elsner UNQUALIFIED
Aditya Q StensethJapanAnna Fali NEGOTIATION
Stacey M CaudyUnited KingdomAmy Elsner NEW
Jeanfrancois C FerenczRussiaAmy Elsner QUALIFIED
Leon J WaycottGermanyBernardo Dominic NEW
Smith T MacleadRussiaStephen Shaw QUALIFIED
Juan O MorascaArgentinaAsiya Javayant RENEWAL
Stacey E ChuiArgentinaAnna Fali UNQUALIFIED
David H RoysterJapanIvan Magalhaes PROPOSAL
Costa J SchemmerCanadaElwin Sharvill QUALIFIED
Darci M WieserIndiaXuxue Feng UNQUALIFIED
Jennifer A GarufiCanadaAmy Elsner PROPOSAL
Clifford I FollerCanadaElwin Sharvill RENEWAL
Kaitlin K OstroskyBrazilIoni Bowcher NEW
Nicolas A StensethItalyAnna Fali NEW
Clifford S RoysterGermanyBernardo Dominic NEW
Leon N FlosiAustraliaAsiya Javayant QUALIFIED
Ivar V SaylorsSpainIoni Bowcher RENEWAL
Mujtaba Z ShinkoBrazilAnna Fali UNQUALIFIED
Greenwood O InouyeRussiaElwin Sharvill QUALIFIED
Emily B RimItalyAmy Elsner UNQUALIFIED
Alejandro P RoysterJapanIoni Bowcher NEW
Aditya O PerinRussiaIvan Magalhaes NEGOTIATION
Cody E StensethArgentinaBernardo Dominic PROPOSAL
Adams C TollnerJapanXuxue Feng UNQUALIFIED
Emily G RoysterItalyStephen Shaw QUALIFIED
Deepesh P MarrierRussiaOnyama Limba NEGOTIATION
Aika H MacleadBrazilIvan Magalhaes UNQUALIFIED
Tony G SergiArgentinaIoni Bowcher RENEWAL
Emily O RimFranceIvan Magalhaes NEGOTIATION
Aika E MarrierFranceBernardo Dominic PROPOSAL
Chavez Z SaylorsIndiaIvan Magalhaes UNQUALIFIED
Rodrigues T CaldareraFranceStephen Shaw RENEWAL
Leon M FollerUnited KingdomElwin Sharvill RENEWAL
Stacey N DarakjyArgentinaXuxue Feng NEW
Ricardo O MacleadGermanyOnyama Limba UNQUALIFIED
Kadeem J CaldareraSpainBernardo Dominic UNQUALIFIED
Mujtaba W VocelkaIndiaAsiya Javayant RENEWAL
Salvatore X SlusarskiSpainIvan Magalhaes UNQUALIFIED
Octavia X FollerArgentinaAsiya Javayant RENEWAL
Frozen Columns
Name
Aruna L Sergi
Jefferson R Nicka
Nicolas I Rulapaugh
Tony R Doe
Izzy H Shinko
Deepesh R Maclead
Alejandro A Vocelka
Aditya Y Poquette
Alejandro M Figeroa
Antonio Z Royster
Aditya E Ostrosky
Adams D Ruta
Clifford I Rulapaugh
Mayumi K Rulapaugh
Izzy J Caudy
Arvin N Briddick
Leja N Perin
Isabel J Kolmetz
Rodrigues B Doe
Deepesh V Campain
Ivar Z Ruta
Arvin X Venere
Kadeem R Maclead
Arvin P Marrier
Aika N Royster
Aika R Saylors
Tony V Kusko
Murillo A Malet
Jefferson O Butt
Jeanfrancois E Ruta
Isabel F Chui
Jeanfrancois D Caldarera
Faith M Ostrosky
Salvatore J Slusarski
Silvio S Kusko
Adams J Whobrey
Julie E Oldroyd
Aika K Poquette
Clifford Y Ferencz
Jefferson N Paprocki
Leon L Campain
Darci E Inouye
Misaki L Nestle
Darci Y Poquette
Cody G Ostrosky
Cody I Gillian
Faith R Kolmetz
Greenwood L Kusko
Mujtaba Y Darakjy
Leja Z Marrier
IdCountryDate
1000France2024-04-21
1001France2024-04-05
1002Germany2024-04-19
1003France2024-04-13
1004Argentina2024-04-28
1005France2024-04-26
1006Canada2024-04-11
1007France2024-04-23
1008India2024-05-01
1009Italy2024-04-29
1010Canada2024-05-01
1011Japan2024-04-04
1012Russia2024-04-22
1013Spain2024-04-24
1014Russia2024-04-25
1015Germany2024-04-09
1016United Kingdom2024-04-16
1017Spain2024-04-24
1018Japan2024-04-19
1019France2024-04-16
1020United Kingdom2024-04-17
1021Italy2024-05-02
1022Canada2024-04-29
1023Argentina2024-04-21
1024Brazil2024-04-28
1025Germany2024-04-29
1026Canada2024-04-24
1027Brazil2024-04-24
1028India2024-04-04
1029Argentina2024-04-17
1030Japan2024-04-05
1031Spain2024-04-12
1032Argentina2024-04-15
1033Japan2024-04-26
1034Canada2024-04-22
1035Brazil2024-04-29
1036Australia2024-04-12
1037Australia2024-05-02
1038Canada2024-04-25
1039France2024-04-20
1040United Kingdom2024-04-22
1041Germany2024-04-18
1042Spain2024-04-23
1043Argentina2024-04-21
1044Australia2024-04-14
1045Canada2024-04-10
1046Brazil2024-04-22
1047Australia2024-04-11
1048Italy2024-04-30
1049Italy2024-04-25

On-Demand Data

NameIdCountryDate
Jennifer N Bowley1000France2024-04-06
Arvin M Briddick1001Russia2024-04-15
Nicolas N Waycott1002Canada2024-04-10
Leja X Iturbide1003Spain2024-04-12
Leja P Rim1004Germany2024-05-03
Izzy C Albares1005Argentina2024-04-15
Darci S Kolmetz1006Canada2024-04-24
Izzy E Inouye1007Japan2024-04-07
Maria B Butt1008United Kingdom2024-04-26
Clifford J Garufi1009Canada2024-04-21
Chavez Q Wieser1010United Kingdom2024-05-02
Sinclair F Bolognia1011Russia2024-04-07
Ashley S Garufi1012India2024-05-01
Jennifer Z Caudy1013Germany2024-04-25
Adams E Malet1014Brazil2024-05-03
Sinclair N Ruta1015Italy2024-04-26
Silvio V Tollner1016Germany2024-04-23
Leon U Shinko1017Argentina2024-04-26
Ashley J Ostrosky1018United Kingdom2024-04-11
Mayumi I Rulapaugh1019Spain2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja I BowleyIndiaAnna Fali QUALIFIED
Adams V CampainArgentinaIvan Magalhaes UNQUALIFIED
Maisha O KolmetzUnited KingdomIvan Magalhaes NEW
Leja C GlickUnited KingdomIvan Magalhaes QUALIFIED
Tony H RoysterIndiaOnyama Limba NEW
Isabel F SlusarskiJapanXuxue Feng RENEWAL
Jeanfrancois N StockhamAustraliaStephen Shaw NEGOTIATION
Kadeem I StensethRussiaOnyama Limba PROPOSAL
Darci I RoysterArgentinaElwin Sharvill NEGOTIATION
Jefferson L MaletBrazilIvan Magalhaes UNQUALIFIED
Julie X RoysterJapanElwin Sharvill PROPOSAL
Ivar Y PerinGermanyElwin Sharvill QUALIFIED
Costa A GarufiRussiaStephen Shaw QUALIFIED
Claire O SlusarskiRussiaIvan Magalhaes NEGOTIATION
Aika C TollnerCanadaAmy Elsner NEGOTIATION
Sinclair I SaylorsAustraliaAmy Elsner QUALIFIED
Mayumi H CaldareraIndiaBernardo Dominic PROPOSAL
Greenwood K InouyeArgentinaAsiya Javayant QUALIFIED
Greenwood K MorascaUnited KingdomAmy Elsner NEGOTIATION
Clifford U RulapaughJapanStephen Shaw NEW
Izzy U IturbideJapanStephen Shaw PROPOSAL
Leon G StockhamUnited KingdomAmy Elsner NEGOTIATION
Cody B VenereJapanXuxue Feng RENEWAL
Jennifer V SlusarskiItalyBernardo Dominic QUALIFIED
Francesco B SergiIndiaElwin Sharvill RENEWAL
Misaki E MarrierSpainIoni Bowcher RENEWAL
Morrow J SaylorsSpainOnyama Limba UNQUALIFIED
Aditya V WhobreyGermanyOnyama Limba UNQUALIFIED
Smith O ButtItalyOnyama Limba NEW
Chavez I WhobreyRussiaAnna Fali NEGOTIATION
James I RoysterFranceOnyama Limba UNQUALIFIED
Stacey M SergiSpainIoni Bowcher QUALIFIED
Wickens S AmigonGermanyBernardo Dominic NEW
Mayumi W MorascaBrazilAsiya Javayant UNQUALIFIED
Sinclair F StockhamRussiaAmy Elsner QUALIFIED
Greenwood U MarrierBrazilIvan Magalhaes NEGOTIATION
Jeanfrancois D RutaBrazilIvan Magalhaes PROPOSAL
Silvio D KuskoArgentinaAnna Fali NEGOTIATION
Chavez I MorascaUnited KingdomAnna Fali RENEWAL
Tony R InouyeBrazilIoni Bowcher RENEWAL

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