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
Ricardo Y OstroskySpainBernardo Dominic NEW
Greenwood K ChuiArgentinaIvan Magalhaes NEW
Jefferson B BriddickUnited KingdomAmy Elsner RENEWAL
Emily D InouyeSpainBernardo Dominic NEGOTIATION
Octavia K WieserFranceIvan Magalhaes QUALIFIED
Clifford O AmigonRussiaBernardo Dominic NEGOTIATION
Sinclair J NickaGermanyAnna Fali QUALIFIED
Leja Y InouyeArgentinaOnyama Limba QUALIFIED
Greenwood Y IturbideJapanBernardo Dominic QUALIFIED
Leja B CaudyJapanAmy Elsner NEGOTIATION
Leja U VocelkaFranceXuxue Feng UNQUALIFIED
Kaitlin V FerenczGermanyAnna Fali RENEWAL
Juan P SchemmerCanadaIoni Bowcher PROPOSAL
Aditya Z AlbaresFranceStephen Shaw PROPOSAL
Jones T NestleCanadaBernardo Dominic NEW
Johnson K BriddickUnited KingdomElwin Sharvill NEGOTIATION
Wickens T WhobreyFranceAnna Fali UNQUALIFIED
Salvatore X RoysterJapanStephen Shaw PROPOSAL
Johnson I IturbideGermanyXuxue Feng NEGOTIATION
Arvin M VenereJapanStephen Shaw RENEWAL
Juan H ButtUnited KingdomAnna Fali RENEWAL
Wickens U NestleItalyXuxue Feng NEGOTIATION
Maisha V CampainBrazilElwin Sharvill NEGOTIATION
Isabel M StensethSpainOnyama Limba RENEWAL
Francesco Q MaletRussiaElwin Sharvill UNQUALIFIED
Arvin K InouyeCanadaAsiya Javayant QUALIFIED
David D MorascaItalyXuxue Feng QUALIFIED
Mayumi T FlosiRussiaIoni Bowcher RENEWAL
Kadeem M NestleBrazilXuxue Feng UNQUALIFIED
Juan K DilliardSpainIvan Magalhaes RENEWAL
Johnson Y MorascaJapanOnyama Limba QUALIFIED
Greenwood D CaudyBrazilIvan Magalhaes NEGOTIATION
Leon B FlosiCanadaIoni Bowcher UNQUALIFIED
Costa R FollerGermanyAsiya Javayant QUALIFIED
Wickens H VenereAustraliaAnna Fali RENEWAL
Sinclair R AmigonItalyIvan Magalhaes RENEWAL
Mayumi J FerenczCanadaXuxue Feng NEGOTIATION
Antonio L RimAustraliaAsiya Javayant QUALIFIED
Jeanfrancois K AmigonFranceBernardo Dominic NEW
Izzy R AlbaresJapanAnna Fali QUALIFIED
Silvio M SchemmerBrazilAmy Elsner NEGOTIATION
Juan M VenereRussiaAnna Fali UNQUALIFIED
Stacey W OldroydRussiaAmy Elsner PROPOSAL
David Q DarakjyUnited KingdomIvan Magalhaes NEGOTIATION
Faith M SchemmerUnited KingdomElwin Sharvill NEGOTIATION
Munro L NickaFranceElwin Sharvill NEGOTIATION
Ivar Q AlbaresRussiaAnna Fali NEGOTIATION
Alejandro P FigeroaGermanyBernardo Dominic NEW
Cody W MaletJapanOnyama Limba PROPOSAL
Mujtaba A AmigonFranceAnna Fali NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Clifford X SergiSpainAmy Elsner RENEWAL
Munro Z RimItalyBernardo Dominic NEW
Kaitlin N CaudyUnited KingdomBernardo Dominic RENEWAL
Tony J GauchoSpainIoni Bowcher NEGOTIATION
Jones L FerenczRussiaIoni Bowcher NEGOTIATION
Adams L WieserGermanyStephen Shaw UNQUALIFIED
Julie J OldroydRussiaXuxue Feng QUALIFIED
Kaitlin K KuskoSpainXuxue Feng RENEWAL
Cody G StensethRussiaBernardo Dominic QUALIFIED
Morrow L AlbaresBrazilBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio V BriddickGermany2024-03-26Buckley Miller Wright NEGOTIATION46Elwin Sharvill
1001Wickens M MaletArgentina2024-04-16Rousseaux, Michael Esq UNQUALIFIED46Anna Fali
1002Mujtaba Z MorascaArgentina2024-04-01Chanay, Jeffrey A Esq RENEWAL7Ioni Bowcher
1003Johnson C StensethGermany2024-04-24Rousseaux, Michael Esq RENEWAL74Ioni Bowcher
1004Jennifer A MaletIndia2024-03-31Morlong Associates RENEWAL61Ivan Magalhaes
1005Jefferson L SchemmerJapan2024-04-09Buckley Miller Wright PROPOSAL60Amy Elsner
1006Aruna Q IturbideRussia2024-03-27Dorl, James J Esq PROPOSAL27Onyama Limba
1007Jones D SergiBrazil2024-04-23Rangoni Of Florence PROPOSAL78Elwin Sharvill
1008Sinclair V FerenczItaly2024-03-26Feltz Printing Service NEGOTIATION22Ivan Magalhaes
1009Ricardo S NestleGermany2024-04-05Printing Dimensions NEW46Stephen Shaw
1010Mujtaba H WaycottSpain2024-04-21Printing Dimensions RENEWAL67Anna Fali
1011Alejandro O FerenczJapan2024-04-12Truhlar And Truhlar Attys QUALIFIED84Bernardo Dominic
1012Aruna V IturbideSpain2024-04-06Feiner Bros NEGOTIATION76Onyama Limba
1013Jefferson X ChuiFrance2024-04-13King, Christopher A Esq NEW77Asiya Javayant
1014Stacey L RimAustralia2024-04-12Chemel, James L Cpa NEW21Ivan Magalhaes
1015Maisha V BowleyArgentina2024-04-19Commercial Press PROPOSAL39Ioni Bowcher
1016Isabel T FigeroaGermany2024-04-14Commercial Press RENEWAL89Ivan Magalhaes
1017Jennifer W RimCanada2024-04-07Dorl, James J Esq PROPOSAL83Ioni Bowcher
1018Adams I MacleadFrance2024-04-23Chemel, James L Cpa RENEWAL73Ioni Bowcher
1019Maisha I NickaRussia2024-04-06Chapman, Ross E Esq QUALIFIED26Anna Fali
1020Nicolas U OldroydBrazil2024-04-09Chanay, Jeffrey A Esq NEW53Amy Elsner
1021Leja V WhobreyUnited Kingdom2024-03-29Morlong Associates QUALIFIED48Xuxue Feng
1022Alejandro A IturbideAustralia2024-04-24Commercial Press NEW24Amy Elsner
1023Maisha E GauchoFrance2024-04-13Chanay, Jeffrey A Esq QUALIFIED32Xuxue Feng
1024James Q SaylorsFrance2024-04-19Benton, John B Jr UNQUALIFIED80Xuxue Feng
1025Munro S NickaItaly2024-04-21Chapman, Ross E Esq NEW34Ivan Magalhaes
1026Cody E CaldareraIndia2024-03-26Feltz Printing Service PROPOSAL0Onyama Limba
1027Francesco O PaprockiArgentina2024-04-09Chemel, James L Cpa QUALIFIED12Ivan Magalhaes
1028Antonio F CampainRussia2024-04-10Truhlar And Truhlar Attys QUALIFIED62Asiya Javayant
1029Darci S FlosiSpain2024-03-27Feiner Bros RENEWAL42Amy Elsner
1030Deepesh X SaylorsItaly2024-04-15Chapman, Ross E Esq NEGOTIATION7Asiya Javayant
1031Mayumi E RulapaughJapan2024-04-08Buckley Miller Wright NEW62Xuxue Feng
1032Ashley E StockhamFrance2024-04-20King, Christopher A Esq QUALIFIED30Onyama Limba
1033Silvio C ShinkoGermany2024-04-20Truhlar And Truhlar Attys QUALIFIED19Ivan Magalhaes
1034Claire J OldroydJapan2024-04-05Feiner Bros PROPOSAL59Elwin Sharvill
1035David E SergiBrazil2024-04-06King, Christopher A Esq RENEWAL70Anna Fali
1036Aditya T CampainIndia2024-04-16Feiner Bros QUALIFIED43Xuxue Feng
1037Julie G MaletIndia2024-04-09Chemel, James L Cpa NEW28Ivan Magalhaes
1038Misaki K IturbideCanada2024-04-23Feltz Printing Service NEW94Xuxue Feng
1039Sinclair J MaletRussia2024-03-28Benton, John B Jr UNQUALIFIED64Anna Fali
1040Clifford V RoysterAustralia2024-04-24Chapman, Ross E Esq NEW15Onyama Limba
1041Salvatore Y GlickAustralia2024-04-01Morlong Associates PROPOSAL62Ivan Magalhaes
1042Jones M SlusarskiGermany2024-04-11Benton, John B Jr NEW17Onyama Limba
1043Jones L RoysterIndia2024-04-02Rangoni Of Florence NEGOTIATION88Elwin Sharvill
1044Greenwood O PoquetteIndia2024-04-23Truhlar And Truhlar Attys QUALIFIED25Amy Elsner
1045Aika W ShinkoItaly2024-04-23Printing Dimensions PROPOSAL24Onyama Limba
1046Greenwood K SaylorsJapan2024-03-30Commercial Press NEGOTIATION77Asiya Javayant
1047Johnson S BologniaFrance2024-03-26Rousseaux, Michael Esq RENEWAL11Ivan Magalhaes
1048Ivar V FollerBrazil2024-04-07Commercial Press UNQUALIFIED77Onyama Limba
1049Faith R SergiJapan2024-04-07Rangoni Of Florence UNQUALIFIED70Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Sinclair K GlickCanadaIvan Magalhaes PROPOSAL
Clifford A IturbideFranceOnyama Limba PROPOSAL
Emily A DoeRussiaAsiya Javayant NEGOTIATION
Ashley R SchemmerFranceIvan Magalhaes UNQUALIFIED
Stacey H MorascaFranceIoni Bowcher PROPOSAL
Darci K DoeSpainXuxue Feng NEW
Antonio Z BologniaItalyElwin Sharvill NEGOTIATION
Sinclair F GillianFranceOnyama Limba PROPOSAL
Cody N AlbaresRussiaIoni Bowcher NEGOTIATION
Tony V BowleyGermanyBernardo Dominic NEGOTIATION
Izzy Q KuskoJapanXuxue Feng RENEWAL
Adams P GauchoAustraliaOnyama Limba UNQUALIFIED
Stacey N GauchoGermanyAmy Elsner QUALIFIED
Francesco L GillianCanadaIvan Magalhaes NEW
Smith J FlosiItalyStephen Shaw NEW
Jefferson G FlosiFranceIoni Bowcher UNQUALIFIED
Jeanfrancois I MaletArgentinaAsiya Javayant UNQUALIFIED
James B GauchoJapanAnna Fali PROPOSAL
Clifford N OldroydAustraliaXuxue Feng UNQUALIFIED
Mujtaba O FigeroaAustraliaXuxue Feng PROPOSAL
Julie Q FollerSpainBernardo Dominic NEGOTIATION
Mujtaba Y FerenczIndiaXuxue Feng UNQUALIFIED
Jefferson U WaycottIndiaElwin Sharvill NEW
Johnson V NickaBrazilAnna Fali NEW
Wickens F SergiSpainBernardo Dominic UNQUALIFIED
Leja E CampainSpainIvan Magalhaes UNQUALIFIED
Nicolas Q OstroskyJapanIoni Bowcher PROPOSAL
Murillo R KolmetzUnited KingdomElwin Sharvill RENEWAL
Salvatore T SchemmerAustraliaStephen Shaw QUALIFIED
Murillo I IturbideCanadaXuxue Feng NEW
Stacey Z NestleArgentinaIvan Magalhaes RENEWAL
Alejandro A RoysterRussiaAsiya Javayant PROPOSAL
Maisha S VenereIndiaXuxue Feng RENEWAL
Emily Z DoeJapanOnyama Limba PROPOSAL
Leon L CampainItalyStephen Shaw RENEWAL
Wickens G FerenczUnited KingdomAnna Fali RENEWAL
Izzy Y StensethRussiaIoni Bowcher NEW
Stacey M OldroydArgentinaStephen Shaw QUALIFIED
Claire I BriddickAustraliaBernardo Dominic NEGOTIATION
Salvatore N DilliardJapanXuxue Feng NEW
Leja B RutaSpainAsiya Javayant UNQUALIFIED
Francesco Z RoysterItalyBernardo Dominic UNQUALIFIED
Johnson J AlbaresBrazilBernardo Dominic PROPOSAL
Ivar W KuskoItalyIoni Bowcher UNQUALIFIED
Kaitlin B OldroydFranceBernardo Dominic NEGOTIATION
Nicolas B ButtGermanyIoni Bowcher PROPOSAL
Maria N MaletArgentinaAsiya Javayant NEGOTIATION
Leon X KuskoRussiaStephen Shaw PROPOSAL
Chavez F BowleyRussiaAnna Fali UNQUALIFIED
Ivar C ChuiAustraliaIvan Magalhaes PROPOSAL
Frozen Columns
Name
Maisha K Chui
Adams T Royster
Cody C Slusarski
Tony K Perin
Stacey H Ostrosky
Julie D Gillian
Kaitlin Q Glick
Francesco K Shinko
Ashley N Amigon
Murillo Z Stenseth
Maria U Schemmer
Adams P Whobrey
Smith X Foller
David H Royster
Chavez G Venere
Kadeem S Kolmetz
Antonio Q Bowley
Darci Y Inouye
Mujtaba R Nestle
Murillo U Flosi
Smith Q Doe
Costa P Garufi
Mujtaba U Bowley
Juan N Flosi
Kaitlin O Iturbide
Jefferson I Darakjy
Arvin C Dilliard
Johnson Z Campain
Octavia A Kusko
Jefferson P Waycott
Mayumi F Royster
Octavia Y Oldroyd
Aika M Saylors
Aditya O Glick
Izzy X Darakjy
Maria Q Foller
Johnson N Rulapaugh
Juan C Kusko
Alejandro S Rulapaugh
Faith S Shinko
Darci P Venere
Smith N Schemmer
Morrow W Kusko
Greenwood Q Dilliard
Murillo I Tollner
Claire Y Rim
Deepesh C Royster
Alejandro X Maclead
Emily V Garufi
Wickens T Doe
IdCountryDate
1000Australia2024-04-10
1001Australia2024-03-26
1002Canada2024-04-02
1003Russia2024-04-04
1004India2024-04-12
1005France2024-03-28
1006Italy2024-04-15
1007Russia2024-04-21
1008Italy2024-04-07
1009Brazil2024-04-15
1010Japan2024-04-03
1011Australia2024-04-11
1012France2024-03-26
1013Canada2024-04-09
1014Argentina2024-04-09
1015Argentina2024-04-02
1016Brazil2024-04-18
1017United Kingdom2024-04-08
1018Canada2024-04-12
1019Japan2024-04-08
1020Canada2024-04-01
1021Italy2024-04-08
1022Spain2024-04-04
1023Italy2024-04-20
1024Canada2024-04-24
1025Spain2024-04-23
1026France2024-04-11
1027India2024-04-01
1028Brazil2024-04-06
1029Spain2024-03-28
1030Japan2024-04-09
1031France2024-03-28
1032Argentina2024-04-20
1033Japan2024-04-10
1034Russia2024-03-28
1035India2024-04-07
1036Russia2024-04-03
1037Russia2024-04-08
1038France2024-04-13
1039Russia2024-04-24
1040Brazil2024-04-16
1041Canada2024-03-26
1042Canada2024-04-15
1043Brazil2024-03-27
1044Russia2024-04-12
1045Russia2024-03-27
1046Australia2024-04-09
1047United Kingdom2024-04-18
1048India2024-04-07
1049Japan2024-04-03

