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
Munro K RutaGermanyAmy Elsner PROPOSAL
Maria O BowleyUnited KingdomAnna Fali NEW
Morrow T RutaItalyAsiya Javayant UNQUALIFIED
Costa G VenereAustraliaAmy Elsner UNQUALIFIED
Leja L RoysterBrazilIvan Magalhaes NEGOTIATION
Cody O GarufiRussiaElwin Sharvill UNQUALIFIED
Cody K CaldareraItalyIvan Magalhaes RENEWAL
Juan G GarufiIndiaAnna Fali NEGOTIATION
Kadeem S CampainRussiaAmy Elsner PROPOSAL
Aika O FigeroaUnited KingdomAsiya Javayant NEGOTIATION
Aika R FerenczUnited KingdomAsiya Javayant NEW
Clifford Z MarrierAustraliaIoni Bowcher PROPOSAL
Leon L ChuiFranceOnyama Limba NEGOTIATION
Salvatore F TollnerRussiaElwin Sharvill UNQUALIFIED
Aika P TollnerBrazilElwin Sharvill QUALIFIED
Leon R PerinGermanyElwin Sharvill RENEWAL
Leja P SlusarskiFranceXuxue Feng NEGOTIATION
Costa W KolmetzArgentinaAmy Elsner NEW
Faith R KolmetzFranceOnyama Limba UNQUALIFIED
Jennifer I OstroskyCanadaAmy Elsner NEW
Arvin L StockhamIndiaElwin Sharvill NEW
Jefferson U MacleadArgentinaXuxue Feng UNQUALIFIED
Jennifer K GauchoRussiaAmy Elsner QUALIFIED
Aika Z CaudyUnited KingdomAsiya Javayant NEW
Ashley M OstroskyCanadaAsiya Javayant NEW
Jeanfrancois B RutaItalyAmy Elsner RENEWAL
Francesco E KuskoArgentinaOnyama Limba QUALIFIED
Sinclair E DarakjyItalyStephen Shaw RENEWAL
Francesco Z WhobreyBrazilAnna Fali NEGOTIATION
Silvio N MarrierFranceElwin Sharvill QUALIFIED
Maria U FollerBrazilBernardo Dominic PROPOSAL
Stacey K PerinIndiaXuxue Feng QUALIFIED
Leja A BologniaSpainAnna Fali NEW
Kadeem M RutaJapanElwin Sharvill NEW
Chavez V RimSpainStephen Shaw NEW
Sinclair U GillianItalyElwin Sharvill UNQUALIFIED
Kaitlin I PoquetteIndiaAmy Elsner NEGOTIATION
Maria Z MaletArgentinaIvan Magalhaes PROPOSAL
Mayumi M GauchoArgentinaStephen Shaw PROPOSAL
Jennifer L FlosiArgentinaIvan Magalhaes QUALIFIED
Ashley N WaycottFranceStephen Shaw UNQUALIFIED
Chavez X StensethAustraliaAsiya Javayant RENEWAL
Greenwood Z GauchoItalyXuxue Feng UNQUALIFIED
Maria Q PerinBrazilIoni Bowcher UNQUALIFIED
Ivar X StockhamIndiaAsiya Javayant RENEWAL
Greenwood Z AlbaresArgentinaIoni Bowcher NEW
Sinclair V FollerUnited KingdomElwin Sharvill NEW
Morrow Q StensethAustraliaAnna Fali UNQUALIFIED
Morrow R FlosiJapanIoni Bowcher UNQUALIFIED
Aika M BowleyFranceAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Faith U IturbideJapanBernardo Dominic PROPOSAL
Costa O OstroskyAustraliaElwin Sharvill NEW
Tony D ButtSpainOnyama Limba NEGOTIATION
Juan G AlbaresItalyOnyama Limba UNQUALIFIED
Sinclair X MarrierIndiaElwin Sharvill QUALIFIED
Mujtaba V CampainUnited KingdomXuxue Feng QUALIFIED
Jefferson R DilliardJapanAmy Elsner NEW
Julie R OldroydFranceOnyama Limba QUALIFIED
Murillo S CaudyIndiaXuxue Feng NEGOTIATION
Antonio C OldroydGermanyAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro Z RoysterJapan2024-04-03Rousseaux, Michael Esq NEGOTIATION41Anna Fali
1001Kadeem I MaletGermany2024-04-02Benton, John B Jr NEGOTIATION89Xuxue Feng
1002Ivar Z MorascaJapan2024-04-09Chapman, Ross E Esq PROPOSAL91Bernardo Dominic
1003Silvio G RimRussia2024-04-10Morlong Associates UNQUALIFIED31Xuxue Feng
1004Maria I WaycottIndia2024-04-06Rousseaux, Michael Esq UNQUALIFIED34Stephen Shaw
1005Emily Y WaycottRussia2024-04-10Morlong Associates NEGOTIATION40Bernardo Dominic
1006Arvin L KuskoArgentina2024-03-30Dorl, James J Esq NEGOTIATION85Anna Fali
1007Nicolas O PaprockiArgentina2024-04-09King, Christopher A Esq UNQUALIFIED88Bernardo Dominic
1008Juan D PerinCanada2024-04-20Feltz Printing Service NEGOTIATION17Xuxue Feng
1009Nicolas G FollerUnited Kingdom2024-03-30Chemel, James L Cpa PROPOSAL87Onyama Limba
1010Greenwood J WaycottItaly2024-04-16Chemel, James L Cpa QUALIFIED5Xuxue Feng
1011Ashley E StensethAustralia2024-04-18Buckley Miller Wright RENEWAL82Asiya Javayant
1012Emily S SaylorsArgentina2024-04-22King, Christopher A Esq RENEWAL40Onyama Limba
1013Mujtaba F GlickIndia2024-04-14Rousseaux, Michael Esq RENEWAL47Stephen Shaw
1014Maisha L GillianJapan2024-04-07Rangoni Of Florence RENEWAL4Anna Fali
1015Ashley V AmigonGermany2024-04-13Feiner Bros QUALIFIED94Amy Elsner
1016Deepesh S PoquetteCanada2024-04-11Rangoni Of Florence UNQUALIFIED26Anna Fali
1017Isabel O SchemmerFrance2024-04-23Truhlar And Truhlar Attys RENEWAL52Elwin Sharvill
1018Juan U VenereSpain2024-04-10Feiner Bros UNQUALIFIED70Elwin Sharvill
1019Smith I FerenczFrance2024-04-15Truhlar And Truhlar Attys PROPOSAL28Bernardo Dominic
1020Adams H BriddickIndia2024-04-21Feltz Printing Service UNQUALIFIED11Onyama Limba
1021Silvio N MaletRussia2024-04-10Printing Dimensions NEGOTIATION14Ioni Bowcher
1022Salvatore U GarufiCanada2024-04-18Feiner Bros RENEWAL45Xuxue Feng
1023Greenwood T RutaArgentina2024-04-06Truhlar And Truhlar Attys RENEWAL96Onyama Limba
1024Salvatore R PaprockiAustralia2024-04-02Rousseaux, Michael Esq NEW5Asiya Javayant
1025Munro T GauchoGermany2024-04-23Feltz Printing Service RENEWAL50Ioni Bowcher
1026Deepesh G KuskoArgentina2024-04-03Rangoni Of Florence UNQUALIFIED79Onyama Limba
1027Juan E VenereFrance2024-03-29Rangoni Of Florence NEGOTIATION87Stephen Shaw
1028Smith E AlbaresArgentina2024-04-02Morlong Associates NEGOTIATION41Amy Elsner
1029Tony Y SaylorsBrazil2024-04-16Chemel, James L Cpa QUALIFIED31Asiya Javayant
1030Jeanfrancois T GlickAustralia2024-04-10Feiner Bros UNQUALIFIED49Onyama Limba
1031Leon L ShinkoIndia2024-03-27Truhlar And Truhlar Attys NEGOTIATION7Asiya Javayant
1032Cody S FerenczIndia2024-03-29Chemel, James L Cpa UNQUALIFIED42Asiya Javayant
1033Johnson U BowleyUnited Kingdom2024-04-06Chanay, Jeffrey A Esq NEW62Elwin Sharvill
1034James K MarrierAustralia2024-04-02Feiner Bros QUALIFIED54Amy Elsner
1035Tony U NickaUnited Kingdom2024-04-02Printing Dimensions UNQUALIFIED42Xuxue Feng
1036Adams T IturbideIndia2024-04-24Feiner Bros NEGOTIATION70Amy Elsner
1037David Q FigeroaGermany2024-04-09Chemel, James L Cpa QUALIFIED22Stephen Shaw
1038Ricardo L InouyeBrazil2024-04-20Chapman, Ross E Esq UNQUALIFIED19Xuxue Feng
1039Mujtaba D SlusarskiCanada2024-04-24Chemel, James L Cpa NEGOTIATION85Ioni Bowcher
1040Izzy R IturbideFrance2024-04-09Rousseaux, Michael Esq PROPOSAL7Ivan Magalhaes
1041Leon W BriddickAustralia2024-04-06Morlong Associates UNQUALIFIED58Stephen Shaw
1042Stacey A WaycottRussia2024-03-31Dorl, James J Esq RENEWAL61Xuxue Feng
1043Ricardo S CampainCanada2024-04-09Commercial Press NEGOTIATION58Xuxue Feng
1044Faith N StensethUnited Kingdom2024-04-24King, Christopher A Esq UNQUALIFIED14Bernardo Dominic
1045Izzy W VocelkaIndia2024-04-04Feiner Bros UNQUALIFIED89Amy Elsner
1046Clifford B MaletGermany2024-04-23Benton, John B Jr RENEWAL57Asiya Javayant
1047Morrow V ChuiIndia2024-03-28Chapman, Ross E Esq NEW90Xuxue Feng
1048Jones U IturbideAustralia2024-04-07Chapman, Ross E Esq RENEWAL39Amy Elsner
1049Faith N GillianRussia2024-04-22Dorl, James J Esq RENEWAL14Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Isabel X NickaSpainStephen Shaw PROPOSAL
Darci U WhobreyRussiaElwin Sharvill UNQUALIFIED
Francesco P ButtAustraliaBernardo Dominic PROPOSAL
Adams U RulapaughFranceIoni Bowcher NEW
Stacey Y SchemmerJapanBernardo Dominic NEW
Cody X BriddickIndiaAsiya Javayant RENEWAL
Juan N StockhamGermanyBernardo Dominic UNQUALIFIED
Aditya L WieserArgentinaBernardo Dominic NEGOTIATION
Costa U PaprockiBrazilElwin Sharvill RENEWAL
Emily D RulapaughJapanStephen Shaw QUALIFIED
Jennifer P AlbaresFranceStephen Shaw NEW
Silvio D GarufiGermanyElwin Sharvill NEW
Maisha E WaycottItalyAsiya Javayant UNQUALIFIED
Stacey E WhobreyBrazilStephen Shaw PROPOSAL
Izzy V NickaCanadaElwin Sharvill RENEWAL
Isabel R TollnerUnited KingdomAmy Elsner RENEWAL
Ricardo X FigeroaBrazilAnna Fali QUALIFIED
Francesco A FerenczAustraliaBernardo Dominic NEW
James D CaudyAustraliaStephen Shaw RENEWAL
Jennifer O StockhamUnited KingdomIvan Magalhaes NEGOTIATION
Kadeem Q RoysterJapanXuxue Feng UNQUALIFIED
Morrow P AmigonArgentinaBernardo Dominic RENEWAL
Johnson F KuskoFranceAmy Elsner PROPOSAL
Jeanfrancois T SlusarskiJapanElwin Sharvill PROPOSAL
Jefferson C ShinkoItalyIoni Bowcher NEW
Leja D MaletAustraliaXuxue Feng PROPOSAL
David E WaycottSpainOnyama Limba UNQUALIFIED
Kadeem A ShinkoBrazilOnyama Limba UNQUALIFIED
Francesco W GillianItalyAnna Fali UNQUALIFIED
Jones N WhobreyJapanBernardo Dominic QUALIFIED
Claire K ShinkoGermanyAsiya Javayant QUALIFIED
Tony E KolmetzJapanXuxue Feng RENEWAL
Stacey A CaudyItalyElwin Sharvill NEW
Emily M KuskoJapanAnna Fali UNQUALIFIED
Sinclair H OldroydIndiaElwin Sharvill RENEWAL
Emily Y SergiCanadaOnyama Limba UNQUALIFIED
Maria B VocelkaArgentinaXuxue Feng RENEWAL
David S PerinSpainAmy Elsner UNQUALIFIED
Stacey N CaudySpainAmy Elsner NEGOTIATION
Jennifer B FerenczIndiaIoni Bowcher UNQUALIFIED
Ashley P SchemmerAustraliaOnyama Limba NEW
Darci F PaprockiArgentinaAmy Elsner NEW
Maisha S GauchoItalyAsiya Javayant PROPOSAL
Adams V FollerItalyIvan Magalhaes RENEWAL
Octavia R MarrierSpainIvan Magalhaes RENEWAL
Leja Y SaylorsFranceOnyama Limba PROPOSAL
Jennifer D DoeItalyXuxue Feng UNQUALIFIED
Maria D VocelkaSpainOnyama Limba NEW
Rodrigues K KolmetzGermanyAnna Fali UNQUALIFIED
Murillo Y GlickGermanyAsiya Javayant NEGOTIATION
Frozen Columns
Name
Isabel E Schemmer
Nicolas D Malet
Clifford B Garufi
Clifford V Rulapaugh
Alejandro N Schemmer
Leon D Tollner
Ivar O Stockham
Faith I Foller
Ricardo M Whobrey
Julie J Stockham
Antonio V Inouye
Salvatore S Ostrosky
Francesco X Darakjy
Francesco Y Rulapaugh
Mujtaba W Nicka
James H Rim
Cody J Saylors
Adams D Oldroyd
Stacey M Ferencz
Deepesh O Slusarski
Arvin G Inouye
Mayumi Z Bolognia
Sinclair P Briddick
Julie Y Tollner
Mayumi X Darakjy
David K Waycott
Cody D Royster
Claire J Dilliard
Silvio V Royster
Kaitlin J Gaucho
Faith W Oldroyd
Costa U Whobrey
Jefferson J Oldroyd
Costa F Stockham
Aditya M Amigon
Ricardo U Waycott
Alejandro M Iturbide
Rodrigues B Ruta
Julie X Shinko
Silvio P Tollner
Mayumi W Bowley
Johnson D Garufi
Maria N Bolognia
Isabel R Ostrosky
Leon N Briddick
Kaitlin M Amigon
Salvatore T Royster
Clifford F Nicka
Ricardo N Poquette
Alejandro K Kusko
IdCountryDate
1000Italy2024-04-25
1001Spain2024-04-19
1002Spain2024-04-10
1003Italy2024-04-11
1004Spain2024-04-02
1005Spain2024-04-03
1006Germany2024-04-09
1007Italy2024-03-29
1008Germany2024-04-22
1009France2024-03-31
1010Argentina2024-04-25
1011Canada2024-04-13
1012France2024-03-27
1013Australia2024-04-12
1014Italy2024-04-13
1015Spain2024-04-14
1016India2024-04-03
1017United Kingdom2024-04-08
1018Germany2024-04-10
1019Spain2024-04-16
1020Canada2024-04-16
1021Germany2024-04-08
1022Canada2024-04-23
1023France2024-04-03
1024Russia2024-04-22
1025Brazil2024-04-24
1026Australia2024-04-06
1027United Kingdom2024-04-22
1028Canada2024-04-09
1029Argentina2024-04-02
1030Australia2024-04-09
1031Brazil2024-03-27
1032Canada2024-04-01
1033Canada2024-04-09
1034Spain2024-04-23
1035United Kingdom2024-04-05
1036Australia2024-04-11
1037Argentina2024-04-08
1038Russia2024-03-31
1039France2024-04-22
1040Russia2024-03-28
1041Argentina2024-04-04
1042India2024-03-29
1043Brazil2024-03-31
1044Japan2024-04-17
1045Argentina2024-04-22
1046Germany2024-03-29
1047United Kingdom2024-04-24
1048Australia2024-04-03
1049Russia2024-04-22

