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
Clifford Z BowleyIndiaAsiya Javayant NEGOTIATION
Jefferson Z StockhamArgentinaStephen Shaw NEGOTIATION
Darci W MaletArgentinaAmy Elsner PROPOSAL
Smith O RoysterAustraliaElwin Sharvill PROPOSAL
Wickens E RimArgentinaAnna Fali RENEWAL
Isabel H GauchoGermanyBernardo Dominic NEGOTIATION
Silvio I VocelkaFranceOnyama Limba QUALIFIED
Juan R KuskoSpainElwin Sharvill QUALIFIED
Francesco X ButtArgentinaXuxue Feng UNQUALIFIED
Deepesh X StensethRussiaAnna Fali QUALIFIED
Jeanfrancois T ChuiCanadaBernardo Dominic QUALIFIED
Chavez L WieserAustraliaXuxue Feng PROPOSAL
Maria G BowleyUnited KingdomXuxue Feng QUALIFIED
Mujtaba L DarakjyArgentinaAnna Fali NEW
Izzy U ChuiFranceAsiya Javayant NEW
Francesco X MorascaCanadaIoni Bowcher RENEWAL
Smith X FollerIndiaIoni Bowcher NEW
Mayumi E KuskoBrazilStephen Shaw QUALIFIED
Greenwood K RoysterFranceXuxue Feng PROPOSAL
Francesco P StockhamItalyIvan Magalhaes NEW
Claire V ShinkoJapanXuxue Feng RENEWAL
Smith T DoeItalyStephen Shaw RENEWAL
Johnson L DarakjyBrazilIoni Bowcher PROPOSAL
Ashley Y AlbaresRussiaAmy Elsner UNQUALIFIED
Juan S NestleAustraliaBernardo Dominic QUALIFIED
Mujtaba I KolmetzUnited KingdomIoni Bowcher NEW
Aditya O MorascaAustraliaElwin Sharvill PROPOSAL
Silvio E AmigonGermanyXuxue Feng RENEWAL
Costa O NestleArgentinaOnyama Limba NEW
Julie D VenereIndiaAnna Fali PROPOSAL
Kadeem O NestleUnited KingdomElwin Sharvill UNQUALIFIED
Greenwood V FigeroaBrazilXuxue Feng UNQUALIFIED
Juan S PaprockiIndiaStephen Shaw UNQUALIFIED
Alejandro A GauchoItalyAnna Fali QUALIFIED
Aika I MorascaUnited KingdomBernardo Dominic QUALIFIED
Kaitlin Y SergiItalyStephen Shaw NEGOTIATION
Murillo Y KolmetzAustraliaIvan Magalhaes QUALIFIED
Kadeem R SlusarskiJapanAmy Elsner NEW
Stacey W BologniaIndiaAnna Fali NEW
Jones G ChuiBrazilIvan Magalhaes NEGOTIATION
Ricardo O MarrierUnited KingdomBernardo Dominic PROPOSAL
Munro R TollnerUnited KingdomAnna Fali QUALIFIED
Misaki K MarrierItalyIvan Magalhaes PROPOSAL
Morrow P FigeroaFranceAmy Elsner NEGOTIATION
Octavia T NickaBrazilIvan Magalhaes PROPOSAL
David E PerinBrazilOnyama Limba QUALIFIED
Maria B FlosiIndiaAnna Fali UNQUALIFIED
Misaki H ButtGermanyIvan Magalhaes UNQUALIFIED
Munro M StockhamItalyBernardo Dominic PROPOSAL
Julie J GarufiRussiaAsiya Javayant UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Silvio I SaylorsJapanIoni Bowcher PROPOSAL
Maria Z IturbideRussiaAnna Fali NEGOTIATION
Jeanfrancois D WaycottJapanIvan Magalhaes RENEWAL
Costa F DoeGermanyIoni Bowcher RENEWAL
Jeanfrancois X FigeroaArgentinaStephen Shaw UNQUALIFIED
Munro Q StensethAustraliaBernardo Dominic PROPOSAL
Tony T RutaFranceAnna Fali NEGOTIATION
Silvio O CaudyAustraliaIoni Bowcher PROPOSAL
Maria J AlbaresFranceIoni Bowcher NEW
Jefferson T MaletSpainIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily Q GlickFrance2024-03-26Chanay, Jeffrey A Esq NEW58Amy Elsner
1001Aruna P FerenczGermany2024-04-11Truhlar And Truhlar Attys NEGOTIATION93Asiya Javayant
1002Julie E WhobreyAustralia2024-04-12Truhlar And Truhlar Attys QUALIFIED35Amy Elsner
1003Mayumi H KuskoFrance2024-03-24Rousseaux, Michael Esq PROPOSAL31Stephen Shaw
1004Juan S InouyeArgentina2024-04-18Rangoni Of Florence QUALIFIED73Asiya Javayant
1005Sinclair H RulapaughGermany2024-03-29King, Christopher A Esq QUALIFIED95Asiya Javayant
1006Deepesh W GarufiAustralia2024-04-16Feltz Printing Service PROPOSAL41Amy Elsner
1007David D NestleSpain2024-04-19Buckley Miller Wright PROPOSAL69Elwin Sharvill
1008Ivar M RulapaughAustralia2024-04-15Dorl, James J Esq NEW2Ioni Bowcher
1009Wickens A FollerItaly2024-04-01Morlong Associates QUALIFIED40Stephen Shaw
1010Chavez T StockhamCanada2024-03-31Rousseaux, Michael Esq UNQUALIFIED62Onyama Limba
1011Morrow L MaletGermany2024-04-19Dorl, James J Esq PROPOSAL29Anna Fali
1012Smith G FollerIndia2024-04-05Commercial Press PROPOSAL90Elwin Sharvill
1013Kadeem P CaudyAustralia2024-04-12Chanay, Jeffrey A Esq RENEWAL63Elwin Sharvill
1014Izzy D BowleyJapan2024-04-03Buckley Miller Wright RENEWAL81Ivan Magalhaes
1015Julie S FlosiItaly2024-03-22Chapman, Ross E Esq PROPOSAL40Ivan Magalhaes
1016Aruna I NickaFrance2024-04-13Chemel, James L Cpa QUALIFIED47Amy Elsner
1017Faith Q MaletIndia2024-04-18King, Christopher A Esq NEW31Anna Fali
1018Kadeem O BriddickAustralia2024-04-10Rousseaux, Michael Esq NEGOTIATION63Anna Fali
1019Adams N StensethBrazil2024-03-22Rangoni Of Florence RENEWAL24Bernardo Dominic
1020Juan S PerinFrance2024-04-08Commercial Press NEGOTIATION26Bernardo Dominic
1021Aditya R BowleyJapan2024-04-13Chemel, James L Cpa NEGOTIATION39Bernardo Dominic
1022Costa L SergiCanada2024-04-12Feiner Bros NEGOTIATION62Amy Elsner
1023Clifford J TollnerJapan2024-03-21Benton, John B Jr RENEWAL46Ivan Magalhaes
1024Arvin S RimIndia2024-03-22Commercial Press RENEWAL52Stephen Shaw
1025Morrow K PoquetteSpain2024-04-15Dorl, James J Esq NEGOTIATION67Ivan Magalhaes
1026Ashley Y MaletSpain2024-03-31King, Christopher A Esq UNQUALIFIED41Onyama Limba
1027Greenwood L RulapaughItaly2024-04-18Rousseaux, Michael Esq NEW57Xuxue Feng
1028Jennifer M BowleyRussia2024-03-30Printing Dimensions NEW30Xuxue Feng
1029Greenwood J FerenczAustralia2024-04-08King, Christopher A Esq QUALIFIED82Ivan Magalhaes
1030Salvatore L CaudyCanada2024-04-13Chapman, Ross E Esq PROPOSAL94Elwin Sharvill
1031Clifford G RoysterRussia2024-03-28Feiner Bros NEGOTIATION82Elwin Sharvill
1032Costa X FigeroaBrazil2024-04-19Commercial Press UNQUALIFIED45Amy Elsner
1033Stacey W StensethIndia2024-04-07Chapman, Ross E Esq NEGOTIATION32Xuxue Feng
1034Izzy F SchemmerArgentina2024-04-09Dorl, James J Esq NEW76Anna Fali
1035Sinclair P FigeroaAustralia2024-03-24Chemel, James L Cpa NEGOTIATION48Onyama Limba
1036David N PoquetteItaly2024-03-24Printing Dimensions NEGOTIATION53Stephen Shaw
1037Mujtaba P BriddickAustralia2024-04-05King, Christopher A Esq NEW8Bernardo Dominic
1038Adams I CaldareraJapan2024-04-13Rangoni Of Florence NEGOTIATION10Onyama Limba
1039Misaki N AlbaresJapan2024-03-23Printing Dimensions PROPOSAL87Asiya Javayant
1040Francesco R MaletArgentina2024-04-04Morlong Associates NEW57Asiya Javayant
1041Juan R OldroydRussia2024-04-10Chapman, Ross E Esq NEW92Amy Elsner
1042Wickens V FlosiCanada2024-03-31Dorl, James J Esq UNQUALIFIED12Stephen Shaw
1043Leon L FerenczAustralia2024-04-13Dorl, James J Esq UNQUALIFIED13Bernardo Dominic
1044Stacey T MaletSpain2024-03-23Printing Dimensions QUALIFIED32Bernardo Dominic
1045Jones M ChuiJapan2024-04-01Chapman, Ross E Esq NEGOTIATION85Bernardo Dominic
1046Leon T GillianCanada2024-04-01King, Christopher A Esq UNQUALIFIED32Ivan Magalhaes
1047Ivar B ChuiFrance2024-04-01Benton, John B Jr NEGOTIATION67Amy Elsner
1048Salvatore W RoysterBrazil2024-04-11Chemel, James L Cpa QUALIFIED84Bernardo Dominic
1049Aruna Z WhobreyRussia2024-04-16Buckley Miller Wright UNQUALIFIED0Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Juan Z AlbaresSpainIvan Magalhaes NEGOTIATION
Maisha Q VocelkaAustraliaBernardo Dominic NEW
Antonio S FollerBrazilElwin Sharvill QUALIFIED
Claire E DarakjyRussiaBernardo Dominic NEGOTIATION
Clifford X AmigonItalyIoni Bowcher QUALIFIED
Murillo P MarrierUnited KingdomAnna Fali PROPOSAL
Tony V ChuiRussiaAsiya Javayant RENEWAL
Tony M GarufiGermanyAmy Elsner UNQUALIFIED
Morrow D OstroskyJapanIvan Magalhaes PROPOSAL
Aika F NestleGermanyXuxue Feng QUALIFIED
Emily U IturbideRussiaOnyama Limba NEGOTIATION
Deepesh U VenereArgentinaAsiya Javayant PROPOSAL
Faith Q RutaIndiaAmy Elsner NEW
Clifford Q GillianIndiaOnyama Limba PROPOSAL
Arvin F FollerAustraliaXuxue Feng NEGOTIATION
Faith B MacleadCanadaIvan Magalhaes PROPOSAL
Stacey U IturbideIndiaXuxue Feng PROPOSAL
Smith E MorascaBrazilAnna Fali NEGOTIATION
Jones X TollnerItalyIvan Magalhaes NEGOTIATION
Claire C TollnerFranceOnyama Limba UNQUALIFIED
Rodrigues Y AlbaresSpainElwin Sharvill NEW
Aditya U PerinJapanIoni Bowcher RENEWAL
Cody B MaletAustraliaOnyama Limba UNQUALIFIED
Johnson A GlickCanadaAmy Elsner RENEWAL
Jeanfrancois I OstroskyItalyBernardo Dominic NEW
Ashley H FigeroaArgentinaIvan Magalhaes NEW
Aditya K FlosiRussiaElwin Sharvill RENEWAL
Deepesh C OstroskyArgentinaStephen Shaw PROPOSAL
Tony H MorascaUnited KingdomElwin Sharvill RENEWAL
David J DarakjyArgentinaStephen Shaw RENEWAL
Isabel I MaletJapanAmy Elsner NEW
Antonio P SlusarskiUnited KingdomIoni Bowcher NEW
Arvin U KuskoAustraliaIvan Magalhaes RENEWAL
Deepesh W VocelkaItalyAnna Fali NEGOTIATION
Isabel B SergiFranceAmy Elsner UNQUALIFIED
Clifford D BowleyFranceStephen Shaw NEW
Rodrigues I CampainUnited KingdomAnna Fali RENEWAL
Arvin I FlosiAustraliaAmy Elsner QUALIFIED
Kaitlin U RoysterFranceIvan Magalhaes NEW
James C KuskoCanadaOnyama Limba NEW
David Y VenereRussiaAmy Elsner NEGOTIATION
Leon M AmigonArgentinaIvan Magalhaes PROPOSAL
Octavia I PoquetteAustraliaElwin Sharvill NEW
Aditya J KuskoArgentinaBernardo Dominic UNQUALIFIED
Aruna P MaletRussiaAnna Fali NEGOTIATION
Emily E DilliardItalyElwin Sharvill NEGOTIATION
Rodrigues O WieserBrazilBernardo Dominic NEW
Leja M CaldareraArgentinaElwin Sharvill QUALIFIED
Octavia L GarufiRussiaAsiya Javayant UNQUALIFIED
Mayumi R SlusarskiFranceIvan Magalhaes QUALIFIED
Frozen Columns
Name
Wickens P Nestle
Stacey U Figeroa
Murillo Q Ruta
Antonio G Nicka
Leja T Briddick
Sinclair A Ferencz
Adams C Caudy
Faith R Venere
Alejandro L Nicka
Arvin Q Bolognia
Ricardo F Rulapaugh
Francesco N Rulapaugh
Murillo P Paprocki
Cody N Wieser
Francesco D Briddick
Munro L Kolmetz
Silvio V Waycott
Juan V Briddick
Juan J Marrier
Octavia T Slusarski
Arvin J Figeroa
Chavez J Paprocki
Stacey F Poquette
Jones B Flosi
Aika Z Wieser
Munro S Caudy
Johnson S Caldarera
Kadeem R Albares
Alejandro V Slusarski
Smith Q Sergi
Claire X Sergi
Aika J Ostrosky
Maisha W Figeroa
Rodrigues Z Schemmer
Izzy M Shinko
Deepesh A Inouye
Clifford G Inouye
Maisha E Whobrey
Cody T Kusko
Jefferson R Oldroyd
David G Albares
Ivar S Figeroa
Sinclair Z Malet
Emily N Bolognia
Alejandro Z Chui
Maisha O Bolognia
Leon T Ostrosky
Jennifer L Glick
Clifford V Bolognia
Faith Q Nicka
IdCountryDate
1000Argentina2024-03-27
1001India2024-03-28
1002India2024-04-10
1003France2024-04-18
1004Japan2024-04-11
1005Canada2024-04-04
1006Russia2024-03-24
1007Russia2024-04-04
1008Brazil2024-04-03
1009Canada2024-04-07
1010Canada2024-04-19
1011Germany2024-03-29
1012Japan2024-03-25
1013Australia2024-04-05
1014Argentina2024-04-18
1015India2024-03-30
1016Argentina2024-04-07
1017India2024-04-08
1018Germany2024-03-28
1019Australia2024-04-07
1020Russia2024-03-23
1021Brazil2024-04-17
1022Russia2024-04-19
1023Italy2024-04-17
1024United Kingdom2024-04-12
1025Argentina2024-03-28
1026Brazil2024-04-15
1027Brazil2024-04-13
1028India2024-04-05
1029Canada2024-03-26
1030India2024-04-02
1031Japan2024-04-08
1032Spain2024-04-08
1033Australia2024-03-22
1034Italy2024-03-23
1035Brazil2024-04-03
1036Canada2024-04-04
1037Italy2024-04-18
1038Japan2024-04-02
1039Brazil2024-03-22
1040Germany2024-04-19
1041Japan2024-04-07
1042Australia2024-04-19
1043Germany2024-03-21
1044Canada2024-04-03
1045Australia2024-04-05
1046Spain2024-04-10
1047Brazil2024-04-11
1048Brazil2024-04-10
1049Germany2024-04-15

