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
Kadeem L RoysterIndiaAnna Fali QUALIFIED
Clifford C NickaFranceAnna Fali QUALIFIED
Maria R KuskoGermanyStephen Shaw RENEWAL
Stacey M FerenczBrazilAnna Fali UNQUALIFIED
Adams A FerenczArgentinaBernardo Dominic NEGOTIATION
Julie K PaprockiGermanyIvan Magalhaes UNQUALIFIED
Ivar L OstroskyFranceAsiya Javayant UNQUALIFIED
Murillo S NestleRussiaElwin Sharvill RENEWAL
Leon K OldroydIndiaXuxue Feng RENEWAL
Aditya U WaycottArgentinaAsiya Javayant NEW
Silvio T AmigonSpainXuxue Feng QUALIFIED
Wickens T TollnerBrazilAmy Elsner NEW
Antonio J FerenczJapanIvan Magalhaes PROPOSAL
Jefferson L KolmetzAustraliaAmy Elsner NEGOTIATION
Alejandro O RimRussiaStephen Shaw NEW
Clifford U DoeGermanyAsiya Javayant RENEWAL
Silvio O GarufiGermanyOnyama Limba NEGOTIATION
Jefferson G PerinAustraliaAnna Fali NEW
Faith T SaylorsUnited KingdomAsiya Javayant UNQUALIFIED
Ricardo M AmigonCanadaAsiya Javayant NEW
Alejandro P IturbideAustraliaIvan Magalhaes UNQUALIFIED
Leja Q RoysterRussiaBernardo Dominic UNQUALIFIED
Claire T RimGermanyIoni Bowcher RENEWAL
Aruna L DoeArgentinaOnyama Limba NEGOTIATION
Maisha F MaletIndiaBernardo Dominic NEW
Juan A MaletAustraliaXuxue Feng UNQUALIFIED
Misaki I ShinkoRussiaAsiya Javayant NEW
Ivar R FerenczRussiaAsiya Javayant NEGOTIATION
Mayumi N OstroskyAustraliaAsiya Javayant PROPOSAL
James V FigeroaRussiaElwin Sharvill NEW
Misaki C AlbaresUnited KingdomIoni Bowcher NEW
Mayumi Y CaldareraUnited KingdomBernardo Dominic NEGOTIATION
Salvatore B PoquetteJapanIvan Magalhaes RENEWAL
Morrow U GlickBrazilIvan Magalhaes PROPOSAL
Antonio T StockhamGermanyAsiya Javayant RENEWAL
Faith N MaletGermanyOnyama Limba RENEWAL
Ricardo I CaldareraSpainIvan Magalhaes RENEWAL
Aika L StockhamGermanyStephen Shaw QUALIFIED
Ivar F CaudyUnited KingdomAmy Elsner RENEWAL
Mujtaba L RimCanadaBernardo Dominic NEGOTIATION
Kadeem F IturbideJapanOnyama Limba NEGOTIATION
Silvio D BriddickGermanyAmy Elsner QUALIFIED
Mujtaba X VocelkaFranceStephen Shaw NEGOTIATION
Aruna O OldroydItalyElwin Sharvill RENEWAL
Emily J FerenczArgentinaIoni Bowcher PROPOSAL
Munro V DilliardJapanAsiya Javayant UNQUALIFIED
Emily R BowleyIndiaStephen Shaw NEGOTIATION
Maria L RulapaughArgentinaBernardo Dominic UNQUALIFIED
Rodrigues F GlickSpainBernardo Dominic NEW
Arvin E DilliardJapanOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Stacey A TollnerBrazilIvan Magalhaes PROPOSAL
Silvio K CampainGermanyAmy Elsner NEGOTIATION
Isabel A KuskoUnited KingdomOnyama Limba NEW
Jefferson M RoysterBrazilXuxue Feng NEGOTIATION
Kadeem U InouyeBrazilAnna Fali QUALIFIED
Ivar A MarrierArgentinaStephen Shaw PROPOSAL
Nicolas C AmigonBrazilXuxue Feng RENEWAL
Smith M PerinIndiaIoni Bowcher RENEWAL
Salvatore H InouyeFranceXuxue Feng NEW
Stacey N FerenczRussiaAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer I MorascaIndia2024-04-22Buckley Miller Wright UNQUALIFIED12Ivan Magalhaes
1001David G SchemmerBrazil2024-04-23Feltz Printing Service RENEWAL28Onyama Limba
1002Ashley W CampainGermany2024-03-28Feiner Bros QUALIFIED43Bernardo Dominic
1003Faith Z VenereRussia2024-04-01Benton, John B Jr NEW77Anna Fali
1004Octavia E RutaBrazil2024-04-10Rousseaux, Michael Esq PROPOSAL33Onyama Limba
1005Smith N VocelkaRussia2024-04-19King, Christopher A Esq PROPOSAL42Asiya Javayant
1006Jefferson T RutaGermany2024-04-08Rousseaux, Michael Esq NEGOTIATION62Xuxue Feng
1007David N FerenczCanada2024-03-28Rousseaux, Michael Esq QUALIFIED22Xuxue Feng
1008Wickens E AmigonJapan2024-04-16Rangoni Of Florence NEW37Ivan Magalhaes
1009Smith R TollnerBrazil2024-03-28Commercial Press UNQUALIFIED54Amy Elsner
1010Maria A WieserBrazil2024-04-11Benton, John B Jr UNQUALIFIED64Ivan Magalhaes
1011Aruna B WieserIndia2024-04-08Chanay, Jeffrey A Esq QUALIFIED4Onyama Limba
1012Izzy N WaycottAustralia2024-04-12Feltz Printing Service NEW88Elwin Sharvill
1013Aditya S GillianRussia2024-04-24Truhlar And Truhlar Attys PROPOSAL10Stephen Shaw
1014Deepesh U KuskoIndia2024-04-24Chanay, Jeffrey A Esq NEGOTIATION47Onyama Limba
1015Ashley R SergiJapan2024-04-10Morlong Associates NEGOTIATION69Onyama Limba
1016Izzy L InouyeItaly2024-04-18Buckley Miller Wright NEGOTIATION63Elwin Sharvill
1017Kadeem Q GlickGermany2024-04-04Feiner Bros UNQUALIFIED44Onyama Limba
1018Wickens Y RoysterCanada2024-04-21Printing Dimensions NEW43Asiya Javayant
1019Rodrigues B VenereSpain2024-04-07Printing Dimensions NEW69Asiya Javayant
1020Leon C WieserRussia2024-04-06Dorl, James J Esq QUALIFIED13Bernardo Dominic
1021Nicolas E MaletBrazil2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED58Anna Fali
1022Wickens P ChuiSpain2024-04-17Benton, John B Jr UNQUALIFIED81Anna Fali
1023Rodrigues T CaldareraRussia2024-04-17Feiner Bros RENEWAL5Amy Elsner
1024Alejandro H MarrierCanada2024-04-13Printing Dimensions RENEWAL48Anna Fali
1025Nicolas A KolmetzJapan2024-03-28Benton, John B Jr UNQUALIFIED47Stephen Shaw
1026Francesco E CampainCanada2024-04-24Chapman, Ross E Esq QUALIFIED90Anna Fali
1027Cody Q DoeRussia2024-04-01Feiner Bros RENEWAL87Stephen Shaw
1028Maria R MaletFrance2024-04-08Printing Dimensions NEW95Elwin Sharvill
1029Murillo P SergiAustralia2024-04-10King, Christopher A Esq QUALIFIED6Onyama Limba
1030Alejandro J MorascaIndia2024-04-10King, Christopher A Esq NEW40Ivan Magalhaes
1031Julie P MaletIndia2024-04-13Benton, John B Jr PROPOSAL37Stephen Shaw
1032Maria S VenereCanada2024-04-13Morlong Associates QUALIFIED25Elwin Sharvill
1033Ivar D BologniaCanada2024-04-18Buckley Miller Wright QUALIFIED6Ioni Bowcher
1034Murillo S RoysterArgentina2024-04-16King, Christopher A Esq NEW34Asiya Javayant
1035Mayumi H RoysterItaly2024-04-03Chapman, Ross E Esq RENEWAL51Anna Fali
1036Emily D TollnerItaly2024-04-04Chanay, Jeffrey A Esq NEW94Anna Fali
1037Misaki R VenereSpain2024-04-23Chapman, Ross E Esq NEW39Ioni Bowcher
1038Johnson H MorascaJapan2024-04-17Chemel, James L Cpa NEGOTIATION64Ioni Bowcher
1039Leon D InouyeBrazil2024-04-16Rangoni Of Florence NEW70Asiya Javayant
1040Arvin M DarakjyArgentina2024-04-15Printing Dimensions PROPOSAL71Stephen Shaw
1041Salvatore V ButtRussia2024-04-06Chapman, Ross E Esq RENEWAL44Onyama Limba
1042Morrow S ChuiSpain2024-04-12Printing Dimensions NEW66Amy Elsner
1043Jeanfrancois R SchemmerArgentina2024-03-28Chemel, James L Cpa UNQUALIFIED35Anna Fali
1044Ricardo R VenereFrance2024-04-25Dorl, James J Esq QUALIFIED64Xuxue Feng
1045Juan Y ShinkoCanada2024-04-10Chapman, Ross E Esq PROPOSAL21Amy Elsner
1046Jones D MacleadItaly2024-03-27Truhlar And Truhlar Attys QUALIFIED18Asiya Javayant
1047Alejandro D ShinkoFrance2024-04-04Rangoni Of Florence UNQUALIFIED49Stephen Shaw
1048Alejandro O ShinkoCanada2024-04-15Printing Dimensions NEGOTIATION47Anna Fali
1049Sinclair F DarakjyBrazil2024-04-25Dorl, James J Esq UNQUALIFIED58Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
James T IturbideAustraliaIvan Magalhaes QUALIFIED
Octavia N MaletGermanyIoni Bowcher QUALIFIED
Greenwood R GauchoFranceXuxue Feng UNQUALIFIED
Jennifer F ChuiAustraliaAsiya Javayant PROPOSAL
Chavez Y MacleadUnited KingdomElwin Sharvill NEGOTIATION
Jeanfrancois A MacleadBrazilBernardo Dominic RENEWAL
Aruna D SergiUnited KingdomIoni Bowcher QUALIFIED
Kaitlin F StockhamUnited KingdomOnyama Limba RENEWAL
Wickens F FerenczUnited KingdomOnyama Limba PROPOSAL
Rodrigues H VenereSpainIvan Magalhaes NEGOTIATION
Murillo H NestleItalyIoni Bowcher UNQUALIFIED
Francesco S GarufiFranceXuxue Feng PROPOSAL
Aika A AlbaresAustraliaAmy Elsner QUALIFIED
Aruna T AlbaresIndiaBernardo Dominic NEGOTIATION
Adams L RulapaughUnited KingdomElwin Sharvill NEGOTIATION
Costa I PerinFranceIvan Magalhaes RENEWAL
Munro Z MacleadCanadaIvan Magalhaes RENEWAL
Ashley E VocelkaFranceStephen Shaw NEW
Kadeem U MacleadUnited KingdomStephen Shaw RENEWAL
Jeanfrancois O InouyeItalyIvan Magalhaes QUALIFIED
Nicolas T CaudyFranceAmy Elsner NEGOTIATION
Jennifer T BowleyUnited KingdomIvan Magalhaes QUALIFIED
Aruna S ButtJapanIoni Bowcher UNQUALIFIED
Misaki U FerenczArgentinaAnna Fali RENEWAL
Munro F SergiCanadaIvan Magalhaes UNQUALIFIED
Mujtaba O RoysterIndiaAsiya Javayant NEGOTIATION
Ashley I DilliardJapanAmy Elsner QUALIFIED
David P SlusarskiRussiaElwin Sharvill QUALIFIED
Antonio R IturbideFranceElwin Sharvill QUALIFIED
Clifford Q PoquetteJapanBernardo Dominic QUALIFIED
Ashley L FollerBrazilAsiya Javayant PROPOSAL
Deepesh D GauchoCanadaOnyama Limba RENEWAL
Sinclair B CampainIndiaOnyama Limba NEW
Faith D RoysterFranceAmy Elsner UNQUALIFIED
Kaitlin E CaldareraIndiaIoni Bowcher NEW
Jeanfrancois J BriddickArgentinaAsiya Javayant NEW
Leon R DarakjyRussiaOnyama Limba PROPOSAL
Salvatore A VocelkaJapanElwin Sharvill PROPOSAL
Greenwood S VenereFranceAsiya Javayant RENEWAL
Aika C BologniaCanadaAsiya Javayant PROPOSAL
Sinclair Z MaletGermanyIoni Bowcher PROPOSAL
Emily S RoysterAustraliaIoni Bowcher UNQUALIFIED
Arvin C PaprockiCanadaOnyama Limba NEW
Stacey N RimFranceIvan Magalhaes QUALIFIED
Kadeem R RoysterAustraliaElwin Sharvill RENEWAL
David V ShinkoGermanyIvan Magalhaes NEGOTIATION
Leon C MaletArgentinaXuxue Feng UNQUALIFIED
Johnson B RimCanadaIoni Bowcher PROPOSAL
Alejandro M StockhamCanadaOnyama Limba UNQUALIFIED
Aditya P WieserRussiaAnna Fali UNQUALIFIED
Frozen Columns
Name
Misaki R Kusko
Salvatore N Nestle
Aruna J Garufi
Claire G Malet
Kaitlin Y Ruta
Leon E Sergi
Cody B Whobrey
Smith A Wieser
Izzy F Foller
Munro R Gillian
Deepesh P Whobrey
Morrow C Shinko
Darci C Stockham
Johnson T Malet
Ashley E Butt
Jones U Tollner
Isabel E Rim
Jefferson B Whobrey
Nicolas J Briddick
Claire F Butt
Aditya R Butt
Claire A Garufi
David O Albares
Adams C Kusko
Munro S Gillian
Adams K Iturbide
Misaki O Inouye
Jefferson T Gaucho
Stacey Y Butt
Silvio W Flosi
Julie Z Caldarera
Alejandro L Stenseth
Leja D Dilliard
Ricardo E Ferencz
Johnson I Glick
Aditya D Rulapaugh
Octavia T Caldarera
Tony S Gaucho
Francesco D Schemmer
Ashley D Bolognia
Johnson K Bolognia
Octavia F Caldarera
Murillo O Ferencz
Leon S Kusko
Rodrigues G Malet
Tony Q Marrier
Ivar Y Paprocki
Emily X Wieser
Jefferson Z Stenseth
Morrow D Garufi
IdCountryDate
1000Japan2024-04-18
1001Spain2024-04-21
1002Japan2024-04-17
1003Canada2024-04-25
1004Argentina2024-04-25
1005Brazil2024-04-18
1006Canada2024-04-08
1007Germany2024-04-17
1008United Kingdom2024-04-18
1009Spain2024-04-11
1010United Kingdom2024-03-29
1011Argentina2024-04-19
1012India2024-04-21
1013Brazil2024-04-21
1014India2024-03-31
1015Italy2024-04-20
1016Canada2024-04-21
1017United Kingdom2024-04-18
1018France2024-04-11
1019Brazil2024-04-11
1020France2024-04-11
1021Japan2024-03-31
1022Japan2024-04-11
1023Argentina2024-04-21
1024Russia2024-04-16
1025Argentina2024-04-08
1026United Kingdom2024-04-01
1027United Kingdom2024-04-23
1028Argentina2024-04-24
1029Argentina2024-03-31
1030France2024-04-11
1031Russia2024-04-25
1032Argentina2024-04-22
1033Argentina2024-03-30
1034Italy2024-04-24
1035United Kingdom2024-04-18
1036Canada2024-04-03
1037Australia2024-04-07
1038Canada2024-04-16
1039Brazil2024-03-31
1040Spain2024-04-22
1041Argentina2024-04-20
1042United Kingdom2024-04-07
1043Argentina2024-04-21
1044Argentina2024-04-23
1045Canada2024-04-04
1046Italy2024-04-18
1047Italy2024-04-19
1048France2024-04-11
1049Australia2024-04-14

