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
Claire A BriddickAustraliaAmy Elsner NEGOTIATION
Mujtaba S RimBrazilIoni Bowcher NEW
Smith Y FigeroaFranceOnyama Limba QUALIFIED
Aditya S AlbaresUnited KingdomOnyama Limba PROPOSAL
Chavez C SlusarskiFranceXuxue Feng PROPOSAL
Darci B FollerArgentinaStephen Shaw NEGOTIATION
Tony X SaylorsRussiaAnna Fali RENEWAL
Sinclair I FlosiItalyStephen Shaw UNQUALIFIED
Johnson W StockhamUnited KingdomIvan Magalhaes QUALIFIED
James L VenereCanadaBernardo Dominic NEW
Costa K OstroskyIndiaXuxue Feng NEGOTIATION
Chavez R TollnerCanadaStephen Shaw UNQUALIFIED
Aditya L KuskoArgentinaAnna Fali NEGOTIATION
Juan H RimArgentinaAnna Fali PROPOSAL
David J KolmetzFranceAsiya Javayant NEGOTIATION
Jefferson J ButtBrazilIoni Bowcher RENEWAL
Mujtaba W StockhamFranceElwin Sharvill RENEWAL
David E RoysterUnited KingdomAsiya Javayant UNQUALIFIED
Darci I OldroydFranceIvan Magalhaes QUALIFIED
Ricardo H StockhamBrazilIvan Magalhaes RENEWAL
Ivar G RulapaughCanadaAmy Elsner PROPOSAL
Aika J KolmetzGermanyStephen Shaw NEW
Isabel Z GillianIndiaElwin Sharvill QUALIFIED
Adams F RulapaughItalyElwin Sharvill QUALIFIED
Silvio E CampainBrazilXuxue Feng RENEWAL
Kadeem S NickaBrazilStephen Shaw RENEWAL
Kadeem O GillianItalyIvan Magalhaes UNQUALIFIED
Francesco K BologniaJapanAnna Fali RENEWAL
Salvatore K WieserFranceAsiya Javayant NEGOTIATION
David H BriddickSpainOnyama Limba NEW
Aruna J BologniaGermanyAsiya Javayant PROPOSAL
Misaki U VenereFranceAmy Elsner PROPOSAL
Jennifer R CampainUnited KingdomAnna Fali QUALIFIED
Mayumi B WaycottGermanyStephen Shaw RENEWAL
Jefferson V WieserGermanyOnyama Limba UNQUALIFIED
Leon A GillianSpainAsiya Javayant NEGOTIATION
Emily Y CaldareraIndiaStephen Shaw RENEWAL
Julie C GarufiSpainBernardo Dominic NEGOTIATION
Octavia G NestleFranceIvan Magalhaes RENEWAL
Greenwood G PaprockiCanadaAnna Fali NEGOTIATION
Ricardo I ChuiSpainStephen Shaw NEGOTIATION
Chavez J FerenczJapanIvan Magalhaes QUALIFIED
Tony Z ChuiJapanAsiya Javayant NEGOTIATION
Sinclair D MaletSpainIvan Magalhaes PROPOSAL
Claire B NickaItalyIoni Bowcher NEW
Leja L WieserGermanyAnna Fali PROPOSAL
Chavez R IturbideIndiaElwin Sharvill RENEWAL
Octavia O KolmetzBrazilXuxue Feng QUALIFIED
Deepesh N KolmetzGermanyAmy Elsner NEW
Isabel X CampainCanadaXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Tony B FerenczSpainAmy Elsner UNQUALIFIED
Jones A AmigonUnited KingdomOnyama Limba PROPOSAL
Arvin P GauchoIndiaElwin Sharvill UNQUALIFIED
David I BowleyFranceBernardo Dominic NEW
Murillo O VenereCanadaXuxue Feng UNQUALIFIED
Johnson N NickaItalyElwin Sharvill UNQUALIFIED
Ivar J RoysterUnited KingdomAmy Elsner QUALIFIED
Cody B SaylorsIndiaBernardo Dominic QUALIFIED
Morrow U VenereUnited KingdomStephen Shaw NEGOTIATION
Arvin P IturbideItalyOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez V SlusarskiBrazil2024-04-23Buckley Miller Wright UNQUALIFIED74Elwin Sharvill
1001Morrow D GillianArgentina2024-04-26Chapman, Ross E Esq QUALIFIED89Onyama Limba
1002Leja A KuskoCanada2024-04-24Chapman, Ross E Esq NEGOTIATION39Bernardo Dominic
1003Izzy J VocelkaIndia2024-05-08Benton, John B Jr UNQUALIFIED41Elwin Sharvill
1004Leja K WieserFrance2024-04-19Morlong Associates NEW55Ioni Bowcher
1005Julie P DoeJapan2024-04-28Rangoni Of Florence NEW87Stephen Shaw
1006Rodrigues C WieserJapan2024-05-04Truhlar And Truhlar Attys PROPOSAL79Asiya Javayant
1007Isabel Q GauchoJapan2024-04-23Benton, John B Jr PROPOSAL10Bernardo Dominic
1008Maria D StensethCanada2024-04-29Truhlar And Truhlar Attys NEW33Amy Elsner
1009Juan X FollerGermany2024-04-22Rangoni Of Florence NEGOTIATION97Asiya Javayant
1010Deepesh E MorascaArgentina2024-04-13Commercial Press QUALIFIED0Stephen Shaw
1011Johnson S IturbideGermany2024-04-23Dorl, James J Esq RENEWAL76Ivan Magalhaes
1012Rodrigues V SaylorsCanada2024-04-28Rousseaux, Michael Esq NEW7Anna Fali
1013Darci S WhobreySpain2024-04-29Chapman, Ross E Esq NEW13Stephen Shaw
1014Leon A StockhamFrance2024-04-29Feiner Bros RENEWAL22Stephen Shaw
1015Silvio D VenereUnited Kingdom2024-05-06Commercial Press NEGOTIATION60Stephen Shaw
1016Maria S VenereBrazil2024-04-12King, Christopher A Esq NEW32Ioni Bowcher
1017Mayumi U FigeroaJapan2024-04-12Chemel, James L Cpa QUALIFIED26Anna Fali
1018Nicolas R AmigonFrance2024-04-17Rangoni Of Florence UNQUALIFIED23Elwin Sharvill
1019Faith I ChuiIndia2024-05-08Rousseaux, Michael Esq UNQUALIFIED25Bernardo Dominic
1020Isabel L CampainBrazil2024-04-26Chanay, Jeffrey A Esq NEW40Ioni Bowcher
1021Jones A FlosiItaly2024-04-18Benton, John B Jr PROPOSAL4Elwin Sharvill
1022Emily F PoquetteCanada2024-04-23Truhlar And Truhlar Attys NEGOTIATION22Asiya Javayant
1023Ashley E BowleyGermany2024-04-18Feltz Printing Service RENEWAL92Xuxue Feng
1024Aditya Y NickaIndia2024-04-20Rangoni Of Florence PROPOSAL68Ivan Magalhaes
1025Murillo H OldroydJapan2024-05-04Benton, John B Jr NEGOTIATION92Asiya Javayant
1026Aika G DilliardCanada2024-05-03Dorl, James J Esq RENEWAL19Amy Elsner
1027Chavez K RulapaughGermany2024-04-25Chemel, James L Cpa PROPOSAL7Stephen Shaw
1028Antonio A MaletCanada2024-04-15King, Christopher A Esq NEW4Anna Fali
1029Greenwood X VenereAustralia2024-04-28Rangoni Of Florence NEW49Anna Fali
1030Murillo U PoquetteGermany2024-04-19Printing Dimensions NEGOTIATION72Xuxue Feng
1031Faith X ShinkoSpain2024-04-26Chanay, Jeffrey A Esq PROPOSAL27Amy Elsner
1032Salvatore D GarufiFrance2024-04-10Printing Dimensions QUALIFIED58Bernardo Dominic
1033Silvio Z BriddickRussia2024-04-13Dorl, James J Esq RENEWAL58Ioni Bowcher
1034Kaitlin C RimArgentina2024-04-11Feiner Bros RENEWAL92Asiya Javayant
1035Smith G FigeroaFrance2024-05-02Buckley Miller Wright QUALIFIED7Stephen Shaw
1036Wickens H IturbideArgentina2024-05-05Dorl, James J Esq RENEWAL50Amy Elsner
1037Nicolas P SergiBrazil2024-04-14Printing Dimensions PROPOSAL64Asiya Javayant
1038Isabel G VocelkaJapan2024-04-30King, Christopher A Esq RENEWAL34Elwin Sharvill
1039Silvio A WieserUnited Kingdom2024-04-27Chanay, Jeffrey A Esq NEGOTIATION28Anna Fali
1040Jones R DilliardCanada2024-04-29Chemel, James L Cpa NEW61Stephen Shaw
1041Greenwood S VocelkaGermany2024-04-28Dorl, James J Esq UNQUALIFIED88Ivan Magalhaes
1042Deepesh F CaudyBrazil2024-05-04Truhlar And Truhlar Attys RENEWAL21Amy Elsner
1043Johnson S PaprockiIndia2024-04-19Chanay, Jeffrey A Esq NEW4Asiya Javayant
1044Chavez S ButtRussia2024-05-07Morlong Associates PROPOSAL5Stephen Shaw
1045Leon T RimRussia2024-04-28Truhlar And Truhlar Attys RENEWAL65Bernardo Dominic
1046Kaitlin I MacleadBrazil2024-05-07Dorl, James J Esq QUALIFIED91Onyama Limba
1047Leja A RutaBrazil2024-05-08Printing Dimensions NEW44Anna Fali
1048Darci I RimCanada2024-04-14Rousseaux, Michael Esq PROPOSAL55Bernardo Dominic
1049Maisha U WhobreyUnited Kingdom2024-05-02Morlong Associates NEGOTIATION88Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Morrow V OldroydRussiaBernardo Dominic QUALIFIED
Misaki B ShinkoGermanyAnna Fali NEW
Murillo K VenereCanadaOnyama Limba NEW
Kaitlin W KuskoAustraliaIoni Bowcher QUALIFIED
Johnson D RoysterFranceAnna Fali NEGOTIATION
Maisha E AlbaresCanadaAmy Elsner PROPOSAL
Munro Y GarufiGermanyIoni Bowcher NEW
Murillo P GauchoSpainStephen Shaw PROPOSAL
Juan H MacleadGermanyAsiya Javayant UNQUALIFIED
Octavia C MaletIndiaBernardo Dominic UNQUALIFIED
Leja O GauchoUnited KingdomIvan Magalhaes NEGOTIATION
Alejandro M DoeJapanBernardo Dominic NEW
Misaki C RimCanadaIvan Magalhaes UNQUALIFIED
Juan R KolmetzRussiaAnna Fali QUALIFIED
Emily K ShinkoAustraliaAnna Fali RENEWAL
Mujtaba H DarakjyArgentinaBernardo Dominic RENEWAL
David I KolmetzGermanyAnna Fali UNQUALIFIED
Stacey T FlosiJapanOnyama Limba QUALIFIED
Ashley Y MarrierRussiaOnyama Limba RENEWAL
Morrow G IturbideIndiaElwin Sharvill NEGOTIATION
Nicolas C DarakjyBrazilBernardo Dominic NEW
Adams Q GauchoArgentinaXuxue Feng PROPOSAL
Smith U GillianGermanyBernardo Dominic PROPOSAL
Smith Z GillianGermanyIvan Magalhaes UNQUALIFIED
Stacey J StockhamCanadaAsiya Javayant RENEWAL
Antonio I FlosiCanadaXuxue Feng NEW
Tony N StensethIndiaBernardo Dominic PROPOSAL
Johnson P VenereCanadaXuxue Feng NEW
Claire Y RimUnited KingdomStephen Shaw NEW
Jennifer M SchemmerArgentinaAmy Elsner PROPOSAL
Emily G FerenczCanadaXuxue Feng RENEWAL
Misaki E MarrierBrazilStephen Shaw QUALIFIED
Jeanfrancois W NestleIndiaStephen Shaw QUALIFIED
Costa H VocelkaAustraliaXuxue Feng PROPOSAL
Sinclair S RoysterItalyAmy Elsner PROPOSAL
Sinclair V MarrierSpainAnna Fali NEGOTIATION
Jefferson V IturbideBrazilBernardo Dominic NEW
Emily Q KolmetzAustraliaXuxue Feng NEGOTIATION
Wickens E KolmetzAustraliaXuxue Feng NEW
Julie J MacleadFranceAsiya Javayant NEGOTIATION
Jeanfrancois J VenereFranceOnyama Limba RENEWAL
Jones B MorascaIndiaAsiya Javayant NEW
Silvio J RoysterArgentinaAsiya Javayant PROPOSAL
Maria R CaldareraCanadaIoni Bowcher QUALIFIED
Julie V MarrierCanadaAmy Elsner NEW
Smith D MorascaIndiaBernardo Dominic QUALIFIED
Misaki Q FlosiRussiaStephen Shaw NEW
Greenwood Q BologniaArgentinaIoni Bowcher QUALIFIED
Johnson G DilliardIndiaAmy Elsner PROPOSAL
Rodrigues X BowleySpainAmy Elsner UNQUALIFIED
Frozen Columns
Name
Rodrigues H Wieser
Isabel M Perin
Mujtaba F Butt
Ivar L Doe
Nicolas W Waycott
Jefferson F Darakjy
Misaki J Flosi
Sinclair Q Dilliard
Adams H Saylors
Munro P Dilliard
James K Butt
Rodrigues C Iturbide
Alejandro E Campain
Greenwood H Amigon
Costa Q Darakjy
Maisha K Inouye
Munro H Tollner
Deepesh K Caudy
Cody C Venere
Morrow R Morasca
Jennifer T Rim
Aditya A Foller
Morrow Q Stenseth
Jennifer D Waycott
David J Paprocki
Claire Y Dilliard
Leon M Slusarski
Aruna L Schemmer
Alejandro A Dilliard
Darci W Malet
Stacey S Saylors
Cody I Royster
Leja P Maclead
Maisha F Tollner
Juan T Flosi
Greenwood R Stockham
Salvatore U Venere
Silvio P Bolognia
Jeanfrancois T Malet
Alejandro Q Malet
Greenwood J Gillian
Stacey E Morasca
Cody G Vocelka
Munro T Slusarski
Mayumi J Schemmer
Rodrigues R Butt
Deepesh U Waycott
Aruna O Malet
Leja H Inouye
David S Wieser
IdCountryDate
1000France2024-05-08
1001India2024-04-18
1002Japan2024-04-12
1003Japan2024-05-01
1004Germany2024-05-09
1005Germany2024-04-15
1006Italy2024-05-02
1007Spain2024-05-01
1008France2024-04-14
1009Brazil2024-04-14
1010Japan2024-04-21
1011Russia2024-04-12
1012Italy2024-05-05
1013Russia2024-05-03
1014India2024-04-27
1015France2024-04-27
1016Spain2024-05-05
1017United Kingdom2024-04-30
1018Italy2024-05-04
1019Russia2024-04-28
1020Japan2024-04-15
1021Italy2024-05-05
1022United Kingdom2024-04-25
1023Russia2024-04-15
1024Spain2024-05-03
1025Russia2024-04-27
1026Germany2024-04-24
1027Australia2024-04-11
1028United Kingdom2024-05-05
1029Brazil2024-05-06
1030India2024-05-04
1031India2024-04-15
1032Australia2024-04-23
1033Argentina2024-04-26
1034Argentina2024-04-16
1035Canada2024-05-07
1036Italy2024-04-18
1037Russia2024-04-22
1038Spain2024-04-18
1039Japan2024-04-23
1040Argentina2024-04-14
1041United Kingdom2024-04-17
1042Canada2024-05-02
1043Argentina2024-05-02
1044France2024-05-04
1045Japan2024-04-20
1046United Kingdom2024-04-20
1047Australia2024-04-21
1048Spain2024-04-15
1049India2024-04-28

