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
Maisha Q BowleyCanadaIvan Magalhaes RENEWAL
Salvatore P SergiFranceAsiya Javayant QUALIFIED
Wickens B OldroydItalyOnyama Limba NEW
Cody X RoysterUnited KingdomXuxue Feng NEW
Jeanfrancois F KolmetzUnited KingdomAsiya Javayant QUALIFIED
Sinclair T FlosiIndiaBernardo Dominic RENEWAL
Ashley I FlosiGermanyAsiya Javayant QUALIFIED
Juan W StensethUnited KingdomAmy Elsner NEW
Aditya I MaletJapanOnyama Limba NEW
Jones T AlbaresUnited KingdomIoni Bowcher RENEWAL
Leon N PoquetteFranceIvan Magalhaes RENEWAL
Mujtaba J GlickItalyAmy Elsner QUALIFIED
Emily L PaprockiCanadaElwin Sharvill QUALIFIED
Wickens X SaylorsRussiaBernardo Dominic NEW
Ashley U MarrierRussiaAmy Elsner PROPOSAL
Maria X PaprockiArgentinaAsiya Javayant QUALIFIED
Kaitlin D StensethAustraliaOnyama Limba UNQUALIFIED
Julie B AlbaresIndiaAmy Elsner NEGOTIATION
Leon X AmigonRussiaIvan Magalhaes RENEWAL
Aditya N VocelkaIndiaStephen Shaw RENEWAL
Arvin Y FlosiItalyIvan Magalhaes UNQUALIFIED
Emily Y GillianArgentinaIvan Magalhaes PROPOSAL
David W DilliardFranceAnna Fali PROPOSAL
James T PerinArgentinaAsiya Javayant NEGOTIATION
Chavez H PaprockiArgentinaAmy Elsner PROPOSAL
Stacey I SergiSpainIoni Bowcher UNQUALIFIED
Julie U RulapaughUnited KingdomOnyama Limba UNQUALIFIED
Munro F NickaUnited KingdomAnna Fali UNQUALIFIED
Izzy N VenereRussiaXuxue Feng RENEWAL
Wickens H FollerAustraliaXuxue Feng PROPOSAL
Stacey F RulapaughBrazilOnyama Limba NEW
Tony G ChuiCanadaBernardo Dominic RENEWAL
Jones H MacleadSpainIvan Magalhaes NEW
Aditya G FigeroaItalyIvan Magalhaes NEW
Smith N FollerArgentinaXuxue Feng RENEWAL
Clifford L GlickArgentinaElwin Sharvill PROPOSAL
Misaki X RutaGermanyAsiya Javayant NEGOTIATION
Silvio N CaldareraJapanAnna Fali NEW
Deepesh W CampainUnited KingdomOnyama Limba QUALIFIED
Emily M SlusarskiSpainXuxue Feng NEGOTIATION
Adams N AlbaresIndiaStephen Shaw NEW
Kadeem A FigeroaAustraliaAmy Elsner PROPOSAL
Murillo B BowleySpainBernardo Dominic PROPOSAL
Salvatore A CaldareraGermanyStephen Shaw NEW
Kaitlin B NickaArgentinaXuxue Feng PROPOSAL
Smith H GillianCanadaIvan Magalhaes UNQUALIFIED
Nicolas D AlbaresSpainAmy Elsner NEGOTIATION
Antonio X PaprockiSpainOnyama Limba NEGOTIATION
Arvin N OldroydFranceAmy Elsner RENEWAL
Isabel Q BriddickJapanOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson A GarufiRussiaIoni Bowcher UNQUALIFIED
Nicolas S SergiBrazilAmy Elsner NEW
Faith J GlickRussiaElwin Sharvill RENEWAL
Mayumi A SaylorsUnited KingdomBernardo Dominic QUALIFIED
Munro U MacleadAustraliaAsiya Javayant PROPOSAL
Darci M FlosiSpainElwin Sharvill NEGOTIATION
Stacey H RoysterSpainAmy Elsner NEW
Isabel H FigeroaSpainStephen Shaw UNQUALIFIED
Silvio T NestleItalyElwin Sharvill RENEWAL
Costa W SaylorsJapanStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire V GarufiAustralia2024-04-21Rangoni Of Florence PROPOSAL6Bernardo Dominic
1001Sinclair Z ButtCanada2024-04-24Chemel, James L Cpa NEGOTIATION98Bernardo Dominic
1002Leja D GauchoJapan2024-04-18Feltz Printing Service QUALIFIED71Elwin Sharvill
1003Juan R SlusarskiJapan2024-03-30Truhlar And Truhlar Attys UNQUALIFIED62Elwin Sharvill
1004Cody N MacleadJapan2024-04-26Rangoni Of Florence UNQUALIFIED83Onyama Limba
1005Adams K VenereCanada2024-04-05Truhlar And Truhlar Attys NEW85Asiya Javayant
1006Rodrigues T ChuiArgentina2024-04-03Buckley Miller Wright UNQUALIFIED52Ioni Bowcher
1007Nicolas N WieserBrazil2024-04-23Dorl, James J Esq NEGOTIATION65Ioni Bowcher
1008Johnson Q StockhamItaly2024-04-17Truhlar And Truhlar Attys NEW96Ioni Bowcher
1009Jeanfrancois Z ShinkoBrazil2024-04-18Printing Dimensions NEGOTIATION17Anna Fali
1010Juan H CaudyCanada2024-04-24Rangoni Of Florence UNQUALIFIED15Ivan Magalhaes
1011Darci I NestleFrance2024-04-24Feiner Bros QUALIFIED46Stephen Shaw
1012Murillo G NickaGermany2024-04-26Buckley Miller Wright RENEWAL48Bernardo Dominic
1013Rodrigues U GillianFrance2024-04-24Chemel, James L Cpa QUALIFIED9Elwin Sharvill
1014Jefferson U StensethCanada2024-04-14Benton, John B Jr NEGOTIATION97Amy Elsner
1015David I GlickIndia2024-04-07Morlong Associates QUALIFIED87Bernardo Dominic
1016Sinclair Y GarufiUnited Kingdom2024-04-28Chemel, James L Cpa UNQUALIFIED98Stephen Shaw
1017Ricardo C CaudyBrazil2024-04-17Chanay, Jeffrey A Esq QUALIFIED87Xuxue Feng
1018Isabel Q GlickUnited Kingdom2024-04-21Chemel, James L Cpa QUALIFIED38Stephen Shaw
1019David S GillianFrance2024-04-04Morlong Associates PROPOSAL39Xuxue Feng
1020Deepesh E GauchoRussia2024-04-15Benton, John B Jr UNQUALIFIED64Elwin Sharvill
1021David F AlbaresCanada2024-03-30Truhlar And Truhlar Attys NEW92Xuxue Feng
1022Mayumi R ShinkoArgentina2024-04-26Commercial Press PROPOSAL4Amy Elsner
1023Ricardo F VocelkaItaly2024-04-20Chanay, Jeffrey A Esq NEW16Ivan Magalhaes
1024Juan X InouyeIndia2024-03-31Benton, John B Jr RENEWAL25Ivan Magalhaes
1025Kadeem R SchemmerArgentina2024-04-07Feltz Printing Service QUALIFIED25Amy Elsner
1026Silvio Y StensethJapan2024-04-27Buckley Miller Wright PROPOSAL62Asiya Javayant
1027Mujtaba I GillianAustralia2024-04-02Truhlar And Truhlar Attys PROPOSAL78Asiya Javayant
1028Johnson B PerinAustralia2024-04-17Feltz Printing Service PROPOSAL67Ivan Magalhaes
1029Isabel Y CaudyUnited Kingdom2024-04-27Dorl, James J Esq NEGOTIATION18Amy Elsner
1030Aika X CampainItaly2024-04-23Feiner Bros NEGOTIATION93Bernardo Dominic
1031Ricardo U MarrierArgentina2024-04-14Chemel, James L Cpa NEGOTIATION24Anna Fali
1032Greenwood L NickaArgentina2024-04-27Chanay, Jeffrey A Esq UNQUALIFIED9Anna Fali
1033Jefferson H CampainFrance2024-04-28Dorl, James J Esq NEW33Bernardo Dominic
1034Chavez F WhobreyJapan2024-04-08Feiner Bros RENEWAL27Asiya Javayant
1035Johnson W WaycottRussia2024-04-08Commercial Press UNQUALIFIED74Amy Elsner
1036Munro E RoysterJapan2024-04-18Chapman, Ross E Esq RENEWAL58Ioni Bowcher
1037Maria C KolmetzArgentina2024-03-30Buckley Miller Wright NEGOTIATION6Bernardo Dominic
1038Jefferson E GauchoFrance2024-04-10Feiner Bros NEW7Amy Elsner
1039Kaitlin O VenereUnited Kingdom2024-04-21King, Christopher A Esq UNQUALIFIED66Amy Elsner
1040Isabel L RulapaughAustralia2024-04-17Rousseaux, Michael Esq PROPOSAL70Amy Elsner
1041Ricardo X OstroskyBrazil2024-04-26Printing Dimensions RENEWAL28Asiya Javayant
1042Rodrigues G FerenczUnited Kingdom2024-04-21Printing Dimensions NEGOTIATION44Anna Fali
1043Clifford Q BriddickArgentina2024-04-12Chanay, Jeffrey A Esq QUALIFIED74Xuxue Feng
1044Mujtaba D GarufiRussia2024-04-12Rangoni Of Florence QUALIFIED20Amy Elsner
1045Jennifer M GillianBrazil2024-04-14Chanay, Jeffrey A Esq QUALIFIED37Asiya Javayant
1046Antonio F DilliardGermany2024-04-17Chanay, Jeffrey A Esq NEW66Anna Fali
1047Mujtaba Y CaldareraRussia2024-04-21Printing Dimensions NEGOTIATION85Onyama Limba
1048Maisha K DoeBrazil2024-04-01Dorl, James J Esq RENEWAL48Xuxue Feng
1049Maria Z KuskoFrance2024-04-27Dorl, James J Esq RENEWAL80Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Munro W CaudyArgentinaOnyama Limba NEGOTIATION
Wickens B MacleadBrazilIvan Magalhaes QUALIFIED
Mayumi E MarrierJapanOnyama Limba UNQUALIFIED
Juan J BowleyAustraliaElwin Sharvill UNQUALIFIED
Arvin L FigeroaBrazilElwin Sharvill UNQUALIFIED
Jeanfrancois O CampainArgentinaXuxue Feng NEW
Kaitlin R BowleyIndiaIoni Bowcher QUALIFIED
James N PerinCanadaAnna Fali NEGOTIATION
Jones O DilliardIndiaAnna Fali UNQUALIFIED
Mayumi J CaudyIndiaIvan Magalhaes UNQUALIFIED
Arvin H NickaItalyBernardo Dominic NEW
Stacey U CampainSpainIvan Magalhaes NEGOTIATION
Aruna A PaprockiSpainBernardo Dominic QUALIFIED
Kaitlin G SlusarskiCanadaAsiya Javayant RENEWAL
Isabel Z FlosiRussiaAmy Elsner PROPOSAL
Tony I GlickArgentinaAmy Elsner UNQUALIFIED
Leja F KuskoSpainIvan Magalhaes NEW
Deepesh O RimBrazilIvan Magalhaes QUALIFIED
Stacey D KolmetzCanadaIvan Magalhaes RENEWAL
Darci P AlbaresAustraliaAsiya Javayant PROPOSAL
Smith G OldroydBrazilAmy Elsner NEW
Ashley G GarufiUnited KingdomXuxue Feng UNQUALIFIED
Smith C InouyeSpainOnyama Limba RENEWAL
Julie A InouyeAustraliaOnyama Limba NEGOTIATION
Leon I SaylorsBrazilIvan Magalhaes UNQUALIFIED
Julie P WhobreySpainAsiya Javayant QUALIFIED
Faith X AlbaresSpainIvan Magalhaes NEGOTIATION
Juan S GauchoCanadaIoni Bowcher PROPOSAL
Jones F RoysterAustraliaOnyama Limba PROPOSAL
Maisha K SergiIndiaStephen Shaw NEW
Kaitlin G BriddickRussiaAmy Elsner NEGOTIATION
Izzy K FollerUnited KingdomAmy Elsner UNQUALIFIED
Jeanfrancois E PaprockiBrazilIvan Magalhaes PROPOSAL
Jones L NestleJapanXuxue Feng UNQUALIFIED
Deepesh A RoysterSpainStephen Shaw PROPOSAL
Greenwood S PerinUnited KingdomOnyama Limba NEGOTIATION
Aruna P ShinkoGermanyAmy Elsner PROPOSAL
Claire O ButtJapanIoni Bowcher UNQUALIFIED
Emily Q GillianSpainIvan Magalhaes RENEWAL
Mayumi S CaldareraGermanyAmy Elsner NEGOTIATION
Faith Z MaletItalyAmy Elsner PROPOSAL
Maisha Z SlusarskiItalyBernardo Dominic QUALIFIED
Adams Z OldroydJapanBernardo Dominic UNQUALIFIED
Ivar M AlbaresAustraliaBernardo Dominic RENEWAL
Leon Q DoeCanadaIoni Bowcher QUALIFIED
Leja W FerenczAustraliaAmy Elsner NEW
Antonio T KuskoArgentinaIvan Magalhaes NEW
Isabel B IturbideSpainBernardo Dominic NEGOTIATION
Antonio M NickaArgentinaAmy Elsner PROPOSAL
Alejandro S FollerArgentinaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Claire D Slusarski
Leon Q Wieser
Salvatore D Royster
Kaitlin L Nestle
Jones P Amigon
Aruna S Garufi
Morrow Y Doe
Darci T Bolognia
Misaki A Inouye
Mayumi U Darakjy
Aditya X Malet
Smith Q Doe
Silvio O Malet
Claire G Stenseth
Arvin W Gaucho
Ivar C Dilliard
Rodrigues R Butt
Maisha P Royster
Clifford C Ferencz
Adams Z Foller
Salvatore M Glick
Smith L Paprocki
Leon X Whobrey
Aditya F Iturbide
Antonio L Kusko
Alejandro T Flosi
Izzy L Gaucho
Costa D Butt
Julie S Slusarski
Adams G Chui
Deepesh J Waycott
Claire G Ostrosky
Izzy U Stenseth
Antonio Y Nicka
Aditya W Doe
Jefferson B Waycott
Isabel L Bolognia
Emily Y Waycott
Tony C Rulapaugh
Leon C Poquette
Murillo M Gillian
Morrow J Vocelka
Morrow G Dilliard
Isabel A Poquette
Octavia D Oldroyd
Johnson M Tollner
Alejandro O Maclead
Leja M Darakjy
James P Oldroyd
Jefferson O Tollner
IdCountryDate
1000United Kingdom2024-03-31
1001Argentina2024-04-25
1002Brazil2024-04-25
1003Italy2024-04-09
1004France2024-04-18
1005Australia2024-04-15
1006Italy2024-04-15
1007France2024-04-20
1008Italy2024-04-05
1009Spain2024-04-22
1010Germany2024-04-26
1011Spain2024-04-01
1012Italy2024-04-28
1013Australia2024-04-24
1014India2024-04-17
1015Germany2024-04-04
1016Germany2024-04-04
1017Japan2024-04-05
1018Germany2024-04-13
1019Italy2024-04-10
1020Russia2024-04-19
1021Spain2024-04-28
1022Germany2024-04-15
1023Canada2024-04-10
1024Italy2024-04-16
1025India2024-04-22
1026Italy2024-04-23
1027Russia2024-04-20
1028Argentina2024-04-06
1029India2024-04-03
1030Russia2024-04-02
1031Canada2024-04-13
1032Argentina2024-04-26
1033Italy2024-04-23
1034India2024-04-07
1035Italy2024-04-04
1036France2024-04-07
1037Russia2024-04-08
1038France2024-04-27
1039Russia2024-03-31
1040Brazil2024-04-22
1041Russia2024-04-02
1042Brazil2024-04-08
1043Italy2024-04-07
1044Russia2024-04-07
1045Russia2024-04-09
1046Russia2024-04-16
1047Brazil2024-04-04
1048Australia2024-04-06
1049France2024-04-20

