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
Darci J KolmetzArgentinaAsiya Javayant UNQUALIFIED
Alejandro D VenereArgentinaStephen Shaw NEGOTIATION
Costa Z AlbaresItalyStephen Shaw NEW
Maisha X RimRussiaAnna Fali NEW
Munro T GauchoUnited KingdomBernardo Dominic QUALIFIED
Alejandro M RoysterIndiaAmy Elsner PROPOSAL
Smith N ButtBrazilAmy Elsner RENEWAL
Aditya L CampainBrazilBernardo Dominic PROPOSAL
Cody B PaprockiGermanyAsiya Javayant NEGOTIATION
David U RimBrazilAmy Elsner PROPOSAL
Ricardo E AlbaresFranceStephen Shaw UNQUALIFIED
Faith R WieserGermanyBernardo Dominic PROPOSAL
Misaki E InouyeGermanyAmy Elsner NEGOTIATION
Ricardo Y PoquetteUnited KingdomElwin Sharvill QUALIFIED
Kaitlin N ShinkoItalyOnyama Limba PROPOSAL
Octavia C WieserJapanIoni Bowcher PROPOSAL
Cody Q MarrierArgentinaAmy Elsner RENEWAL
Kadeem P DarakjyCanadaAnna Fali NEW
Arvin Q DilliardArgentinaIvan Magalhaes UNQUALIFIED
Munro V GauchoUnited KingdomBernardo Dominic NEGOTIATION
Cody P DarakjyArgentinaIoni Bowcher QUALIFIED
Darci P GarufiAustraliaOnyama Limba NEGOTIATION
Munro U RoysterArgentinaAsiya Javayant PROPOSAL
Jones P AmigonCanadaElwin Sharvill PROPOSAL
Smith Q SaylorsJapanStephen Shaw NEGOTIATION
Salvatore K GarufiAustraliaAsiya Javayant RENEWAL
Deepesh M PoquetteUnited KingdomXuxue Feng UNQUALIFIED
James A AmigonGermanyAsiya Javayant QUALIFIED
Costa V ButtItalyXuxue Feng QUALIFIED
Salvatore I TollnerArgentinaIoni Bowcher NEGOTIATION
Jones F ButtAustraliaIvan Magalhaes RENEWAL
Smith S WieserBrazilStephen Shaw NEGOTIATION
Wickens H CampainJapanBernardo Dominic RENEWAL
Mujtaba D MaletIndiaIvan Magalhaes UNQUALIFIED
Mayumi C PoquetteUnited KingdomStephen Shaw NEGOTIATION
Deepesh D WieserSpainAmy Elsner QUALIFIED
Munro T SaylorsGermanyXuxue Feng NEGOTIATION
Emily D PoquetteAustraliaAnna Fali RENEWAL
Johnson P CampainFranceAsiya Javayant RENEWAL
Deepesh Z IturbideIndiaElwin Sharvill UNQUALIFIED
Silvio P GarufiSpainOnyama Limba NEW
Alejandro O MacleadGermanyAmy Elsner QUALIFIED
Deepesh Z FerenczBrazilXuxue Feng QUALIFIED
Adams E RimItalyAmy Elsner UNQUALIFIED
Aditya R MorascaJapanElwin Sharvill PROPOSAL
Salvatore N BowleyRussiaAsiya Javayant QUALIFIED
Darci S StockhamSpainAnna Fali RENEWAL
Murillo C BriddickGermanyXuxue Feng NEGOTIATION
Rodrigues E DilliardCanadaOnyama Limba UNQUALIFIED
Chavez G DarakjyBrazilStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Octavia Z TollnerItalyAmy Elsner PROPOSAL
Juan Z MaletSpainAnna Fali NEW
Silvio Z FollerUnited KingdomIvan Magalhaes UNQUALIFIED
Kaitlin R VenereBrazilIvan Magalhaes NEW
Juan V AmigonCanadaAmy Elsner UNQUALIFIED
Arvin O PaprockiUnited KingdomStephen Shaw RENEWAL
Leon A KolmetzGermanyBernardo Dominic PROPOSAL
Jeanfrancois N InouyeArgentinaXuxue Feng NEW
Maisha R DoeRussiaXuxue Feng RENEWAL
Jones T DoeJapanBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley V RoysterFrance2024-04-25Chemel, James L Cpa PROPOSAL20Anna Fali
1001Octavia Z PaprockiAustralia2024-04-19Chemel, James L Cpa UNQUALIFIED39Xuxue Feng
1002Cody T OldroydSpain2024-04-03Chapman, Ross E Esq QUALIFIED37Bernardo Dominic
1003Munro K VocelkaCanada2024-04-16Buckley Miller Wright NEGOTIATION11Ioni Bowcher
1004Tony D SergiSpain2024-04-02Dorl, James J Esq QUALIFIED24Ivan Magalhaes
1005Claire W FerenczIndia2024-04-15Chapman, Ross E Esq PROPOSAL67Ioni Bowcher
1006Munro O RimItaly2024-04-06Chapman, Ross E Esq NEW3Ioni Bowcher
1007Kaitlin Y GarufiJapan2024-04-07Morlong Associates NEGOTIATION81Elwin Sharvill
1008Maria T MacleadCanada2024-04-28Feltz Printing Service UNQUALIFIED6Anna Fali
1009Jones Q CampainItaly2024-04-04Feiner Bros PROPOSAL59Elwin Sharvill
1010Jennifer R GauchoRussia2024-04-13Buckley Miller Wright NEW60Anna Fali
1011James S SchemmerGermany2024-04-06Commercial Press NEGOTIATION58Amy Elsner
1012Chavez R GauchoBrazil2024-04-15Chapman, Ross E Esq QUALIFIED90Onyama Limba
1013Arvin K IturbideCanada2024-04-22Rangoni Of Florence PROPOSAL51Anna Fali
1014Morrow E AlbaresRussia2024-04-20Rangoni Of Florence QUALIFIED73Stephen Shaw
1015Chavez G WieserItaly2024-04-21Dorl, James J Esq QUALIFIED85Ivan Magalhaes
1016Aditya A IturbideGermany2024-05-01Feltz Printing Service UNQUALIFIED77Asiya Javayant
1017Maisha G CampainAustralia2024-04-04Printing Dimensions QUALIFIED56Anna Fali
1018Jeanfrancois O PaprockiFrance2024-04-16Printing Dimensions NEGOTIATION54Amy Elsner
1019Faith P FlosiItaly2024-05-01Benton, John B Jr PROPOSAL71Stephen Shaw
1020Jones L WhobreyGermany2024-04-21Chemel, James L Cpa QUALIFIED95Bernardo Dominic
1021James M OstroskyIndia2024-04-14Chanay, Jeffrey A Esq NEW46Amy Elsner
1022Nicolas I RutaGermany2024-04-04Rousseaux, Michael Esq NEW69Anna Fali
1023Cody Q BologniaCanada2024-04-20Feltz Printing Service UNQUALIFIED67Onyama Limba
1024Ricardo C RoysterRussia2024-04-26King, Christopher A Esq NEW31Xuxue Feng
1025Antonio P GlickUnited Kingdom2024-04-11Commercial Press QUALIFIED26Asiya Javayant
1026Antonio T VenereJapan2024-04-14Chanay, Jeffrey A Esq PROPOSAL35Stephen Shaw
1027Stacey Q WaycottArgentina2024-04-09Feiner Bros PROPOSAL48Ioni Bowcher
1028Jones S DilliardFrance2024-04-04Benton, John B Jr UNQUALIFIED60Ioni Bowcher
1029Deepesh U MaletFrance2024-04-28Chanay, Jeffrey A Esq QUALIFIED1Ioni Bowcher
1030Misaki F DoeRussia2024-04-22Truhlar And Truhlar Attys UNQUALIFIED25Asiya Javayant
1031Rodrigues G TollnerRussia2024-04-08Truhlar And Truhlar Attys QUALIFIED33Bernardo Dominic
1032Stacey B RoysterGermany2024-04-19Chanay, Jeffrey A Esq NEW62Ivan Magalhaes
1033Salvatore W BologniaBrazil2024-04-30Rangoni Of Florence QUALIFIED76Ioni Bowcher
1034Silvio U AmigonIndia2024-04-27Benton, John B Jr QUALIFIED72Ivan Magalhaes
1035Jeanfrancois W FerenczItaly2024-04-27Commercial Press PROPOSAL30Xuxue Feng
1036Maria N CaudyBrazil2024-04-07Feiner Bros QUALIFIED98Ioni Bowcher
1037Tony E SchemmerArgentina2024-04-23Rousseaux, Michael Esq RENEWAL61Ivan Magalhaes
1038Mayumi K SaylorsBrazil2024-05-01King, Christopher A Esq RENEWAL20Stephen Shaw
1039James K RulapaughJapan2024-04-25Buckley Miller Wright UNQUALIFIED52Anna Fali
1040Rodrigues Q OstroskyBrazil2024-04-02Feltz Printing Service UNQUALIFIED12Asiya Javayant
1041Jennifer L FerenczArgentina2024-04-14Rousseaux, Michael Esq NEW81Ivan Magalhaes
1042Chavez T IturbideSpain2024-04-27King, Christopher A Esq PROPOSAL12Elwin Sharvill
1043Johnson Z RimAustralia2024-04-14Chemel, James L Cpa UNQUALIFIED81Onyama Limba
1044Jennifer Z GlickIndia2024-04-22Feiner Bros NEGOTIATION15Onyama Limba
1045Maisha Q RulapaughCanada2024-04-18Commercial Press NEGOTIATION30Onyama Limba
1046Kadeem S MaletSpain2024-04-07Buckley Miller Wright PROPOSAL86Anna Fali
1047Octavia T NestleRussia2024-04-10Feiner Bros NEW3Amy Elsner
1048Jefferson F CaudyAustralia2024-04-15Morlong Associates PROPOSAL35Ivan Magalhaes
1049Maisha Z NickaBrazil2024-04-27Chapman, Ross E Esq NEW26Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Chavez T MacleadCanadaStephen Shaw UNQUALIFIED
Isabel O FollerFranceIvan Magalhaes NEGOTIATION
Deepesh W MaletItalyAnna Fali NEW
Alejandro Q FerenczCanadaAmy Elsner UNQUALIFIED
Aruna Q DarakjyIndiaAsiya Javayant RENEWAL
David U GarufiAustraliaOnyama Limba NEGOTIATION
Cody R RulapaughGermanyElwin Sharvill RENEWAL
Claire J PaprockiGermanyIvan Magalhaes PROPOSAL
Ricardo L GlickJapanOnyama Limba RENEWAL
Greenwood K RutaIndiaOnyama Limba UNQUALIFIED
Jeanfrancois D GillianSpainStephen Shaw PROPOSAL
Murillo E WhobreyArgentinaStephen Shaw QUALIFIED
Leon C DilliardIndiaStephen Shaw NEGOTIATION
Izzy I NestleFranceAmy Elsner UNQUALIFIED
Jones X TollnerAustraliaXuxue Feng QUALIFIED
Munro F PerinItalyIvan Magalhaes QUALIFIED
Aika R AmigonIndiaStephen Shaw QUALIFIED
Munro R VocelkaSpainStephen Shaw UNQUALIFIED
Mujtaba W StensethGermanyIvan Magalhaes RENEWAL
Emily N DilliardItalyIoni Bowcher NEGOTIATION
Tony L StockhamCanadaAnna Fali NEGOTIATION
Deepesh C ShinkoIndiaIvan Magalhaes NEW
Jennifer K GarufiArgentinaOnyama Limba NEGOTIATION
Leon K ShinkoCanadaStephen Shaw UNQUALIFIED
Morrow O IturbideUnited KingdomBernardo Dominic QUALIFIED
Kadeem F NickaIndiaAsiya Javayant NEGOTIATION
Smith B SergiJapanStephen Shaw UNQUALIFIED
Ricardo E FigeroaCanadaBernardo Dominic UNQUALIFIED
Costa V StockhamRussiaIoni Bowcher QUALIFIED
Jeanfrancois X KuskoItalyBernardo Dominic RENEWAL
Leon L BowleyBrazilIvan Magalhaes NEGOTIATION
Emily H WaycottIndiaAmy Elsner PROPOSAL
Mujtaba A NickaRussiaOnyama Limba QUALIFIED
Ivar W WaycottUnited KingdomAsiya Javayant RENEWAL
Aruna T MacleadArgentinaXuxue Feng RENEWAL
Smith T MorascaUnited KingdomXuxue Feng QUALIFIED
Maisha C PerinSpainIvan Magalhaes RENEWAL
Silvio N TollnerUnited KingdomAmy Elsner QUALIFIED
Julie N PaprockiJapanIvan Magalhaes NEW
Aditya M MaletAustraliaAsiya Javayant RENEWAL
Ricardo P BowleyJapanAnna Fali QUALIFIED
Murillo W PerinItalyAsiya Javayant NEGOTIATION
Kadeem O DilliardAustraliaOnyama Limba UNQUALIFIED
Mujtaba I WieserAustraliaOnyama Limba RENEWAL
Jones M WhobreyGermanyAsiya Javayant NEW
Adams F MaletUnited KingdomIvan Magalhaes UNQUALIFIED
Mujtaba J GarufiFranceBernardo Dominic NEGOTIATION
Mayumi E AmigonJapanBernardo Dominic UNQUALIFIED
Tony Z OldroydArgentinaIoni Bowcher UNQUALIFIED
Kaitlin V SaylorsGermanyStephen Shaw UNQUALIFIED
Frozen Columns
Name
Aruna I Dilliard
Francesco F Gillian
Leon Q Perin
Misaki C Kusko
Maria W Flosi
Leja C Darakjy
Stacey F Schemmer
Jefferson L Inouye
Emily O Saylors
Aika D Garufi
Tony T Poquette
Izzy K Chui
Stacey M Malet
Rodrigues F Butt
Chavez O Ruta
Costa Y Stenseth
Mayumi V Caudy
Darci M Nicka
Ricardo E Dilliard
Antonio G Doe
Julie F Nicka
Maria P Stockham
Greenwood Y Vocelka
Francesco I Rim
Leja O Darakjy
Aika F Rulapaugh
Aditya G Morasca
Tony V Oldroyd
Mujtaba H Whobrey
Wickens T Kolmetz
Arvin T Tollner
Wickens Z Morasca
Aika G Campain
Rodrigues P Royster
Francesco X Darakjy
Mayumi W Shinko
Tony F Inouye
Jeanfrancois F Gaucho
Emily M Tollner
Ashley U Caudy
Nicolas P Kusko
Nicolas A Saylors
Julie S Figeroa
Murillo E Gillian
Chavez X Malet
Kaitlin I Ruta
Nicolas J Chui
Salvatore F Amigon
Aruna H Butt
Kadeem J Garufi
IdCountryDate
1000Germany2024-04-30
1001Italy2024-04-22
1002Spain2024-04-19
1003Russia2024-04-30
1004Canada2024-04-11
1005Russia2024-04-02
1006India2024-04-12
1007Argentina2024-04-11
1008Brazil2024-04-14
1009India2024-05-01
1010Germany2024-04-19
1011United Kingdom2024-04-11
1012Canada2024-04-23
1013Japan2024-04-09
1014Brazil2024-04-05
1015France2024-04-13
1016Brazil2024-04-15
1017Canada2024-04-08
1018Argentina2024-04-15
1019Canada2024-05-01
1020Germany2024-04-18
1021Argentina2024-05-01
1022Japan2024-04-19
1023Canada2024-04-23
1024Italy2024-04-23
1025Brazil2024-04-17
1026Brazil2024-04-13
1027Italy2024-04-13
1028Australia2024-04-28
1029United Kingdom2024-04-16
1030Russia2024-04-27
1031Germany2024-04-29
1032India2024-04-20
1033Spain2024-04-13
1034United Kingdom2024-04-14
1035Germany2024-04-26
1036Brazil2024-04-29
1037India2024-04-13
1038Russia2024-04-26
1039Spain2024-04-23
1040Canada2024-04-19
1041Brazil2024-04-08
1042France2024-04-30
1043Japan2024-04-16
1044Japan2024-04-30
1045Brazil2024-04-19
1046India2024-04-03
1047Australia2024-04-20
1048Germany2024-04-07
1049Japan2024-04-27

