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
Morrow R WieserSpainIoni Bowcher PROPOSAL
Stacey R CaldareraAustraliaBernardo Dominic UNQUALIFIED
Costa L MacleadBrazilAmy Elsner NEW
Aika O InouyeRussiaBernardo Dominic NEW
Izzy H PoquetteUnited KingdomAmy Elsner QUALIFIED
Aika X FerenczArgentinaStephen Shaw UNQUALIFIED
Jefferson B BowleyCanadaBernardo Dominic PROPOSAL
Aruna I ButtIndiaOnyama Limba QUALIFIED
Ashley J MacleadRussiaXuxue Feng PROPOSAL
Faith X RoysterIndiaAnna Fali UNQUALIFIED
Kadeem R BriddickJapanAmy Elsner NEGOTIATION
Morrow F GillianArgentinaXuxue Feng RENEWAL
Aditya D MaletRussiaAnna Fali NEW
Emily V FigeroaSpainIoni Bowcher NEGOTIATION
Jeanfrancois Z FerenczArgentinaXuxue Feng NEGOTIATION
Greenwood S FerenczIndiaAnna Fali RENEWAL
Julie W RulapaughSpainAmy Elsner RENEWAL
Cody Z GillianItalyAmy Elsner PROPOSAL
Clifford H DilliardSpainAmy Elsner NEGOTIATION
Jefferson B ChuiItalyAnna Fali UNQUALIFIED
Juan Y GauchoAustraliaIvan Magalhaes RENEWAL
David W IturbideCanadaBernardo Dominic NEW
Adams K BriddickItalyOnyama Limba UNQUALIFIED
Faith P CaudyArgentinaXuxue Feng QUALIFIED
Emily Z TollnerBrazilAsiya Javayant UNQUALIFIED
Sinclair D BologniaItalyIvan Magalhaes NEW
Julie B WieserRussiaIoni Bowcher RENEWAL
Cody D KolmetzJapanOnyama Limba QUALIFIED
Costa Y DoeCanadaIvan Magalhaes UNQUALIFIED
Francesco C CaldareraCanadaBernardo Dominic QUALIFIED
Kaitlin I GarufiFranceOnyama Limba PROPOSAL
Leon D SchemmerItalyElwin Sharvill NEW
Mujtaba B FerenczCanadaBernardo Dominic PROPOSAL
Greenwood G DilliardRussiaXuxue Feng QUALIFIED
Francesco Y InouyeCanadaAnna Fali NEGOTIATION
Ashley I GlickBrazilAnna Fali RENEWAL
Tony A GlickJapanElwin Sharvill RENEWAL
James T SlusarskiBrazilIoni Bowcher UNQUALIFIED
Julie O WhobreyItalyBernardo Dominic UNQUALIFIED
Jefferson N FlosiGermanyAmy Elsner UNQUALIFIED
Julie U GarufiIndiaAmy Elsner PROPOSAL
Rodrigues W BriddickJapanAsiya Javayant PROPOSAL
Deepesh V FerenczFranceIoni Bowcher UNQUALIFIED
Stacey B CaudyItalyElwin Sharvill RENEWAL
Munro X DilliardIndiaOnyama Limba NEGOTIATION
Adams F InouyeUnited KingdomStephen Shaw RENEWAL
Emily B SergiArgentinaOnyama Limba RENEWAL
Alejandro I SchemmerArgentinaAnna Fali UNQUALIFIED
Kadeem K MaletAustraliaBernardo Dominic QUALIFIED
Silvio I FlosiAustraliaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Salvatore F ShinkoJapanAnna Fali RENEWAL
Morrow O RulapaughAustraliaXuxue Feng UNQUALIFIED
Greenwood V IturbideGermanyElwin Sharvill PROPOSAL
Morrow P SlusarskiCanadaElwin Sharvill PROPOSAL
Isabel C BowleyArgentinaXuxue Feng NEGOTIATION
Sinclair K DilliardBrazilAsiya Javayant NEGOTIATION
Sinclair A ShinkoRussiaIoni Bowcher NEGOTIATION
Arvin K DoeItalyStephen Shaw NEW
Francesco J NickaRussiaAmy Elsner NEW
Julie C PoquetteItalyAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore R ChuiJapan2024-03-04Commercial Press NEW57Xuxue Feng
1001Munro H NickaBrazil2024-02-23Rousseaux, Michael Esq UNQUALIFIED85Anna Fali
1002Ricardo E InouyeFrance2024-03-16Chanay, Jeffrey A Esq UNQUALIFIED56Asiya Javayant
1003David J ChuiUnited Kingdom2024-03-04Chemel, James L Cpa PROPOSAL66Elwin Sharvill
1004Jefferson U FerenczSpain2024-02-25Chemel, James L Cpa UNQUALIFIED69Anna Fali
1005Aditya K OstroskyItaly2024-03-18Dorl, James J Esq NEW89Asiya Javayant
1006Mujtaba X DarakjyJapan2024-03-11Feltz Printing Service PROPOSAL32Xuxue Feng
1007Antonio Y NickaCanada2024-03-08Benton, John B Jr NEGOTIATION82Amy Elsner
1008Deepesh I FollerIndia2024-03-06Buckley Miller Wright NEGOTIATION10Ivan Magalhaes
1009Greenwood F MacleadSpain2024-03-12Rangoni Of Florence UNQUALIFIED98Anna Fali
1010Juan P MarrierIndia2024-03-17Feiner Bros NEGOTIATION88Asiya Javayant
1011Sinclair V GauchoUnited Kingdom2024-03-12Benton, John B Jr NEW98Elwin Sharvill
1012Aruna T FigeroaIndia2024-02-20Chemel, James L Cpa RENEWAL32Asiya Javayant
1013Johnson T VenereUnited Kingdom2024-03-12King, Christopher A Esq QUALIFIED30Ivan Magalhaes
1014Faith U NestleSpain2024-03-09Morlong Associates UNQUALIFIED13Amy Elsner
1015Ricardo E BologniaGermany2024-03-01Chanay, Jeffrey A Esq UNQUALIFIED53Stephen Shaw
1016Morrow W AmigonSpain2024-03-14Truhlar And Truhlar Attys RENEWAL80Ivan Magalhaes
1017David Q MaletIndia2024-03-09Buckley Miller Wright QUALIFIED31Ivan Magalhaes
1018Morrow Y RulapaughCanada2024-03-04Truhlar And Truhlar Attys NEGOTIATION43Amy Elsner
1019Adams V PerinCanada2024-03-01Printing Dimensions NEGOTIATION57Ivan Magalhaes
1020Juan F ButtJapan2024-02-19Chemel, James L Cpa UNQUALIFIED44Elwin Sharvill
1021Jeanfrancois C BowleyRussia2024-03-04Feiner Bros PROPOSAL39Onyama Limba
1022Adams U CampainCanada2024-03-15Rousseaux, Michael Esq QUALIFIED82Asiya Javayant
1023Aruna R InouyeFrance2024-02-19Benton, John B Jr QUALIFIED97Amy Elsner
1024James C PerinUnited Kingdom2024-03-05Truhlar And Truhlar Attys NEGOTIATION12Onyama Limba
1025Smith K FerenczRussia2024-03-13Printing Dimensions RENEWAL38Ioni Bowcher
1026Ivar U OstroskySpain2024-02-22Morlong Associates NEGOTIATION54Ivan Magalhaes
1027Nicolas D CaudyArgentina2024-02-24Feltz Printing Service UNQUALIFIED12Asiya Javayant
1028Misaki B DoeRussia2024-03-02Truhlar And Truhlar Attys UNQUALIFIED37Ivan Magalhaes
1029Kadeem U PerinArgentina2024-03-08Chemel, James L Cpa NEGOTIATION62Xuxue Feng
1030Aditya U GarufiCanada2024-03-16Printing Dimensions NEW36Ioni Bowcher
1031Kaitlin I TollnerJapan2024-02-21Chanay, Jeffrey A Esq RENEWAL90Ioni Bowcher
1032Stacey U DarakjyBrazil2024-02-28Printing Dimensions UNQUALIFIED47Stephen Shaw
1033Kaitlin H StockhamUnited Kingdom2024-02-20Rangoni Of Florence NEGOTIATION87Stephen Shaw
1034Aditya K MorascaSpain2024-03-06Truhlar And Truhlar Attys UNQUALIFIED3Elwin Sharvill
1035Aika X MacleadRussia2024-02-24Feiner Bros QUALIFIED30Xuxue Feng
1036Ricardo X AlbaresArgentina2024-03-01Buckley Miller Wright QUALIFIED72Amy Elsner
1037Mujtaba N DarakjyItaly2024-03-17Dorl, James J Esq UNQUALIFIED93Ioni Bowcher
1038Tony G GarufiAustralia2024-02-25Rangoni Of Florence NEW50Asiya Javayant
1039Wickens K MacleadAustralia2024-03-04Rangoni Of Florence UNQUALIFIED36Bernardo Dominic
1040Izzy U SergiAustralia2024-02-28Buckley Miller Wright NEW58Stephen Shaw
1041Francesco A KolmetzItaly2024-03-13Chemel, James L Cpa RENEWAL67Ivan Magalhaes
1042Johnson F PaprockiRussia2024-03-01Truhlar And Truhlar Attys QUALIFIED30Xuxue Feng
1043Aika Z DilliardSpain2024-02-22King, Christopher A Esq RENEWAL82Amy Elsner
1044Juan I KolmetzIndia2024-03-15Feiner Bros UNQUALIFIED26Bernardo Dominic
1045Tony J WieserSpain2024-02-26Feltz Printing Service UNQUALIFIED36Anna Fali
1046Aditya Z KuskoSpain2024-03-06Commercial Press NEW92Elwin Sharvill
1047Darci Y ButtRussia2024-03-10King, Christopher A Esq NEW46Anna Fali
1048Antonio W StockhamAustralia2024-03-16Buckley Miller Wright UNQUALIFIED60Asiya Javayant
1049Jefferson L SergiIndia2024-03-13Feiner Bros PROPOSAL66Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Alejandro W RutaArgentinaAnna Fali RENEWAL
Darci M InouyeIndiaElwin Sharvill UNQUALIFIED
Sinclair H PaprockiJapanBernardo Dominic NEGOTIATION
Kaitlin R WhobreyUnited KingdomAnna Fali RENEWAL
Mujtaba Z CampainItalyStephen Shaw QUALIFIED
Mayumi G TollnerIndiaStephen Shaw QUALIFIED
Jennifer R TollnerAustraliaXuxue Feng PROPOSAL
Jennifer W WhobreyUnited KingdomAmy Elsner UNQUALIFIED
Stacey G PerinFranceElwin Sharvill QUALIFIED
Francesco B BriddickArgentinaAnna Fali PROPOSAL
Aditya C IturbideArgentinaXuxue Feng QUALIFIED
Clifford R CampainCanadaAnna Fali PROPOSAL
Alejandro J KuskoCanadaAmy Elsner PROPOSAL
Stacey F RoysterItalyOnyama Limba UNQUALIFIED
Silvio Z FigeroaGermanyAmy Elsner NEGOTIATION
Misaki K ChuiBrazilElwin Sharvill NEW
Tony M MaletJapanIvan Magalhaes UNQUALIFIED
Murillo R IturbideFranceAsiya Javayant UNQUALIFIED
Aika D StensethSpainStephen Shaw QUALIFIED
Claire F MorascaFranceAnna Fali PROPOSAL
Rodrigues J RutaIndiaBernardo Dominic QUALIFIED
Aika I WhobreyArgentinaStephen Shaw UNQUALIFIED
Misaki W WhobreyUnited KingdomAsiya Javayant UNQUALIFIED
Aika H AlbaresCanadaAnna Fali NEW
Morrow B BriddickBrazilOnyama Limba PROPOSAL
Wickens U GarufiJapanAmy Elsner NEGOTIATION
Ashley M KolmetzJapanIvan Magalhaes PROPOSAL
Juan U VenereGermanyOnyama Limba UNQUALIFIED
Johnson A PoquetteFranceAnna Fali QUALIFIED
Mujtaba Q ShinkoGermanyStephen Shaw NEW
Silvio K MaletUnited KingdomOnyama Limba PROPOSAL
Alejandro O FerenczBrazilStephen Shaw UNQUALIFIED
Maria R WhobreyBrazilElwin Sharvill QUALIFIED
Murillo W KolmetzJapanElwin Sharvill QUALIFIED
Misaki F WhobreyRussiaAsiya Javayant RENEWAL
Smith V ButtIndiaBernardo Dominic PROPOSAL
Ricardo T InouyeItalyOnyama Limba UNQUALIFIED
Faith U WieserJapanAsiya Javayant PROPOSAL
Clifford W MorascaJapanXuxue Feng NEW
Mujtaba Y VocelkaBrazilOnyama Limba RENEWAL
Francesco Q StensethFranceAsiya Javayant NEGOTIATION
Misaki T PoquetteRussiaXuxue Feng RENEWAL
Clifford R FlosiJapanOnyama Limba QUALIFIED
Adams X BriddickUnited KingdomIvan Magalhaes NEGOTIATION
Octavia U PaprockiSpainStephen Shaw NEGOTIATION
Claire G BriddickUnited KingdomXuxue Feng PROPOSAL
Murillo R KolmetzFranceIvan Magalhaes RENEWAL
Jefferson Q ButtSpainAmy Elsner NEGOTIATION
Smith Y RoysterUnited KingdomAsiya Javayant PROPOSAL
Aruna R ButtBrazilStephen Shaw NEGOTIATION
Frozen Columns
Name
Smith S Oldroyd
Smith A Nestle
Emily V Royster
Chavez Q Rulapaugh
Rodrigues T Malet
Ashley G Venere
Jennifer W Poquette
Isabel I Tollner
Francesco V Vocelka
Leja Q Darakjy
Faith D Ostrosky
Wickens G Paprocki
Aruna U Ferencz
Tony E Glick
Aika O Slusarski
Alejandro R Venere
Antonio E Iturbide
Alejandro Q Malet
Salvatore E Morasca
Murillo D Flosi
Kadeem M Nicka
Maisha O Whobrey
Clifford G Stenseth
Julie V Gaucho
Smith Y Darakjy
Alejandro K Stenseth
Leja R Tollner
Arvin N Vocelka
Clifford O Malet
Jeanfrancois U Gillian
Jennifer X Nestle
Cody Y Dilliard
Aditya O Butt
Misaki Z Briddick
Tony D Glick
Silvio P Schemmer
Jeanfrancois J Vocelka
Maisha E Slusarski
Ricardo O Nestle
Wickens S Wieser
David D Chui
Ashley F Sergi
Aika E Doe
Sinclair A Nestle
Maria Q Venere
Octavia U Gillian
Juan W Bowley
Maisha E Amigon
Leja B Chui
Smith K Dilliard
IdCountryDate
1000France2024-03-18
1001Spain2024-02-18
1002Brazil2024-03-16
1003Russia2024-03-14
1004India2024-02-24
1005Germany2024-03-06
1006Russia2024-02-21
1007France2024-02-25
1008France2024-03-13
1009Australia2024-02-21
1010Argentina2024-03-06
1011Argentina2024-03-06
1012France2024-03-06
1013Germany2024-03-10
1014Argentina2024-03-13
1015Brazil2024-03-12
1016France2024-03-15
1017Australia2024-02-27
1018France2024-02-18
1019Australia2024-03-03
1020France2024-02-26
1021India2024-02-26
1022France2024-02-22
1023India2024-03-13
1024Russia2024-03-02
1025Italy2024-03-17
1026Germany2024-02-26
1027Canada2024-02-20
1028Russia2024-03-10
1029India2024-02-23
1030Spain2024-03-11
1031France2024-03-05
1032France2024-03-13
1033Italy2024-02-28
1034Russia2024-03-03
1035Argentina2024-02-28
1036Russia2024-02-24
1037France2024-03-17
1038Brazil2024-02-29
1039Russia2024-03-09
1040France2024-02-27
1041Spain2024-03-02
1042Canada2024-02-24
1043Canada2024-02-20
1044Italy2024-02-21
1045Brazil2024-02-19
1046Canada2024-02-21
1047France2024-02-18
1048Canada2024-03-02
1049France2024-02-25

