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
Murillo P ChuiUnited KingdomAsiya Javayant QUALIFIED
Greenwood F BologniaGermanyAnna Fali RENEWAL
Misaki T GlickCanadaIvan Magalhaes NEW
David F NestleGermanyBernardo Dominic NEGOTIATION
Morrow Y VocelkaIndiaAnna Fali UNQUALIFIED
Chavez Q MaletSpainBernardo Dominic UNQUALIFIED
Wickens V SaylorsCanadaOnyama Limba PROPOSAL
Sinclair M DilliardUnited KingdomIoni Bowcher NEGOTIATION
Clifford R DilliardJapanElwin Sharvill NEW
Antonio K KuskoGermanyAmy Elsner PROPOSAL
Rodrigues Z IturbideGermanyIvan Magalhaes UNQUALIFIED
Mujtaba T ChuiBrazilAnna Fali UNQUALIFIED
Jennifer R GlickBrazilElwin Sharvill QUALIFIED
Aika F KuskoGermanyIoni Bowcher NEGOTIATION
Greenwood N BriddickBrazilAsiya Javayant PROPOSAL
Morrow O MarrierFranceAnna Fali QUALIFIED
Francesco J GauchoItalyIoni Bowcher PROPOSAL
Clifford M NestleUnited KingdomAnna Fali RENEWAL
Ivar R ChuiAustraliaOnyama Limba NEGOTIATION
Aditya T PaprockiRussiaElwin Sharvill NEGOTIATION
Juan P OldroydFranceIoni Bowcher UNQUALIFIED
Faith V SergiCanadaAmy Elsner PROPOSAL
Jennifer B OstroskyIndiaIvan Magalhaes NEW
Tony P VocelkaSpainAsiya Javayant PROPOSAL
Julie F MaletFranceAsiya Javayant RENEWAL
Mujtaba K VocelkaGermanyAmy Elsner UNQUALIFIED
Johnson D MaletFranceAsiya Javayant RENEWAL
Sinclair Y ShinkoSpainOnyama Limba QUALIFIED
Jefferson V StockhamGermanyIoni Bowcher NEW
Murillo P ShinkoSpainBernardo Dominic UNQUALIFIED
Sinclair V MorascaGermanyXuxue Feng NEGOTIATION
Costa U SaylorsBrazilXuxue Feng QUALIFIED
Octavia Y PerinGermanyBernardo Dominic PROPOSAL
Jefferson W RoysterRussiaAsiya Javayant NEGOTIATION
Nicolas U PaprockiArgentinaElwin Sharvill PROPOSAL
Leja F PoquetteCanadaIoni Bowcher NEGOTIATION
Francesco G CaudySpainBernardo Dominic PROPOSAL
Chavez J GarufiFranceIoni Bowcher RENEWAL
Jeanfrancois N FollerItalyAmy Elsner PROPOSAL
Costa C RimAustraliaStephen Shaw UNQUALIFIED
Tony P OstroskyBrazilStephen Shaw RENEWAL
Chavez M GarufiGermanyIvan Magalhaes PROPOSAL
Octavia A InouyeUnited KingdomOnyama Limba QUALIFIED
Leja M FollerArgentinaIoni Bowcher RENEWAL
Faith S PerinGermanyIvan Magalhaes NEW
Aruna P AlbaresUnited KingdomOnyama Limba UNQUALIFIED
Morrow A PoquetteArgentinaIoni Bowcher RENEWAL
Smith D GauchoItalyBernardo Dominic NEW
Izzy F BriddickIndiaXuxue Feng UNQUALIFIED
Izzy M TollnerJapanStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Misaki Q GlickCanadaXuxue Feng QUALIFIED
Claire O CampainUnited KingdomAmy Elsner NEGOTIATION
Greenwood F RulapaughJapanAsiya Javayant QUALIFIED
Octavia S SaylorsRussiaOnyama Limba NEGOTIATION
Greenwood C ShinkoIndiaStephen Shaw UNQUALIFIED
Kaitlin U PaprockiJapanOnyama Limba UNQUALIFIED
Greenwood U BowleyUnited KingdomOnyama Limba PROPOSAL
Leja U RimGermanyAnna Fali RENEWAL
Costa J VenereItalyElwin Sharvill RENEWAL
Leja Z SlusarskiCanadaStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco G FollerGermany2024-04-11Chemel, James L Cpa UNQUALIFIED53Ivan Magalhaes
1001Mujtaba X MorascaSpain2024-04-17Chemel, James L Cpa QUALIFIED43Stephen Shaw
1002Johnson F StensethGermany2024-04-22Chemel, James L Cpa RENEWAL14Anna Fali
1003Greenwood S SchemmerIndia2024-04-16Rousseaux, Michael Esq UNQUALIFIED98Stephen Shaw
1004Faith X KuskoFrance2024-04-06Chemel, James L Cpa NEGOTIATION86Ioni Bowcher
1005Silvio Q GillianCanada2024-04-18Rangoni Of Florence NEGOTIATION57Xuxue Feng
1006Izzy W RutaSpain2024-04-21Feltz Printing Service NEW74Asiya Javayant
1007Johnson E WaycottItaly2024-04-19Rangoni Of Florence NEW21Elwin Sharvill
1008Mayumi L IturbideArgentina2024-04-20King, Christopher A Esq QUALIFIED58Asiya Javayant
1009Antonio U SlusarskiFrance2024-04-15Buckley Miller Wright RENEWAL61Bernardo Dominic
1010James D BologniaFrance2024-04-19Dorl, James J Esq QUALIFIED21Anna Fali
1011Kadeem H VocelkaGermany2024-04-14Morlong Associates NEGOTIATION42Stephen Shaw
1012Murillo H WieserItaly2024-03-27Rousseaux, Michael Esq UNQUALIFIED88Xuxue Feng
1013Jefferson I PaprockiJapan2024-04-17Feiner Bros NEW66Ioni Bowcher
1014Sinclair H WieserCanada2024-04-15Commercial Press PROPOSAL0Asiya Javayant
1015Morrow M MorascaAustralia2024-04-17Buckley Miller Wright UNQUALIFIED53Onyama Limba
1016Darci L GauchoIndia2024-04-10Feltz Printing Service QUALIFIED8Bernardo Dominic
1017Octavia X WieserItaly2024-04-17Chemel, James L Cpa UNQUALIFIED13Ivan Magalhaes
1018James I DarakjyUnited Kingdom2024-03-29Chanay, Jeffrey A Esq NEGOTIATION67Amy Elsner
1019Mayumi B FollerAustralia2024-04-15Rousseaux, Michael Esq PROPOSAL55Elwin Sharvill
1020Salvatore X FollerRussia2024-04-03Chanay, Jeffrey A Esq QUALIFIED11Ivan Magalhaes
1021Maisha R MacleadBrazil2024-04-12Chapman, Ross E Esq PROPOSAL45Ivan Magalhaes
1022Leon I RutaArgentina2024-04-01Commercial Press PROPOSAL32Onyama Limba
1023Nicolas U RutaIndia2024-04-04King, Christopher A Esq NEGOTIATION15Anna Fali
1024Morrow T ButtCanada2024-04-17King, Christopher A Esq PROPOSAL91Bernardo Dominic
1025Izzy H PerinGermany2024-03-30Buckley Miller Wright UNQUALIFIED86Amy Elsner
1026Greenwood V NestleCanada2024-04-07Morlong Associates PROPOSAL66Amy Elsner
1027Morrow A NestleGermany2024-03-28Chapman, Ross E Esq PROPOSAL14Stephen Shaw
1028Johnson L DoeJapan2024-04-13Truhlar And Truhlar Attys RENEWAL80Amy Elsner
1029Cody E RulapaughIndia2024-04-01Rangoni Of Florence NEW87Amy Elsner
1030Cody J SergiJapan2024-04-11Buckley Miller Wright QUALIFIED43Anna Fali
1031Francesco P BriddickItaly2024-04-01Feiner Bros PROPOSAL28Elwin Sharvill
1032Jeanfrancois Q VocelkaAustralia2024-04-24Benton, John B Jr RENEWAL4Ioni Bowcher
1033Murillo A PerinCanada2024-04-09Benton, John B Jr UNQUALIFIED74Asiya Javayant
1034Emily U ShinkoBrazil2024-03-28Chemel, James L Cpa NEW93Asiya Javayant
1035Juan Z FlosiFrance2024-04-09Buckley Miller Wright NEGOTIATION42Bernardo Dominic
1036Ricardo X MacleadJapan2024-04-20King, Christopher A Esq NEGOTIATION9Asiya Javayant
1037Jefferson K VocelkaUnited Kingdom2024-04-08Dorl, James J Esq PROPOSAL67Elwin Sharvill
1038Tony Q DilliardAustralia2024-04-08Benton, John B Jr PROPOSAL33Ivan Magalhaes
1039Morrow U TollnerIndia2024-03-27Chemel, James L Cpa RENEWAL7Amy Elsner
1040Costa F PaprockiRussia2024-04-23Chanay, Jeffrey A Esq UNQUALIFIED87Stephen Shaw
1041Costa U RutaBrazil2024-04-18Commercial Press NEW1Bernardo Dominic
1042Cody C MacleadFrance2024-04-03Dorl, James J Esq NEW17Ivan Magalhaes
1043Deepesh R AmigonBrazil2024-04-23Morlong Associates QUALIFIED83Xuxue Feng
1044Stacey B VenereJapan2024-04-06Buckley Miller Wright QUALIFIED69Amy Elsner
1045Wickens O AlbaresItaly2024-04-18Feltz Printing Service NEGOTIATION59Ivan Magalhaes
1046Deepesh X MaletAustralia2024-03-27Rousseaux, Michael Esq UNQUALIFIED89Ivan Magalhaes
1047Juan F SchemmerSpain2024-04-25Rousseaux, Michael Esq RENEWAL23Stephen Shaw
1048Leja A RulapaughBrazil2024-04-07Dorl, James J Esq RENEWAL42Bernardo Dominic
1049Izzy K FigeroaAustralia2024-03-28Morlong Associates NEW6Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Aika Y WaycottAustraliaElwin Sharvill UNQUALIFIED
David I AmigonItalyIvan Magalhaes QUALIFIED
James S RoysterItalyAsiya Javayant RENEWAL
Nicolas M CaudySpainAmy Elsner PROPOSAL
Arvin Q KuskoRussiaStephen Shaw QUALIFIED
Faith G ButtItalyAsiya Javayant NEW
Ricardo Q RulapaughFranceStephen Shaw NEGOTIATION
Salvatore V WieserItalyAnna Fali UNQUALIFIED
Ricardo Y AmigonBrazilBernardo Dominic UNQUALIFIED
Arvin O GauchoGermanyElwin Sharvill NEGOTIATION
Sinclair Z KolmetzFranceStephen Shaw QUALIFIED
Kaitlin S NickaGermanyAsiya Javayant QUALIFIED
Ricardo E BriddickAustraliaStephen Shaw RENEWAL
Izzy X BriddickItalyOnyama Limba PROPOSAL
Aruna Y ShinkoItalyAsiya Javayant RENEWAL
Leon F SergiSpainBernardo Dominic RENEWAL
Arvin D TollnerIndiaBernardo Dominic QUALIFIED
Munro U FlosiUnited KingdomAmy Elsner NEGOTIATION
Darci R NestleArgentinaAsiya Javayant RENEWAL
Morrow Y VocelkaCanadaAsiya Javayant QUALIFIED
Emily M SchemmerAustraliaElwin Sharvill RENEWAL
Jennifer J WieserAustraliaOnyama Limba NEW
Emily Y PoquetteUnited KingdomIoni Bowcher NEW
Clifford S KuskoBrazilIvan Magalhaes NEW
David A KolmetzCanadaXuxue Feng PROPOSAL
Wickens Y RoysterIndiaXuxue Feng PROPOSAL
Munro S SchemmerSpainIoni Bowcher NEW
Alejandro Z CampainRussiaAmy Elsner UNQUALIFIED
Costa L ButtBrazilElwin Sharvill QUALIFIED
Stacey W VocelkaFranceXuxue Feng NEGOTIATION
Leja X OstroskyFranceBernardo Dominic PROPOSAL
Tony W AlbaresBrazilIoni Bowcher RENEWAL
Aruna O WieserGermanyAnna Fali NEW
Costa X MorascaArgentinaAsiya Javayant UNQUALIFIED
Chavez S RulapaughFranceAsiya Javayant RENEWAL
Deepesh D FerenczGermanyAsiya Javayant RENEWAL
Juan O DilliardGermanyAnna Fali NEW
Alejandro V MarrierIndiaAmy Elsner PROPOSAL
Leon W OldroydGermanyAsiya Javayant QUALIFIED
Jeanfrancois B NickaUnited KingdomAnna Fali QUALIFIED
Rodrigues G GillianBrazilIvan Magalhaes PROPOSAL
Octavia I PoquetteArgentinaIoni Bowcher RENEWAL
Arvin Q CaudyArgentinaXuxue Feng QUALIFIED
Sinclair X DilliardJapanOnyama Limba PROPOSAL
Emily D FerenczSpainIvan Magalhaes NEGOTIATION
Izzy R SlusarskiSpainAmy Elsner NEW
Francesco N WieserItalyAmy Elsner NEW
Octavia X BriddickUnited KingdomElwin Sharvill RENEWAL
Clifford T VocelkaSpainXuxue Feng NEGOTIATION
Smith U StockhamJapanBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Mujtaba D Foller
Octavia Q Waycott
Isabel G Malet
Morrow G Royster
Murillo K Dilliard
Tony T Rim
Wickens J Garufi
Ivar B Perin
Smith X Chui
Darci L Nicka
Ivar F Butt
Faith F Garufi
Darci T Malet
Nicolas K Foller
Cody K Caudy
Jones Q Campain
Chavez K Glick
Jefferson M Maclead
Morrow C Rim
Munro J Caldarera
Mujtaba X Schemmer
Arvin Z Caldarera
Nicolas W Saylors
Isabel M Campain
Munro G Darakjy
Morrow V Paprocki
Julie K Whobrey
Darci Y Bolognia
Silvio Y Waycott
Deepesh I Marrier
Rodrigues W Ostrosky
Tony D Iturbide
Mayumi Z Marrier
Alejandro S Shinko
Greenwood R Maclead
Greenwood B Kolmetz
Sinclair X Caldarera
Aruna T Marrier
Emily Z Ferencz
Faith J Ostrosky
Murillo U Glick
Morrow L Royster
Morrow S Marrier
Alejandro E Ruta
Maria N Garufi
Morrow U Dilliard
Kaitlin N Whobrey
Mujtaba X Sergi
James O Ferencz
Greenwood S Doe
IdCountryDate
1000Argentina2024-04-06
1001Germany2024-04-12
1002Russia2024-04-25
1003Brazil2024-04-14
1004Russia2024-04-23
1005India2024-04-11
1006Japan2024-04-12
1007Australia2024-04-01
1008Russia2024-04-11
1009Japan2024-04-09
1010Brazil2024-04-09
1011Canada2024-04-25
1012Italy2024-04-05
1013Russia2024-04-11
1014Australia2024-04-12
1015India2024-03-27
1016India2024-03-31
1017Italy2024-04-04
1018India2024-04-16
1019Germany2024-04-10
1020Argentina2024-04-12
1021Italy2024-04-08
1022Russia2024-04-08
1023Canada2024-04-03
1024France2024-04-16
1025Canada2024-04-17
1026Argentina2024-04-11
1027Australia2024-04-25
1028France2024-04-08
1029United Kingdom2024-04-07
1030Germany2024-03-27
1031France2024-03-29
1032Japan2024-04-22
1033France2024-04-21
1034Australia2024-04-17
1035Russia2024-03-27
1036Argentina2024-04-04
1037France2024-03-28
1038Brazil2024-04-11
1039Brazil2024-03-29
1040Japan2024-04-20
1041Australia2024-04-06
1042Japan2024-04-19
1043France2024-04-16
1044United Kingdom2024-04-02
1045France2024-03-30
1046Argentina2024-03-30
1047India2024-04-08
1048France2024-04-02
1049France2024-04-10

