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
Claire M OstroskySpainIvan Magalhaes NEW
Cody X RimBrazilIoni Bowcher UNQUALIFIED
Francesco N ShinkoIndiaXuxue Feng RENEWAL
Mayumi X MorascaCanadaIoni Bowcher UNQUALIFIED
Jefferson B GlickBrazilElwin Sharvill NEW
Mayumi Q RimIndiaBernardo Dominic NEGOTIATION
Wickens C VocelkaFranceAmy Elsner UNQUALIFIED
Kadeem T CampainUnited KingdomElwin Sharvill UNQUALIFIED
Clifford Z FollerSpainIvan Magalhaes QUALIFIED
Ivar W ShinkoFranceBernardo Dominic QUALIFIED
Mujtaba A DoeCanadaAnna Fali UNQUALIFIED
David X StensethJapanElwin Sharvill RENEWAL
Francesco P DilliardRussiaElwin Sharvill PROPOSAL
Octavia D FerenczRussiaAnna Fali NEW
Stacey X BowleyArgentinaBernardo Dominic NEGOTIATION
Claire K SergiAustraliaBernardo Dominic NEGOTIATION
Johnson U GauchoUnited KingdomIoni Bowcher QUALIFIED
Antonio T VenereItalyIvan Magalhaes PROPOSAL
Francesco Q MarrierCanadaBernardo Dominic NEGOTIATION
Maria H AlbaresIndiaAnna Fali QUALIFIED
Ivar F FigeroaArgentinaIoni Bowcher NEGOTIATION
Salvatore H MaletFranceIoni Bowcher PROPOSAL
Deepesh V FlosiAustraliaAmy Elsner UNQUALIFIED
Maisha P GillianIndiaElwin Sharvill NEW
Kaitlin F NestleArgentinaAmy Elsner NEGOTIATION
Johnson Y WhobreyAustraliaBernardo Dominic NEW
David W RimUnited KingdomElwin Sharvill PROPOSAL
Kaitlin O MaletJapanAmy Elsner NEW
Smith O DoeGermanyAmy Elsner RENEWAL
Silvio Q GlickItalyElwin Sharvill UNQUALIFIED
Mayumi U SchemmerRussiaIvan Magalhaes UNQUALIFIED
Adams V StensethArgentinaIoni Bowcher RENEWAL
Jennifer W InouyeIndiaXuxue Feng UNQUALIFIED
Stacey F NestleSpainXuxue Feng NEGOTIATION
Leja H CampainArgentinaXuxue Feng PROPOSAL
Leon M VenereAustraliaStephen Shaw PROPOSAL
Ashley C NestleCanadaAmy Elsner RENEWAL
Morrow P CaudyRussiaAsiya Javayant RENEWAL
Munro D DarakjySpainIoni Bowcher NEW
Murillo G VocelkaGermanyOnyama Limba NEW
Tony E WaycottSpainBernardo Dominic RENEWAL
Francesco Q MarrierRussiaIoni Bowcher QUALIFIED
Jennifer K SchemmerUnited KingdomXuxue Feng UNQUALIFIED
Kaitlin W RoysterFranceIoni Bowcher QUALIFIED
Chavez Z KuskoRussiaIvan Magalhaes UNQUALIFIED
Chavez W DarakjyAustraliaIoni Bowcher QUALIFIED
Aika B AlbaresBrazilBernardo Dominic RENEWAL
Smith P VocelkaRussiaAsiya Javayant NEGOTIATION
Aditya H WhobreyAustraliaAsiya Javayant UNQUALIFIED
Julie M DoeGermanyAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Salvatore J WhobreyGermanyBernardo Dominic QUALIFIED
David B MarrierJapanBernardo Dominic PROPOSAL
Aruna Y ButtGermanyAmy Elsner PROPOSAL
Antonio Q FollerSpainXuxue Feng UNQUALIFIED
Wickens C PerinArgentinaElwin Sharvill PROPOSAL
Maisha S GauchoUnited KingdomAmy Elsner RENEWAL
Alejandro D RutaFranceIoni Bowcher UNQUALIFIED
Wickens U SaylorsArgentinaAnna Fali PROPOSAL
Mujtaba I RimSpainBernardo Dominic QUALIFIED
Jones N PaprockiAustraliaElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba F RoysterBrazil2024-05-02Truhlar And Truhlar Attys NEW9Ivan Magalhaes
1001Johnson A PaprockiUnited Kingdom2024-04-07Chapman, Ross E Esq RENEWAL80Xuxue Feng
1002Francesco W CampainJapan2024-04-10King, Christopher A Esq QUALIFIED72Stephen Shaw
1003Izzy H MorascaAustralia2024-04-25Printing Dimensions RENEWAL10Ioni Bowcher
1004Jeanfrancois J GlickRussia2024-04-11Rousseaux, Michael Esq NEGOTIATION18Ivan Magalhaes
1005Maria B GlickRussia2024-05-05Feiner Bros NEGOTIATION99Ioni Bowcher
1006Jennifer U GlickRussia2024-04-07Truhlar And Truhlar Attys RENEWAL22Amy Elsner
1007Tony W FerenczItaly2024-04-28Chanay, Jeffrey A Esq QUALIFIED95Amy Elsner
1008Ashley B KolmetzJapan2024-05-04Morlong Associates RENEWAL94Bernardo Dominic
1009James P TollnerItaly2024-04-25Chemel, James L Cpa UNQUALIFIED30Stephen Shaw
1010Emily Z ChuiUnited Kingdom2024-04-18Benton, John B Jr PROPOSAL69Ioni Bowcher
1011Kaitlin W FollerCanada2024-04-24Dorl, James J Esq PROPOSAL8Anna Fali
1012Johnson D IturbideFrance2024-04-25Chemel, James L Cpa PROPOSAL85Xuxue Feng
1013Julie S StockhamSpain2024-04-20Truhlar And Truhlar Attys RENEWAL5Asiya Javayant
1014Aika W RutaItaly2024-04-13Rangoni Of Florence NEGOTIATION50Anna Fali
1015Smith Q SaylorsSpain2024-05-04Rousseaux, Michael Esq PROPOSAL12Amy Elsner
1016Isabel J PaprockiRussia2024-04-12Benton, John B Jr NEW20Anna Fali
1017Juan P MorascaCanada2024-04-09Buckley Miller Wright QUALIFIED35Anna Fali
1018Kadeem X CaldareraAustralia2024-04-08Chanay, Jeffrey A Esq UNQUALIFIED91Elwin Sharvill
1019Juan V SchemmerCanada2024-04-18Chapman, Ross E Esq QUALIFIED67Bernardo Dominic
1020Chavez F MaletRussia2024-04-30Rousseaux, Michael Esq QUALIFIED65Bernardo Dominic
1021Greenwood S MaletCanada2024-05-02Chemel, James L Cpa RENEWAL22Amy Elsner
1022David A GarufiUnited Kingdom2024-04-22Feiner Bros RENEWAL61Anna Fali
1023Costa V AmigonCanada2024-04-20Dorl, James J Esq NEW16Ivan Magalhaes
1024Smith G DarakjyRussia2024-04-19Feltz Printing Service RENEWAL35Anna Fali
1025Morrow P ChuiGermany2024-05-04Rangoni Of Florence NEW4Ivan Magalhaes
1026James L GauchoRussia2024-04-20Buckley Miller Wright UNQUALIFIED80Anna Fali
1027Aruna C AlbaresArgentina2024-04-17Feltz Printing Service NEGOTIATION78Anna Fali
1028Nicolas P SlusarskiIndia2024-04-07Feiner Bros NEW73Ivan Magalhaes
1029Emily P AmigonItaly2024-04-17Rousseaux, Michael Esq RENEWAL41Asiya Javayant
1030Chavez H SlusarskiSpain2024-04-07Buckley Miller Wright UNQUALIFIED61Xuxue Feng
1031Leja X NickaArgentina2024-04-30Benton, John B Jr PROPOSAL24Amy Elsner
1032Murillo N KuskoCanada2024-05-01King, Christopher A Esq PROPOSAL27Bernardo Dominic
1033Jeanfrancois P MaletCanada2024-04-11Printing Dimensions QUALIFIED51Elwin Sharvill
1034Maria F BologniaIndia2024-05-03Buckley Miller Wright UNQUALIFIED0Bernardo Dominic
1035Emily U ChuiCanada2024-04-30Buckley Miller Wright QUALIFIED18Elwin Sharvill
1036Tony C VocelkaAustralia2024-04-25Benton, John B Jr QUALIFIED31Amy Elsner
1037Aditya U CampainCanada2024-05-05Buckley Miller Wright NEGOTIATION91Anna Fali
1038Wickens N DilliardUnited Kingdom2024-04-21Benton, John B Jr PROPOSAL81Anna Fali
1039Aruna N ShinkoIndia2024-04-10Buckley Miller Wright PROPOSAL63Xuxue Feng
1040Ivar C RimIndia2024-04-27Truhlar And Truhlar Attys RENEWAL12Ioni Bowcher
1041Rodrigues W SergiItaly2024-05-06Benton, John B Jr NEW26Anna Fali
1042Antonio P MacleadUnited Kingdom2024-04-11Chapman, Ross E Esq UNQUALIFIED52Amy Elsner
1043Jeanfrancois F InouyeIndia2024-04-13Chanay, Jeffrey A Esq NEW78Anna Fali
1044Costa M MaletAustralia2024-04-24Truhlar And Truhlar Attys NEW19Bernardo Dominic
1045Cody Z PerinRussia2024-04-13Commercial Press NEW96Ivan Magalhaes
1046Leon I PerinAustralia2024-05-02Morlong Associates NEW10Ivan Magalhaes
1047Silvio M BowleyRussia2024-04-07Buckley Miller Wright UNQUALIFIED23Asiya Javayant
1048Deepesh L KolmetzUnited Kingdom2024-05-03Rousseaux, Michael Esq PROPOSAL96Ioni Bowcher
1049Aditya M SlusarskiIndia2024-04-20Morlong Associates NEW29Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Ricardo A DarakjyIndiaStephen Shaw QUALIFIED
Arvin O NickaItalyAsiya Javayant NEGOTIATION
Rodrigues Z WieserAustraliaStephen Shaw NEGOTIATION
Wickens G CaudyGermanyAsiya Javayant NEGOTIATION
Misaki F ShinkoBrazilStephen Shaw QUALIFIED
Salvatore D RimAustraliaStephen Shaw RENEWAL
Smith Z WhobreyIndiaElwin Sharvill NEGOTIATION
Sinclair L ShinkoArgentinaAmy Elsner NEW
Maria Y WieserRussiaElwin Sharvill NEW
Izzy Z VenereBrazilStephen Shaw NEGOTIATION
Cody Q SaylorsGermanyStephen Shaw QUALIFIED
Juan G SchemmerRussiaAsiya Javayant NEW
Murillo H BologniaGermanyIoni Bowcher QUALIFIED
Costa K MaletArgentinaAmy Elsner RENEWAL
Stacey Y BriddickFranceAsiya Javayant RENEWAL
Cody U FlosiItalyElwin Sharvill PROPOSAL
Octavia V GauchoArgentinaIvan Magalhaes RENEWAL
Clifford Z WhobreyArgentinaIvan Magalhaes RENEWAL
Alejandro F DoeSpainIoni Bowcher PROPOSAL
Leon S SergiAustraliaAsiya Javayant PROPOSAL
Kadeem L WhobreyJapanElwin Sharvill NEGOTIATION
Emily B KuskoArgentinaStephen Shaw NEGOTIATION
Ashley W InouyeJapanIoni Bowcher NEW
Maria G MaletSpainAsiya Javayant NEGOTIATION
Octavia J GlickGermanyAnna Fali QUALIFIED
Mayumi B CaldareraBrazilIoni Bowcher PROPOSAL
Kaitlin G StockhamFranceOnyama Limba RENEWAL
Smith P TollnerItalyIvan Magalhaes UNQUALIFIED
Isabel U PaprockiArgentinaAsiya Javayant UNQUALIFIED
Alejandro Y MarrierJapanXuxue Feng UNQUALIFIED
Adams M AlbaresCanadaIoni Bowcher UNQUALIFIED
Kaitlin X CaudyArgentinaAnna Fali UNQUALIFIED
Aruna X MorascaCanadaBernardo Dominic PROPOSAL
Maria O PerinItalyAsiya Javayant UNQUALIFIED
Kadeem D CaudyIndiaXuxue Feng PROPOSAL
Rodrigues B GarufiFranceElwin Sharvill PROPOSAL
Jones I DoeSpainAmy Elsner PROPOSAL
James H SlusarskiCanadaOnyama Limba NEGOTIATION
Alejandro K InouyeFranceAsiya Javayant QUALIFIED
Jones C DarakjyAustraliaStephen Shaw UNQUALIFIED
Costa L AmigonCanadaOnyama Limba NEW
Mayumi G PerinIndiaElwin Sharvill RENEWAL
Arvin M MaletIndiaAnna Fali UNQUALIFIED
Juan F StensethUnited KingdomElwin Sharvill NEGOTIATION
Leon B MarrierItalyOnyama Limba UNQUALIFIED
James P TollnerJapanXuxue Feng QUALIFIED
Julie K NestleItalyElwin Sharvill NEGOTIATION
Emily Y FlosiUnited KingdomXuxue Feng QUALIFIED
Jeanfrancois F WhobreySpainXuxue Feng QUALIFIED
Jefferson V PaprockiArgentinaAnna Fali PROPOSAL
Frozen Columns
Name
Aditya X Perin
Alejandro P Amigon
Arvin Y Nicka
Julie P Shinko
Maria G Bolognia
Claire D Gillian
Darci Q Campain
Munro W Marrier
Jefferson P Malet
Stacey I Paprocki
Darci W Kusko
Ivar W Caldarera
Chavez Z Flosi
Jennifer A Iturbide
Salvatore V Gillian
David G Rulapaugh
Emily H Waycott
Wickens B Paprocki
Leon V Doe
Costa P Gaucho
Jeanfrancois M Whobrey
Claire G Royster
Aika X Vocelka
Morrow M Ostrosky
Arvin P Caudy
Leja Z Paprocki
Maria Q Stenseth
Alejandro G Bolognia
Jones D Morasca
Greenwood U Caudy
Salvatore P Wieser
Wickens Z Waycott
Emily J Malet
David J Butt
Smith J Butt
Silvio Q Nicka
Chavez R Saylors
Ricardo Y Shinko
Morrow F Dilliard
Deepesh V Shinko
Costa F Bowley
Claire J Whobrey
Kadeem S Rulapaugh
Deepesh S Campain
Johnson S Venere
Deepesh J Butt
Faith V Oldroyd
Deepesh W Whobrey
Jeanfrancois O Dilliard
Leon H Vocelka
IdCountryDate
1000Russia2024-04-25
1001Spain2024-04-07
1002Spain2024-04-25
1003United Kingdom2024-04-13
1004Argentina2024-04-27
1005Russia2024-04-19
1006Australia2024-04-20
1007France2024-04-21
1008Japan2024-04-28
1009Germany2024-04-18
1010France2024-04-23
1011India2024-05-02
1012Argentina2024-04-23
1013India2024-04-14
1014India2024-04-17
1015India2024-04-16
1016United Kingdom2024-04-10
1017Australia2024-05-05
1018Italy2024-04-20
1019Brazil2024-04-27
1020France2024-04-17
1021Russia2024-04-10
1022Australia2024-04-22
1023Argentina2024-04-24
1024Australia2024-04-24
1025Germany2024-04-07
1026Brazil2024-04-30
1027Germany2024-05-02
1028Canada2024-05-06
1029France2024-04-28
1030Russia2024-05-03
1031Germany2024-05-06
1032United Kingdom2024-04-24
1033United Kingdom2024-05-04
1034Spain2024-04-20
1035Brazil2024-04-24
1036Germany2024-04-12
1037Japan2024-04-12
1038France2024-04-09
1039Argentina2024-05-06
1040Germany2024-04-13
1041France2024-04-30
1042Russia2024-04-18
1043Spain2024-04-26
1044United Kingdom2024-04-30
1045Italy2024-04-19
1046Spain2024-04-27
1047Japan2024-04-23
1048Russia2024-04-25
1049Japan2024-05-02

