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
Costa U FerenczArgentinaXuxue Feng PROPOSAL
Ivar A GarufiUnited KingdomAsiya Javayant PROPOSAL
Murillo B RutaGermanyXuxue Feng RENEWAL
Aditya M RoysterCanadaStephen Shaw UNQUALIFIED
Francesco S BowleyItalyOnyama Limba NEGOTIATION
Kaitlin T GauchoGermanyBernardo Dominic RENEWAL
Leon N SlusarskiRussiaElwin Sharvill PROPOSAL
Arvin T MaletCanadaAnna Fali NEGOTIATION
Silvio I CaudySpainXuxue Feng NEGOTIATION
Claire W FollerSpainAmy Elsner NEW
James P AmigonAustraliaAnna Fali PROPOSAL
Aditya R WieserCanadaElwin Sharvill QUALIFIED
Kadeem E MacleadBrazilXuxue Feng UNQUALIFIED
Johnson F KolmetzFranceAmy Elsner NEGOTIATION
Arvin F KuskoSpainIoni Bowcher NEGOTIATION
Ivar G RoysterFranceAmy Elsner NEW
Silvio S SchemmerIndiaIoni Bowcher UNQUALIFIED
Morrow J BowleyFranceAmy Elsner QUALIFIED
Kaitlin C GauchoFranceAsiya Javayant RENEWAL
Maisha E CaldareraUnited KingdomIvan Magalhaes RENEWAL
Jefferson Y GarufiRussiaBernardo Dominic QUALIFIED
Morrow P CampainAustraliaBernardo Dominic QUALIFIED
Jefferson Z SaylorsIndiaStephen Shaw RENEWAL
Greenwood V WhobreyItalyXuxue Feng PROPOSAL
Kaitlin E CaldareraGermanyIvan Magalhaes QUALIFIED
Ricardo H MacleadArgentinaIvan Magalhaes NEGOTIATION
Leja A WieserSpainIvan Magalhaes NEGOTIATION
Jennifer I FlosiGermanyOnyama Limba NEW
Johnson R TollnerIndiaIvan Magalhaes NEGOTIATION
Clifford B ButtRussiaOnyama Limba QUALIFIED
Izzy I RimRussiaAmy Elsner PROPOSAL
Jennifer I VocelkaArgentinaOnyama Limba NEGOTIATION
James Z PaprockiFranceStephen Shaw NEW
Wickens W RutaSpainOnyama Limba NEGOTIATION
David I DarakjyGermanyOnyama Limba PROPOSAL
Deepesh E WieserJapanAmy Elsner QUALIFIED
Chavez G VocelkaFranceBernardo Dominic UNQUALIFIED
Arvin U WieserSpainIvan Magalhaes RENEWAL
Murillo H OldroydUnited KingdomXuxue Feng NEGOTIATION
Misaki P DoeItalyAmy Elsner NEGOTIATION
Tony A ShinkoBrazilIoni Bowcher QUALIFIED
Ricardo R DarakjySpainXuxue Feng UNQUALIFIED
Arvin Y NestleGermanyXuxue Feng RENEWAL
Ricardo H SchemmerFranceXuxue Feng NEGOTIATION
Greenwood I PoquetteJapanIvan Magalhaes UNQUALIFIED
Chavez W FollerJapanStephen Shaw UNQUALIFIED
Emily W BologniaItalyAmy Elsner NEGOTIATION
Octavia Q GauchoRussiaOnyama Limba PROPOSAL
Mujtaba P FollerGermanyIvan Magalhaes RENEWAL
Mayumi V BowleyJapanAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois H FigeroaCanadaStephen Shaw NEW
Salvatore J MaletAustraliaAsiya Javayant NEW
Izzy F AmigonCanadaAsiya Javayant QUALIFIED
Francesco W VocelkaRussiaOnyama Limba NEGOTIATION
Silvio X DilliardIndiaIoni Bowcher NEGOTIATION
Antonio M WhobreyRussiaElwin Sharvill RENEWAL
Arvin B WieserSpainAsiya Javayant UNQUALIFIED
Silvio B GlickBrazilXuxue Feng PROPOSAL
Darci B VocelkaFranceXuxue Feng RENEWAL
Smith K MaletUnited KingdomBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel T MaletAustralia2024-03-31Feltz Printing Service UNQUALIFIED4Elwin Sharvill
1001Aruna Y NickaRussia2024-03-31Feiner Bros NEW76Asiya Javayant
1002Leja Z ShinkoFrance2024-03-21Chanay, Jeffrey A Esq NEW7Stephen Shaw
1003Silvio C GarufiIndia2024-04-08Chanay, Jeffrey A Esq PROPOSAL88Ioni Bowcher
1004Clifford D CaldareraItaly2024-03-26Chemel, James L Cpa PROPOSAL97Ivan Magalhaes
1005Arvin P FollerAustralia2024-04-17Benton, John B Jr UNQUALIFIED66Asiya Javayant
1006Jefferson H DarakjyItaly2024-04-09Dorl, James J Esq QUALIFIED28Ivan Magalhaes
1007Murillo D KolmetzBrazil2024-03-28Benton, John B Jr NEGOTIATION86Asiya Javayant
1008Faith I GlickCanada2024-04-01Morlong Associates PROPOSAL28Onyama Limba
1009Claire K OldroydGermany2024-03-28Rousseaux, Michael Esq PROPOSAL40Ioni Bowcher
1010Claire N VenereIndia2024-04-08King, Christopher A Esq NEGOTIATION83Anna Fali
1011Maisha U MaletIndia2024-04-09Chemel, James L Cpa QUALIFIED42Ioni Bowcher
1012Maria I MaletRussia2024-04-11Commercial Press RENEWAL69Onyama Limba
1013Kadeem C DarakjyArgentina2024-04-17Chapman, Ross E Esq NEGOTIATION8Anna Fali
1014Smith U FerenczGermany2024-04-15Morlong Associates NEW0Asiya Javayant
1015Kadeem U FollerSpain2024-04-07Truhlar And Truhlar Attys RENEWAL19Bernardo Dominic
1016Darci Y AmigonArgentina2024-04-05Chapman, Ross E Esq QUALIFIED94Elwin Sharvill
1017Jennifer H WieserFrance2024-04-05Truhlar And Truhlar Attys RENEWAL62Asiya Javayant
1018Munro O OstroskyCanada2024-04-10Dorl, James J Esq NEGOTIATION31Xuxue Feng
1019Claire A ButtRussia2024-04-14Benton, John B Jr NEGOTIATION69Elwin Sharvill
1020Ricardo I DilliardArgentina2024-04-03Feltz Printing Service UNQUALIFIED86Anna Fali
1021Costa B WhobreyArgentina2024-04-09Chapman, Ross E Esq QUALIFIED41Xuxue Feng
1022Ashley N FerenczJapan2024-03-25Buckley Miller Wright NEGOTIATION85Stephen Shaw
1023Kadeem C ChuiRussia2024-04-19Buckley Miller Wright NEW20Bernardo Dominic
1024Maria S DoeArgentina2024-04-05Dorl, James J Esq RENEWAL75Bernardo Dominic
1025Juan E RoysterAustralia2024-04-07Rousseaux, Michael Esq NEGOTIATION80Elwin Sharvill
1026Ricardo D GillianSpain2024-03-30Chapman, Ross E Esq QUALIFIED33Onyama Limba
1027Stacey A KolmetzGermany2024-03-24Feiner Bros UNQUALIFIED50Ivan Magalhaes
1028Izzy K StensethSpain2024-04-12Chapman, Ross E Esq NEGOTIATION25Stephen Shaw
1029Alejandro P GlickBrazil2024-04-16Truhlar And Truhlar Attys NEW98Ivan Magalhaes
1030Nicolas E DoeBrazil2024-04-05Printing Dimensions UNQUALIFIED25Bernardo Dominic
1031Jefferson U SlusarskiItaly2024-03-27Morlong Associates UNQUALIFIED94Elwin Sharvill
1032Emily N OldroydAustralia2024-04-14Rangoni Of Florence PROPOSAL68Onyama Limba
1033Claire G ChuiCanada2024-03-27Chanay, Jeffrey A Esq RENEWAL85Bernardo Dominic
1034Juan N BriddickFrance2024-03-23Morlong Associates NEGOTIATION4Elwin Sharvill
1035Ashley J RimIndia2024-03-24Rangoni Of Florence NEGOTIATION61Stephen Shaw
1036Maisha M MaletJapan2024-04-02Chemel, James L Cpa PROPOSAL57Xuxue Feng
1037Antonio G DilliardIndia2024-04-03Feiner Bros RENEWAL70Ivan Magalhaes
1038Stacey I StockhamItaly2024-04-13Morlong Associates NEW69Onyama Limba
1039Morrow I DarakjyJapan2024-04-19Benton, John B Jr PROPOSAL97Ioni Bowcher
1040Aruna Z SergiAustralia2024-04-09Chapman, Ross E Esq RENEWAL81Asiya Javayant
1041Julie C GauchoUnited Kingdom2024-03-21Printing Dimensions UNQUALIFIED40Xuxue Feng
1042Morrow Z BowleySpain2024-04-01Rangoni Of Florence UNQUALIFIED68Bernardo Dominic
1043Leon O BologniaIndia2024-04-13Feiner Bros RENEWAL80Onyama Limba
1044Izzy L MarrierBrazil2024-04-01Dorl, James J Esq PROPOSAL76Elwin Sharvill
1045Chavez E NestleGermany2024-04-06Feiner Bros UNQUALIFIED4Ioni Bowcher
1046Sinclair V NickaGermany2024-04-18Buckley Miller Wright UNQUALIFIED2Elwin Sharvill
1047Chavez D IturbideFrance2024-03-26Morlong Associates RENEWAL54Elwin Sharvill
1048Salvatore Z MorascaArgentina2024-04-19Benton, John B Jr RENEWAL93Stephen Shaw
1049Jennifer D MaletArgentina2024-03-23Benton, John B Jr PROPOSAL11Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Cody W AmigonSpainStephen Shaw QUALIFIED
Faith U MaletUnited KingdomIoni Bowcher QUALIFIED
Jefferson S BriddickCanadaElwin Sharvill PROPOSAL
Alejandro L SlusarskiJapanElwin Sharvill UNQUALIFIED
Stacey C CaudyRussiaAmy Elsner NEGOTIATION
Alejandro P MacleadArgentinaAmy Elsner RENEWAL
Deepesh F GillianArgentinaIvan Magalhaes QUALIFIED
Francesco P WhobreyBrazilAsiya Javayant NEGOTIATION
Cody U NestleUnited KingdomBernardo Dominic NEGOTIATION
Stacey J MaletGermanyXuxue Feng QUALIFIED
Tony F OldroydArgentinaStephen Shaw NEGOTIATION
Wickens K SaylorsUnited KingdomAnna Fali QUALIFIED
Salvatore Y BowleyFranceAmy Elsner RENEWAL
Ricardo C TollnerBrazilOnyama Limba UNQUALIFIED
David D RutaBrazilElwin Sharvill PROPOSAL
Chavez P SlusarskiJapanIoni Bowcher NEGOTIATION
Deepesh Y BriddickArgentinaIoni Bowcher UNQUALIFIED
Ricardo L CaldareraFranceAnna Fali PROPOSAL
Nicolas I AlbaresIndiaAnna Fali RENEWAL
Aruna V OstroskyItalyXuxue Feng NEGOTIATION
Murillo S DarakjyArgentinaAnna Fali QUALIFIED
Emily S GlickIndiaXuxue Feng NEW
Arvin C InouyeRussiaElwin Sharvill NEW
Jennifer O NestleItalyBernardo Dominic PROPOSAL
Jones S WieserBrazilStephen Shaw PROPOSAL
Mujtaba A OstroskyFranceOnyama Limba NEW
Leja L FerenczBrazilXuxue Feng PROPOSAL
Smith T RutaRussiaAnna Fali NEW
Octavia X InouyeAustraliaOnyama Limba QUALIFIED
Faith B DoeSpainBernardo Dominic NEGOTIATION
Misaki N StensethArgentinaAnna Fali RENEWAL
Aika P GlickFranceXuxue Feng RENEWAL
Juan Z PaprockiAustraliaOnyama Limba UNQUALIFIED
Ivar O CampainSpainBernardo Dominic NEGOTIATION
Arvin Y CampainIndiaOnyama Limba UNQUALIFIED
Wickens T GauchoUnited KingdomAmy Elsner UNQUALIFIED
Jeanfrancois W FlosiRussiaIvan Magalhaes UNQUALIFIED
Octavia R GarufiAustraliaIoni Bowcher PROPOSAL
Octavia P FigeroaJapanAnna Fali NEW
Leon N GillianGermanyAsiya Javayant RENEWAL
Francesco E SergiSpainAnna Fali UNQUALIFIED
Francesco N SaylorsAustraliaAsiya Javayant NEGOTIATION
Clifford E IturbideAustraliaStephen Shaw PROPOSAL
Stacey J GillianItalyAmy Elsner UNQUALIFIED
Maisha Y MaletBrazilOnyama Limba UNQUALIFIED
Jones U MarrierUnited KingdomStephen Shaw QUALIFIED
Francesco B DarakjyUnited KingdomAnna Fali QUALIFIED
Jeanfrancois V MorascaAustraliaIoni Bowcher NEGOTIATION
Clifford Q VocelkaFranceBernardo Dominic NEGOTIATION
Ricardo I FlosiSpainAsiya Javayant NEGOTIATION
Frozen Columns
Name
Morrow P Glick
Jennifer R Tollner
Murillo J Caldarera
Jefferson W Stockham
Emily T Campain
Antonio Q Kolmetz
Isabel U Doe
Nicolas Z Ferencz
Adams O Gillian
Munro Z Marrier
Nicolas V Chui
Ricardo W Rulapaugh
Faith G Perin
Maria E Albares
Julie T Malet
Jeanfrancois O Caudy
Alejandro W Rulapaugh
Emily S Iturbide
David H Flosi
Ashley N Dilliard
Mayumi Y Briddick
Aruna T Caldarera
Adams A Kusko
Tony V Poquette
Johnson H Bolognia
Smith G Tollner
Juan N Ruta
Deepesh L Iturbide
Aditya H Stenseth
Mayumi I Ferencz
Maria Y Venere
Jennifer Y Schemmer
Maisha U Inouye
Greenwood T Venere
Aika G Whobrey
Maria D Kusko
Juan C Bolognia
Aika Y Oldroyd
Julie T Flosi
Morrow N Perin
Isabel E Kusko
Aruna L Amigon
Ashley R Chui
Darci A Poquette
Cody A Nestle
Sinclair O Caldarera
Wickens X Kusko
Morrow Q Poquette
Clifford F Caldarera
Misaki Z Malet
IdCountryDate
1000Spain2024-04-15
1001Argentina2024-03-27
1002Australia2024-04-18
1003Spain2024-03-28
1004Argentina2024-03-24
1005Russia2024-04-03
1006Russia2024-04-05
1007Brazil2024-04-10
1008Japan2024-03-31
1009Argentina2024-03-23
1010Russia2024-03-30
1011Russia2024-04-03
1012Spain2024-04-05
1013France2024-03-25
1014Italy2024-04-16
1015Germany2024-04-05
1016Italy2024-04-13
1017Canada2024-04-06
1018Spain2024-04-16
1019Germany2024-04-07
1020Russia2024-04-02
1021United Kingdom2024-04-06
1022Argentina2024-03-25
1023Canada2024-03-27
1024Japan2024-04-07
1025Brazil2024-04-07
1026Australia2024-03-27
1027Germany2024-03-29
1028United Kingdom2024-04-11
1029Germany2024-03-29
1030Russia2024-04-02
1031Argentina2024-04-02
1032United Kingdom2024-03-30
1033Argentina2024-04-15
1034Canada2024-03-23
1035Spain2024-04-17
1036Japan2024-03-23
1037Spain2024-03-21
1038Canada2024-04-09
1039Canada2024-04-16
1040Brazil2024-04-02
1041United Kingdom2024-03-22
1042Russia2024-04-15
1043United Kingdom2024-04-15
1044India2024-04-18
1045India2024-04-17
1046Argentina2024-03-25
1047Germany2024-04-01
1048Spain2024-03-28
1049Canada2024-04-13

