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
Silvio U KolmetzGermanyElwin Sharvill NEW
Darci O FlosiAustraliaBernardo Dominic PROPOSAL
Clifford X WhobreyUnited KingdomStephen Shaw NEGOTIATION
Juan W NestleGermanyXuxue Feng PROPOSAL
Morrow B FerenczRussiaXuxue Feng UNQUALIFIED
Francesco I MorascaGermanyIoni Bowcher UNQUALIFIED
Smith P FlosiBrazilAsiya Javayant PROPOSAL
Murillo Q ButtArgentinaIvan Magalhaes PROPOSAL
Cody Q MorascaBrazilElwin Sharvill NEW
Leja J BowleySpainIoni Bowcher PROPOSAL
James Z AlbaresJapanAnna Fali RENEWAL
Munro G CaudyIndiaAmy Elsner RENEWAL
Nicolas I CampainSpainStephen Shaw NEW
Adams G NestleItalyStephen Shaw UNQUALIFIED
Jeanfrancois Y BriddickSpainAnna Fali NEW
Rodrigues F ShinkoBrazilXuxue Feng QUALIFIED
Emily G TollnerSpainBernardo Dominic RENEWAL
Nicolas M OldroydIndiaIoni Bowcher QUALIFIED
Ivar I StockhamSpainElwin Sharvill PROPOSAL
Misaki Y ShinkoRussiaAsiya Javayant UNQUALIFIED
Ricardo L PerinItalyBernardo Dominic UNQUALIFIED
Leon H KuskoSpainAsiya Javayant UNQUALIFIED
Mujtaba Y IturbideBrazilXuxue Feng PROPOSAL
Smith I FerenczGermanyIoni Bowcher PROPOSAL
Ricardo K DilliardRussiaAsiya Javayant NEGOTIATION
Munro V SlusarskiGermanyOnyama Limba NEGOTIATION
Izzy X TollnerGermanyAsiya Javayant PROPOSAL
Johnson W WaycottItalyIvan Magalhaes RENEWAL
Smith Y AmigonItalyAsiya Javayant PROPOSAL
Maisha X IturbideArgentinaAnna Fali RENEWAL
Cody Y WieserGermanyXuxue Feng UNQUALIFIED
Maisha M StockhamArgentinaAsiya Javayant NEW
Ashley D FlosiGermanyElwin Sharvill UNQUALIFIED
Salvatore T CaudyArgentinaStephen Shaw NEW
Deepesh M SchemmerSpainIvan Magalhaes UNQUALIFIED
Misaki V NickaArgentinaBernardo Dominic PROPOSAL
Isabel Q GauchoItalyAsiya Javayant UNQUALIFIED
Deepesh F SergiItalyAnna Fali PROPOSAL
Salvatore O GauchoAustraliaIvan Magalhaes NEGOTIATION
Kaitlin W MaletItalyElwin Sharvill PROPOSAL
Alejandro P OldroydBrazilIoni Bowcher RENEWAL
Stacey N VocelkaItalyElwin Sharvill NEW
Maria N GauchoItalyIoni Bowcher NEGOTIATION
Jennifer R BologniaIndiaAsiya Javayant RENEWAL
Izzy F GlickJapanBernardo Dominic UNQUALIFIED
Mayumi S NestleArgentinaIvan Magalhaes NEW
Murillo A BologniaAustraliaIoni Bowcher NEW
Maisha N CaudyAustraliaElwin Sharvill UNQUALIFIED
Juan D CampainFranceAsiya Javayant PROPOSAL
Mujtaba S PoquetteCanadaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Tony X BologniaItalyAsiya Javayant NEW
Jeanfrancois P ShinkoAustraliaElwin Sharvill PROPOSAL
Adams P FlosiGermanyStephen Shaw UNQUALIFIED
Maria B RulapaughAustraliaAnna Fali UNQUALIFIED
Aruna I CaldareraBrazilAnna Fali QUALIFIED
Sinclair A PoquetteSpainStephen Shaw NEW
Antonio T StockhamBrazilOnyama Limba PROPOSAL
Alejandro U BowleyIndiaXuxue Feng NEW
Smith V ShinkoArgentinaIvan Magalhaes UNQUALIFIED
Emily Y StensethItalyIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony P PaprockiSpain2024-04-07Chemel, James L Cpa NEGOTIATION73Anna Fali
1001Stacey H PerinAustralia2024-04-16Buckley Miller Wright UNQUALIFIED6Onyama Limba
1002Tony M MorascaBrazil2024-04-14Truhlar And Truhlar Attys NEGOTIATION57Xuxue Feng
1003Jennifer B GauchoIndia2024-04-15Rousseaux, Michael Esq PROPOSAL61Ioni Bowcher
1004Clifford Q SaylorsJapan2024-04-09Truhlar And Truhlar Attys QUALIFIED43Anna Fali
1005Alejandro X GillianBrazil2024-05-03Dorl, James J Esq PROPOSAL42Asiya Javayant
1006Adams O TollnerItaly2024-04-23Chapman, Ross E Esq NEW7Ivan Magalhaes
1007Greenwood U VenereBrazil2024-04-08Commercial Press QUALIFIED11Onyama Limba
1008Julie D CaudyAustralia2024-04-15King, Christopher A Esq NEGOTIATION38Bernardo Dominic
1009Francesco V ShinkoAustralia2024-04-07Buckley Miller Wright NEW77Anna Fali
1010Izzy M StensethItaly2024-04-11Rangoni Of Florence NEGOTIATION22Amy Elsner
1011Silvio L StockhamRussia2024-04-19Benton, John B Jr UNQUALIFIED70Stephen Shaw
1012Salvatore D TollnerUnited Kingdom2024-04-12Feiner Bros NEGOTIATION60Ivan Magalhaes
1013Antonio M KuskoRussia2024-05-04Chemel, James L Cpa QUALIFIED50Bernardo Dominic
1014Leja R AlbaresSpain2024-04-14Printing Dimensions RENEWAL44Stephen Shaw
1015Kadeem C ShinkoFrance2024-04-23Dorl, James J Esq NEGOTIATION45Ivan Magalhaes
1016Leja W BologniaJapan2024-05-04Chanay, Jeffrey A Esq RENEWAL20Bernardo Dominic
1017Stacey G FollerItaly2024-04-19Chemel, James L Cpa NEW27Anna Fali
1018Jennifer F BriddickArgentina2024-04-20King, Christopher A Esq RENEWAL16Anna Fali
1019Leon U VenereUnited Kingdom2024-05-02Chapman, Ross E Esq RENEWAL52Bernardo Dominic
1020Murillo L AmigonArgentina2024-04-07Rousseaux, Michael Esq PROPOSAL26Ivan Magalhaes
1021Adams B DarakjyUnited Kingdom2024-04-20Benton, John B Jr NEGOTIATION29Anna Fali
1022Julie D RimJapan2024-04-30Feiner Bros NEW75Bernardo Dominic
1023Leja S PaprockiRussia2024-04-20Chapman, Ross E Esq NEW7Elwin Sharvill
1024Darci O VenereRussia2024-04-10King, Christopher A Esq RENEWAL3Amy Elsner
1025Greenwood Y KolmetzSpain2024-04-08Chanay, Jeffrey A Esq NEW88Asiya Javayant
1026Maisha I SlusarskiSpain2024-04-21Buckley Miller Wright UNQUALIFIED51Xuxue Feng
1027Isabel K MorascaAustralia2024-04-08Rousseaux, Michael Esq NEGOTIATION87Xuxue Feng
1028Aruna H VenereFrance2024-05-06Chapman, Ross E Esq NEGOTIATION30Onyama Limba
1029Leon D PoquetteAustralia2024-04-19Commercial Press UNQUALIFIED98Ioni Bowcher
1030Salvatore D AmigonFrance2024-04-28Dorl, James J Esq NEW4Stephen Shaw
1031Stacey X RutaBrazil2024-04-15Rousseaux, Michael Esq RENEWAL37Amy Elsner
1032Clifford I GauchoItaly2024-05-02Printing Dimensions RENEWAL10Anna Fali
1033Faith Z RoysterItaly2024-05-01Chemel, James L Cpa QUALIFIED42Stephen Shaw
1034Izzy B TollnerItaly2024-04-21Chapman, Ross E Esq NEGOTIATION1Anna Fali
1035Juan Y FerenczRussia2024-04-17Truhlar And Truhlar Attys NEW85Ivan Magalhaes
1036Salvatore U CampainAustralia2024-04-12Rangoni Of Florence RENEWAL69Elwin Sharvill
1037Kaitlin Y BriddickIndia2024-04-14Printing Dimensions PROPOSAL34Ivan Magalhaes
1038Deepesh D FigeroaRussia2024-04-07Commercial Press NEGOTIATION73Ioni Bowcher
1039Salvatore F CaldareraRussia2024-04-08Feltz Printing Service PROPOSAL51Bernardo Dominic
1040Cody D RulapaughBrazil2024-04-29Benton, John B Jr UNQUALIFIED25Asiya Javayant
1041Darci N BriddickJapan2024-04-21King, Christopher A Esq PROPOSAL16Onyama Limba
1042Kadeem T SchemmerBrazil2024-04-22Feltz Printing Service NEW63Ioni Bowcher
1043Maisha F CaudyArgentina2024-05-04Rangoni Of Florence PROPOSAL48Ioni Bowcher
1044Mujtaba Z NickaItaly2024-05-02King, Christopher A Esq RENEWAL58Asiya Javayant
1045Claire K BologniaItaly2024-04-11Truhlar And Truhlar Attys QUALIFIED33Stephen Shaw
1046Darci K FollerSpain2024-04-09Rousseaux, Michael Esq NEGOTIATION55Xuxue Feng
1047Costa P KuskoCanada2024-04-12Printing Dimensions RENEWAL12Xuxue Feng
1048Kadeem Q NickaJapan2024-04-26Buckley Miller Wright QUALIFIED10Elwin Sharvill
1049Tony N StensethIndia2024-04-17Buckley Miller Wright QUALIFIED47Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Arvin L KuskoIndiaAsiya Javayant UNQUALIFIED
Mujtaba R FigeroaSpainAsiya Javayant NEW
Sinclair Z OstroskyGermanyAsiya Javayant NEGOTIATION
Silvio Q AlbaresUnited KingdomBernardo Dominic QUALIFIED
Emily I KuskoFranceAnna Fali RENEWAL
Francesco S SlusarskiGermanyBernardo Dominic NEGOTIATION
Cody V VocelkaSpainIoni Bowcher PROPOSAL
Deepesh P MaletBrazilIvan Magalhaes NEW
Kaitlin I OstroskyItalyAsiya Javayant NEGOTIATION
Rodrigues V VenereCanadaAnna Fali RENEWAL
Cody B BologniaJapanAsiya Javayant PROPOSAL
Mujtaba M NestleFranceIoni Bowcher PROPOSAL
Aika G OldroydIndiaBernardo Dominic PROPOSAL
David Y MarrierJapanAnna Fali RENEWAL
Ashley Y InouyeSpainAsiya Javayant NEGOTIATION
Emily A NestleItalyAmy Elsner PROPOSAL
Deepesh P AmigonItalyAnna Fali RENEWAL
Arvin M PaprockiUnited KingdomOnyama Limba RENEWAL
Cody C SergiJapanAnna Fali NEW
Jeanfrancois R ChuiBrazilElwin Sharvill RENEWAL
Salvatore H SchemmerAustraliaAsiya Javayant QUALIFIED
Rodrigues S MaletRussiaIvan Magalhaes QUALIFIED
Smith V StockhamCanadaStephen Shaw UNQUALIFIED
Ivar M RutaIndiaXuxue Feng PROPOSAL
Aika I GlickJapanStephen Shaw NEGOTIATION
Kadeem E InouyeJapanIvan Magalhaes QUALIFIED
Nicolas Y MacleadCanadaAsiya Javayant UNQUALIFIED
Salvatore D FollerBrazilStephen Shaw NEGOTIATION
Nicolas L MaletUnited KingdomOnyama Limba NEGOTIATION
Mayumi H MarrierFranceOnyama Limba QUALIFIED
Smith P RoysterJapanStephen Shaw QUALIFIED
Aruna L RimCanadaAsiya Javayant NEGOTIATION
Rodrigues R BologniaJapanXuxue Feng NEGOTIATION
Munro N KolmetzUnited KingdomIvan Magalhaes PROPOSAL
Faith F ChuiAustraliaOnyama Limba RENEWAL
Tony C RutaGermanyXuxue Feng RENEWAL
Leon I PaprockiRussiaBernardo Dominic PROPOSAL
Mayumi A DoeSpainIoni Bowcher UNQUALIFIED
Clifford X DilliardSpainXuxue Feng RENEWAL
James I StensethAustraliaIvan Magalhaes RENEWAL
Cody E StensethGermanyAmy Elsner PROPOSAL
Kadeem V KuskoGermanyStephen Shaw QUALIFIED
Silvio P PerinRussiaAnna Fali QUALIFIED
James L GarufiArgentinaOnyama Limba QUALIFIED
Sinclair S GlickFranceAsiya Javayant NEW
Isabel M SergiArgentinaBernardo Dominic QUALIFIED
Misaki J ButtJapanBernardo Dominic NEGOTIATION
Cody S SlusarskiArgentinaBernardo Dominic QUALIFIED
Izzy G FerenczFranceIvan Magalhaes NEW
Tony N OstroskyIndiaIoni Bowcher QUALIFIED
Frozen Columns
Name
Kadeem X Figeroa
Mayumi N Perin
Silvio X Inouye
Julie W Morasca
Clifford C Kolmetz
Johnson D Butt
David E Wieser
Ivar X Ostrosky
Francesco O Venere
Kaitlin G Stenseth
Maria O Figeroa
Jennifer T Flosi
Aika F Glick
Rodrigues B Gillian
Francesco C Doe
Octavia O Darakjy
Ashley H Wieser
Nicolas W Oldroyd
Jefferson H Oldroyd
Deepesh H Kolmetz
Ricardo Z Stenseth
Emily Y Doe
Murillo G Garufi
Julie G Stenseth
Cody B Bowley
Jones G Stockham
Leja P Bowley
Emily D Garufi
Maisha K Inouye
Ivar Q Gillian
Deepesh T Slusarski
Octavia F Iturbide
Emily Z Whobrey
Deepesh J Caudy
Darci B Malet
Jennifer M Flosi
Leon B Doe
Ricardo F Garufi
Wickens X Maclead
Tony P Ostrosky
Maisha D Shinko
Kaitlin S Albares
Costa H Vocelka
Stacey Y Amigon
Maria W Chui
Claire W Amigon
Deepesh U Kusko
Johnson W Kolmetz
Johnson P Chui
Juan T Gillian
IdCountryDate
1000Argentina2024-04-14
1001Japan2024-04-20
1002Japan2024-04-18
1003Italy2024-04-14
1004Canada2024-05-03
1005Australia2024-04-29
1006France2024-04-25
1007France2024-04-16
1008Germany2024-05-02
1009Canada2024-05-06
1010France2024-04-27
1011Italy2024-04-11
1012Italy2024-04-14
1013Russia2024-04-30
1014Spain2024-04-09
1015Germany2024-05-01
1016Germany2024-04-20
1017France2024-04-27
1018Russia2024-04-17
1019India2024-04-28
1020Germany2024-04-07
1021Canada2024-04-13
1022Italy2024-05-03
1023Australia2024-04-28
1024Germany2024-04-11
1025Japan2024-04-16
1026Spain2024-04-25
1027Argentina2024-04-12
1028Canada2024-04-23
1029France2024-04-07
1030Japan2024-04-23
1031Germany2024-05-02
1032Japan2024-04-09
1033Argentina2024-05-02
1034France2024-04-29
1035Japan2024-04-30
1036Italy2024-04-13
1037United Kingdom2024-04-23
1038Canada2024-05-02
1039Australia2024-04-21
1040Italy2024-04-15
1041Germany2024-04-26
1042Germany2024-04-24
1043Japan2024-05-06
1044Brazil2024-04-16
1045Canada2024-04-14
1046Russia2024-05-03
1047Russia2024-04-09
1048Spain2024-04-12
1049Argentina2024-04-26