On-Demand Data

NameIdCountryDate
Ashley L Caudy1000Australia2024-04-30
Salvatore B Sergi1001Australia2024-04-09
Wickens M Wieser1002Italy2024-04-06
Murillo X Briddick1003France2024-04-15
Alejandro X Royster1004India2024-04-26
Silvio C Darakjy1005Italy2024-04-10
Silvio R Shinko1006Russia2024-04-07
Smith Y Flosi1007Italy2024-04-11
Jones C Caudy1008Brazil2024-04-02
Tony O Rulapaugh1009Japan2024-04-24
Maisha R Bolognia1010Japan2024-04-12
Juan U Perin1011France2024-04-23
Murillo T Royster1012Italy2024-04-04
Ivar P Albares1013Japan2024-04-05
Mayumi G Shinko1014Australia2024-04-18
Jefferson S Vocelka1015Spain2024-04-21
Darci Y Campain1016Russia2024-04-10
Ricardo I Sergi1017Russia2024-04-26
Ashley J Rulapaugh1018Argentina2024-04-10
Francesco H Paprocki1019Germany2024-04-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna I AmigonBrazilOnyama Limba UNQUALIFIED
Alejandro L RoysterUnited KingdomStephen Shaw RENEWAL
Nicolas T MaletRussiaElwin Sharvill NEW
Rodrigues X ShinkoUnited KingdomXuxue Feng UNQUALIFIED
Tony Z SchemmerItalyElwin Sharvill UNQUALIFIED
Deepesh J InouyeIndiaXuxue Feng QUALIFIED
Deepesh O StensethJapanIvan Magalhaes NEW
Mayumi G SaylorsSpainBernardo Dominic PROPOSAL
Kaitlin F VenereCanadaIvan Magalhaes UNQUALIFIED
Emily T RimItalyAnna Fali PROPOSAL
Mujtaba T ChuiCanadaIoni Bowcher UNQUALIFIED
Smith P FollerAustraliaIvan Magalhaes RENEWAL
Aruna G AlbaresArgentinaIvan Magalhaes NEW
Kaitlin H OldroydJapanIvan Magalhaes NEGOTIATION
Claire D MaletBrazilIoni Bowcher NEW
Jennifer T GillianRussiaElwin Sharvill PROPOSAL
Costa C RimJapanElwin Sharvill NEGOTIATION
Salvatore B FigeroaBrazilAnna Fali QUALIFIED
Kadeem S StensethFranceStephen Shaw RENEWAL
Jefferson Q FigeroaSpainOnyama Limba UNQUALIFIED
Jeanfrancois U VocelkaJapanStephen Shaw UNQUALIFIED
Aruna V KolmetzFranceAsiya Javayant NEGOTIATION
Jones H WhobreyGermanyBernardo Dominic NEW
Mayumi N CampainArgentinaAmy Elsner QUALIFIED
Stacey X VocelkaGermanyXuxue Feng NEW
Aditya B GauchoUnited KingdomAsiya Javayant NEW
Aditya U IturbideCanadaAnna Fali QUALIFIED
Deepesh D StockhamAustraliaIvan Magalhaes NEGOTIATION
Deepesh V BologniaAustraliaXuxue Feng PROPOSAL
Jennifer Z PerinUnited KingdomAsiya Javayant NEGOTIATION
Darci J SergiBrazilAsiya Javayant NEGOTIATION
Adams V PoquetteJapanAnna Fali UNQUALIFIED
Stacey P PaprockiBrazilXuxue Feng PROPOSAL
Wickens S DarakjyArgentinaIoni Bowcher RENEWAL
Arvin Y DilliardGermanyOnyama Limba PROPOSAL
Leon L FigeroaGermanyBernardo Dominic NEW
Stacey V DoeGermanyIvan Magalhaes RENEWAL
David C WieserSpainStephen Shaw RENEWAL
Adams X BriddickArgentinaIoni Bowcher QUALIFIED
Maisha Q AlbaresRussiaOnyama Limba 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>