On-Demand Data

NameIdCountryDate
Juan D Malet1000Russia2024-03-15
Jeanfrancois T Stockham1001Germany2024-03-15
Alejandro S Schemmer1002Italy2024-03-14
Nicolas X Iturbide1003India2024-03-07
Costa O Ruta1004Argentina2024-03-13
Julie D Tollner1005Brazil2024-02-20
Misaki E Rulapaugh1006Argentina2024-03-05
Jeanfrancois P Stenseth1007Japan2024-03-10
Francesco Z Caudy1008Japan2024-03-15
Salvatore C Oldroyd1009India2024-03-10
Johnson Y Flosi1010Spain2024-03-16
Wickens A Flosi1011Japan2024-03-09
Wickens I Rim1012Italy2024-03-14
Maisha I Kolmetz1013Italy2024-03-13
Cody G Nestle1014Italy2024-03-11
Silvio H Nicka1015Australia2024-03-07
Darci L Caldarera1016India2024-03-09
Izzy G Marrier1017Italy2024-03-06
Wickens G Vocelka1018Brazil2024-02-25
Juan S Morasca1019France2024-02-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco K PoquetteCanadaBernardo Dominic NEW
Aika V ButtAustraliaElwin Sharvill RENEWAL
Claire P NickaCanadaIoni Bowcher PROPOSAL
Aditya J OldroydAustraliaElwin Sharvill RENEWAL
Morrow D TollnerUnited KingdomXuxue Feng NEW
Nicolas E NestleArgentinaElwin Sharvill QUALIFIED
Rodrigues Z AlbaresArgentinaStephen Shaw QUALIFIED
Silvio D SlusarskiBrazilXuxue Feng RENEWAL
Ashley P VenereCanadaAsiya Javayant NEGOTIATION
Silvio O DoeIndiaIvan Magalhaes NEW
Morrow F SaylorsAustraliaXuxue Feng QUALIFIED
Sinclair B DoeFranceIoni Bowcher NEW
Munro M FigeroaArgentinaAsiya Javayant NEW
Stacey Z PaprockiItalyBernardo Dominic PROPOSAL
Faith X InouyeCanadaIvan Magalhaes PROPOSAL
Emily Z FlosiIndiaIvan Magalhaes NEGOTIATION
Ivar S GlickJapanBernardo Dominic RENEWAL
Sinclair H OldroydFranceIvan Magalhaes QUALIFIED
Sinclair R BowleyArgentinaAnna Fali PROPOSAL
Nicolas D BowleyUnited KingdomIoni Bowcher NEW
Leja U VocelkaJapanStephen Shaw QUALIFIED
Maria F SlusarskiArgentinaBernardo Dominic PROPOSAL
Arvin O WaycottCanadaIvan Magalhaes UNQUALIFIED
Jones J CaudyUnited KingdomAnna Fali NEGOTIATION
Izzy N DilliardIndiaElwin Sharvill NEGOTIATION
Kaitlin K BriddickUnited KingdomOnyama Limba UNQUALIFIED
Salvatore K IturbideBrazilIoni Bowcher QUALIFIED
Smith K RutaRussiaIoni Bowcher NEGOTIATION
Nicolas I SlusarskiBrazilAnna Fali NEW
Aruna J GarufiBrazilXuxue Feng NEGOTIATION
Mujtaba I IturbideGermanyIoni Bowcher NEGOTIATION
Stacey R MaletIndiaStephen Shaw NEW
Murillo G WhobreyUnited KingdomXuxue Feng QUALIFIED
Juan T FigeroaUnited KingdomAmy Elsner NEW
Leja I SaylorsIndiaStephen Shaw NEW
Chavez M FlosiArgentinaOnyama Limba QUALIFIED
Wickens X PoquetteCanadaStephen Shaw RENEWAL
Aruna A MorascaArgentinaBernardo Dominic NEGOTIATION
Rodrigues A MaletSpainOnyama Limba UNQUALIFIED
Nicolas X ButtCanadaAmy Elsner 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>