On-Demand Data

NameIdCountryDate
Cody C Slusarski1000India2024-04-04
Arvin K Inouye1001Italy2024-04-21
Misaki Y Royster1002Brazil2024-04-01
Munro K Inouye1003Brazil2024-04-14
Antonio I Albares1004Australia2024-04-17
Tony C Rulapaugh1005India2024-04-07
Jones S Venere1006France2024-04-19
Nicolas C Tollner1007Australia2024-04-25
James R Stockham1008India2024-04-21
Alejandro V Foller1009India2024-04-21
Leja O Stenseth1010Japan2024-04-01
Mayumi K Stockham1011Russia2024-03-31
Emily G Saylors1012United Kingdom2024-04-11
Tony M Darakjy1013France2024-03-30
Aika U Oldroyd1014Italy2024-04-07
Octavia M Poquette1015Argentina2024-04-06
Stacey L Ostrosky1016Australia2024-04-25
Alejandro A Slusarski1017Canada2024-04-16
Francesco M Perin1018Germany2024-04-09
Jennifer U Waycott1019Germany2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer R BologniaBrazilStephen Shaw NEW
Faith Q SlusarskiUnited KingdomBernardo Dominic PROPOSAL
Juan M DarakjyFranceElwin Sharvill PROPOSAL
Costa M WieserAustraliaElwin Sharvill NEGOTIATION
Juan Z FerenczIndiaAnna Fali QUALIFIED
Mayumi N PoquetteItalyStephen Shaw QUALIFIED
Nicolas T WhobreyArgentinaIvan Magalhaes NEGOTIATION
Isabel C DilliardJapanXuxue Feng QUALIFIED
Aditya Q WaycottArgentinaElwin Sharvill RENEWAL
Leon C SaylorsAustraliaAnna Fali PROPOSAL
Tony O CampainBrazilBernardo Dominic NEGOTIATION
Deepesh F WaycottCanadaAnna Fali NEGOTIATION
Francesco X FigeroaFranceStephen Shaw PROPOSAL
Antonio F ChuiArgentinaIvan Magalhaes UNQUALIFIED
Kaitlin H MorascaFranceOnyama Limba PROPOSAL
Rodrigues S MarrierArgentinaAsiya Javayant UNQUALIFIED
Maisha G RutaItalyElwin Sharvill UNQUALIFIED
Aditya S WaycottJapanIvan Magalhaes NEW
Darci H BowleyGermanyIvan Magalhaes NEW
Greenwood U BriddickIndiaStephen Shaw RENEWAL
Julie C MorascaFranceXuxue Feng QUALIFIED
Izzy V WhobreyCanadaBernardo Dominic NEW
Smith H FlosiGermanyElwin Sharvill PROPOSAL
Mujtaba G InouyeFranceAmy Elsner RENEWAL
Ivar W VocelkaBrazilXuxue Feng PROPOSAL
Cody X SergiJapanAsiya Javayant PROPOSAL
Johnson Z WaycottUnited KingdomElwin Sharvill NEW
Leon E BologniaItalyIoni Bowcher RENEWAL
Nicolas R SergiGermanyAmy Elsner QUALIFIED
Costa M MacleadUnited KingdomAnna Fali RENEWAL
Julie I StockhamGermanyAnna Fali UNQUALIFIED
Jennifer G RulapaughUnited KingdomAnna Fali NEGOTIATION
Emily J RoysterAustraliaElwin Sharvill NEGOTIATION
Jones A InouyeBrazilIvan Magalhaes RENEWAL
David Q SaylorsSpainOnyama Limba NEGOTIATION
Misaki V VocelkaGermanyBernardo Dominic NEW
Jefferson M FlosiUnited KingdomAnna Fali UNQUALIFIED
Jeanfrancois Z ButtJapanXuxue Feng RENEWAL
Johnson A CampainCanadaIvan Magalhaes NEGOTIATION
Alejandro L StockhamAustraliaXuxue Feng 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>