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
Jones U GarufiFranceOnyama Limba UNQUALIFIED
Morrow U PerinUnited KingdomAnna Fali NEGOTIATION
Cody Z PaprockiCanadaAmy Elsner UNQUALIFIED
Faith N OstroskyJapanXuxue Feng NEW
Octavia T GlickItalyIvan Magalhaes UNQUALIFIED
James C StockhamRussiaOnyama Limba NEGOTIATION
Nicolas U GillianGermanyElwin Sharvill NEGOTIATION
Leja P MaletRussiaAmy Elsner PROPOSAL
Maria J WaycottArgentinaAnna Fali RENEWAL
Arvin D SaylorsUnited KingdomElwin Sharvill PROPOSAL
Munro A PoquetteJapanElwin Sharvill UNQUALIFIED
Nicolas X WieserBrazilAnna Fali NEW
Wickens O SlusarskiJapanElwin Sharvill RENEWAL
Alejandro M NickaFranceStephen Shaw RENEWAL
David P CampainUnited KingdomStephen Shaw NEW
Wickens Y FollerCanadaStephen Shaw NEGOTIATION
Juan O StockhamJapanAmy Elsner PROPOSAL
Faith S CaudyBrazilAnna Fali NEGOTIATION
Mujtaba T AlbaresJapanBernardo Dominic RENEWAL
Rodrigues S ChuiCanadaAmy Elsner UNQUALIFIED
Kadeem X AlbaresItalyElwin Sharvill RENEWAL
Clifford X MorascaIndiaIvan Magalhaes RENEWAL
Aditya K MaletCanadaIoni Bowcher NEGOTIATION
Arvin H BriddickGermanyIvan Magalhaes UNQUALIFIED
Aika W RoysterCanadaAsiya Javayant PROPOSAL
Mayumi X RutaRussiaElwin Sharvill QUALIFIED
Julie O KolmetzGermanyOnyama Limba PROPOSAL
Greenwood X NickaBrazilIoni Bowcher RENEWAL
Darci A BologniaItalyIoni Bowcher PROPOSAL
Rodrigues A NestleArgentinaOnyama Limba RENEWAL
Maria Z FlosiBrazilAnna Fali PROPOSAL
Aika N InouyeArgentinaAnna Fali QUALIFIED
Ricardo Y RimIndiaBernardo Dominic UNQUALIFIED
Chavez U FigeroaSpainIvan Magalhaes PROPOSAL
Emily U ButtCanadaStephen Shaw NEGOTIATION
Izzy E MorascaRussiaOnyama Limba NEGOTIATION
Tony Y GarufiArgentinaAmy Elsner NEGOTIATION
Johnson W InouyeGermanyIoni Bowcher RENEWAL
Adams R FerenczIndiaIoni Bowcher UNQUALIFIED
Silvio J DoeAustraliaStephen Shaw NEW
Aruna S StockhamSpainStephen Shaw NEW
Tony Z CampainItalyStephen Shaw NEGOTIATION
Darci Y ButtGermanyAnna Fali NEGOTIATION
Jennifer P BriddickArgentinaIoni Bowcher NEGOTIATION
Jennifer U GillianGermanyBernardo Dominic PROPOSAL
Ricardo P GarufiJapanIoni Bowcher UNQUALIFIED
Salvatore R OldroydBrazilIvan Magalhaes NEW
Maria U MaletFranceBernardo Dominic NEW
Nicolas E MacleadGermanyElwin Sharvill NEW
Murillo N GillianItalyBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar R GauchoSpainIvan Magalhaes NEW
Ashley N WaycottSpainOnyama Limba NEGOTIATION
Jeanfrancois U SlusarskiRussiaIvan Magalhaes UNQUALIFIED
James J FerenczSpainAnna Fali UNQUALIFIED
Ricardo N KolmetzUnited KingdomAsiya Javayant NEW
Smith Y DoeRussiaXuxue Feng UNQUALIFIED
Jennifer V InouyeIndiaAnna Fali RENEWAL
Adams Z DoeBrazilOnyama Limba NEGOTIATION
Jeanfrancois S DarakjyUnited KingdomStephen Shaw QUALIFIED
Cody D KuskoAustraliaStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya X PaprockiIndia2024-03-26Rousseaux, Michael Esq NEGOTIATION30Asiya Javayant
1001Isabel R WhobreyJapan2024-04-20Buckley Miller Wright PROPOSAL25Bernardo Dominic
1002Maria H MarrierJapan2024-04-21Rangoni Of Florence UNQUALIFIED41Xuxue Feng
1003Sinclair D WhobreyUnited Kingdom2024-03-27Rousseaux, Michael Esq NEW61Ivan Magalhaes
1004Rodrigues H MarrierAustralia2024-04-18Chemel, James L Cpa RENEWAL22Xuxue Feng
1005Kaitlin H FigeroaSpain2024-04-11Chemel, James L Cpa RENEWAL84Onyama Limba
1006Adams X FollerArgentina2024-04-13Rousseaux, Michael Esq NEGOTIATION72Onyama Limba
1007Isabel W FollerJapan2024-04-06Dorl, James J Esq QUALIFIED30Anna Fali
1008Misaki U MaletSpain2024-03-25Morlong Associates PROPOSAL61Onyama Limba
1009Julie K RimIndia2024-04-14Chapman, Ross E Esq NEGOTIATION80Amy Elsner
1010Izzy M OstroskySpain2024-04-03King, Christopher A Esq UNQUALIFIED86Ivan Magalhaes
1011Morrow J WaycottRussia2024-04-11Truhlar And Truhlar Attys NEW28Onyama Limba
1012Sinclair J InouyeGermany2024-04-09Benton, John B Jr RENEWAL74Ivan Magalhaes
1013Darci C FlosiFrance2024-04-21Feltz Printing Service NEW9Anna Fali
1014Tony M GarufiFrance2024-04-07Dorl, James J Esq QUALIFIED37Ioni Bowcher
1015Alejandro V GarufiIndia2024-04-16Rousseaux, Michael Esq NEW42Elwin Sharvill
1016Julie J VenereSpain2024-04-06Chemel, James L Cpa NEGOTIATION96Ivan Magalhaes
1017Murillo V BriddickArgentina2024-04-23Truhlar And Truhlar Attys QUALIFIED4Amy Elsner
1018Darci S MaletArgentina2024-04-14Chanay, Jeffrey A Esq QUALIFIED39Asiya Javayant
1019Kaitlin W VenereBrazil2024-04-23Truhlar And Truhlar Attys NEW39Bernardo Dominic
1020Maria Y SchemmerGermany2024-04-06Chapman, Ross E Esq NEGOTIATION81Ivan Magalhaes
1021Murillo S BowleyAustralia2024-04-15Chanay, Jeffrey A Esq NEGOTIATION2Onyama Limba
1022Izzy T TollnerFrance2024-04-02Printing Dimensions PROPOSAL41Ioni Bowcher
1023Chavez K MorascaBrazil2024-04-21Feiner Bros QUALIFIED69Xuxue Feng
1024Jefferson A CaudyRussia2024-03-29Rousseaux, Michael Esq RENEWAL32Elwin Sharvill
1025Kadeem A BriddickFrance2024-04-21Benton, John B Jr NEGOTIATION28Anna Fali
1026Leja S RimJapan2024-04-10Rangoni Of Florence QUALIFIED88Bernardo Dominic
1027Darci G NickaArgentina2024-04-19Feiner Bros NEW56Bernardo Dominic
1028Adams M TollnerItaly2024-04-09Dorl, James J Esq QUALIFIED50Bernardo Dominic
1029Smith K CampainCanada2024-04-11Morlong Associates UNQUALIFIED57Stephen Shaw
1030Sinclair T FigeroaFrance2024-04-09Dorl, James J Esq PROPOSAL91Ivan Magalhaes
1031Misaki K RimBrazil2024-04-15Chanay, Jeffrey A Esq NEW67Asiya Javayant
1032Silvio H TollnerSpain2024-04-04Printing Dimensions QUALIFIED92Ioni Bowcher
1033Emily E TollnerUnited Kingdom2024-04-21Morlong Associates NEW83Elwin Sharvill
1034Ricardo M FerenczItaly2024-03-29Morlong Associates UNQUALIFIED2Asiya Javayant
1035Greenwood W AlbaresFrance2024-04-11Commercial Press QUALIFIED11Asiya Javayant
1036Cody B TollnerFrance2024-04-12Chapman, Ross E Esq RENEWAL95Stephen Shaw
1037Aruna O CampainBrazil2024-03-26Chanay, Jeffrey A Esq QUALIFIED45Amy Elsner
1038Emily U ShinkoAustralia2024-04-23Buckley Miller Wright RENEWAL50Ioni Bowcher
1039Octavia C FigeroaGermany2024-03-30Feiner Bros QUALIFIED93Ioni Bowcher
1040Kaitlin O MaletCanada2024-04-20Rangoni Of Florence PROPOSAL64Amy Elsner
1041Costa T MaletJapan2024-04-06Printing Dimensions NEW51Anna Fali
1042Smith G NestleJapan2024-03-27Feiner Bros QUALIFIED16Elwin Sharvill
1043James H NickaGermany2024-04-15Chapman, Ross E Esq NEW59Elwin Sharvill
1044David D TollnerAustralia2024-04-21King, Christopher A Esq NEW80Anna Fali
1045James D WieserFrance2024-04-18Feltz Printing Service NEGOTIATION62Elwin Sharvill
1046Salvatore V PoquetteItaly2024-04-02Truhlar And Truhlar Attys NEGOTIATION73Amy Elsner
1047Maisha R GarufiArgentina2024-04-01Benton, John B Jr NEW20Ivan Magalhaes
1048Misaki I BowleyItaly2024-03-26Rangoni Of Florence NEW77Onyama Limba
1049Stacey M MaletIndia2024-04-13Feiner Bros PROPOSAL91Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Faith O FigeroaAustraliaStephen Shaw QUALIFIED
Aika E ChuiGermanyIvan Magalhaes QUALIFIED
Kaitlin B FerenczSpainIoni Bowcher NEW
Emily S RutaGermanyAmy Elsner NEW
Johnson Z GlickCanadaBernardo Dominic PROPOSAL
Julie J DilliardBrazilXuxue Feng UNQUALIFIED
Stacey M DilliardRussiaIoni Bowcher PROPOSAL
Kadeem J RulapaughJapanAmy Elsner UNQUALIFIED
Kaitlin N TollnerItalyAmy Elsner QUALIFIED
Aruna R NestleItalyAmy Elsner NEGOTIATION
Aditya R IturbideRussiaXuxue Feng PROPOSAL
Julie R AmigonCanadaAsiya Javayant QUALIFIED
Aruna E VocelkaIndiaStephen Shaw NEW
James N WieserBrazilIvan Magalhaes NEGOTIATION
Jefferson G GlickUnited KingdomStephen Shaw UNQUALIFIED
Leon Z KuskoBrazilBernardo Dominic UNQUALIFIED
Misaki J RutaFranceBernardo Dominic QUALIFIED
Costa G MarrierFranceXuxue Feng PROPOSAL
Izzy Z SlusarskiGermanyOnyama Limba RENEWAL
Aika M GauchoCanadaOnyama Limba NEW
Arvin O StockhamItalyAsiya Javayant NEGOTIATION
Emily H CaldareraBrazilOnyama Limba UNQUALIFIED
Darci T VenereUnited KingdomAnna Fali RENEWAL
Emily O PerinSpainAmy Elsner NEW
Maria G AmigonAustraliaIoni Bowcher RENEWAL
Deepesh W KuskoGermanyAmy Elsner QUALIFIED
Emily X OstroskySpainIoni Bowcher NEGOTIATION
Greenwood G PoquetteIndiaIvan Magalhaes QUALIFIED
Francesco C PoquetteRussiaAmy Elsner UNQUALIFIED
Sinclair K OstroskySpainXuxue Feng PROPOSAL
Faith Y MaletGermanyIvan Magalhaes PROPOSAL
Juan E CaldareraRussiaElwin Sharvill QUALIFIED
Rodrigues N SaylorsFranceOnyama Limba PROPOSAL
James K DoeUnited KingdomElwin Sharvill PROPOSAL
Murillo D StockhamAustraliaAsiya Javayant RENEWAL
Alejandro P RimRussiaAnna Fali RENEWAL
Murillo P AlbaresArgentinaIvan Magalhaes RENEWAL
Aruna Z ButtRussiaXuxue Feng QUALIFIED
Mayumi D DilliardItalyStephen Shaw NEGOTIATION
Salvatore F ShinkoFranceOnyama Limba QUALIFIED
Maisha X AlbaresGermanyAsiya Javayant UNQUALIFIED
Munro D GauchoUnited KingdomAnna Fali PROPOSAL
Adams L PerinBrazilOnyama Limba NEW
Maria C MorascaJapanIoni Bowcher UNQUALIFIED
Claire A PoquetteRussiaAmy Elsner UNQUALIFIED
Murillo O OldroydArgentinaStephen Shaw NEW
Ricardo M WieserSpainElwin Sharvill QUALIFIED
Emily R FigeroaFranceIvan Magalhaes NEW
Silvio Z BowleyCanadaStephen Shaw UNQUALIFIED
Chavez A KolmetzJapanElwin Sharvill RENEWAL
Frozen Columns
Name
Morrow Y Chui
Costa L Glick
Aruna P Flosi
Julie H Chui
Darci Z Wieser
Faith P Morasca
Kadeem P Wieser
Octavia C Dilliard
Jennifer M Slusarski
Aruna O Stenseth
David S Bowley
Francesco A Darakjy
Clifford Y Butt
Leja T Malet
Tony M Chui
Nicolas M Bolognia
Cody T Albares
Greenwood Q Glick
Adams G Wieser
Wickens B Caldarera
David P Caudy
Maria O Glick
Francesco X Paprocki
Mayumi R Malet
Adams L Tollner
Juan I Marrier
Ashley U Oldroyd
Maisha T Foller
Aika A Slusarski
Leon T Bolognia
Leon J Royster
Tony L Kolmetz
Stacey I Wieser
Isabel H Bowley
Darci L Darakjy
Darci E Slusarski
Rodrigues C Maclead
Arvin S Glick
Ashley A Doe
Aditya Q Tollner
Aika J Perin
Faith K Rulapaugh
Smith I Morasca
Leon T Saylors
Claire Z Stockham
Julie U Garufi
Rodrigues X Butt
Aruna Z Campain
Aditya O Figeroa
Murillo Y Flosi
IdCountryDate
1000Argentina2024-04-13
1001Argentina2024-03-25
1002Germany2024-03-28
1003Spain2024-04-09
1004Brazil2024-03-30
1005Spain2024-04-08
1006Spain2024-04-04
1007Australia2024-04-09
1008Germany2024-04-19
1009Australia2024-03-25
1010Germany2024-04-02
1011Spain2024-03-30
1012Russia2024-04-06
1013Brazil2024-04-10
1014India2024-04-11
1015Italy2024-04-18
1016Italy2024-04-03
1017Spain2024-04-12
1018Australia2024-03-27
1019Canada2024-04-18
1020Argentina2024-04-16
1021Argentina2024-04-09
1022Australia2024-03-28
1023Russia2024-03-30
1024France2024-04-03
1025Japan2024-03-30
1026Argentina2024-03-25
1027Brazil2024-03-25
1028Italy2024-04-23
1029Spain2024-03-25
1030United Kingdom2024-03-28
1031Australia2024-04-19
1032Australia2024-04-19
1033Italy2024-04-16
1034Argentina2024-04-10
1035Brazil2024-03-26
1036United Kingdom2024-04-20
1037Russia2024-04-09
1038Canada2024-04-01
1039Brazil2024-04-05
1040France2024-04-14
1041India2024-04-02
1042United Kingdom2024-04-13
1043Brazil2024-04-08
1044Argentina2024-04-17
1045Russia2024-04-03
1046France2024-04-08
1047Germany2024-04-16
1048Canada2024-04-01
1049Canada2024-04-17