On-Demand Data

NameIdCountryDate
Chavez O Caldarera1000Italy2024-04-22
Aruna K Bolognia1001Italy2024-04-16
Wickens C Whobrey1002Canada2024-04-11
Isabel J Marrier1003Argentina2024-04-11
Jones R Wieser1004France2024-04-08
Emily M Maclead1005Brazil2024-04-10
Munro G Gaucho1006Australia2024-03-27
Rodrigues U Marrier1007Spain2024-04-10
Cody D Rulapaugh1008Australia2024-03-30
Mayumi X Darakjy1009Russia2024-04-24
Jennifer F Oldroyd1010Russia2024-04-13
Claire A Kolmetz1011United Kingdom2024-04-12
Misaki D Royster1012India2024-04-17
Francesco T Gaucho1013Brazil2024-04-13
Greenwood O Amigon1014Argentina2024-04-08
Arvin N Inouye1015Brazil2024-04-21
Silvio U Schemmer1016Australia2024-04-19
Darci D Maclead1017Germany2024-04-16
Ricardo N Caldarera1018Germany2024-03-30
Ricardo B Bowley1019Japan2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna J RulapaughGermanyAmy Elsner QUALIFIED
Silvio N SchemmerFranceXuxue Feng QUALIFIED
Nicolas I PerinRussiaAmy Elsner PROPOSAL
Izzy A MacleadCanadaAsiya Javayant NEW
Leon J OldroydRussiaAsiya Javayant RENEWAL
Izzy Z KolmetzJapanBernardo Dominic RENEWAL
Ricardo Z ShinkoFranceElwin Sharvill NEGOTIATION
Munro Z MorascaBrazilAmy Elsner NEGOTIATION
Claire K SergiAustraliaBernardo Dominic NEW
Morrow W MaletBrazilAmy Elsner NEW
Claire M KuskoIndiaElwin Sharvill NEGOTIATION
James U CaldareraItalyStephen Shaw NEW
David Z VenereRussiaElwin Sharvill QUALIFIED
Alejandro Y StockhamJapanIvan Magalhaes UNQUALIFIED
Smith H SchemmerSpainElwin Sharvill NEGOTIATION
Rodrigues H CaudyCanadaStephen Shaw RENEWAL
Jennifer V CampainItalyAnna Fali NEGOTIATION
Wickens T InouyeAustraliaOnyama Limba NEW
Ivar Y IturbideUnited KingdomStephen Shaw UNQUALIFIED
Silvio I NestleArgentinaStephen Shaw NEGOTIATION
Mujtaba Q SchemmerRussiaBernardo Dominic PROPOSAL
Ashley K WaycottItalyXuxue Feng RENEWAL
Morrow W DoeFranceIoni Bowcher UNQUALIFIED
Isabel O FigeroaAustraliaXuxue Feng PROPOSAL
Ivar G RimCanadaIvan Magalhaes NEGOTIATION
Stacey W DilliardRussiaIvan Magalhaes RENEWAL
Johnson Z MarrierGermanyBernardo Dominic RENEWAL
Deepesh J IturbideAustraliaOnyama Limba UNQUALIFIED
Faith T RulapaughArgentinaBernardo Dominic UNQUALIFIED
Greenwood Z BowleyAustraliaOnyama Limba NEGOTIATION
David E BowleyCanadaIoni Bowcher NEGOTIATION
Adams M VocelkaJapanAsiya Javayant PROPOSAL
David O SergiJapanElwin Sharvill NEW
Morrow A BriddickFranceAnna Fali UNQUALIFIED
Tony W WaycottUnited KingdomXuxue Feng NEW
Wickens C AlbaresItalyAnna Fali PROPOSAL
Chavez L StockhamRussiaStephen Shaw RENEWAL
Mujtaba G SlusarskiRussiaIoni Bowcher NEGOTIATION
Isabel N GlickUnited KingdomXuxue Feng QUALIFIED
Alejandro L GarufiAustraliaAsiya Javayant 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>