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 I CampainCanadaIvan Magalhaes NEGOTIATION
James M MaletCanadaAmy Elsner PROPOSAL
Julie T KolmetzAustraliaBernardo Dominic PROPOSAL
Clifford S ButtItalyAsiya Javayant NEGOTIATION
James U VenereAustraliaXuxue Feng NEGOTIATION
Antonio R KolmetzGermanyElwin Sharvill RENEWAL
Jones Z VocelkaFranceAmy Elsner QUALIFIED
Jennifer H PoquetteAustraliaAnna Fali UNQUALIFIED
Smith W KolmetzSpainAmy Elsner PROPOSAL
Adams H VocelkaFranceOnyama Limba UNQUALIFIED
Maria X PerinRussiaElwin Sharvill PROPOSAL
Maria I RimArgentinaIoni Bowcher UNQUALIFIED
Jennifer Z RulapaughIndiaIvan Magalhaes PROPOSAL
Aruna E BowleySpainBernardo Dominic PROPOSAL
Juan L SergiJapanXuxue Feng RENEWAL
Deepesh Y AmigonRussiaAmy Elsner UNQUALIFIED
Alejandro K OldroydIndiaBernardo Dominic PROPOSAL
Aruna P ButtGermanyBernardo Dominic NEGOTIATION
Murillo N DilliardIndiaBernardo Dominic RENEWAL
Maria O RimIndiaIoni Bowcher RENEWAL
Jennifer B MaletFranceOnyama Limba QUALIFIED
Sinclair P MaletUnited KingdomIoni Bowcher QUALIFIED
Silvio Q KolmetzAustraliaIvan Magalhaes QUALIFIED
Alejandro A MaletIndiaOnyama Limba UNQUALIFIED
Mayumi T SlusarskiArgentinaIoni Bowcher RENEWAL
Morrow X FollerUnited KingdomElwin Sharvill NEW
Jones B StockhamAustraliaIvan Magalhaes NEGOTIATION
Antonio T NestleUnited KingdomXuxue Feng NEGOTIATION
Antonio F AlbaresGermanyIoni Bowcher QUALIFIED
Juan Z FlosiSpainBernardo Dominic QUALIFIED
Jeanfrancois Z FollerGermanyIvan Magalhaes QUALIFIED
Leja O InouyeUnited KingdomElwin Sharvill NEGOTIATION
Leja A NestleItalyOnyama Limba NEGOTIATION
Izzy A StockhamJapanAnna Fali UNQUALIFIED
Murillo W OstroskyRussiaStephen Shaw RENEWAL
Jeanfrancois E GarufiJapanElwin Sharvill NEW
Jennifer I PerinAustraliaStephen Shaw UNQUALIFIED
Alejandro I WieserRussiaAsiya Javayant NEW
Sinclair K AlbaresFranceAmy Elsner PROPOSAL
Chavez K DoeFranceElwin Sharvill NEW
Sinclair D OldroydUnited KingdomIvan Magalhaes UNQUALIFIED
Jones F GarufiAustraliaIoni Bowcher PROPOSAL
Salvatore N VocelkaAustraliaIvan Magalhaes NEW
Wickens Y KuskoSpainIoni Bowcher PROPOSAL
Nicolas V MacleadItalyBernardo Dominic PROPOSAL
Deepesh X OstroskyFranceStephen Shaw NEGOTIATION
Izzy J RimIndiaXuxue Feng QUALIFIED
Darci E DoeUnited KingdomElwin Sharvill UNQUALIFIED
Aruna D RulapaughJapanBernardo Dominic PROPOSAL
Ivar O PaprockiIndiaAsiya Javayant UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Misaki W PerinArgentinaIoni Bowcher QUALIFIED
Salvatore H GauchoSpainXuxue Feng QUALIFIED
Juan I WieserBrazilAmy Elsner NEGOTIATION
Jefferson K IturbideRussiaAsiya Javayant UNQUALIFIED
Kadeem Q BriddickFranceAsiya Javayant RENEWAL
Wickens I PoquetteItalyAsiya Javayant UNQUALIFIED
Jones E InouyeUnited KingdomAsiya Javayant PROPOSAL
Mujtaba M FollerItalyAmy Elsner UNQUALIFIED
Salvatore J GarufiBrazilElwin Sharvill QUALIFIED
Mujtaba G WhobreyJapanXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba X DarakjyGermany2024-04-24Feiner Bros RENEWAL23Amy Elsner
1001Silvio R GauchoSpain2024-04-16Benton, John B Jr UNQUALIFIED3Ivan Magalhaes
1002Misaki A GauchoRussia2024-04-14Benton, John B Jr NEW4Xuxue Feng
1003Tony M TollnerIndia2024-04-23Dorl, James J Esq QUALIFIED35Onyama Limba
1004Smith W DarakjyFrance2024-04-15Feltz Printing Service PROPOSAL92Ivan Magalhaes
1005Wickens G GillianAustralia2024-04-21Chemel, James L Cpa NEGOTIATION13Elwin Sharvill
1006Stacey B TollnerUnited Kingdom2024-04-07Chemel, James L Cpa QUALIFIED64Anna Fali
1007James S FlosiGermany2024-04-07Benton, John B Jr QUALIFIED23Onyama Limba
1008Chavez K FigeroaFrance2024-04-13Dorl, James J Esq UNQUALIFIED11Ioni Bowcher
1009Ashley E RutaJapan2024-04-27Printing Dimensions NEGOTIATION17Stephen Shaw
1010Julie X OldroydUnited Kingdom2024-04-19Benton, John B Jr NEGOTIATION93Xuxue Feng
1011Johnson I GillianCanada2024-04-16Buckley Miller Wright PROPOSAL32Stephen Shaw
1012Jeanfrancois R FerenczItaly2024-04-12Commercial Press NEW86Asiya Javayant
1013Ashley H FigeroaIndia2024-04-24Chemel, James L Cpa QUALIFIED90Amy Elsner
1014Jeanfrancois Y FollerArgentina2024-04-26Buckley Miller Wright UNQUALIFIED80Onyama Limba
1015Alejandro R SchemmerIndia2024-04-16King, Christopher A Esq RENEWAL84Stephen Shaw
1016Nicolas A ChuiJapan2024-04-25Morlong Associates QUALIFIED20Anna Fali
1017Wickens O AlbaresSpain2024-04-30Feiner Bros NEW84Elwin Sharvill
1018Rodrigues A MaletSpain2024-04-01Feiner Bros NEW30Stephen Shaw
1019Smith G IturbideCanada2024-04-01Truhlar And Truhlar Attys NEGOTIATION45Xuxue Feng
1020Clifford Q WhobreyBrazil2024-04-16Feiner Bros RENEWAL36Asiya Javayant
1021Stacey R SlusarskiItaly2024-04-03Morlong Associates RENEWAL54Amy Elsner
1022Leon B GauchoGermany2024-04-24Truhlar And Truhlar Attys QUALIFIED4Asiya Javayant
1023Stacey C InouyeFrance2024-04-30Dorl, James J Esq UNQUALIFIED65Ivan Magalhaes
1024Tony C TollnerCanada2024-04-16Feiner Bros NEGOTIATION40Ivan Magalhaes
1025Octavia I FigeroaAustralia2024-04-13Benton, John B Jr RENEWAL20Elwin Sharvill
1026Ivar H MaletItaly2024-04-12Feltz Printing Service NEGOTIATION48Anna Fali
1027Adams J DarakjyGermany2024-04-05Morlong Associates UNQUALIFIED99Asiya Javayant
1028Ricardo M CaudyRussia2024-04-04Rousseaux, Michael Esq UNQUALIFIED99Stephen Shaw
1029Kadeem Z VocelkaRussia2024-04-21Rangoni Of Florence NEW79Ioni Bowcher
1030Aika B InouyeIndia2024-04-22Chemel, James L Cpa UNQUALIFIED54Ioni Bowcher
1031Jeanfrancois B GlickRussia2024-04-27Truhlar And Truhlar Attys UNQUALIFIED91Ioni Bowcher
1032Smith Z DoeFrance2024-04-04Rangoni Of Florence NEGOTIATION4Bernardo Dominic
1033Ashley H ShinkoRussia2024-04-19Rousseaux, Michael Esq QUALIFIED27Ivan Magalhaes
1034Kadeem M AmigonBrazil2024-04-26Rousseaux, Michael Esq QUALIFIED74Ivan Magalhaes
1035Kaitlin P SergiItaly2024-04-14Dorl, James J Esq PROPOSAL17Stephen Shaw
1036Nicolas G OldroydJapan2024-04-24Benton, John B Jr PROPOSAL40Xuxue Feng
1037Francesco Z NickaBrazil2024-04-21Commercial Press NEGOTIATION91Elwin Sharvill
1038Antonio K TollnerUnited Kingdom2024-04-05Chapman, Ross E Esq UNQUALIFIED93Asiya Javayant
1039Silvio S PerinCanada2024-04-26Chemel, James L Cpa NEGOTIATION15Asiya Javayant
1040Maisha J DilliardAustralia2024-04-05Buckley Miller Wright RENEWAL42Amy Elsner
1041Jones E MorascaUnited Kingdom2024-04-17Printing Dimensions NEW23Stephen Shaw
1042Kadeem K PerinJapan2024-04-11Rangoni Of Florence QUALIFIED68Elwin Sharvill
1043Aditya S CaldareraFrance2024-04-23King, Christopher A Esq UNQUALIFIED19Stephen Shaw
1044Misaki E GlickIndia2024-04-27Chanay, Jeffrey A Esq QUALIFIED38Asiya Javayant
1045Munro I GarufiUnited Kingdom2024-04-02Commercial Press NEGOTIATION14Stephen Shaw
1046Adams T FerenczArgentina2024-04-25Rangoni Of Florence UNQUALIFIED81Ivan Magalhaes
1047Clifford M OstroskyRussia2024-04-21King, Christopher A Esq NEGOTIATION3Amy Elsner
1048Munro Z AlbaresJapan2024-04-08Buckley Miller Wright PROPOSAL56Anna Fali
1049David C NestleUnited Kingdom2024-04-30Rangoni Of Florence NEW5Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Jones D VenereArgentinaStephen Shaw RENEWAL
Murillo L NickaItalyIvan Magalhaes UNQUALIFIED
Adams R IturbideItalyAsiya Javayant UNQUALIFIED
Maisha Q PerinIndiaBernardo Dominic RENEWAL
Munro A FlosiArgentinaIvan Magalhaes QUALIFIED
Munro G MaletFranceOnyama Limba NEGOTIATION
Deepesh V BriddickBrazilBernardo Dominic NEGOTIATION
Jennifer Y NickaUnited KingdomStephen Shaw RENEWAL
Clifford A PaprockiItalyAsiya Javayant QUALIFIED
Jeanfrancois H IturbideSpainIvan Magalhaes QUALIFIED
Sinclair Z MarrierSpainAsiya Javayant QUALIFIED
Jennifer Y SchemmerSpainElwin Sharvill PROPOSAL
Chavez V CampainAustraliaAnna Fali PROPOSAL
Juan Y BriddickAustraliaElwin Sharvill NEW
Jones R MaletBrazilAsiya Javayant QUALIFIED
Aika M KolmetzGermanyAsiya Javayant UNQUALIFIED
Stacey K SchemmerItalyOnyama Limba NEW
David A CaudyItalyAnna Fali UNQUALIFIED
Costa T CaudySpainBernardo Dominic RENEWAL
Morrow B SaylorsBrazilIoni Bowcher NEW
Morrow K RulapaughSpainBernardo Dominic UNQUALIFIED
Cody B FollerGermanyAmy Elsner NEGOTIATION
Salvatore R FlosiUnited KingdomElwin Sharvill PROPOSAL
Wickens I MacleadFranceAsiya Javayant UNQUALIFIED
Isabel Z CaldareraSpainXuxue Feng PROPOSAL
Emily Q RimItalyAnna Fali PROPOSAL
Stacey R BologniaFranceStephen Shaw NEW
Jones W WhobreyBrazilBernardo Dominic RENEWAL
Mayumi C MaletJapanAmy Elsner PROPOSAL
Silvio K AmigonIndiaStephen Shaw PROPOSAL
Ashley V RimBrazilIvan Magalhaes UNQUALIFIED
Aditya T BologniaItalyXuxue Feng NEGOTIATION
Leja Z IturbideFranceStephen Shaw PROPOSAL
Jones P TollnerFranceAnna Fali PROPOSAL
Clifford N GlickRussiaElwin Sharvill PROPOSAL
Octavia J VocelkaRussiaIvan Magalhaes NEW
Faith U SchemmerArgentinaAsiya Javayant NEW
Arvin R RutaCanadaAsiya Javayant QUALIFIED
Mujtaba J GillianSpainOnyama Limba UNQUALIFIED
Leja V BologniaUnited KingdomStephen Shaw PROPOSAL
Ricardo L WaycottRussiaAmy Elsner PROPOSAL
Cody E MaletAustraliaBernardo Dominic RENEWAL
Octavia R FigeroaUnited KingdomAmy Elsner UNQUALIFIED
Misaki C TollnerItalyIvan Magalhaes UNQUALIFIED
Silvio Z GillianArgentinaBernardo Dominic NEGOTIATION
Tony M FerenczUnited KingdomXuxue Feng UNQUALIFIED
Leon U RulapaughAustraliaIoni Bowcher QUALIFIED
Johnson B MaletFranceAnna Fali NEW
Emily V RoysterCanadaXuxue Feng RENEWAL
Aruna W SergiBrazilBernardo Dominic PROPOSAL
Frozen Columns
Name
Maisha Z Morasca
Murillo Z Malet
Morrow D Kolmetz
Kadeem R Shinko
Isabel F Ferencz
Maisha Z Malet
Claire F Bowley
Morrow U Malet
Morrow Q Royster
Aruna A Bolognia
Leja O Perin
Antonio R Kusko
Julie H Campain
Antonio N Shinko
Costa I Dilliard
Adams M Oldroyd
Jefferson X Tollner
Murillo Q Saylors
James T Maclead
Aditya P Wieser
Ivar U Nicka
Francesco G Rim
Kadeem F Saylors
Ivar W Gaucho
Jones K Oldroyd
Maisha C Vocelka
Leja O Ostrosky
Mujtaba X Saylors
Wickens C Perin
Ivar I Vocelka
Morrow N Gillian
Stacey I Bowley
Claire L Maclead
Misaki R Wieser
Isabel K Campain
Rodrigues S Rim
Silvio O Dilliard
Wickens D Slusarski
Julie O Tollner
Costa S Shinko
Costa A Flosi
Tony G Waycott
Octavia O Perin
Juan I Gaucho
Sinclair R Oldroyd
Ivar I Nicka
Nicolas X Amigon
Salvatore G Dilliard
James G Ruta
Francesco V Kusko
IdCountryDate
1000France2024-04-03
1001India2024-04-17
1002Italy2024-04-27
1003Italy2024-04-30
1004Russia2024-04-21
1005United Kingdom2024-04-20
1006Italy2024-04-18
1007Japan2024-04-14
1008Spain2024-04-20
1009Italy2024-04-21
1010United Kingdom2024-04-29
1011Australia2024-04-13
1012Spain2024-04-19
1013France2024-04-03
1014Russia2024-04-03
1015Brazil2024-04-19
1016India2024-04-30
1017France2024-04-19
1018United Kingdom2024-04-23
1019Brazil2024-04-28
1020Spain2024-04-21
1021Japan2024-04-22
1022Spain2024-04-07
1023Brazil2024-04-08
1024Spain2024-04-28
1025Germany2024-04-05
1026Japan2024-04-16
1027Australia2024-04-22
1028France2024-04-08
1029Australia2024-04-11
1030Italy2024-04-13
1031Russia2024-04-16
1032India2024-04-01
1033India2024-04-23
1034Argentina2024-04-24
1035Italy2024-04-24
1036Italy2024-04-25
1037Argentina2024-04-17
1038Japan2024-04-21
1039Italy2024-04-30
1040Russia2024-04-13
1041Canada2024-04-11
1042Italy2024-04-23
1043Germany2024-04-13
1044Spain2024-04-25
1045Germany2024-04-12
1046Germany2024-04-18
1047Argentina2024-04-13
1048France2024-04-27
1049India2024-04-19

