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 U RulapaughFranceXuxue Feng PROPOSAL
Misaki B GauchoItalyAmy Elsner RENEWAL
Misaki P DarakjyItalyIvan Magalhaes UNQUALIFIED
Morrow K BriddickCanadaAsiya Javayant NEGOTIATION
Aditya H CaldareraAustraliaAmy Elsner NEW
Aika U CaldareraSpainAnna Fali PROPOSAL
Silvio F PerinAustraliaAnna Fali QUALIFIED
Stacey D NestleJapanAsiya Javayant NEW
Aika F MaletItalyElwin Sharvill PROPOSAL
Kadeem S GauchoSpainXuxue Feng NEGOTIATION
Maria I MacleadUnited KingdomStephen Shaw NEGOTIATION
Misaki Z ButtSpainStephen Shaw NEGOTIATION
Mayumi G KolmetzAustraliaIoni Bowcher RENEWAL
Maria Z BriddickCanadaAnna Fali PROPOSAL
Jennifer S NickaFranceIvan Magalhaes RENEWAL
Salvatore G BowleyJapanAmy Elsner QUALIFIED
Emily Z KuskoRussiaIvan Magalhaes QUALIFIED
Claire O BologniaJapanIoni Bowcher PROPOSAL
Deepesh V KuskoGermanyStephen Shaw UNQUALIFIED
Jennifer P SchemmerFranceAsiya Javayant QUALIFIED
Leja Y VocelkaSpainIvan Magalhaes RENEWAL
Greenwood W NestleUnited KingdomStephen Shaw PROPOSAL
Mayumi B MarrierAustraliaIvan Magalhaes QUALIFIED
Greenwood E BriddickIndiaIoni Bowcher PROPOSAL
Costa O StockhamGermanyBernardo Dominic NEGOTIATION
Leja D OstroskyArgentinaStephen Shaw QUALIFIED
Wickens V StensethIndiaAsiya Javayant NEW
Tony R ChuiArgentinaIvan Magalhaes PROPOSAL
Juan L BologniaAustraliaElwin Sharvill QUALIFIED
Ivar T GlickIndiaIoni Bowcher QUALIFIED
Chavez A PoquetteItalyStephen Shaw UNQUALIFIED
Alejandro P RoysterIndiaBernardo Dominic RENEWAL
Aruna Y DarakjyCanadaStephen Shaw UNQUALIFIED
Munro E SchemmerJapanIvan Magalhaes PROPOSAL
Adams H SlusarskiGermanyXuxue Feng UNQUALIFIED
Aruna D SergiAustraliaAmy Elsner RENEWAL
Mayumi Z PaprockiArgentinaAmy Elsner NEGOTIATION
Isabel I StensethIndiaIoni Bowcher RENEWAL
Costa S NestleIndiaXuxue Feng NEGOTIATION
Juan Z WaycottUnited KingdomAsiya Javayant RENEWAL
Sinclair T FlosiArgentinaElwin Sharvill RENEWAL
Tony T SaylorsIndiaStephen Shaw UNQUALIFIED
James G MaletItalyIoni Bowcher QUALIFIED
Ashley O RutaItalyIoni Bowcher QUALIFIED
Chavez P AmigonFranceAnna Fali QUALIFIED
Misaki U MacleadIndiaAmy Elsner RENEWAL
Aika C FlosiCanadaIvan Magalhaes QUALIFIED
Claire G RutaRussiaIvan Magalhaes NEW
Cody D PoquetteIndiaIvan Magalhaes PROPOSAL
Maria O WieserSpainAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Misaki W SaylorsFranceIvan Magalhaes QUALIFIED
Antonio A CaudyRussiaAnna Fali NEGOTIATION
Jennifer C FlosiCanadaOnyama Limba PROPOSAL
Nicolas E ShinkoSpainAnna Fali QUALIFIED
Cody A DarakjyCanadaXuxue Feng QUALIFIED
Adams J GauchoIndiaOnyama Limba NEW
Kadeem U ChuiUnited KingdomElwin Sharvill RENEWAL
Wickens R WaycottIndiaAnna Fali RENEWAL
Misaki P VenereCanadaAsiya Javayant RENEWAL
Salvatore M OstroskyIndiaStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki V GlickSpain2024-04-06Rousseaux, Michael Esq RENEWAL48Anna Fali
1001Darci S KolmetzSpain2024-03-23Buckley Miller Wright UNQUALIFIED61Amy Elsner
1002Kadeem L AlbaresUnited Kingdom2024-04-14Truhlar And Truhlar Attys QUALIFIED18Stephen Shaw
1003David C RutaJapan2024-04-09Feiner Bros UNQUALIFIED26Elwin Sharvill
1004Misaki F FigeroaFrance2024-04-13Feiner Bros PROPOSAL39Amy Elsner
1005Costa E PoquetteItaly2024-04-14Commercial Press PROPOSAL76Onyama Limba
1006Ashley O MarrierRussia2024-03-31King, Christopher A Esq UNQUALIFIED55Ioni Bowcher
1007Aika F FigeroaAustralia2024-04-03Commercial Press NEW20Bernardo Dominic
1008James S BologniaArgentina2024-03-27Feltz Printing Service QUALIFIED62Onyama Limba
1009Munro D IturbideSpain2024-03-28Dorl, James J Esq PROPOSAL13Xuxue Feng
1010Arvin N IturbideBrazil2024-03-31Dorl, James J Esq NEW90Bernardo Dominic
1011Morrow A KolmetzRussia2024-04-05Buckley Miller Wright NEGOTIATION10Anna Fali
1012Johnson Z KolmetzJapan2024-03-24King, Christopher A Esq NEW43Stephen Shaw
1013Octavia L TollnerUnited Kingdom2024-03-31Rangoni Of Florence QUALIFIED21Anna Fali
1014Claire P OstroskyIndia2024-03-31Feiner Bros RENEWAL64Xuxue Feng
1015Darci U ShinkoAustralia2024-03-29Chapman, Ross E Esq UNQUALIFIED47Amy Elsner
1016Murillo M SaylorsSpain2024-04-18Commercial Press QUALIFIED18Stephen Shaw
1017Leja A VenereJapan2024-04-06Benton, John B Jr NEGOTIATION36Ioni Bowcher
1018Kaitlin M TollnerGermany2024-04-02King, Christopher A Esq UNQUALIFIED74Elwin Sharvill
1019Antonio U PaprockiGermany2024-04-16Feltz Printing Service QUALIFIED23Anna Fali
1020Isabel E PaprockiRussia2024-04-12King, Christopher A Esq PROPOSAL46Bernardo Dominic
1021Jefferson E DilliardItaly2024-04-18Rousseaux, Michael Esq PROPOSAL24Anna Fali
1022Deepesh V GillianBrazil2024-04-04Feiner Bros QUALIFIED48Ivan Magalhaes
1023Aditya G WieserItaly2024-04-10Chemel, James L Cpa NEGOTIATION39Stephen Shaw
1024Ricardo A PaprockiGermany2024-04-09Morlong Associates UNQUALIFIED54Onyama Limba
1025Wickens T GillianFrance2024-03-28Truhlar And Truhlar Attys UNQUALIFIED4Elwin Sharvill
1026Rodrigues V KolmetzCanada2024-03-26Benton, John B Jr NEW39Onyama Limba
1027Leja F StockhamBrazil2024-04-06Morlong Associates QUALIFIED41Xuxue Feng
1028Nicolas N StockhamBrazil2024-03-25Chemel, James L Cpa QUALIFIED87Anna Fali
1029Ashley D CaudyRussia2024-04-04Printing Dimensions UNQUALIFIED77Asiya Javayant
1030Morrow T CaudyIndia2024-04-04Rousseaux, Michael Esq QUALIFIED84Onyama Limba
1031Mayumi P MorascaCanada2024-03-21Chapman, Ross E Esq RENEWAL34Stephen Shaw
1032Aditya U FollerBrazil2024-04-07Feltz Printing Service UNQUALIFIED71Stephen Shaw
1033Mayumi Y PerinBrazil2024-03-22Truhlar And Truhlar Attys NEW59Asiya Javayant
1034Wickens V WhobreyGermany2024-04-01Commercial Press NEW46Stephen Shaw
1035David X ChuiIndia2024-04-01Dorl, James J Esq PROPOSAL95Asiya Javayant
1036Stacey W RulapaughRussia2024-03-21Buckley Miller Wright NEW63Amy Elsner
1037Mujtaba K DarakjyRussia2024-03-29Feiner Bros NEW4Asiya Javayant
1038Ivar V CaudyUnited Kingdom2024-03-28Truhlar And Truhlar Attys NEGOTIATION19Xuxue Feng
1039Jefferson G DarakjyGermany2024-04-09Benton, John B Jr QUALIFIED21Stephen Shaw
1040Adams S CaldareraGermany2024-04-04Feiner Bros NEGOTIATION72Bernardo Dominic
1041David O PoquetteBrazil2024-04-16Morlong Associates NEGOTIATION25Bernardo Dominic
1042Maria X GlickCanada2024-04-03Feiner Bros UNQUALIFIED7Xuxue Feng
1043Alejandro A FlosiSpain2024-03-29Feiner Bros NEGOTIATION28Bernardo Dominic
1044Mujtaba K FlosiRussia2024-03-26Chanay, Jeffrey A Esq RENEWAL94Xuxue Feng
1045Octavia V MaletArgentina2024-03-22Benton, John B Jr QUALIFIED1Amy Elsner
1046Costa H MaletAustralia2024-03-27Chemel, James L Cpa RENEWAL34Elwin Sharvill
1047Julie P FigeroaUnited Kingdom2024-03-30Chanay, Jeffrey A Esq QUALIFIED4Xuxue Feng
1048Sinclair B SaylorsArgentina2024-04-16Chapman, Ross E Esq PROPOSAL79Elwin Sharvill
1049Adams U MarrierArgentina2024-04-11Commercial Press RENEWAL59Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Stacey C RoysterRussiaBernardo Dominic UNQUALIFIED
Ashley O GlickArgentinaBernardo Dominic UNQUALIFIED
Deepesh Z GillianSpainAmy Elsner NEGOTIATION
Munro E RutaIndiaBernardo Dominic NEGOTIATION
Johnson F WaycottRussiaXuxue Feng UNQUALIFIED
Johnson S AlbaresBrazilOnyama Limba NEGOTIATION
Juan U GlickGermanyIvan Magalhaes NEW
Ricardo V DilliardBrazilOnyama Limba PROPOSAL
Johnson Y KuskoUnited KingdomStephen Shaw RENEWAL
Antonio T VocelkaUnited KingdomXuxue Feng NEW
Cody F GarufiJapanBernardo Dominic NEGOTIATION
Isabel R DarakjyItalyStephen Shaw QUALIFIED
Munro L AmigonGermanyIvan Magalhaes PROPOSAL
Ashley F KuskoCanadaXuxue Feng RENEWAL
Claire L ButtUnited KingdomXuxue Feng QUALIFIED
Costa B VocelkaBrazilElwin Sharvill UNQUALIFIED
Claire S WaycottBrazilElwin Sharvill NEGOTIATION
James M KolmetzFranceAsiya Javayant NEW
Salvatore J WhobreyAustraliaAsiya Javayant NEGOTIATION
David G DoeRussiaBernardo Dominic NEW
Leon V FollerFranceElwin Sharvill RENEWAL
Murillo H VocelkaGermanyElwin Sharvill NEW
Wickens S MaletRussiaElwin Sharvill NEW
Morrow R SchemmerJapanAnna Fali NEW
Clifford E WhobreyBrazilXuxue Feng RENEWAL
Octavia H VenereRussiaIoni Bowcher QUALIFIED
Maisha Y ButtRussiaOnyama Limba UNQUALIFIED
Ricardo K WhobreyJapanElwin Sharvill PROPOSAL
Chavez S DoeFranceAsiya Javayant QUALIFIED
Arvin F WaycottCanadaXuxue Feng UNQUALIFIED
Darci R ChuiRussiaElwin Sharvill RENEWAL
Cody J TollnerSpainIoni Bowcher NEGOTIATION
Aika W DarakjyAustraliaAmy Elsner NEGOTIATION
Arvin Y KuskoJapanAnna Fali RENEWAL
Izzy U ShinkoSpainBernardo Dominic QUALIFIED
Costa V PerinItalyStephen Shaw UNQUALIFIED
Sinclair U MaletSpainAnna Fali NEW
Leon P MaletJapanIvan Magalhaes NEW
Deepesh X SergiSpainIoni Bowcher UNQUALIFIED
Rodrigues K VocelkaItalyStephen Shaw PROPOSAL
Izzy G PoquetteRussiaAsiya Javayant RENEWAL
Jennifer W GauchoSpainOnyama Limba UNQUALIFIED
Salvatore N NestleSpainXuxue Feng RENEWAL
Silvio O TollnerCanadaStephen Shaw RENEWAL
Stacey I CaldareraRussiaAsiya Javayant PROPOSAL
Arvin P CampainUnited KingdomBernardo Dominic QUALIFIED
Ashley C WieserArgentinaIvan Magalhaes QUALIFIED
Rodrigues R NestleBrazilElwin Sharvill NEW
Alejandro Q DarakjyCanadaAnna Fali NEW
Kadeem J WaycottRussiaAnna Fali UNQUALIFIED
Frozen Columns
Name
Rodrigues V Malet
Mujtaba I Saylors
Rodrigues H Albares
Ashley N Dilliard
Leja E Sergi
Stacey W Doe
Clifford E Waycott
Emily H Poquette
Kaitlin N Waycott
Silvio F Foller
Ricardo H Sergi
Jones G Campain
Leja D Nicka
Aditya Y Maclead
Tony B Amigon
Faith H Tollner
Johnson G Shinko
Antonio V Poquette
Cody B Shinko
Julie I Foller
David O Rulapaugh
Cody U Shinko
Faith S Caldarera
Salvatore C Bolognia
Greenwood K Kusko
Aika X Perin
Aditya H Rulapaugh
Tony O Rulapaugh
Antonio E Perin
Juan B Ruta
Faith Y Amigon
Leon X Campain
James M Stockham
Kaitlin P Rulapaugh
Leon C Stenseth
Rodrigues T Poquette
Maria L Doe
Wickens L Kusko
Kaitlin U Malet
Rodrigues H Darakjy
Alejandro Q Caudy
Stacey R Wieser
Salvatore F Iturbide
Aika P Oldroyd
Chavez C Bowley
Juan Z Bowley
Morrow V Campain
Johnson B Malet
Adams W Perin
Aditya E Nicka
IdCountryDate
1000Brazil2024-03-25
1001Australia2024-04-05
1002Italy2024-03-27
1003Australia2024-04-09
1004India2024-04-17
1005United Kingdom2024-04-17
1006Brazil2024-04-15
1007Germany2024-03-31
1008Canada2024-04-02
1009Australia2024-04-07
1010Canada2024-03-20
1011Germany2024-04-14
1012Germany2024-04-01
1013Russia2024-04-04
1014Brazil2024-03-25
1015Germany2024-04-17
1016India2024-03-21
1017Australia2024-03-24
1018Brazil2024-03-20
1019United Kingdom2024-04-15
1020United Kingdom2024-03-23
1021Australia2024-04-11
1022Spain2024-03-20
1023India2024-04-15
1024Australia2024-04-03
1025India2024-04-08
1026Argentina2024-03-31
1027Canada2024-04-01
1028Argentina2024-04-15
1029Brazil2024-04-12
1030Brazil2024-04-15
1031France2024-04-03
1032Argentina2024-03-31
1033United Kingdom2024-04-06
1034France2024-03-27
1035Russia2024-04-16
1036Italy2024-04-05
1037Brazil2024-03-25
1038Russia2024-04-17
1039Japan2024-04-04
1040Japan2024-03-20
1041Italy2024-03-21
1042India2024-04-16
1043Australia2024-03-22
1044Argentina2024-04-02
1045Argentina2024-03-22
1046United Kingdom2024-04-06
1047Italy2024-04-11
1048Brazil2024-04-13
1049Italy2024-04-01