On-Demand Data

NameIdCountryDate
Antonio M Whobrey1000Canada2024-04-10
Nicolas J Campain1001Canada2024-05-04
Johnson Z Morasca1002Australia2024-04-21
Wickens I Flosi1003Germany2024-04-30
Smith Y Wieser1004Japan2024-04-21
Faith F Bolognia1005Brazil2024-04-23
Costa D Waycott1006France2024-05-04
Claire V Briddick1007Russia2024-04-24
Costa R Morasca1008Argentina2024-04-17
Nicolas M Wieser1009Spain2024-04-18
Jeanfrancois A Saylors1010Brazil2024-04-15
Greenwood T Sergi1011France2024-04-14
Jennifer I Dilliard1012Germany2024-04-29
Ashley I Poquette1013United Kingdom2024-05-01
Maria Y Rim1014Japan2024-04-29
Sinclair K Oldroyd1015Italy2024-05-03
Faith D Iturbide1016Spain2024-05-02
Nicolas Y Figeroa1017Argentina2024-04-25
Costa O Iturbide1018United Kingdom2024-05-06
David L Morasca1019Canada2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel Q GauchoJapanAsiya Javayant NEW
Deepesh Z MarrierSpainAsiya Javayant NEGOTIATION
Leon R WhobreySpainAsiya Javayant PROPOSAL
Juan J RutaFranceAmy Elsner RENEWAL
Emily A PaprockiItalyStephen Shaw NEGOTIATION
Stacey E DarakjyRussiaStephen Shaw UNQUALIFIED
Silvio R MacleadFranceStephen Shaw QUALIFIED
Darci V WhobreyArgentinaStephen Shaw QUALIFIED
Ivar Q WaycottFranceStephen Shaw NEW
Deepesh R FerenczUnited KingdomAsiya Javayant RENEWAL
Octavia N VenereSpainAnna Fali QUALIFIED
Sinclair S PaprockiGermanyIoni Bowcher UNQUALIFIED
Deepesh B AmigonGermanyAsiya Javayant RENEWAL
Johnson C CaldareraAustraliaOnyama Limba RENEWAL
Alejandro E MorascaItalyOnyama Limba RENEWAL
Wickens U FerenczCanadaXuxue Feng QUALIFIED
Kadeem D WhobreyGermanyAsiya Javayant UNQUALIFIED
Tony T IturbideIndiaXuxue Feng RENEWAL
Maisha S CampainSpainStephen Shaw QUALIFIED
Aika L BowleyItalyOnyama Limba PROPOSAL
Arvin T NickaJapanIvan Magalhaes QUALIFIED
Mayumi C DarakjyArgentinaBernardo Dominic UNQUALIFIED
Sinclair O SchemmerRussiaOnyama Limba UNQUALIFIED
Aruna V AlbaresItalyXuxue Feng PROPOSAL
Chavez E SergiCanadaAnna Fali RENEWAL
Darci O RimIndiaIvan Magalhaes PROPOSAL
Emily I StensethJapanAsiya Javayant UNQUALIFIED
Ashley G CaudyCanadaXuxue Feng RENEWAL
Wickens R AmigonJapanAsiya Javayant RENEWAL
Octavia G OldroydItalyAmy Elsner QUALIFIED
Julie Y WaycottAustraliaXuxue Feng NEGOTIATION
Mayumi V WieserFranceIoni Bowcher UNQUALIFIED
Clifford Q CampainCanadaAsiya Javayant UNQUALIFIED
Mayumi U StensethCanadaAnna Fali RENEWAL
Emily H SaylorsSpainIvan Magalhaes NEGOTIATION
Emily A WieserArgentinaAmy Elsner PROPOSAL
Julie C GarufiRussiaIoni Bowcher NEGOTIATION
Aditya T FigeroaAustraliaStephen Shaw PROPOSAL
Jefferson T FlosiJapanAmy Elsner RENEWAL
Ricardo L SaylorsGermanyStephen Shaw 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>