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
Faith L StockhamCanadaStephen Shaw NEW
Chavez T StensethIndiaAsiya Javayant NEW
Izzy B MorascaAustraliaBernardo Dominic PROPOSAL
Juan L BriddickBrazilAmy Elsner NEW
Emily K ChuiJapanStephen Shaw PROPOSAL
Misaki C RutaSpainOnyama Limba RENEWAL
Kadeem W WieserFranceAnna Fali QUALIFIED
Maria G MaletIndiaElwin Sharvill NEGOTIATION
Clifford Y StockhamJapanOnyama Limba QUALIFIED
Jennifer N KolmetzIndiaBernardo Dominic NEW
Izzy Z GlickSpainIoni Bowcher NEW
Alejandro G TollnerFranceBernardo Dominic NEW
Julie Z SergiIndiaIvan Magalhaes QUALIFIED
Stacey B GlickBrazilAnna Fali NEGOTIATION
Jefferson L ChuiCanadaBernardo Dominic PROPOSAL
Leon Z SaylorsArgentinaStephen Shaw NEW
Adams Q RimArgentinaIoni Bowcher RENEWAL
Maria Y AlbaresBrazilXuxue Feng NEGOTIATION
Morrow K RimJapanElwin Sharvill NEGOTIATION
Maisha E MaletBrazilAmy Elsner NEGOTIATION
Clifford H CaudyArgentinaAsiya Javayant NEW
Francesco K ChuiBrazilOnyama Limba QUALIFIED
Darci V SaylorsCanadaStephen Shaw PROPOSAL
Antonio W MaletUnited KingdomElwin Sharvill NEW
Isabel C SchemmerSpainBernardo Dominic NEW
Chavez X RoysterItalyAmy Elsner NEW
Ricardo D PerinRussiaAsiya Javayant RENEWAL
Izzy U RoysterUnited KingdomBernardo Dominic NEGOTIATION
Salvatore V DarakjyItalyAnna Fali NEW
Faith R NestleSpainAsiya Javayant NEGOTIATION
Antonio X WieserSpainElwin Sharvill NEGOTIATION
Juan F PaprockiItalyOnyama Limba UNQUALIFIED
Darci L MaletIndiaXuxue Feng RENEWAL
Deepesh C FlosiGermanyAmy Elsner NEW
Cody M PaprockiCanadaElwin Sharvill PROPOSAL
Aika W RimItalyAsiya Javayant NEW
Faith N PoquetteUnited KingdomIoni Bowcher PROPOSAL
Wickens T MorascaItalyBernardo Dominic PROPOSAL
Izzy V RulapaughGermanyAsiya Javayant NEW
Misaki Y StensethGermanyBernardo Dominic UNQUALIFIED
Isabel J DarakjyGermanyXuxue Feng UNQUALIFIED
Arvin V SergiGermanyAsiya Javayant NEW
Nicolas C GarufiUnited KingdomAsiya Javayant NEGOTIATION
Francesco T StensethItalyAnna Fali PROPOSAL
James K ChuiAustraliaOnyama Limba RENEWAL
Leja L BriddickIndiaStephen Shaw QUALIFIED
Ricardo N StensethCanadaAsiya Javayant UNQUALIFIED
Isabel W OstroskyItalyAsiya Javayant NEW
Leon S FigeroaUnited KingdomAsiya Javayant UNQUALIFIED
Chavez A AlbaresArgentinaAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Claire U FigeroaAustraliaIvan Magalhaes NEW
Aruna P DarakjyCanadaStephen Shaw UNQUALIFIED
Jennifer O IturbideJapanOnyama Limba RENEWAL
Kadeem K MaletFranceIoni Bowcher NEGOTIATION
Misaki M OldroydFranceAmy Elsner UNQUALIFIED
Chavez W CaldareraRussiaAnna Fali QUALIFIED
Chavez X InouyeJapanAnna Fali QUALIFIED
Faith Z FollerCanadaIoni Bowcher QUALIFIED
Adams A VocelkaItalyXuxue Feng QUALIFIED
David T NickaSpainAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika O NestleCanada2024-04-09Dorl, James J Esq RENEWAL21Ivan Magalhaes
1001Jeanfrancois G StockhamRussia2024-04-18Printing Dimensions NEGOTIATION82Asiya Javayant
1002Aruna U FerenczAustralia2024-04-12Chanay, Jeffrey A Esq QUALIFIED8Anna Fali
1003Deepesh U PerinJapan2024-04-04King, Christopher A Esq NEGOTIATION26Amy Elsner
1004Johnson Z AlbaresSpain2024-04-02Rangoni Of Florence UNQUALIFIED68Stephen Shaw
1005Costa J RoysterUnited Kingdom2024-04-12Truhlar And Truhlar Attys QUALIFIED64Asiya Javayant
1006Juan V KuskoUnited Kingdom2024-03-21Buckley Miller Wright NEGOTIATION11Bernardo Dominic
1007Smith Q GarufiFrance2024-04-10Rousseaux, Michael Esq RENEWAL55Ioni Bowcher
1008Stacey G VocelkaGermany2024-04-13Rousseaux, Michael Esq NEGOTIATION0Xuxue Feng
1009Kaitlin J NickaBrazil2024-04-07Rangoni Of Florence RENEWAL20Bernardo Dominic
1010Mujtaba I GlickUnited Kingdom2024-04-04Chapman, Ross E Esq UNQUALIFIED15Elwin Sharvill
1011Darci D BowleyGermany2024-03-26Morlong Associates PROPOSAL86Xuxue Feng
1012Kadeem N DarakjyUnited Kingdom2024-04-06Chemel, James L Cpa PROPOSAL39Amy Elsner
1013Ricardo C BowleyUnited Kingdom2024-04-03Chapman, Ross E Esq QUALIFIED7Asiya Javayant
1014Faith G GauchoItaly2024-04-15Truhlar And Truhlar Attys RENEWAL61Stephen Shaw
1015Mujtaba J MaletArgentina2024-03-30Printing Dimensions RENEWAL94Xuxue Feng
1016Murillo P DoeIndia2024-03-22Rangoni Of Florence PROPOSAL31Bernardo Dominic
1017Ashley V RutaSpain2024-04-06Truhlar And Truhlar Attys PROPOSAL68Stephen Shaw
1018Leon X MacleadRussia2024-03-27Dorl, James J Esq QUALIFIED3Xuxue Feng
1019James F AlbaresSpain2024-04-19Chapman, Ross E Esq UNQUALIFIED88Ioni Bowcher
1020Ashley H MaletSpain2024-04-06Feiner Bros RENEWAL28Stephen Shaw
1021Mayumi V ButtFrance2024-04-17Feltz Printing Service NEW66Elwin Sharvill
1022David X RoysterCanada2024-04-11Dorl, James J Esq PROPOSAL47Xuxue Feng
1023Leon O FerenczFrance2024-03-29Commercial Press PROPOSAL50Ivan Magalhaes
1024Jones W PaprockiIndia2024-03-21Truhlar And Truhlar Attys RENEWAL84Stephen Shaw
1025Mayumi D FerenczFrance2024-04-01Chapman, Ross E Esq NEW53Ioni Bowcher
1026Antonio D PaprockiBrazil2024-04-04Printing Dimensions NEGOTIATION21Bernardo Dominic
1027Morrow E IturbideAustralia2024-04-18Benton, John B Jr NEGOTIATION81Elwin Sharvill
1028Jefferson U SchemmerGermany2024-04-09Buckley Miller Wright PROPOSAL42Stephen Shaw
1029Leon K OstroskyRussia2024-04-19Chemel, James L Cpa NEW45Stephen Shaw
1030Jeanfrancois L DarakjyAustralia2024-03-27Benton, John B Jr NEGOTIATION49Bernardo Dominic
1031Mujtaba Y VenereJapan2024-04-08Feiner Bros RENEWAL21Anna Fali
1032Juan E TollnerRussia2024-04-18Feltz Printing Service NEGOTIATION16Onyama Limba
1033Sinclair Q OstroskyFrance2024-04-02Feltz Printing Service NEGOTIATION65Stephen Shaw
1034Smith V FollerArgentina2024-04-02Commercial Press PROPOSAL69Ioni Bowcher
1035Silvio X MorascaArgentina2024-04-04King, Christopher A Esq RENEWAL28Xuxue Feng
1036Francesco W FollerUnited Kingdom2024-03-26King, Christopher A Esq UNQUALIFIED95Amy Elsner
1037Juan H CaldareraUnited Kingdom2024-04-05Truhlar And Truhlar Attys PROPOSAL27Anna Fali
1038Ivar X VocelkaFrance2024-04-13Chemel, James L Cpa NEW28Xuxue Feng
1039Faith Q MarrierArgentina2024-04-16Feltz Printing Service NEW10Ioni Bowcher
1040Nicolas A SergiRussia2024-04-18Rousseaux, Michael Esq QUALIFIED97Onyama Limba
1041Deepesh A TollnerItaly2024-03-23Chapman, Ross E Esq UNQUALIFIED75Xuxue Feng
1042Greenwood P KolmetzSpain2024-04-11Rangoni Of Florence RENEWAL5Elwin Sharvill
1043Isabel G VocelkaBrazil2024-04-14Chapman, Ross E Esq NEGOTIATION47Anna Fali
1044Julie W NestleGermany2024-03-31Chanay, Jeffrey A Esq NEW88Anna Fali
1045Mujtaba K GlickCanada2024-04-07Chapman, Ross E Esq NEGOTIATION61Asiya Javayant
1046Claire C AlbaresItaly2024-04-17Rousseaux, Michael Esq PROPOSAL57Ivan Magalhaes
1047Kaitlin X ButtSpain2024-04-03Commercial Press PROPOSAL52Amy Elsner
1048Aruna A MacleadCanada2024-04-15Printing Dimensions UNQUALIFIED85Stephen Shaw
1049Sinclair Z FigeroaUnited Kingdom2024-04-07Buckley Miller Wright NEW47Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Izzy U OstroskyGermanyAmy Elsner PROPOSAL
Arvin K RulapaughItalyElwin Sharvill UNQUALIFIED
Juan U WaycottArgentinaIoni Bowcher PROPOSAL
Leja R PerinIndiaElwin Sharvill PROPOSAL
Octavia A InouyeCanadaIoni Bowcher NEGOTIATION
Aditya Q NickaSpainElwin Sharvill UNQUALIFIED
Aika E SaylorsRussiaStephen Shaw QUALIFIED
Ricardo L StensethGermanyBernardo Dominic NEGOTIATION
Morrow Y CaldareraIndiaAsiya Javayant PROPOSAL
Ashley L AmigonCanadaIvan Magalhaes UNQUALIFIED
Kadeem E ButtItalyAsiya Javayant QUALIFIED
Mayumi O BologniaUnited KingdomElwin Sharvill RENEWAL
Maisha J RimItalyBernardo Dominic NEGOTIATION
James J GauchoUnited KingdomElwin Sharvill UNQUALIFIED
Kaitlin M StensethFranceBernardo Dominic QUALIFIED
Salvatore E SaylorsCanadaAmy Elsner UNQUALIFIED
Misaki I StockhamRussiaAnna Fali UNQUALIFIED
Mayumi S DarakjyJapanOnyama Limba RENEWAL
Costa M RulapaughArgentinaAsiya Javayant UNQUALIFIED
Kadeem K MaletUnited KingdomOnyama Limba NEW
Silvio Y KuskoItalyIoni Bowcher NEW
Aika Y GauchoRussiaAnna Fali NEGOTIATION
Aika Q AmigonRussiaXuxue Feng NEW
Murillo J FollerAustraliaAsiya Javayant UNQUALIFIED
Silvio M GlickUnited KingdomElwin Sharvill PROPOSAL
Adams B WhobreyCanadaOnyama Limba QUALIFIED
Adams Q DilliardFranceOnyama Limba NEW
Arvin O DarakjyUnited KingdomElwin Sharvill RENEWAL
Aika S CampainUnited KingdomAnna Fali QUALIFIED
Misaki K OldroydArgentinaIvan Magalhaes NEGOTIATION
Mayumi P TollnerIndiaIoni Bowcher NEW
Maria U AmigonFranceAsiya Javayant NEW
Sinclair R RoysterJapanAsiya Javayant RENEWAL
Jeanfrancois I RutaBrazilOnyama Limba NEW
Salvatore Y FollerSpainElwin Sharvill PROPOSAL
Kadeem E ShinkoItalyIvan Magalhaes NEW
Ricardo W BologniaBrazilStephen Shaw NEW
Misaki R SlusarskiUnited KingdomIoni Bowcher NEW
Munro J WhobreyBrazilAsiya Javayant NEGOTIATION
Chavez A StensethIndiaBernardo Dominic UNQUALIFIED
Murillo D CampainAustraliaStephen Shaw NEW
Alejandro Q ShinkoIndiaAnna Fali QUALIFIED
Mujtaba M RutaArgentinaXuxue Feng NEW
Darci Z FigeroaSpainAnna Fali PROPOSAL
Rodrigues J WhobreyItalyIvan Magalhaes PROPOSAL
Emily P DoeIndiaBernardo Dominic PROPOSAL
Cody E PerinFranceOnyama Limba PROPOSAL
Costa Q AmigonSpainAsiya Javayant QUALIFIED
Claire J WieserCanadaBernardo Dominic UNQUALIFIED
Juan A CampainGermanyXuxue Feng PROPOSAL
Frozen Columns
Name
Rodrigues K Caudy
Faith C Nicka
Faith L Shinko
Darci Z Rim
Ashley W Garufi
Adams W Poquette
Deepesh N Stockham
Leja C Morasca
Rodrigues N Poquette
Aditya W Sergi
Octavia D Poquette
Greenwood Y Butt
Aruna D Schemmer
Izzy G Oldroyd
Faith T Ferencz
Greenwood Z Iturbide
Jones Y Butt
Faith D Inouye
Ricardo Y Doe
Costa O Poquette
Maria B Doe
Aika R Sergi
Greenwood N Slusarski
Morrow Y Nestle
Antonio D Malet
Chavez O Royster
Murillo F Chui
David G Stockham
Maria L Maclead
Juan P Doe
Chavez A Schemmer
Kaitlin U Butt
Claire T Royster
Jones E Gaucho
Maisha S Waycott
Tony L Oldroyd
Cody P Butt
Aika M Stockham
Juan J Stockham
Octavia R Nicka
Antonio D Venere
Smith E Paprocki
Tony Y Ruta
Juan Q Gillian
Cody L Glick
David Z Whobrey
Greenwood W Amigon
Ricardo B Caldarera
Kaitlin N Waycott
Jefferson R Iturbide
IdCountryDate
1000France2024-04-02
1001Australia2024-04-02
1002India2024-03-23
1003France2024-04-07
1004Australia2024-03-26
1005Canada2024-04-13
1006Canada2024-04-16
1007Brazil2024-04-14
1008India2024-04-03
1009Italy2024-04-14
1010Japan2024-03-31
1011Germany2024-03-22
1012Canada2024-03-27
1013United Kingdom2024-04-09
1014India2024-03-28
1015Australia2024-04-18
1016Japan2024-04-16
1017Germany2024-04-19
1018Canada2024-04-13
1019Spain2024-03-21
1020Germany2024-04-07
1021Brazil2024-04-15
1022Canada2024-04-04
1023Canada2024-03-21
1024Spain2024-04-03
1025Russia2024-03-27
1026Japan2024-04-09
1027Russia2024-04-13
1028Spain2024-04-07
1029France2024-04-09
1030Canada2024-04-08
1031France2024-03-21
1032France2024-03-28
1033Australia2024-04-12
1034Italy2024-03-21
1035Italy2024-04-11
1036United Kingdom2024-04-11
1037Russia2024-03-26
1038India2024-04-09
1039Japan2024-04-02
1040Canada2024-04-19
1041United Kingdom2024-03-21
1042India2024-04-19
1043Japan2024-04-10
1044Russia2024-04-15
1045Australia2024-04-15
1046Italy2024-04-04
1047Australia2024-04-01
1048Australia2024-03-26
1049United Kingdom2024-04-04