On-Demand Data

NameIdCountryDate
Rodrigues K Bowley1000Argentina2024-04-10
Chavez P Malet1001Argentina2024-04-14
Leon M Waycott1002Russia2024-04-19
Darci J Rim1003Italy2024-04-04
Juan A Kusko1004Japan2024-04-16
Isabel W Kolmetz1005Japan2024-04-11
Kaitlin F Saylors1006France2024-03-26
Wickens M Bowley1007Russia2024-04-21
Johnson A Poquette1008United Kingdom2024-04-17
Wickens L Caldarera1009Brazil2024-03-27
Cody Z Poquette1010India2024-03-27
Ricardo W Bowley1011Argentina2024-04-10
Salvatore D Vocelka1012Brazil2024-03-29
Salvatore W Oldroyd1013India2024-04-05
Johnson V Ferencz1014Spain2024-04-10
Antonio P Bolognia1015Japan2024-04-01
Alejandro P Doe1016Japan2024-04-17
Munro C Saylors1017Canada2024-04-23
Wickens H Nestle1018Russia2024-04-09
Munro G Saylors1019France2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony Z WaycottFranceOnyama Limba UNQUALIFIED
Tony T WhobreyUnited KingdomIoni Bowcher NEW
Murillo H FigeroaSpainStephen Shaw PROPOSAL
Clifford T CampainCanadaBernardo Dominic QUALIFIED
Chavez V BologniaJapanAnna Fali NEGOTIATION
Kaitlin T FlosiAustraliaOnyama Limba NEGOTIATION
Mujtaba R OldroydRussiaStephen Shaw UNQUALIFIED
Darci C SaylorsFranceElwin Sharvill NEGOTIATION
Kadeem O SlusarskiAustraliaBernardo Dominic UNQUALIFIED
Smith C ButtFranceIvan Magalhaes NEW
Octavia Z FerenczBrazilOnyama Limba NEW
Cody Q MaletIndiaIoni Bowcher NEW
Adams P AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Octavia A PoquetteCanadaIoni Bowcher UNQUALIFIED
Nicolas A ShinkoItalyStephen Shaw NEGOTIATION
Claire B ShinkoSpainAmy Elsner QUALIFIED
Jefferson Q IturbideAustraliaAnna Fali PROPOSAL
Jones Y GauchoBrazilAsiya Javayant PROPOSAL
Juan T RoysterJapanOnyama Limba NEW
Chavez I SlusarskiGermanyXuxue Feng NEW
Mujtaba B BriddickCanadaIvan Magalhaes NEGOTIATION
Izzy Q GarufiBrazilStephen Shaw QUALIFIED
Aika P WhobreyAustraliaAmy Elsner RENEWAL
Munro Z CaldareraBrazilOnyama Limba QUALIFIED
Sinclair C OstroskyJapanElwin Sharvill NEGOTIATION
Aika G ShinkoJapanAsiya Javayant NEW
Ashley N StensethGermanyIoni Bowcher UNQUALIFIED
Maria H PaprockiIndiaIvan Magalhaes UNQUALIFIED
Rodrigues W CaudyCanadaXuxue Feng NEGOTIATION
David B TollnerAustraliaIvan Magalhaes NEGOTIATION
Murillo L MacleadBrazilElwin Sharvill RENEWAL
Johnson M GillianFranceElwin Sharvill QUALIFIED
Jennifer N DoeArgentinaIoni Bowcher NEGOTIATION
Costa X KolmetzGermanyBernardo Dominic UNQUALIFIED
Costa V FigeroaIndiaAsiya Javayant NEW
Claire W StensethArgentinaOnyama Limba PROPOSAL
Tony L ChuiArgentinaIvan Magalhaes RENEWAL
Antonio O RulapaughCanadaAsiya Javayant NEGOTIATION
Arvin K SaylorsCanadaOnyama Limba PROPOSAL
Aruna T MaletJapanAmy Elsner 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>