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
Isabel B WieserRussiaBernardo Dominic NEW
Salvatore C ChuiFranceAmy Elsner QUALIFIED
Smith Y IturbideGermanyOnyama Limba UNQUALIFIED
Aruna V DoeFranceIvan Magalhaes NEW
Adams G ChuiAustraliaBernardo Dominic QUALIFIED
Claire B CaudyFranceAnna Fali UNQUALIFIED
Jones D PoquetteJapanOnyama Limba QUALIFIED
Smith G OstroskyGermanyAsiya Javayant NEGOTIATION
Misaki W FollerArgentinaAnna Fali RENEWAL
Claire F FerenczAustraliaIvan Magalhaes QUALIFIED
Ashley W DoeGermanyIoni Bowcher UNQUALIFIED
David W StockhamItalyOnyama Limba QUALIFIED
Clifford L SaylorsItalyBernardo Dominic PROPOSAL
Julie C GarufiCanadaXuxue Feng PROPOSAL
Sinclair V WaycottFranceIvan Magalhaes PROPOSAL
Costa L MacleadIndiaBernardo Dominic NEW
Maria Z RoysterRussiaStephen Shaw NEGOTIATION
Izzy K OstroskyIndiaIvan Magalhaes NEGOTIATION
Jennifer T VocelkaFranceXuxue Feng NEW
Aika G GillianAustraliaStephen Shaw NEW
Darci S BologniaSpainStephen Shaw PROPOSAL
Aika N AmigonAustraliaBernardo Dominic NEW
Maria T RulapaughFranceAnna Fali NEW
Silvio M CaudyRussiaBernardo Dominic RENEWAL
Ivar X FollerJapanIvan Magalhaes RENEWAL
Tony O ButtAustraliaOnyama Limba NEW
Nicolas Q KuskoArgentinaIvan Magalhaes NEGOTIATION
Mayumi H AmigonGermanyAnna Fali NEW
Faith Z CaudyArgentinaIoni Bowcher NEGOTIATION
Clifford X MaletCanadaAsiya Javayant NEW
David Q GlickRussiaElwin Sharvill RENEWAL
Ricardo G SchemmerCanadaStephen Shaw RENEWAL
Murillo G KuskoRussiaBernardo Dominic PROPOSAL
Maria F AlbaresFranceAnna Fali NEGOTIATION
Kadeem O NickaGermanyBernardo Dominic PROPOSAL
Rodrigues N StensethCanadaAsiya Javayant RENEWAL
Jennifer A SaylorsSpainIvan Magalhaes QUALIFIED
Aditya G FollerFranceAsiya Javayant PROPOSAL
Misaki Q DoeAustraliaIvan Magalhaes NEW
Izzy T GillianJapanElwin Sharvill UNQUALIFIED
Nicolas A CampainRussiaElwin Sharvill NEGOTIATION
Misaki V FigeroaFranceElwin Sharvill RENEWAL
Mujtaba A KuskoSpainAmy Elsner PROPOSAL
Jones S PoquetteRussiaXuxue Feng NEW
Jeanfrancois B SchemmerFranceBernardo Dominic QUALIFIED
Munro I TollnerAustraliaBernardo Dominic QUALIFIED
Cody M FollerGermanyElwin Sharvill UNQUALIFIED
Kaitlin C SlusarskiBrazilElwin Sharvill UNQUALIFIED
Salvatore J ShinkoArgentinaBernardo Dominic QUALIFIED
Kaitlin D FigeroaSpainIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Mayumi E WieserCanadaXuxue Feng NEGOTIATION
Misaki K BologniaCanadaElwin Sharvill UNQUALIFIED
Kadeem H CaudyJapanAmy Elsner QUALIFIED
Emily M StockhamJapanAnna Fali PROPOSAL
Jennifer G WieserItalyOnyama Limba NEW
David L IturbideGermanyBernardo Dominic RENEWAL
Kadeem G VenereCanadaXuxue Feng QUALIFIED
Smith L VenereIndiaOnyama Limba NEW
Alejandro K IturbideArgentinaIvan Magalhaes UNQUALIFIED
Mayumi I GlickIndiaAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna W WieserIndia2024-04-01Chapman, Ross E Esq NEW21Amy Elsner
1001Leon H WaycottFrance2024-04-16Truhlar And Truhlar Attys PROPOSAL54Anna Fali
1002Smith I VenereItaly2024-04-04Feiner Bros RENEWAL99Asiya Javayant
1003Cody I PerinUnited Kingdom2024-03-31Rangoni Of Florence QUALIFIED78Asiya Javayant
1004Mayumi E MarrierItaly2024-04-22Buckley Miller Wright NEGOTIATION77Xuxue Feng
1005Francesco H BologniaUnited Kingdom2024-04-02Chanay, Jeffrey A Esq NEW63Bernardo Dominic
1006Mayumi G ShinkoIndia2024-04-11Truhlar And Truhlar Attys UNQUALIFIED62Bernardo Dominic
1007Leja G PerinRussia2024-04-24Feiner Bros QUALIFIED50Anna Fali
1008Adams B AmigonCanada2024-04-09Buckley Miller Wright NEW82Onyama Limba
1009Ashley G RutaCanada2024-04-16Buckley Miller Wright NEW6Onyama Limba
1010Sinclair Q NickaJapan2024-04-10Buckley Miller Wright QUALIFIED43Stephen Shaw
1011Emily G VenereSpain2024-04-15Chapman, Ross E Esq RENEWAL82Ivan Magalhaes
1012Julie H FollerFrance2024-04-17Chapman, Ross E Esq PROPOSAL66Ioni Bowcher
1013Adams M FlosiItaly2024-04-24Chapman, Ross E Esq NEGOTIATION62Stephen Shaw
1014Arvin G GauchoFrance2024-04-02Rousseaux, Michael Esq PROPOSAL55Onyama Limba
1015Julie Q RutaUnited Kingdom2024-04-06Buckley Miller Wright NEGOTIATION43Anna Fali
1016Maisha T MaletFrance2024-04-16Chanay, Jeffrey A Esq UNQUALIFIED82Amy Elsner
1017Aruna Q MorascaBrazil2024-04-16Commercial Press RENEWAL36Xuxue Feng
1018Munro E BologniaGermany2024-04-18Rangoni Of Florence NEW49Ivan Magalhaes
1019Jefferson M SaylorsArgentina2024-04-14Feiner Bros UNQUALIFIED16Bernardo Dominic
1020David V StockhamFrance2024-04-10Chanay, Jeffrey A Esq UNQUALIFIED82Amy Elsner
1021Stacey K PaprockiBrazil2024-04-08Printing Dimensions NEW87Ioni Bowcher
1022Greenwood M FollerSpain2024-04-21Rousseaux, Michael Esq PROPOSAL72Ioni Bowcher
1023Leja J CaudyFrance2024-04-14Commercial Press PROPOSAL34Elwin Sharvill
1024Antonio C SchemmerIndia2024-04-05Printing Dimensions RENEWAL30Asiya Javayant
1025Salvatore Q DilliardFrance2024-04-14Commercial Press RENEWAL46Bernardo Dominic
1026Sinclair B SlusarskiBrazil2024-04-01Chanay, Jeffrey A Esq QUALIFIED93Anna Fali
1027Smith H RimSpain2024-04-21Printing Dimensions NEGOTIATION4Anna Fali
1028Mayumi K KuskoCanada2024-04-21King, Christopher A Esq NEGOTIATION86Stephen Shaw
1029Leja Q FollerGermany2024-04-21Chapman, Ross E Esq PROPOSAL2Ioni Bowcher
1030Nicolas P NestleUnited Kingdom2024-03-31King, Christopher A Esq QUALIFIED69Onyama Limba
1031Smith P MaletItaly2024-04-12Dorl, James J Esq NEW52Amy Elsner
1032Ashley S AlbaresRussia2024-04-19King, Christopher A Esq NEGOTIATION37Stephen Shaw
1033Mayumi C MarrierGermany2024-03-31Feltz Printing Service NEGOTIATION50Amy Elsner
1034Chavez J FerenczIndia2024-04-08Chapman, Ross E Esq RENEWAL64Amy Elsner
1035Ashley S OldroydFrance2024-04-26Chanay, Jeffrey A Esq NEW25Xuxue Feng
1036Aruna Y SergiCanada2024-03-31Benton, John B Jr PROPOSAL19Asiya Javayant
1037Greenwood T MarrierIndia2024-04-26Truhlar And Truhlar Attys NEGOTIATION52Onyama Limba
1038Deepesh I ButtArgentina2024-03-31Feltz Printing Service QUALIFIED79Ioni Bowcher
1039Aika G DarakjyUnited Kingdom2024-04-17Rousseaux, Michael Esq NEW8Ioni Bowcher
1040Antonio J RulapaughSpain2024-04-14Dorl, James J Esq QUALIFIED38Elwin Sharvill
1041Leja E CampainRussia2024-04-03King, Christopher A Esq NEGOTIATION5Anna Fali
1042Rodrigues A StockhamSpain2024-04-09Chemel, James L Cpa RENEWAL0Elwin Sharvill
1043Tony L MaletIndia2024-04-08Chapman, Ross E Esq RENEWAL18Asiya Javayant
1044Jones P MacleadIndia2024-04-09Dorl, James J Esq QUALIFIED28Asiya Javayant
1045Sinclair W KuskoIndia2024-04-14Chapman, Ross E Esq UNQUALIFIED80Amy Elsner
1046Emily P BowleyItaly2024-04-18Buckley Miller Wright RENEWAL7Elwin Sharvill
1047Wickens Q GarufiJapan2024-04-12Dorl, James J Esq UNQUALIFIED43Xuxue Feng
1048Francesco Y GillianJapan2024-04-14Chanay, Jeffrey A Esq QUALIFIED9Bernardo Dominic
1049Clifford E GarufiItaly2024-04-05Commercial Press QUALIFIED94Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Nicolas J FigeroaCanadaIoni Bowcher RENEWAL
Chavez V SergiCanadaOnyama Limba PROPOSAL
Adams W AlbaresIndiaElwin Sharvill NEW
Arvin H RimArgentinaXuxue Feng QUALIFIED
Aruna Q CaldareraArgentinaStephen Shaw NEGOTIATION
Darci Q DarakjyUnited KingdomXuxue Feng PROPOSAL
Mujtaba E PerinFranceAmy Elsner RENEWAL
Julie Z RoysterGermanyIoni Bowcher NEGOTIATION
Smith N DilliardCanadaElwin Sharvill UNQUALIFIED
Cody U SaylorsArgentinaXuxue Feng QUALIFIED
Kadeem X FigeroaBrazilXuxue Feng QUALIFIED
Deepesh Q TollnerItalyIvan Magalhaes RENEWAL
Nicolas A TollnerIndiaIvan Magalhaes PROPOSAL
Misaki J DarakjyRussiaIvan Magalhaes QUALIFIED
Leja Q RoysterCanadaAnna Fali QUALIFIED
Nicolas V GlickFranceIoni Bowcher PROPOSAL
Maria P FigeroaAustraliaIoni Bowcher UNQUALIFIED
Jennifer W StockhamBrazilXuxue Feng UNQUALIFIED
Aditya I SlusarskiFranceElwin Sharvill NEGOTIATION
Isabel C StockhamGermanyOnyama Limba UNQUALIFIED
Aditya D CampainSpainAsiya Javayant PROPOSAL
Arvin G DarakjyIndiaElwin Sharvill NEW
Nicolas R RoysterUnited KingdomAsiya Javayant RENEWAL
Costa B MaletItalyIvan Magalhaes PROPOSAL
Aditya I SchemmerFranceIvan Magalhaes NEGOTIATION
Emily P RutaCanadaAmy Elsner UNQUALIFIED
Sinclair S IturbideItalyBernardo Dominic PROPOSAL
Claire R GillianJapanElwin Sharvill RENEWAL
Ricardo B VenereUnited KingdomIvan Magalhaes NEGOTIATION
Wickens I BowleyBrazilStephen Shaw NEGOTIATION
Murillo T ChuiRussiaElwin Sharvill NEW
Aruna J MaletBrazilElwin Sharvill NEW
Ivar A CaudyItalyStephen Shaw UNQUALIFIED
Emily H SergiAustraliaStephen Shaw NEGOTIATION
Johnson S MaletArgentinaStephen Shaw NEW
Wickens B DarakjyRussiaAnna Fali NEW
Faith A AmigonAustraliaAsiya Javayant UNQUALIFIED
Clifford A OstroskyIndiaStephen Shaw QUALIFIED
Alejandro L NickaBrazilStephen Shaw NEGOTIATION
Johnson J SchemmerSpainOnyama Limba PROPOSAL
Maria E DarakjyGermanyElwin Sharvill PROPOSAL
Salvatore R WieserSpainAsiya Javayant QUALIFIED
Costa Q SchemmerBrazilBernardo Dominic PROPOSAL
Jeanfrancois T CaudyItalyOnyama Limba QUALIFIED
Julie B RoysterJapanXuxue Feng QUALIFIED
Murillo C VocelkaBrazilAsiya Javayant RENEWAL
Leon A BologniaBrazilBernardo Dominic NEGOTIATION
Maisha R SlusarskiIndiaElwin Sharvill NEGOTIATION
Mujtaba L AlbaresSpainElwin Sharvill NEGOTIATION
Salvatore U GarufiIndiaBernardo Dominic QUALIFIED
Frozen Columns
Name
Johnson U Ferencz
Maria L Briddick
Jennifer B Marrier
Leja C Rim
Munro E Caudy
Octavia S Shinko
Johnson U Stenseth
Claire J Flosi
Wickens E Royster
Juan H Schemmer
Smith E Sergi
Aditya V Oldroyd
Ricardo U Malet
Murillo Z Nestle
Leja X Paprocki
Sinclair X Slusarski
Stacey M Foller
Stacey Z Bolognia
Jones Y Gaucho
Izzy X Perin
Aika I Campain
Murillo P Whobrey
Deepesh M Ostrosky
Isabel J Gillian
Jefferson C Caudy
Emily Y Caudy
Rodrigues V Chui
Ricardo P Foller
Jefferson K Nicka
Leon Z Garufi
Wickens L Briddick
Mujtaba C Foller
Aditya A Bolognia
Adams D Saylors
Emily B Waycott
James F Doe
Francesco V Glick
Ivar W Ferencz
Ivar K Albares
Maria I Perin
Octavia U Nestle
Jones F Glick
Greenwood Z Stockham
Darci H Malet
Wickens R Garufi
Mayumi U Maclead
Leja U Oldroyd
Leja D Maclead
Jennifer T Marrier
Isabel R Figeroa
IdCountryDate
1000Russia2024-04-15
1001United Kingdom2024-04-25
1002Japan2024-04-11
1003United Kingdom2024-03-29
1004United Kingdom2024-04-27
1005Italy2024-04-06
1006Brazil2024-04-05
1007India2024-04-06
1008Canada2024-03-29
1009Canada2024-04-02
1010United Kingdom2024-04-11
1011Argentina2024-03-29
1012Argentina2024-04-20
1013Argentina2024-04-14
1014Canada2024-04-24
1015Argentina2024-04-26
1016Italy2024-04-11
1017Spain2024-04-08
1018United Kingdom2024-04-23
1019Canada2024-04-06
1020Russia2024-04-11
1021Canada2024-04-02
1022Germany2024-04-05
1023United Kingdom2024-04-03
1024India2024-04-18
1025United Kingdom2024-04-26
1026Italy2024-04-06
1027United Kingdom2024-04-09
1028Japan2024-04-03
1029Canada2024-04-03
1030Argentina2024-04-17
1031Japan2024-04-15
1032Spain2024-04-08
1033Russia2024-03-31
1034Spain2024-04-03
1035India2024-04-26
1036Spain2024-03-30
1037India2024-04-20
1038Argentina2024-04-11
1039Germany2024-04-05
1040Germany2024-04-22
1041France2024-03-29
1042Canada2024-04-05
1043Italy2024-04-04
1044Germany2024-04-08
1045France2024-04-15
1046Spain2024-04-19
1047Australia2024-04-22
1048Italy2024-04-18
1049Brazil2024-04-14