On-Demand Data

NameIdCountryDate
Nicolas R Schemmer1000Italy2024-04-13
Ricardo N Royster1001United Kingdom2024-03-30
Leon E Figeroa1002Germany2024-03-26
Kadeem P Waycott1003Argentina2024-04-15
Maisha O Perin1004Brazil2024-03-27
Ashley G Rulapaugh1005India2024-04-15
Aika P Waycott1006Argentina2024-03-31
Antonio S Glick1007Italy2024-03-25
Aditya O Shinko1008Russia2024-03-25
Rodrigues P Saylors1009United Kingdom2024-03-27
Greenwood L Stockham1010France2024-04-02
Aditya Y Kolmetz1011Argentina2024-04-14
Octavia Y Marrier1012France2024-04-12
Ricardo B Royster1013India2024-04-19
Maria W Bowley1014Japan2024-03-21
Chavez Y Maclead1015Japan2024-04-09
Jefferson K Marrier1016Brazil2024-04-18
Maisha F Rim1017Argentina2024-03-30
Leja V Butt1018Canada2024-03-30
Smith F Saylors1019Brazil2024-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika U DoeArgentinaIvan Magalhaes QUALIFIED
Smith W WieserItalyIvan Magalhaes QUALIFIED
Kaitlin A WhobreyCanadaXuxue Feng UNQUALIFIED
Ricardo F AmigonCanadaStephen Shaw NEGOTIATION
Murillo C KolmetzBrazilAnna Fali NEGOTIATION
Smith N SchemmerFranceAsiya Javayant NEW
Ivar O ChuiFranceOnyama Limba PROPOSAL
Darci R FlosiAustraliaAmy Elsner UNQUALIFIED
Mayumi O PerinFranceElwin Sharvill QUALIFIED
Rodrigues Q GarufiIndiaStephen Shaw NEW
Jennifer Q StensethJapanAsiya Javayant PROPOSAL
Nicolas E MacleadJapanIvan Magalhaes NEGOTIATION
James T VenereAustraliaIoni Bowcher NEW
Jeanfrancois J SlusarskiFranceElwin Sharvill UNQUALIFIED
Alejandro K TollnerItalyXuxue Feng RENEWAL
Silvio X RimGermanyIvan Magalhaes RENEWAL
Munro O InouyeBrazilBernardo Dominic UNQUALIFIED
Julie S WieserRussiaAmy Elsner RENEWAL
Mayumi K KuskoAustraliaIvan Magalhaes PROPOSAL
Silvio V SaylorsFranceAmy Elsner NEGOTIATION
Julie J InouyeAustraliaBernardo Dominic RENEWAL
Costa T TollnerJapanStephen Shaw QUALIFIED
Jones R NestleBrazilAsiya Javayant NEW
Alejandro J KuskoUnited KingdomStephen Shaw NEW
Ashley Q ButtBrazilAmy Elsner PROPOSAL
Aruna P DarakjyRussiaBernardo Dominic NEGOTIATION
Leon J RimItalyBernardo Dominic QUALIFIED
Ashley A DoeBrazilElwin Sharvill RENEWAL
Isabel F SchemmerCanadaXuxue Feng PROPOSAL
Munro K RulapaughJapanAsiya Javayant UNQUALIFIED
Sinclair B WieserCanadaXuxue Feng PROPOSAL
Antonio F NickaSpainOnyama Limba PROPOSAL
Aditya E StockhamGermanyAnna Fali QUALIFIED
Isabel G PerinCanadaAsiya Javayant RENEWAL
Aika G StensethBrazilAmy Elsner RENEWAL
Antonio R FlosiIndiaAmy Elsner NEW
Octavia S MorascaUnited KingdomStephen Shaw PROPOSAL
Adams L PerinGermanyIvan Magalhaes NEW
Ashley K AmigonJapanAsiya Javayant NEW
Leja E AlbaresRussiaElwin Sharvill 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>