On-Demand Data

NameIdCountryDate
Isabel G Bowley1000Australia2024-05-04
Wickens V Glick1001Spain2024-04-17
Darci P Shinko1002Russia2024-04-21
Silvio F Malet1003United Kingdom2024-05-03
Leon C Butt1004Spain2024-04-21
Cody S Stockham1005Japan2024-05-03
David Y Doe1006Spain2024-04-15
Isabel U Glick1007France2024-05-02
Maria S Whobrey1008Russia2024-04-27
Antonio X Tollner1009Japan2024-04-08
Rodrigues N Shinko1010India2024-04-10
Misaki C Gaucho1011Argentina2024-04-11
Kaitlin L Caldarera1012France2024-05-06
Maisha K Campain1013Canada2024-05-05
Julie R Bowley1014Australia2024-04-20
Maisha Q Butt1015France2024-04-10
Antonio W Slusarski1016Japan2024-04-28
Francesco O Gaucho1017Argentina2024-04-17
Jennifer J Ruta1018Canada2024-04-14
Deepesh T Oldroyd1019Italy2024-04-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith T FerenczArgentinaXuxue Feng RENEWAL
Julie B MorascaCanadaIoni Bowcher RENEWAL
Ricardo V GlickAustraliaAmy Elsner QUALIFIED
Izzy N GarufiUnited KingdomXuxue Feng NEGOTIATION
Smith K FigeroaFranceOnyama Limba QUALIFIED
Darci D DarakjyBrazilIoni Bowcher NEW
Costa M OldroydRussiaIoni Bowcher QUALIFIED
Stacey J FerenczSpainIoni Bowcher UNQUALIFIED
Leon F GarufiJapanXuxue Feng PROPOSAL
Rodrigues U SaylorsSpainElwin Sharvill PROPOSAL
Adams Y MorascaIndiaIvan Magalhaes NEW
Adams C BriddickSpainBernardo Dominic NEW
Jefferson X SaylorsFranceIvan Magalhaes PROPOSAL
Juan T PaprockiIndiaIvan Magalhaes RENEWAL
Faith B ButtItalyXuxue Feng QUALIFIED
Kaitlin Z GlickSpainXuxue Feng PROPOSAL
Izzy U FlosiJapanAsiya Javayant RENEWAL
David O CaldareraUnited KingdomElwin Sharvill PROPOSAL
Rodrigues O ShinkoJapanOnyama Limba RENEWAL
Aditya B NickaBrazilXuxue Feng PROPOSAL
Misaki J FlosiFranceAmy Elsner NEGOTIATION
Johnson Z NickaAustraliaAnna Fali UNQUALIFIED
Murillo A RutaSpainBernardo Dominic NEW
Juan Y IturbideIndiaOnyama Limba RENEWAL
Kadeem L VocelkaIndiaStephen Shaw UNQUALIFIED
Juan P ShinkoRussiaXuxue Feng UNQUALIFIED
Francesco T DoeRussiaAsiya Javayant UNQUALIFIED
Antonio X DarakjyGermanyBernardo Dominic QUALIFIED
David H MorascaAustraliaStephen Shaw UNQUALIFIED
Stacey S CaudyUnited KingdomElwin Sharvill NEW
Tony L OstroskyAustraliaBernardo Dominic QUALIFIED
James I DoeBrazilStephen Shaw NEW
Wickens G AlbaresIndiaOnyama Limba PROPOSAL
Francesco S SlusarskiUnited KingdomAnna Fali NEGOTIATION
Faith O StensethRussiaXuxue Feng NEW
Smith Z SlusarskiSpainAsiya Javayant QUALIFIED
Rodrigues F CaldareraItalyIvan Magalhaes NEGOTIATION
Murillo W RoysterRussiaOnyama Limba QUALIFIED
Jefferson K PaprockiItalyXuxue Feng RENEWAL
Cody P VocelkaFranceXuxue Feng 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>