On-Demand Data

NameIdCountryDate
Adams M Albares1000Australia2024-04-16
Juan N Malet1001Italy2024-03-31
Kadeem A Nicka1002France2024-03-26
Cody V Ruta1003Germany2024-04-07
Maisha A Inouye1004Germany2024-04-10
Silvio P Caldarera1005India2024-04-01
Alejandro K Rulapaugh1006Australia2024-03-30
Julie G Nestle1007Germany2024-03-26
Chavez T Schemmer1008Argentina2024-04-07
David A Royster1009Russia2024-03-28
Claire V Caudy1010Italy2024-04-07
Stacey M Caudy1011Brazil2024-03-27
Maisha V Malet1012Spain2024-04-08
Morrow M Flosi1013United Kingdom2024-04-03
Emily W Campain1014Spain2024-04-10
Darci A Bowley1015Canada2024-04-11
Arvin J Briddick1016Russia2024-03-26
Aruna G Marrier1017Australia2024-04-06
Jennifer F Garufi1018Australia2024-04-21
Antonio Z Kolmetz1019India2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire B BowleyArgentinaOnyama Limba NEGOTIATION
Johnson Q RutaRussiaOnyama Limba QUALIFIED
Greenwood P NestleGermanyAnna Fali RENEWAL
Deepesh Q IturbideItalyAmy Elsner UNQUALIFIED
Faith D ShinkoGermanyStephen Shaw UNQUALIFIED
Ivar R VocelkaBrazilAnna Fali NEW
Tony U FollerBrazilXuxue Feng PROPOSAL
Mayumi M PaprockiJapanElwin Sharvill PROPOSAL
Costa T FollerAustraliaXuxue Feng UNQUALIFIED
Leja E ButtGermanyElwin Sharvill NEGOTIATION
Adams L GillianJapanAsiya Javayant UNQUALIFIED
Faith I KolmetzSpainIvan Magalhaes PROPOSAL
Darci D BologniaJapanOnyama Limba PROPOSAL
Emily M MaletIndiaAsiya Javayant RENEWAL
David N GillianUnited KingdomXuxue Feng UNQUALIFIED
Kadeem J OstroskyRussiaOnyama Limba QUALIFIED
Cody A FerenczRussiaAsiya Javayant NEW
Jefferson U OstroskyAustraliaIvan Magalhaes UNQUALIFIED
Aruna A GillianBrazilXuxue Feng UNQUALIFIED
Clifford Y RoysterItalyAsiya Javayant NEGOTIATION
Salvatore C RoysterBrazilAsiya Javayant RENEWAL
Rodrigues S OldroydAustraliaAsiya Javayant PROPOSAL
Deepesh B FerenczFranceElwin Sharvill PROPOSAL
Jeanfrancois Y OldroydGermanyIvan Magalhaes QUALIFIED
Leja O SaylorsUnited KingdomOnyama Limba RENEWAL
Aika U MaletRussiaBernardo Dominic NEGOTIATION
Juan A AmigonArgentinaIoni Bowcher RENEWAL
Maisha U SergiGermanyBernardo Dominic PROPOSAL
Johnson U DilliardIndiaAmy Elsner NEGOTIATION
Rodrigues G WhobreySpainAmy Elsner NEGOTIATION
Juan T BowleyUnited KingdomIvan Magalhaes NEGOTIATION
Octavia D GarufiSpainIvan Magalhaes NEW
Leon W SaylorsArgentinaOnyama Limba QUALIFIED
Ashley J ButtAustraliaBernardo Dominic UNQUALIFIED
Leon L StockhamJapanIvan Magalhaes PROPOSAL
Aika H IturbideAustraliaAnna Fali NEW
Deepesh V RimBrazilStephen Shaw QUALIFIED
Munro U MaletAustraliaIoni Bowcher RENEWAL
Leon A FlosiUnited KingdomStephen Shaw UNQUALIFIED
Salvatore J FlosiItalyXuxue Feng UNQUALIFIED

<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>