On-Demand Data

NameIdCountryDate
Morrow W Perin1000Canada2024-04-18
Aika U Waycott1001Australia2024-04-03
Arvin L Garufi1002Canada2024-04-20
Rodrigues R Foller1003Germany2024-04-07
Faith H Venere1004United Kingdom2024-03-29
Munro Y Whobrey1005France2024-04-20
Stacey V Doe1006Russia2024-04-08
Julie P Waycott1007Germany2024-04-09
Murillo T Amigon1008Germany2024-04-02
Jeanfrancois L Ferencz1009United Kingdom2024-04-23
Jennifer F Amigon1010Canada2024-04-12
Francesco J Perin1011Germany2024-04-02
Maria W Ruta1012United Kingdom2024-04-21
Emily Y Wieser1013Spain2024-03-27
Munro H Glick1014Argentina2024-04-22
Jennifer D Kusko1015India2024-04-08
Juan U Bolognia1016United Kingdom2024-04-05
Mujtaba O Flosi1017Spain2024-04-12
Sinclair C Whobrey1018Australia2024-04-13
Kadeem D Royster1019Brazil2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith X VocelkaCanadaXuxue Feng NEGOTIATION
Izzy I RimIndiaIoni Bowcher QUALIFIED
Sinclair Y RulapaughGermanyIvan Magalhaes PROPOSAL
Izzy M MacleadAustraliaAnna Fali NEGOTIATION
Isabel W AmigonFranceIoni Bowcher NEW
Greenwood F CampainAustraliaIoni Bowcher UNQUALIFIED
Munro R ButtBrazilAsiya Javayant UNQUALIFIED
Aika G PoquetteJapanBernardo Dominic PROPOSAL
Greenwood H KuskoUnited KingdomAsiya Javayant QUALIFIED
Adams B InouyeItalyAnna Fali UNQUALIFIED
Smith A MaletItalyAsiya Javayant NEGOTIATION
Leja G FlosiJapanIoni Bowcher NEGOTIATION
Ivar H FigeroaSpainOnyama Limba UNQUALIFIED
Arvin L PaprockiCanadaStephen Shaw PROPOSAL
Chavez C GauchoFranceAnna Fali PROPOSAL
Wickens I FollerGermanyOnyama Limba UNQUALIFIED
Alejandro A MaletSpainIvan Magalhaes NEGOTIATION
Tony Y WhobreyBrazilBernardo Dominic RENEWAL
Salvatore S GauchoGermanyAsiya Javayant QUALIFIED
Morrow U StensethGermanyIvan Magalhaes NEGOTIATION
Arvin L GillianUnited KingdomStephen Shaw NEW
Mujtaba I BowleyArgentinaStephen Shaw RENEWAL
Ashley O RulapaughArgentinaElwin Sharvill RENEWAL
Deepesh S DarakjyItalyXuxue Feng UNQUALIFIED
Jeanfrancois T KuskoArgentinaElwin Sharvill RENEWAL
Kadeem E FerenczRussiaElwin Sharvill NEGOTIATION
James S PoquetteJapanOnyama Limba RENEWAL
Francesco I FerenczFranceIvan Magalhaes PROPOSAL
Leja A FlosiCanadaAsiya Javayant UNQUALIFIED
Kaitlin V StensethIndiaAsiya Javayant QUALIFIED
Rodrigues D CaudyFranceIoni Bowcher NEGOTIATION
Morrow N MarrierJapanElwin Sharvill NEGOTIATION
Octavia J SaylorsItalyIvan Magalhaes UNQUALIFIED
Rodrigues O NickaFranceElwin Sharvill UNQUALIFIED
Morrow G CaldareraAustraliaIvan Magalhaes QUALIFIED
Kadeem R WaycottUnited KingdomBernardo Dominic NEW
Aruna S AlbaresBrazilElwin Sharvill NEGOTIATION
James M VocelkaIndiaAmy Elsner UNQUALIFIED
Kaitlin D DoeSpainAsiya Javayant QUALIFIED
Jennifer W BriddickCanadaAnna Fali RENEWAL

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