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
Aruna X OldroydRussiaAmy Elsner PROPOSAL
Izzy Q DarakjyGermanyIvan Magalhaes QUALIFIED
Tony Q ChuiSpainXuxue Feng PROPOSAL
Cody R PerinGermanyIoni Bowcher QUALIFIED
Aditya R FollerGermanyAsiya Javayant NEW
Francesco L MaletItalyAnna Fali UNQUALIFIED
Sinclair H PaprockiUnited KingdomAsiya Javayant NEGOTIATION
Silvio M NickaJapanXuxue Feng UNQUALIFIED
Johnson C BowleyItalyXuxue Feng RENEWAL
Morrow F StensethUnited KingdomIvan Magalhaes NEGOTIATION
Jeanfrancois S InouyeSpainAnna Fali UNQUALIFIED
Jeanfrancois P MorascaIndiaAnna Fali NEGOTIATION
Salvatore K ChuiJapanIoni Bowcher NEW
Kaitlin D StensethGermanyElwin Sharvill PROPOSAL
Cody T NestleBrazilAnna Fali NEGOTIATION
Jennifer Q GlickAustraliaAmy Elsner NEGOTIATION
Nicolas P ChuiItalyOnyama Limba QUALIFIED
Claire M ShinkoArgentinaStephen Shaw UNQUALIFIED
Alejandro B RulapaughItalyXuxue Feng NEGOTIATION
Misaki X GauchoFranceAsiya Javayant NEW
Claire R WieserCanadaStephen Shaw PROPOSAL
Deepesh K FigeroaSpainAnna Fali PROPOSAL
Alejandro H StensethJapanBernardo Dominic RENEWAL
Misaki U WieserSpainIvan Magalhaes QUALIFIED
Aruna K NestleRussiaBernardo Dominic NEGOTIATION
Nicolas J PaprockiItalyAnna Fali NEW
Clifford B RimSpainIvan Magalhaes NEGOTIATION
Jones T RimJapanIvan Magalhaes NEW
Misaki E OstroskyGermanyXuxue Feng PROPOSAL
Ivar V GarufiBrazilOnyama Limba QUALIFIED
Smith V RutaUnited KingdomAmy Elsner NEGOTIATION
Emily F WieserUnited KingdomXuxue Feng NEW
Jefferson Z RulapaughIndiaXuxue Feng UNQUALIFIED
Claire X NestleArgentinaIoni Bowcher UNQUALIFIED
Clifford K PoquetteCanadaIvan Magalhaes RENEWAL
Jefferson A BriddickAustraliaAsiya Javayant PROPOSAL
Tony I DilliardSpainAsiya Javayant UNQUALIFIED
Greenwood G RimFranceIvan Magalhaes UNQUALIFIED
Ivar U MarrierArgentinaIoni Bowcher NEGOTIATION
Salvatore O RutaItalyStephen Shaw NEW
Mujtaba R ChuiSpainIvan Magalhaes NEGOTIATION
Emily V AmigonIndiaAnna Fali NEGOTIATION
Ivar W FigeroaUnited KingdomStephen Shaw PROPOSAL
Leon F BriddickRussiaBernardo Dominic PROPOSAL
Murillo M BowleyFranceBernardo Dominic UNQUALIFIED
Francesco F CampainBrazilElwin Sharvill QUALIFIED
Jefferson I StockhamUnited KingdomElwin Sharvill UNQUALIFIED
Alejandro W SlusarskiJapanElwin Sharvill RENEWAL
Johnson Y BologniaFranceElwin Sharvill NEW
Misaki L ButtGermanyIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ricardo P WhobreyCanadaBernardo Dominic NEGOTIATION
Jones B CaudyAustraliaXuxue Feng NEGOTIATION
Munro J VocelkaSpainAnna Fali NEGOTIATION
Clifford X KuskoItalyAmy Elsner QUALIFIED
Rodrigues I WieserGermanyAnna Fali RENEWAL
Cody H MarrierBrazilAmy Elsner QUALIFIED
Octavia Y BologniaGermanyAnna Fali UNQUALIFIED
Costa T DoeIndiaBernardo Dominic NEW
Ivar K KolmetzFranceOnyama Limba NEGOTIATION
Antonio F MaletSpainBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David Y RutaUnited Kingdom2024-02-28Feiner Bros QUALIFIED29Asiya Javayant
1001Juan V GarufiSpain2024-03-19Chanay, Jeffrey A Esq NEW92Anna Fali
1002Wickens A OldroydArgentina2024-02-29Chanay, Jeffrey A Esq UNQUALIFIED45Asiya Javayant
1003Wickens N KolmetzCanada2024-03-08King, Christopher A Esq NEGOTIATION42Bernardo Dominic
1004Aika O WieserFrance2024-03-06Rangoni Of Florence NEGOTIATION38Stephen Shaw
1005Emily F FigeroaAustralia2024-03-25Chapman, Ross E Esq NEW74Stephen Shaw
1006Mayumi X NestleSpain2024-03-20Rousseaux, Michael Esq RENEWAL59Stephen Shaw
1007Leon X WaycottRussia2024-03-09Printing Dimensions UNQUALIFIED2Xuxue Feng
1008Tony V GlickRussia2024-03-05Feltz Printing Service UNQUALIFIED11Onyama Limba
1009Johnson V RutaUnited Kingdom2024-03-22Printing Dimensions RENEWAL90Anna Fali
1010Rodrigues Z StockhamCanada2024-03-17Chanay, Jeffrey A Esq NEW73Bernardo Dominic
1011Antonio U MorascaGermany2024-03-27Truhlar And Truhlar Attys NEW60Xuxue Feng
1012Cody A BowleyGermany2024-03-24Commercial Press NEW43Stephen Shaw
1013Mayumi X GarufiArgentina2024-03-02Chanay, Jeffrey A Esq NEW25Ioni Bowcher
1014Morrow B OstroskyRussia2024-03-05Benton, John B Jr UNQUALIFIED50Amy Elsner
1015Ricardo C RutaArgentina2024-03-13Chapman, Ross E Esq NEW16Amy Elsner
1016James R RutaJapan2024-03-09Morlong Associates UNQUALIFIED81Stephen Shaw
1017Wickens Q TollnerGermany2024-03-03Rangoni Of Florence QUALIFIED99Ivan Magalhaes
1018Nicolas D OldroydCanada2024-03-03Chapman, Ross E Esq NEGOTIATION68Asiya Javayant
1019Jefferson X RutaRussia2024-03-15Feiner Bros RENEWAL55Stephen Shaw
1020Morrow T PoquetteSpain2024-03-11Truhlar And Truhlar Attys NEGOTIATION35Amy Elsner
1021Kadeem G BowleyItaly2024-03-27Chanay, Jeffrey A Esq RENEWAL60Amy Elsner
1022Salvatore F WhobreySpain2024-03-08Printing Dimensions NEW13Elwin Sharvill
1023Chavez N AmigonJapan2024-03-20Benton, John B Jr PROPOSAL82Onyama Limba
1024Emily C AlbaresGermany2024-03-02Benton, John B Jr NEGOTIATION96Anna Fali
1025Julie X VenereJapan2024-03-04Morlong Associates PROPOSAL97Ivan Magalhaes
1026Murillo T RimGermany2024-03-10Rousseaux, Michael Esq QUALIFIED32Asiya Javayant
1027Maria J PaprockiArgentina2024-03-02Feltz Printing Service NEGOTIATION14Anna Fali
1028Morrow I NestleAustralia2024-03-03Truhlar And Truhlar Attys NEGOTIATION61Anna Fali
1029Morrow G BowleyFrance2024-03-12Feiner Bros NEGOTIATION68Elwin Sharvill
1030Maisha O CaldareraItaly2024-03-08Chapman, Ross E Esq UNQUALIFIED92Onyama Limba
1031Francesco H CaudyJapan2024-03-10Rousseaux, Michael Esq RENEWAL31Amy Elsner
1032Greenwood H NickaGermany2024-03-24Rousseaux, Michael Esq QUALIFIED96Onyama Limba
1033Juan L NickaJapan2024-03-14Rousseaux, Michael Esq NEW84Onyama Limba
1034Salvatore Q SlusarskiIndia2024-03-18Dorl, James J Esq NEW18Anna Fali
1035Jennifer H PoquetteSpain2024-03-20Chanay, Jeffrey A Esq UNQUALIFIED28Ivan Magalhaes
1036Aika A MarrierItaly2024-03-13Truhlar And Truhlar Attys UNQUALIFIED29Ivan Magalhaes
1037Aditya A CaudySpain2024-03-07Chapman, Ross E Esq RENEWAL19Amy Elsner
1038Wickens H KuskoIndia2024-03-06Printing Dimensions NEGOTIATION64Elwin Sharvill
1039Emily H WaycottCanada2024-03-11Feiner Bros NEW43Bernardo Dominic
1040Aika G SergiBrazil2024-03-24Chanay, Jeffrey A Esq NEGOTIATION45Elwin Sharvill
1041Greenwood G AlbaresIndia2024-03-21Chanay, Jeffrey A Esq QUALIFIED11Asiya Javayant
1042Kadeem B VenereAustralia2024-03-15Benton, John B Jr NEGOTIATION98Anna Fali
1043Johnson U GarufiJapan2024-03-24Printing Dimensions UNQUALIFIED5Asiya Javayant
1044Kaitlin R FigeroaGermany2024-03-20King, Christopher A Esq PROPOSAL47Amy Elsner
1045Claire B CaldareraAustralia2024-03-19Truhlar And Truhlar Attys NEGOTIATION69Stephen Shaw
1046Claire N MaletUnited Kingdom2024-03-24King, Christopher A Esq NEGOTIATION23Bernardo Dominic
1047Chavez X IturbideUnited Kingdom2024-03-22Rangoni Of Florence NEW13Elwin Sharvill
1048David W GillianArgentina2024-03-25Printing Dimensions QUALIFIED97Ivan Magalhaes
1049Chavez C OldroydAustralia2024-03-12Chanay, Jeffrey A Esq NEGOTIATION11Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Leon M SlusarskiUnited KingdomAnna Fali QUALIFIED
Aika D VocelkaJapanAnna Fali NEGOTIATION
Murillo W SlusarskiRussiaIoni Bowcher RENEWAL
Adams R MaletUnited KingdomElwin Sharvill UNQUALIFIED
Claire U MaletCanadaAsiya Javayant RENEWAL
Darci U AmigonFranceOnyama Limba NEGOTIATION
Aruna N AmigonSpainXuxue Feng NEGOTIATION
Aruna N ChuiAustraliaIoni Bowcher PROPOSAL
Maria B ButtRussiaAnna Fali NEW
Isabel V GarufiGermanyAmy Elsner NEGOTIATION
Nicolas O WaycottJapanBernardo Dominic NEGOTIATION
Nicolas U GarufiGermanyXuxue Feng UNQUALIFIED
Clifford X GillianGermanyAnna Fali PROPOSAL
Julie F OldroydAustraliaIoni Bowcher NEW
Ashley K ChuiCanadaStephen Shaw UNQUALIFIED
Mujtaba T RulapaughFranceStephen Shaw QUALIFIED
Faith O MaletRussiaAnna Fali NEW
Murillo G KolmetzBrazilAnna Fali NEW
Nicolas M AlbaresRussiaAnna Fali NEGOTIATION
Nicolas L DilliardGermanyIvan Magalhaes NEGOTIATION
Rodrigues M StensethArgentinaIoni Bowcher UNQUALIFIED
Alejandro B ShinkoBrazilAmy Elsner QUALIFIED
Jennifer L FollerFranceAsiya Javayant NEW
Isabel K IturbideIndiaIoni Bowcher NEGOTIATION
Chavez I BowleyItalyElwin Sharvill RENEWAL
Smith O OldroydCanadaAnna Fali UNQUALIFIED
Ivar V CaldareraFranceStephen Shaw NEW
Izzy C WaycottIndiaIoni Bowcher UNQUALIFIED
Aruna R MacleadIndiaElwin Sharvill UNQUALIFIED
Wickens E GarufiCanadaAmy Elsner UNQUALIFIED
Morrow E CaudyRussiaAmy Elsner RENEWAL
Aditya T MorascaBrazilIoni Bowcher RENEWAL
Alejandro Q ButtGermanyAmy Elsner NEGOTIATION
Aika Q GarufiUnited KingdomOnyama Limba NEGOTIATION
Aditya Z PoquetteIndiaElwin Sharvill RENEWAL
Octavia Q KolmetzSpainStephen Shaw RENEWAL
Maisha C StensethCanadaIvan Magalhaes NEGOTIATION
Wickens R FlosiGermanyElwin Sharvill QUALIFIED
Leja P BowleyAustraliaIvan Magalhaes PROPOSAL
Wickens L PaprockiItalyIoni Bowcher RENEWAL
David W RutaIndiaXuxue Feng NEW
Deepesh V MarrierBrazilElwin Sharvill NEW
Darci L MarrierCanadaXuxue Feng UNQUALIFIED
Aika F SaylorsIndiaAnna Fali PROPOSAL
Greenwood I GillianItalyIoni Bowcher NEW
Silvio O PaprockiBrazilIoni Bowcher NEGOTIATION
Isabel O KuskoCanadaIvan Magalhaes NEGOTIATION
Juan C BriddickGermanyAmy Elsner NEW
Arvin B ShinkoArgentinaBernardo Dominic PROPOSAL
Salvatore B CaudyIndiaBernardo Dominic PROPOSAL
Frozen Columns
Name
Smith I Poquette
Maisha P Ruta
Leon R Gaucho
Deepesh I Doe
Ashley B Bowley
Julie Y Vocelka
Emily Z Ruta
James Q Nestle
Aika X Amigon
Kadeem M Stockham
Emily G Sergi
Rodrigues J Amigon
Maria O Wieser
Isabel P Sergi
Claire F Schemmer
Darci B Slusarski
Morrow D Albares
Kadeem E Glick
David V Sergi
Morrow U Iturbide
Maria A Ostrosky
Emily A Bolognia
Jennifer M Kusko
Tony E Whobrey
James E Poquette
Adams Z Bowley
Kaitlin T Inouye
Ricardo V Caudy
Jefferson B Caldarera
Maria B Perin
Munro X Inouye
Costa X Figeroa
David K Garufi
Greenwood N Ferencz
Chavez V Ostrosky
Wickens B Caldarera
Faith Y Bowley
Mujtaba A Nicka
Leon J Figeroa
Alejandro W Wieser
Leja D Iturbide
Francesco C Flosi
Rodrigues W Glick
Greenwood Y Rim
Isabel S Shinko
Sinclair S Bolognia
Maria W Inouye
Jefferson L Venere
Mayumi I Paprocki
Jennifer R Venere
IdCountryDate
1000India2024-03-19
1001Australia2024-03-18
1002Germany2024-03-14
1003France2024-03-16
1004India2024-03-06
1005Italy2024-03-13
1006Brazil2024-03-07
1007Spain2024-03-23
1008Japan2024-03-09
1009France2024-03-03
1010Germany2024-03-26
1011Italy2024-03-15
1012Canada2024-03-09
1013India2024-03-09
1014Brazil2024-03-14
1015Japan2024-03-08
1016France2024-03-12
1017Russia2024-03-12
1018Germany2024-03-02
1019Germany2024-03-28
1020Brazil2024-03-27
1021Brazil2024-02-28
1022India2024-03-25
1023Germany2024-03-03
1024Japan2024-03-03
1025Argentina2024-03-15
1026Germany2024-03-18
1027Argentina2024-03-26
1028Germany2024-03-01
1029India2024-03-26
1030Brazil2024-03-12
1031Australia2024-03-03
1032Italy2024-03-03
1033Germany2024-03-21
1034Japan2024-03-21
1035Italy2024-03-10
1036France2024-03-05
1037Australia2024-03-05
1038Australia2024-03-23
1039France2024-03-20
1040India2024-03-25
1041Australia2024-03-15
1042Argentina2024-03-08
1043France2024-03-04
1044Canada2024-03-14
1045Australia2024-03-03
1046Canada2024-03-02
1047Argentina2024-03-15
1048Brazil2024-03-22
1049Brazil2024-03-13