On-Demand Data

NameIdCountryDate
Clifford A Ferencz1000Australia2024-04-07
Rodrigues S Flosi1001France2024-04-09
Jefferson I Butt1002Canada2024-04-28
Aruna P Bolognia1003United Kingdom2024-04-28
Aruna Q Glick1004Spain2024-04-06
Kaitlin W Poquette1005India2024-04-02
Greenwood Q Flosi1006Germany2024-04-11
Antonio U Shinko1007Argentina2024-04-17
Silvio R Darakjy1008Argentina2024-04-22
Tony Z Garufi1009Russia2024-04-03
Jeanfrancois Z Amigon1010Spain2024-04-14
Sinclair B Amigon1011Japan2024-04-22
Izzy K Malet1012Brazil2024-04-13
Aditya G Nestle1013Argentina2024-04-21
Murillo V Kolmetz1014Argentina2024-04-22
Murillo P Caudy1015France2024-04-19
Deepesh J Gaucho1016Japan2024-04-13
Nicolas N Malet1017India2024-04-01
Maisha A Marrier1018Italy2024-04-25
Morrow H Caldarera1019Australia2024-04-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh H WhobreyGermanyAsiya Javayant PROPOSAL
Isabel Z GlickRussiaIvan Magalhaes RENEWAL
Alejandro L GauchoArgentinaAmy Elsner NEGOTIATION
Jennifer S BriddickGermanyAnna Fali NEGOTIATION
Darci K DoeIndiaBernardo Dominic UNQUALIFIED
Deepesh O KolmetzRussiaBernardo Dominic NEGOTIATION
Alejandro M GlickCanadaAsiya Javayant NEW
Murillo H BriddickFranceBernardo Dominic NEW
Mayumi E GarufiCanadaAmy Elsner NEW
Jefferson D FollerAustraliaIvan Magalhaes UNQUALIFIED
Maisha J AmigonItalyXuxue Feng QUALIFIED
Aruna T InouyeItalyIoni Bowcher PROPOSAL
Kaitlin D CaudyJapanElwin Sharvill QUALIFIED
Silvio P KolmetzJapanAmy Elsner RENEWAL
Aditya P GillianCanadaAmy Elsner NEW
Leja U BologniaGermanyIvan Magalhaes RENEWAL
Murillo V InouyeCanadaIoni Bowcher UNQUALIFIED
Stacey V MacleadJapanStephen Shaw QUALIFIED
Rodrigues X FlosiUnited KingdomOnyama Limba UNQUALIFIED
Smith N GauchoFranceAnna Fali RENEWAL
Murillo M BriddickIndiaStephen Shaw NEW
Murillo Q FlosiIndiaAnna Fali UNQUALIFIED
Izzy L DilliardAustraliaOnyama Limba RENEWAL
Aditya B OstroskyUnited KingdomAsiya Javayant UNQUALIFIED
Misaki S GillianSpainElwin Sharvill UNQUALIFIED
Munro E OstroskySpainAsiya Javayant QUALIFIED
Faith U RoysterRussiaIoni Bowcher NEW
Octavia N NestleJapanAnna Fali UNQUALIFIED
Alejandro X ChuiBrazilAsiya Javayant RENEWAL
Isabel X KolmetzBrazilElwin Sharvill QUALIFIED
Kadeem B DarakjyFranceAsiya Javayant NEW
Izzy V FerenczFranceAsiya Javayant QUALIFIED
Kaitlin E WhobreyFranceAnna Fali PROPOSAL
Aruna G KuskoIndiaIoni Bowcher NEW
Salvatore F CaudyAustraliaOnyama Limba NEGOTIATION
Aika O RutaArgentinaBernardo Dominic PROPOSAL
Sinclair D VenereArgentinaAnna Fali QUALIFIED
Emily O IturbideCanadaXuxue Feng UNQUALIFIED
Julie H FollerSpainAnna Fali UNQUALIFIED
Emily B AmigonJapanElwin Sharvill 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>