On-Demand Data

NameIdCountryDate
Mayumi U Campain1000Australia2024-03-28
Greenwood D Marrier1001Argentina2024-04-17
Maisha J Whobrey1002Japan2024-03-28
Jefferson P Dilliard1003Germany2024-04-13
Aruna L Flosi1004United Kingdom2024-03-26
Arvin X Malet1005Argentina2024-04-10
Jefferson C Albares1006Australia2024-04-19
Aditya U Caudy1007Argentina2024-04-07
Munro D Ruta1008United Kingdom2024-04-08
Nicolas Q Marrier1009India2024-04-15
Jones P Bowley1010Brazil2024-03-28
Salvatore L Tollner1011Germany2024-03-21
Sinclair B Stockham1012India2024-04-05
Deepesh I Amigon1013Canada2024-04-10
Costa Z Campain1014Argentina2024-04-18
Aruna T Vocelka1015Australia2024-04-01
Antonio A Malet1016France2024-04-09
Jennifer C Glick1017United Kingdom2024-03-29
Maisha R Caldarera1018United Kingdom2024-03-27
Maria S Marrier1019Argentina2024-03-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire W SergiBrazilElwin Sharvill NEW
Arvin Z BowleyGermanyBernardo Dominic NEGOTIATION
Julie I ButtUnited KingdomAsiya Javayant NEW
Stacey D RutaJapanIoni Bowcher NEW
Morrow X CampainFranceXuxue Feng NEW
Wickens I DilliardRussiaIvan Magalhaes UNQUALIFIED
Deepesh D InouyeItalyBernardo Dominic QUALIFIED
Maria T CaudyGermanyXuxue Feng PROPOSAL
Ivar E GlickSpainAsiya Javayant NEGOTIATION
Rodrigues T AlbaresArgentinaOnyama Limba NEGOTIATION
Jones F SlusarskiSpainAmy Elsner QUALIFIED
Costa X NickaSpainIvan Magalhaes NEGOTIATION
Johnson M KuskoSpainAmy Elsner NEGOTIATION
Costa D SergiSpainIvan Magalhaes UNQUALIFIED
Deepesh Z KuskoArgentinaElwin Sharvill NEW
Morrow Z PaprockiAustraliaIvan Magalhaes NEGOTIATION
Cody U WieserGermanyIoni Bowcher NEGOTIATION
Aika M MacleadCanadaBernardo Dominic QUALIFIED
Cody T WieserAustraliaOnyama Limba UNQUALIFIED
Isabel J ChuiSpainXuxue Feng UNQUALIFIED
Tony C FigeroaJapanAsiya Javayant NEGOTIATION
Nicolas P FerenczIndiaIvan Magalhaes NEW
Johnson I OldroydItalyAmy Elsner PROPOSAL
Jones M NickaBrazilBernardo Dominic QUALIFIED
Isabel A ChuiFranceBernardo Dominic UNQUALIFIED
Stacey K MaletSpainElwin Sharvill NEGOTIATION
Munro N MarrierArgentinaElwin Sharvill RENEWAL
Darci Y WieserArgentinaIoni Bowcher PROPOSAL
Deepesh E AmigonItalyAsiya Javayant QUALIFIED
Leja E FollerItalyStephen Shaw UNQUALIFIED
Kadeem B OldroydRussiaXuxue Feng PROPOSAL
Ivar Y PaprockiRussiaStephen Shaw PROPOSAL
Octavia I StockhamFranceAsiya Javayant QUALIFIED
Tony G BowleyFranceAsiya Javayant NEGOTIATION
Greenwood S RoysterArgentinaAsiya Javayant UNQUALIFIED
Chavez N GauchoFranceAmy Elsner NEW
Murillo U NickaAustraliaIvan Magalhaes UNQUALIFIED
Murillo T PoquetteFranceIvan Magalhaes PROPOSAL
Ashley X StensethUnited KingdomIoni Bowcher NEGOTIATION
Juan W MaletItalyXuxue 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>