On-Demand Data

NameIdCountryDate
Isabel B Bolognia1000Germany2024-03-13
Leja A Perin1001Brazil2024-03-17
Jeanfrancois V Albares1002France2024-03-23
Stacey W Flosi1003Canada2024-03-05
Antonio I Iturbide1004United Kingdom2024-02-29
Ivar D Nestle1005Canada2024-03-05
Ivar G Doe1006India2024-03-09
Octavia Z Campain1007India2024-03-20
Chavez V Kusko1008Australia2024-03-05
Maria R Doe1009Italy2024-03-06
Cody K Kusko1010Argentina2024-03-19
Rodrigues J Wieser1011United Kingdom2024-03-18
Murillo S Doe1012Germany2024-03-09
Cody J Oldroyd1013Germany2024-03-03
Misaki Z Vocelka1014Germany2024-03-18
Leon X Rim1015Russia2024-03-16
Mujtaba L Ruta1016Japan2024-03-24
Stacey M Slusarski1017Italy2024-03-13
Mayumi F Gillian1018Spain2024-03-05
Antonio V Kusko1019France2024-03-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan O IturbideCanadaBernardo Dominic UNQUALIFIED
Costa C DarakjyArgentinaOnyama Limba QUALIFIED
Jennifer E SchemmerIndiaIvan Magalhaes NEGOTIATION
Kaitlin M StensethArgentinaIoni Bowcher UNQUALIFIED
David Q NickaBrazilOnyama Limba UNQUALIFIED
Cody M DoeCanadaXuxue Feng NEW
Munro E GillianBrazilElwin Sharvill NEGOTIATION
Darci M GarufiItalyAsiya Javayant NEW
Kaitlin P WhobreyRussiaAsiya Javayant QUALIFIED
Chavez J GillianCanadaBernardo Dominic NEGOTIATION
Jefferson B VocelkaSpainBernardo Dominic NEGOTIATION
Smith F AmigonUnited KingdomAsiya Javayant NEGOTIATION
Rodrigues T SaylorsRussiaAmy Elsner PROPOSAL
Aditya V MacleadCanadaStephen Shaw RENEWAL
Rodrigues R FollerSpainAnna Fali PROPOSAL
Ivar B DarakjyFranceIoni Bowcher NEW
Darci D MarrierRussiaStephen Shaw QUALIFIED
Claire V SchemmerFranceAmy Elsner NEW
Morrow V MaletSpainStephen Shaw NEGOTIATION
Misaki M AlbaresJapanXuxue Feng RENEWAL
Kadeem G VenereGermanyAmy Elsner PROPOSAL
Aika H VenereSpainIoni Bowcher QUALIFIED
Jeanfrancois C FlosiUnited KingdomAsiya Javayant RENEWAL
Octavia N DarakjyCanadaStephen Shaw NEW
Kaitlin E InouyeBrazilBernardo Dominic UNQUALIFIED
Juan C SchemmerArgentinaAsiya Javayant QUALIFIED
Silvio V ChuiAustraliaAsiya Javayant NEGOTIATION
Claire V SchemmerArgentinaXuxue Feng NEW
Chavez Q RoysterUnited KingdomXuxue Feng NEGOTIATION
Darci R KuskoAustraliaAsiya Javayant RENEWAL
Kaitlin R GillianGermanyIoni Bowcher PROPOSAL
Salvatore M WaycottGermanyBernardo Dominic NEW
Munro F ShinkoSpainBernardo Dominic NEGOTIATION
Maria K RoysterUnited KingdomElwin Sharvill NEW
Mayumi A VocelkaRussiaXuxue Feng QUALIFIED
Ivar U NestleUnited KingdomOnyama Limba NEW
Johnson U PoquetteGermanyAnna Fali NEGOTIATION
Ashley T WieserBrazilAnna Fali NEW
Adams K DarakjyItalyXuxue Feng UNQUALIFIED
Izzy V DilliardItalyAsiya Javayant 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>