On-Demand Data

NameIdCountryDate
Francesco A Campain1000Argentina2024-03-30
Tony I Caldarera1001Brazil2024-04-12
Arvin M Poquette1002Argentina2024-04-06
Emily P Royster1003Japan2024-04-09
Jefferson A Malet1004Japan2024-04-09
Sinclair S Wieser1005Italy2024-03-26
James C Flosi1006Canada2024-03-25
Misaki G Tollner1007Canada2024-04-15
Faith L Bolognia1008Australia2024-03-23
Nicolas E Marrier1009Canada2024-04-12
David Q Venere1010Australia2024-03-29
Deepesh W Ruta1011Brazil2024-04-17
Chavez O Amigon1012Brazil2024-03-21
Tony I Glick1013France2024-03-28
Faith I Bolognia1014France2024-04-02
Alejandro V Saylors1015Italy2024-03-25
Kaitlin K Gaucho1016Brazil2024-03-27
Chavez R Maclead1017United Kingdom2024-04-18
Mayumi D Gillian1018United Kingdom2024-03-20
Jones L Sergi1019France2024-03-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon I FerenczJapanOnyama Limba QUALIFIED
Francesco A AlbaresSpainAnna Fali UNQUALIFIED
Chavez N DoeBrazilElwin Sharvill PROPOSAL
Leja A FlosiSpainAsiya Javayant RENEWAL
Morrow M OstroskyFranceAnna Fali UNQUALIFIED
Costa O GauchoAustraliaAsiya Javayant QUALIFIED
Munro P FerenczSpainAsiya Javayant NEW
Adams A VenereArgentinaIvan Magalhaes UNQUALIFIED
Silvio V GauchoSpainIvan Magalhaes RENEWAL
Jones M RulapaughJapanElwin Sharvill UNQUALIFIED
Costa L IturbideArgentinaXuxue Feng QUALIFIED
Jefferson C FlosiItalyXuxue Feng NEW
Misaki Y ChuiItalyAnna Fali NEW
Murillo J DilliardFranceStephen Shaw NEW
Alejandro F MorascaItalyAnna Fali RENEWAL
Juan R RoysterUnited KingdomIvan Magalhaes PROPOSAL
Aruna R IturbideRussiaAsiya Javayant RENEWAL
Smith A PaprockiCanadaIvan Magalhaes PROPOSAL
Salvatore M KolmetzCanadaBernardo Dominic QUALIFIED
Ricardo A DarakjyArgentinaAsiya Javayant QUALIFIED
Smith X NestleBrazilAmy Elsner RENEWAL
Mayumi Q RulapaughItalyAsiya Javayant NEW
Nicolas V MaletArgentinaAmy Elsner UNQUALIFIED
Chavez L StockhamBrazilIvan Magalhaes RENEWAL
Jefferson T TollnerAustraliaXuxue Feng QUALIFIED
Francesco B OstroskyIndiaAnna Fali PROPOSAL
Claire Y RutaFranceIoni Bowcher QUALIFIED
Nicolas L PerinItalyStephen Shaw QUALIFIED
Murillo C RutaItalyBernardo Dominic NEGOTIATION
Octavia N InouyeBrazilBernardo Dominic QUALIFIED
Izzy U GarufiBrazilBernardo Dominic NEGOTIATION
Ricardo X MorascaFranceXuxue Feng NEGOTIATION
Aika Q PaprockiAustraliaXuxue Feng UNQUALIFIED
Sinclair W CaudyArgentinaStephen Shaw QUALIFIED
Ivar C RutaIndiaBernardo Dominic PROPOSAL
Ivar R NestleBrazilAmy Elsner QUALIFIED
Ricardo P KuskoIndiaOnyama Limba NEGOTIATION
Emily M IturbideAustraliaStephen Shaw PROPOSAL
Ivar M FlosiArgentinaAmy Elsner QUALIFIED
Silvio J VocelkaSpainElwin Sharvill PROPOSAL

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