On-Demand Data

NameIdCountryDate
Murillo C Poquette1000Spain2024-04-03
James E Gillian1001Japan2024-04-26
Darci V Maclead1002France2024-03-31
Johnson T Ferencz1003Spain2024-04-14
Sinclair X Oldroyd1004Japan2024-04-09
Deepesh C Ruta1005Germany2024-04-03
Emily Q Whobrey1006United Kingdom2024-04-14
Claire F Malet1007Russia2024-04-18
Ashley B Inouye1008Brazil2024-04-03
David K Chui1009Australia2024-04-23
Costa U Waycott1010Canada2024-04-03
Jeanfrancois Q Campain1011Italy2024-04-03
Misaki V Sergi1012Russia2024-04-23
Jeanfrancois K Kolmetz1013Spain2024-04-16
Kadeem M Tollner1014Japan2024-04-22
Jefferson A Slusarski1015Russia2024-04-25
Misaki P Campain1016Japan2024-04-01
Izzy Q Sergi1017Russia2024-04-12
Jones V Rim1018India2024-04-01
Greenwood Q Iturbide1019Russia2024-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo H SaylorsGermanyElwin Sharvill PROPOSAL
Adams V ChuiRussiaStephen Shaw UNQUALIFIED
Octavia U MaletRussiaStephen Shaw NEW
David R SergiItalyElwin Sharvill QUALIFIED
Aditya D WhobreyRussiaXuxue Feng NEW
Julie O ButtSpainAnna Fali NEW
Octavia T GarufiSpainAnna Fali UNQUALIFIED
Octavia O MarrierFranceIvan Magalhaes RENEWAL
Antonio C ButtBrazilIoni Bowcher NEGOTIATION
Deepesh D GauchoUnited KingdomXuxue Feng PROPOSAL
Faith W ChuiRussiaIvan Magalhaes QUALIFIED
Costa T PerinSpainIoni Bowcher QUALIFIED
Emily R SaylorsAustraliaXuxue Feng NEGOTIATION
Adams P OstroskyBrazilXuxue Feng RENEWAL
Francesco N CampainSpainBernardo Dominic NEGOTIATION
Ivar E RutaRussiaXuxue Feng UNQUALIFIED
Julie J NestleUnited KingdomElwin Sharvill RENEWAL
Francesco B VenereFranceIoni Bowcher QUALIFIED
Ashley R GlickCanadaXuxue Feng NEW
Johnson Q TollnerCanadaOnyama Limba NEW
Smith F MacleadFranceBernardo Dominic NEW
Sinclair R RulapaughAustraliaIoni Bowcher PROPOSAL
Morrow O RoysterBrazilOnyama Limba RENEWAL
Kaitlin R CampainRussiaAmy Elsner NEW
Stacey S PoquetteFranceStephen Shaw PROPOSAL
Sinclair G ChuiCanadaAsiya Javayant QUALIFIED
Greenwood B RimGermanyBernardo Dominic UNQUALIFIED
Nicolas C KolmetzRussiaAnna Fali RENEWAL
Alejandro Q VocelkaItalyStephen Shaw UNQUALIFIED
Morrow A ChuiSpainOnyama Limba NEGOTIATION
Johnson O WhobreyGermanyAsiya Javayant UNQUALIFIED
Morrow W PaprockiItalyElwin Sharvill RENEWAL
Emily Y RutaSpainOnyama Limba NEGOTIATION
Nicolas O NestleItalyIvan Magalhaes NEW
Wickens A MaletGermanyOnyama Limba QUALIFIED
Ashley X WhobreySpainOnyama Limba UNQUALIFIED
Aditya P CampainGermanyStephen Shaw UNQUALIFIED
Jones N WieserItalyStephen Shaw PROPOSAL
Chavez W WieserFranceIoni Bowcher NEW
Octavia H FerenczAustraliaIvan Magalhaes 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>