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
Mayumi P CaudyGermanyAnna Fali RENEWAL
Jefferson E DarakjyFranceXuxue Feng UNQUALIFIED
James Q FigeroaJapanIoni Bowcher RENEWAL
Alejandro I BriddickSpainIoni Bowcher RENEWAL
Ricardo I NickaBrazilStephen Shaw PROPOSAL
Ashley I StensethGermanyAmy Elsner UNQUALIFIED
Jennifer X StensethJapanElwin Sharvill UNQUALIFIED
Jeanfrancois R AlbaresCanadaAnna Fali PROPOSAL
Clifford P MorascaIndiaStephen Shaw RENEWAL
Nicolas P CaudyCanadaOnyama Limba QUALIFIED
Aruna Z StensethIndiaXuxue Feng NEGOTIATION
Ashley V NickaJapanIoni Bowcher UNQUALIFIED
Jones I WhobreyJapanOnyama Limba NEGOTIATION
David I PerinGermanyAnna Fali UNQUALIFIED
Aika F KuskoUnited KingdomOnyama Limba RENEWAL
Stacey F RoysterIndiaOnyama Limba NEGOTIATION
Mayumi O FlosiJapanAnna Fali RENEWAL
Aruna S CaldareraArgentinaOnyama Limba PROPOSAL
Juan A WieserBrazilElwin Sharvill RENEWAL
Jennifer Z FerenczGermanyOnyama Limba NEW
Julie Z MacleadSpainIoni Bowcher QUALIFIED
Johnson Y PoquetteBrazilIvan Magalhaes NEGOTIATION
Smith M RoysterBrazilAmy Elsner NEW
Kaitlin P WhobreyIndiaOnyama Limba PROPOSAL
Leon C DilliardJapanXuxue Feng UNQUALIFIED
Costa I AmigonJapanOnyama Limba NEW
Faith J CaldareraBrazilAnna Fali NEW
Leon G FlosiArgentinaAnna Fali NEGOTIATION
David U RulapaughAustraliaAsiya Javayant NEGOTIATION
Aruna R FerenczArgentinaAnna Fali NEW
Silvio I MorascaBrazilAmy Elsner RENEWAL
Juan O StensethAustraliaAsiya Javayant NEW
Tony A RimRussiaXuxue Feng NEGOTIATION
Misaki H ShinkoGermanyStephen Shaw RENEWAL
Stacey S StockhamAustraliaBernardo Dominic UNQUALIFIED
Maria N ShinkoRussiaIoni Bowcher NEW
Arvin M BowleyAustraliaBernardo Dominic NEGOTIATION
Costa E OldroydFranceXuxue Feng QUALIFIED
Johnson S GauchoJapanStephen Shaw QUALIFIED
Octavia M SaylorsGermanyBernardo Dominic NEW
Octavia T SlusarskiArgentinaBernardo Dominic PROPOSAL
Greenwood F InouyeSpainElwin Sharvill RENEWAL
Antonio Q VenereBrazilElwin Sharvill NEW
Julie Q StockhamBrazilAnna Fali PROPOSAL
Aditya N IturbideCanadaIoni Bowcher NEGOTIATION
Arvin S SchemmerJapanStephen Shaw QUALIFIED
Juan Z ChuiArgentinaAnna Fali QUALIFIED
Izzy Y AlbaresArgentinaAnna Fali UNQUALIFIED
Maria V MacleadRussiaOnyama Limba NEGOTIATION
James F GillianJapanOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
David G ShinkoAustraliaIoni Bowcher QUALIFIED
Jennifer P WhobreyUnited KingdomAsiya Javayant RENEWAL
Munro D CampainRussiaXuxue Feng RENEWAL
Ivar R PoquetteCanadaStephen Shaw PROPOSAL
Leja X IturbideIndiaBernardo Dominic QUALIFIED
Johnson X PaprockiIndiaAnna Fali PROPOSAL
Clifford S MarrierBrazilXuxue Feng UNQUALIFIED
Arvin M CampainCanadaBernardo Dominic NEW
Francesco Z GillianArgentinaElwin Sharvill QUALIFIED
Cody O MorascaGermanyAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel V WieserGermany2024-04-15Rangoni Of Florence PROPOSAL34Onyama Limba
1001Johnson U MaletSpain2024-04-06Rangoni Of Florence RENEWAL25Anna Fali
1002Rodrigues A CaldareraIndia2024-04-27King, Christopher A Esq QUALIFIED85Xuxue Feng
1003Jennifer Y RutaItaly2024-03-30Chanay, Jeffrey A Esq QUALIFIED24Ioni Bowcher
1004Aika V AlbaresCanada2024-03-31Feiner Bros RENEWAL24Amy Elsner
1005Kadeem U NestleJapan2024-04-01Buckley Miller Wright QUALIFIED62Ioni Bowcher
1006Faith W VenereFrance2024-04-15Truhlar And Truhlar Attys PROPOSAL9Asiya Javayant
1007Isabel D MarrierUnited Kingdom2024-04-15King, Christopher A Esq PROPOSAL21Amy Elsner
1008Jones Y InouyeSpain2024-04-15Rangoni Of Florence QUALIFIED92Anna Fali
1009Darci D FlosiIndia2024-03-31Commercial Press NEW98Ioni Bowcher
1010Arvin U NickaAustralia2024-04-01Feiner Bros RENEWAL8Xuxue Feng
1011Wickens Q WhobreyRussia2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED52Asiya Javayant
1012Emily M GauchoCanada2024-04-03Buckley Miller Wright RENEWAL29Stephen Shaw
1013Chavez F GillianRussia2024-04-25Dorl, James J Esq NEGOTIATION94Ivan Magalhaes
1014Antonio R FollerBrazil2024-04-28Chapman, Ross E Esq NEW78Stephen Shaw
1015Murillo Y VocelkaCanada2024-04-03Printing Dimensions RENEWAL95Amy Elsner
1016Alejandro V WieserArgentina2024-04-08Feltz Printing Service QUALIFIED34Ioni Bowcher
1017Morrow U CampainBrazil2024-04-28Chemel, James L Cpa UNQUALIFIED12Stephen Shaw
1018James Z KolmetzGermany2024-04-06Buckley Miller Wright RENEWAL2Xuxue Feng
1019Jeanfrancois B CaudyFrance2024-04-17Dorl, James J Esq NEW40Elwin Sharvill
1020Mujtaba M ChuiUnited Kingdom2024-04-25Printing Dimensions UNQUALIFIED57Ivan Magalhaes
1021Munro R PoquetteIndia2024-04-22Commercial Press NEW81Xuxue Feng
1022Leja A KuskoGermany2024-04-27Chanay, Jeffrey A Esq NEW83Ioni Bowcher
1023Tony O RimSpain2024-04-10Chapman, Ross E Esq PROPOSAL31Ivan Magalhaes
1024Jeanfrancois H GillianUnited Kingdom2024-04-05Dorl, James J Esq NEGOTIATION14Ivan Magalhaes
1025Mujtaba C FollerCanada2024-04-28Truhlar And Truhlar Attys NEGOTIATION28Onyama Limba
1026Smith J KuskoCanada2024-04-08Chanay, Jeffrey A Esq PROPOSAL44Onyama Limba
1027Nicolas S DilliardUnited Kingdom2024-04-04Benton, John B Jr QUALIFIED45Stephen Shaw
1028Isabel G VenereArgentina2024-04-10Chapman, Ross E Esq NEGOTIATION4Bernardo Dominic
1029Chavez C DarakjyUnited Kingdom2024-04-14Rousseaux, Michael Esq NEW51Amy Elsner
1030Murillo R CaudyBrazil2024-04-08Rousseaux, Michael Esq PROPOSAL9Amy Elsner
1031Murillo W RoysterAustralia2024-04-11Commercial Press NEGOTIATION1Onyama Limba
1032David Q FlosiArgentina2024-04-12Feiner Bros NEGOTIATION81Onyama Limba
1033Smith I WhobreyArgentina2024-03-30Feiner Bros RENEWAL39Elwin Sharvill
1034Munro F PoquetteAustralia2024-04-20Rangoni Of Florence RENEWAL95Ioni Bowcher
1035Aruna D WhobreyGermany2024-04-12Rousseaux, Michael Esq NEW11Xuxue Feng
1036Smith O AmigonBrazil2024-04-18Rangoni Of Florence UNQUALIFIED13Amy Elsner
1037Ashley Z SergiIndia2024-04-04Benton, John B Jr NEGOTIATION51Ivan Magalhaes
1038Octavia Q OstroskyItaly2024-04-05Feiner Bros PROPOSAL55Xuxue Feng
1039Jeanfrancois A StockhamArgentina2024-04-15Commercial Press QUALIFIED62Bernardo Dominic
1040Sinclair B GillianArgentina2024-04-19Truhlar And Truhlar Attys RENEWAL66Amy Elsner
1041Costa E PaprockiIndia2024-04-27Chanay, Jeffrey A Esq NEW39Ivan Magalhaes
1042Jennifer H DoeIndia2024-03-30Rousseaux, Michael Esq QUALIFIED83Ivan Magalhaes
1043Wickens S RoysterCanada2024-04-17Commercial Press NEGOTIATION84Ivan Magalhaes
1044Murillo U DarakjyItaly2024-04-07King, Christopher A Esq RENEWAL19Amy Elsner
1045Francesco M PoquetteUnited Kingdom2024-04-15Commercial Press PROPOSAL4Ivan Magalhaes
1046Cody I FigeroaIndia2024-04-22Commercial Press PROPOSAL7Ivan Magalhaes
1047Izzy Q SergiCanada2024-04-09Commercial Press QUALIFIED20Ioni Bowcher
1048Greenwood O BowleyGermany2024-04-20Benton, John B Jr NEGOTIATION33Elwin Sharvill
1049Emily M SlusarskiArgentina2024-04-26Benton, John B Jr NEGOTIATION19Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Costa J FollerCanadaAnna Fali QUALIFIED
James Q RutaGermanyAmy Elsner PROPOSAL
Mayumi Q FlosiSpainStephen Shaw PROPOSAL
Mujtaba Z GlickFranceIvan Magalhaes NEGOTIATION
Kaitlin U OstroskyArgentinaXuxue Feng QUALIFIED
Jeanfrancois F NickaFranceIvan Magalhaes NEW
Jones H WieserCanadaAmy Elsner NEW
Jennifer U SergiGermanyBernardo Dominic QUALIFIED
Wickens E SaylorsSpainIoni Bowcher UNQUALIFIED
Francesco C SergiArgentinaAmy Elsner QUALIFIED
Julie R AmigonItalyIoni Bowcher RENEWAL
Greenwood G WhobreyJapanStephen Shaw NEW
Maria J StensethCanadaElwin Sharvill QUALIFIED
Arvin Y AmigonItalyOnyama Limba UNQUALIFIED
Arvin W SlusarskiArgentinaElwin Sharvill NEW
Wickens Q ChuiItalyAnna Fali QUALIFIED
Isabel I ChuiGermanyIoni Bowcher UNQUALIFIED
Faith U ChuiCanadaIoni Bowcher PROPOSAL
Chavez I PaprockiCanadaElwin Sharvill PROPOSAL
Rodrigues B PoquetteSpainIoni Bowcher UNQUALIFIED
Ashley Z WaycottFranceAsiya Javayant PROPOSAL
Chavez X SergiSpainAsiya Javayant RENEWAL
Alejandro H SchemmerBrazilAsiya Javayant NEGOTIATION
Izzy F NestleCanadaAnna Fali PROPOSAL
Chavez G KolmetzItalyIoni Bowcher UNQUALIFIED
Ivar L BologniaBrazilAnna Fali QUALIFIED
Smith W TollnerUnited KingdomElwin Sharvill NEW
Mujtaba G BriddickIndiaAsiya Javayant NEGOTIATION
Kaitlin V BologniaSpainIvan Magalhaes NEGOTIATION
Jeanfrancois O OstroskyFranceIvan Magalhaes QUALIFIED
Misaki R StockhamSpainAsiya Javayant UNQUALIFIED
Claire Z SchemmerArgentinaIvan Magalhaes UNQUALIFIED
Mayumi L KolmetzRussiaAnna Fali RENEWAL
Emily A MacleadAustraliaElwin Sharvill PROPOSAL
Johnson R IturbideItalyIoni Bowcher QUALIFIED
Aruna V WaycottUnited KingdomOnyama Limba PROPOSAL
Nicolas L WaycottFranceIvan Magalhaes PROPOSAL
Tony B RulapaughSpainAnna Fali UNQUALIFIED
Maisha D MorascaItalyAsiya Javayant RENEWAL
Wickens B NickaArgentinaAsiya Javayant PROPOSAL
Kaitlin A WhobreyCanadaBernardo Dominic QUALIFIED
Maisha E SlusarskiBrazilIvan Magalhaes NEW
Salvatore Q BowleyCanadaElwin Sharvill NEGOTIATION
Morrow J BowleyItalyXuxue Feng UNQUALIFIED
Francesco N GarufiBrazilOnyama Limba QUALIFIED
Ricardo Y SchemmerRussiaAsiya Javayant NEGOTIATION
Isabel S PaprockiUnited KingdomElwin Sharvill UNQUALIFIED
Kaitlin S OldroydSpainIvan Magalhaes PROPOSAL
Mujtaba B SergiItalyXuxue Feng QUALIFIED
Juan Y MaletCanadaIoni Bowcher QUALIFIED
Frozen Columns
Name
Ivar I Gaucho
Stacey D Darakjy
Emily P Paprocki
Sinclair D Marrier
Francesco P Caldarera
Faith D Inouye
Juan B Poquette
Aruna X Malet
Greenwood M Schemmer
Silvio R Kusko
Ashley L Kolmetz
Emily H Caudy
Emily C Figeroa
Ivar R Gillian
Adams K Campain
Misaki P Paprocki
Ashley Q Oldroyd
Francesco G Caudy
Rodrigues Q Dilliard
Deepesh A Whobrey
Aika D Bowley
Johnson Y Foller
Sinclair T Amigon
Sinclair B Foller
Deepesh R Dilliard
Arvin B Inouye
Kadeem J Whobrey
Stacey F Amigon
Smith Z Chui
Izzy G Malet
Antonio U Maclead
Ivar X Royster
Clifford L Dilliard
Emily V Kusko
Emily D Shinko
Arvin F Morasca
Tony R Nestle
Nicolas D Kusko
Tony S Marrier
Salvatore I Marrier
Faith Z Bolognia
Maria F Gaucho
Arvin L Poquette
David O Dilliard
Rodrigues P Sergi
Mujtaba C Butt
Mayumi C Amigon
Aditya F Campain
Sinclair G Kusko
Morrow R Shinko
IdCountryDate
1000India2024-03-31
1001Italy2024-04-17
1002Japan2024-04-21
1003Spain2024-03-30
1004Brazil2024-04-14
1005Argentina2024-03-31
1006Argentina2024-04-13
1007Canada2024-04-16
1008Canada2024-04-16
1009Australia2024-04-10
1010Italy2024-04-08
1011United Kingdom2024-04-08
1012Japan2024-04-17
1013Italy2024-04-21
1014Argentina2024-04-10
1015India2024-04-03
1016Brazil2024-04-25
1017Italy2024-04-16
1018Australia2024-04-16
1019France2024-03-30
1020United Kingdom2024-03-30
1021Brazil2024-04-20
1022Argentina2024-04-15
1023United Kingdom2024-04-08
1024Japan2024-04-15
1025France2024-04-10
1026Australia2024-04-08
1027Australia2024-04-13
1028Canada2024-04-17
1029Japan2024-04-18
1030France2024-04-05
1031Australia2024-04-12
1032Germany2024-03-31
1033Italy2024-04-03
1034India2024-04-26
1035Brazil2024-04-13
1036Germany2024-04-10
1037Brazil2024-04-06
1038Japan2024-04-19
1039Australia2024-04-02
1040Japan2024-04-25
1041France2024-04-28
1042Brazil2024-04-25
1043Argentina2024-04-09
1044Germany2024-04-20
1045Japan2024-04-13
1046Argentina2024-04-08
1047Spain2024-04-07
1048Brazil2024-04-15
1049Germany2024-04-25