On-Demand Data

NameIdCountryDate
Ricardo M Briddick1000Brazil2024-04-19
Sinclair N Briddick1001France2024-03-24
Chavez I Butt1002India2024-04-09
Tony Z Sergi1003Russia2024-04-17
Wickens R Slusarski1004Brazil2024-03-28
Misaki G Dilliard1005Japan2024-03-25
Jefferson O Garufi1006Australia2024-04-02
Munro X Inouye1007India2024-04-13
Ivar V Albares1008Russia2024-04-11
Izzy T Oldroyd1009Argentina2024-04-11
Munro Z Dilliard1010India2024-04-17
Jennifer N Ruta1011United Kingdom2024-03-22
Maisha M Rim1012Germany2024-04-04
Jefferson N Rim1013Brazil2024-03-31
Claire U Figeroa1014Japan2024-03-23
Deepesh G Royster1015Italy2024-04-05
Sinclair O Rulapaugh1016Brazil2024-03-24
Munro O Glick1017Russia2024-04-19
Johnson X Perin1018Brazil2024-04-19
Kadeem V Shinko1019Japan2024-03-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin E ButtItalyElwin Sharvill NEGOTIATION
James P DoeGermanyBernardo Dominic QUALIFIED
Deepesh S KolmetzGermanyIoni Bowcher NEGOTIATION
Rodrigues C CaldareraItalyAnna Fali PROPOSAL
Alejandro U WhobreyItalyIvan Magalhaes QUALIFIED
Emily O DoeIndiaBernardo Dominic NEGOTIATION
Kadeem Q MacleadAustraliaXuxue Feng NEGOTIATION
Mujtaba A InouyeArgentinaBernardo Dominic RENEWAL
Misaki H MaletUnited KingdomAmy Elsner PROPOSAL
Leon T CaudyIndiaXuxue Feng RENEWAL
Faith S PaprockiGermanyAmy Elsner NEW
Greenwood A KuskoFranceAmy Elsner RENEWAL
Stacey B CampainBrazilXuxue Feng RENEWAL
Jefferson Q BriddickRussiaElwin Sharvill RENEWAL
Deepesh M StockhamArgentinaOnyama Limba RENEWAL
Aditya T MaletUnited KingdomAmy Elsner UNQUALIFIED
Adams A FlosiUnited KingdomIvan Magalhaes NEGOTIATION
Emily E DarakjyFranceAmy Elsner NEGOTIATION
Kadeem H ChuiIndiaIvan Magalhaes UNQUALIFIED
Kaitlin X SaylorsCanadaElwin Sharvill NEGOTIATION
Clifford I KuskoGermanyOnyama Limba PROPOSAL
Cody T BologniaUnited KingdomAsiya Javayant NEW
Leja Z GlickItalyAnna Fali PROPOSAL
Morrow Q RulapaughAustraliaElwin Sharvill NEW
Cody L VenereJapanElwin Sharvill NEGOTIATION
Aika U VocelkaGermanyIoni Bowcher NEGOTIATION
Kadeem L FollerFranceIvan Magalhaes NEW
Faith K KuskoRussiaOnyama Limba NEW
Leja X MaletJapanXuxue Feng RENEWAL
Arvin W PaprockiIndiaIvan Magalhaes NEW
Faith S CaudySpainAmy Elsner NEW
Faith A OldroydItalyBernardo Dominic UNQUALIFIED
Mujtaba F ButtFranceIvan Magalhaes NEGOTIATION
Ivar F PoquetteCanadaElwin Sharvill RENEWAL
Munro Q RulapaughAustraliaStephen Shaw UNQUALIFIED
Faith Q DarakjyJapanAmy Elsner NEGOTIATION
Jones B AlbaresJapanIoni Bowcher NEGOTIATION
Mujtaba N CaudyUnited KingdomBernardo Dominic NEW
Maria L RimAustraliaAmy Elsner RENEWAL
Stacey Y GarufiBrazilIvan Magalhaes PROPOSAL

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