On-Demand Data

NameIdCountryDate
Mujtaba Y Iturbide1000Canada2024-03-31
Rodrigues A Rim1001India2024-04-23
Isabel C Waycott1002Japan2024-03-27
Antonio K Nicka1003Germany2024-04-20
Isabel I Waycott1004France2024-03-29
Leon N Gillian1005Italy2024-04-12
Nicolas W Ruta1006Japan2024-04-08
David I Ostrosky1007Brazil2024-04-22
Chavez M Briddick1008Russia2024-04-01
Morrow K Vocelka1009Australia2024-04-25
Silvio Z Stenseth1010Japan2024-04-11
Murillo G Malet1011France2024-04-19
Nicolas U Darakjy1012India2024-04-12
Adams P Ruta1013Italy2024-04-14
Murillo R Wieser1014Russia2024-03-28
Ashley E Gaucho1015Spain2024-04-03
Aika Z Flosi1016Germany2024-04-02
Izzy H Bolognia1017Germany2024-03-30
Jeanfrancois N Royster1018Japan2024-04-07
Salvatore Y Garufi1019Italy2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna Y StockhamBrazilBernardo Dominic NEGOTIATION
Wickens S BowleyIndiaXuxue Feng NEW
Greenwood N MacleadJapanIoni Bowcher NEGOTIATION
Leja T KuskoRussiaAsiya Javayant RENEWAL
Francesco Z CampainSpainOnyama Limba QUALIFIED
Antonio I DoeCanadaXuxue Feng UNQUALIFIED
Kaitlin X WieserFranceXuxue Feng NEGOTIATION
Maria H RoysterUnited KingdomXuxue Feng PROPOSAL
Murillo H RulapaughArgentinaAsiya Javayant NEW
Rodrigues X StensethRussiaElwin Sharvill RENEWAL
Alejandro V PaprockiGermanyIvan Magalhaes RENEWAL
Arvin P NickaArgentinaBernardo Dominic NEGOTIATION
James J RimUnited KingdomIvan Magalhaes UNQUALIFIED
Izzy H StockhamCanadaStephen Shaw RENEWAL
Cody H AmigonUnited KingdomBernardo Dominic NEW
Rodrigues R WhobreyIndiaAsiya Javayant NEW
Mayumi P BologniaIndiaElwin Sharvill PROPOSAL
Deepesh C StensethArgentinaOnyama Limba NEGOTIATION
Nicolas F MaletGermanyIvan Magalhaes RENEWAL
Jefferson R MaletGermanyAmy Elsner NEGOTIATION
Misaki D SchemmerAustraliaBernardo Dominic PROPOSAL
James V BowleyRussiaAmy Elsner PROPOSAL
Aika F MaletRussiaOnyama Limba UNQUALIFIED
Rodrigues E VenereSpainStephen Shaw NEGOTIATION
Jones D CaudyFranceAmy Elsner NEW
Arvin N DilliardRussiaAsiya Javayant NEW
Silvio Z PoquetteFranceStephen Shaw PROPOSAL
Misaki D KuskoSpainStephen Shaw NEW
Isabel Y GauchoFranceXuxue Feng RENEWAL
Francesco M KuskoAustraliaElwin Sharvill RENEWAL
Aika G VenereUnited KingdomAnna Fali QUALIFIED
Chavez Q CaudyAustraliaAmy Elsner PROPOSAL
Maisha Y SergiAustraliaBernardo Dominic QUALIFIED
Chavez X BriddickSpainXuxue Feng UNQUALIFIED
Smith S FlosiCanadaStephen Shaw UNQUALIFIED
Julie W DoeAustraliaStephen Shaw NEW
Morrow R GauchoBrazilXuxue Feng NEGOTIATION
Ivar E ShinkoUnited KingdomStephen Shaw UNQUALIFIED
Greenwood Y RoysterIndiaXuxue Feng NEGOTIATION
Nicolas L SchemmerCanadaAnna Fali 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>