On-Demand Data

NameIdCountryDate
Nicolas G Ferencz1000United Kingdom2024-04-13
Darci O Rim1001India2024-04-22
Kadeem T Waycott1002Russia2024-04-15
Mujtaba R Slusarski1003Russia2024-04-02
Munro T Nicka1004Australia2024-04-07
Stacey Q Tollner1005Canada2024-04-24
Mujtaba I Glick1006Argentina2024-04-01
Alejandro V Butt1007Brazil2024-04-27
Antonio K Schemmer1008Argentina2024-04-25
Costa U Maclead1009Australia2024-04-21
Murillo B Briddick1010Australia2024-04-20
Misaki S Caldarera1011Spain2024-04-10
Smith Y Poquette1012Argentina2024-04-27
Aditya D Iturbide1013Canada2024-04-10
Aruna H Stenseth1014Brazil2024-04-08
Munro G Foller1015France2024-04-09
Deepesh P Marrier1016Canada2024-04-21
Smith H Garufi1017Russia2024-04-11
Deepesh B Campain1018Canada2024-04-17
Isabel B Foller1019India2024-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens G RimCanadaAnna Fali NEW
Izzy X MarrierBrazilAsiya Javayant QUALIFIED
Johnson O RulapaughArgentinaXuxue Feng PROPOSAL
Juan G RimJapanXuxue Feng QUALIFIED
Jones W BologniaJapanElwin Sharvill NEW
Maisha M SaylorsArgentinaIvan Magalhaes PROPOSAL
Stacey K NickaJapanAsiya Javayant UNQUALIFIED
Aditya Q NickaItalyAnna Fali RENEWAL
Deepesh M PerinItalyAnna Fali NEGOTIATION
Kaitlin W BriddickUnited KingdomOnyama Limba PROPOSAL
Maria C FollerAustraliaBernardo Dominic RENEWAL
Aditya Q RoysterGermanyBernardo Dominic NEW
Morrow K BowleyRussiaAnna Fali PROPOSAL
Kadeem B CaudyFranceBernardo Dominic NEW
Jennifer O KuskoItalyXuxue Feng QUALIFIED
Maisha J RoysterGermanyBernardo Dominic UNQUALIFIED
Antonio M VenereJapanXuxue Feng PROPOSAL
Stacey P BowleyJapanStephen Shaw NEW
Juan V WaycottJapanAmy Elsner NEGOTIATION
Antonio C GarufiItalyAnna Fali PROPOSAL
Rodrigues B NickaBrazilBernardo Dominic UNQUALIFIED
Clifford R WieserAustraliaAmy Elsner RENEWAL
Salvatore S GarufiItalyIvan Magalhaes RENEWAL
Izzy W MarrierUnited KingdomIvan Magalhaes NEW
Leja I RoysterIndiaStephen Shaw QUALIFIED
Murillo A OldroydAustraliaIoni Bowcher RENEWAL
Rodrigues Q ShinkoFranceBernardo Dominic QUALIFIED
Mujtaba T StensethFranceIvan Magalhaes RENEWAL
Deepesh P FigeroaArgentinaAsiya Javayant RENEWAL
Nicolas O DoeItalyAmy Elsner NEW
Tony D SaylorsUnited KingdomElwin Sharvill RENEWAL
Emily Y RimFranceOnyama Limba QUALIFIED
Maisha D VocelkaIndiaAsiya Javayant QUALIFIED
Leon Q NickaArgentinaAsiya Javayant RENEWAL
Jones Z CaudyGermanyAnna Fali QUALIFIED
Alejandro X ShinkoBrazilXuxue Feng RENEWAL
Claire V StockhamFranceIvan Magalhaes UNQUALIFIED
Darci F CaudyItalyOnyama Limba UNQUALIFIED
Mujtaba V CampainCanadaBernardo Dominic QUALIFIED
Kadeem Q AlbaresBrazilXuxue Feng NEW

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