On-Demand Data

NameIdCountryDate
Maisha V Nestle1000Italy2024-04-14
Sinclair D Gillian1001Canada2024-04-28
James N Caudy1002Argentina2024-04-21
Faith D Garufi1003Canada2024-04-20
Francesco W Slusarski1004Brazil2024-04-29
Arvin P Kusko1005Russia2024-05-09
Johnson Z Maclead1006Russia2024-04-22
Maria E Butt1007Canada2024-04-16
Costa U Garufi1008Canada2024-04-26
Morrow E Darakjy1009Japan2024-04-27
Jeanfrancois T Amigon1010United Kingdom2024-04-21
Ricardo W Slusarski1011United Kingdom2024-04-14
Arvin O Glick1012Japan2024-04-29
Darci S Bowley1013Canada2024-04-25
Greenwood G Chui1014Spain2024-05-08
Murillo H Nestle1015Japan2024-04-10
Johnson I Campain1016Russia2024-04-15
Morrow S Rim1017Brazil2024-04-27
Kadeem V Gaucho1018Germany2024-04-24
Murillo E Marrier1019India2024-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow P OldroydItalyXuxue Feng UNQUALIFIED
Claire G InouyeUnited KingdomXuxue Feng NEGOTIATION
Alejandro F InouyeJapanOnyama Limba UNQUALIFIED
Johnson O CaldareraArgentinaAmy Elsner NEW
Maria J MacleadGermanyBernardo Dominic PROPOSAL
Antonio G GauchoBrazilIvan Magalhaes PROPOSAL
Rodrigues Q GlickFranceXuxue Feng PROPOSAL
Jefferson G FigeroaArgentinaAmy Elsner QUALIFIED
Juan R StockhamArgentinaBernardo Dominic PROPOSAL
Claire R WieserFranceIvan Magalhaes QUALIFIED
Darci A StockhamUnited KingdomXuxue Feng PROPOSAL
Wickens T FollerSpainAnna Fali NEW
Ashley Y StockhamIndiaStephen Shaw NEGOTIATION
Izzy U DarakjyFranceAsiya Javayant QUALIFIED
Julie O PerinItalyIoni Bowcher PROPOSAL
Mayumi M ButtIndiaAnna Fali QUALIFIED
Kaitlin Z CampainAustraliaAnna Fali UNQUALIFIED
Arvin V MacleadCanadaAsiya Javayant RENEWAL
Johnson M RimArgentinaBernardo Dominic PROPOSAL
Smith Q KolmetzIndiaIoni Bowcher RENEWAL
Cody T FigeroaCanadaIvan Magalhaes QUALIFIED
Jeanfrancois P GarufiUnited KingdomElwin Sharvill NEW
Stacey R KuskoAustraliaXuxue Feng PROPOSAL
Leja I SchemmerSpainAnna Fali PROPOSAL
Ashley P BriddickGermanyAsiya Javayant NEGOTIATION
Ricardo E StockhamBrazilAnna Fali QUALIFIED
David C DarakjyCanadaIoni Bowcher UNQUALIFIED
David Q CampainGermanyAmy Elsner NEW
Silvio H RutaGermanyAnna Fali NEGOTIATION
Ricardo E CampainSpainAnna Fali NEW
Maisha O CaudyGermanyBernardo Dominic QUALIFIED
Kadeem P DarakjyIndiaOnyama Limba PROPOSAL
Murillo P NestleBrazilElwin Sharvill RENEWAL
Cody K ButtGermanyStephen Shaw UNQUALIFIED
Arvin C FlosiArgentinaBernardo Dominic RENEWAL
Rodrigues M RimCanadaIvan Magalhaes RENEWAL
Costa U RimGermanyStephen Shaw QUALIFIED
Wickens D FlosiArgentinaAmy Elsner QUALIFIED
Sinclair C DilliardUnited KingdomBernardo Dominic RENEWAL
Misaki K KuskoRussiaElwin Sharvill RENEWAL

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