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
Murillo F MarrierGermanyBernardo Dominic UNQUALIFIED
Munro A InouyeUnited KingdomOnyama Limba NEW
Kaitlin T ButtAustraliaAsiya Javayant NEGOTIATION
Kadeem U GauchoBrazilElwin Sharvill UNQUALIFIED
Silvio N CaudyUnited KingdomIvan Magalhaes UNQUALIFIED
Murillo U TollnerCanadaAsiya Javayant NEW
Antonio W DilliardItalyIvan Magalhaes PROPOSAL
Wickens V SchemmerBrazilAsiya Javayant UNQUALIFIED
Leon U KolmetzSpainBernardo Dominic QUALIFIED
Murillo M PerinBrazilXuxue Feng QUALIFIED
Jefferson V BowleyRussiaStephen Shaw UNQUALIFIED
Greenwood S MacleadSpainOnyama Limba RENEWAL
Maisha D SaylorsRussiaBernardo Dominic QUALIFIED
Emily I NickaSpainAsiya Javayant QUALIFIED
Mayumi Z VenereArgentinaOnyama Limba PROPOSAL
Stacey T MaletCanadaAnna Fali UNQUALIFIED
Chavez M GillianUnited KingdomAsiya Javayant NEGOTIATION
Smith V IturbideUnited KingdomIvan Magalhaes PROPOSAL
Isabel D SergiJapanIvan Magalhaes QUALIFIED
Stacey V FerenczGermanyBernardo Dominic UNQUALIFIED
Greenwood B FigeroaAustraliaStephen Shaw UNQUALIFIED
Adams F NickaRussiaAsiya Javayant NEGOTIATION
Claire M ButtAustraliaAnna Fali NEGOTIATION
David E PerinSpainBernardo Dominic NEW
Jeanfrancois P IturbideUnited KingdomBernardo Dominic RENEWAL
Ricardo F BowleyFranceAsiya Javayant QUALIFIED
Aditya W StensethCanadaIvan Magalhaes NEGOTIATION
Silvio U WhobreyGermanyStephen Shaw RENEWAL
Clifford T InouyeItalyStephen Shaw NEGOTIATION
Stacey C GauchoBrazilIvan Magalhaes NEGOTIATION
Aika A FigeroaGermanyAsiya Javayant PROPOSAL
Jeanfrancois T RimArgentinaIoni Bowcher UNQUALIFIED
Murillo S MaletSpainAsiya Javayant NEW
Leon C AmigonAustraliaStephen Shaw UNQUALIFIED
James V MarrierIndiaBernardo Dominic RENEWAL
Leon M DarakjyBrazilAsiya Javayant PROPOSAL
Juan T RimSpainAmy Elsner PROPOSAL
Aditya Q FigeroaSpainStephen Shaw PROPOSAL
Juan Y PoquetteUnited KingdomStephen Shaw PROPOSAL
Ivar T NestleSpainAmy Elsner NEGOTIATION
Claire N MaletSpainAsiya Javayant PROPOSAL
Kaitlin W GillianJapanBernardo Dominic UNQUALIFIED
Darci S MorascaAustraliaAmy Elsner QUALIFIED
Adams O InouyeBrazilElwin Sharvill NEGOTIATION
Greenwood U MacleadSpainXuxue Feng NEGOTIATION
Chavez J NickaSpainIoni Bowcher UNQUALIFIED
Silvio K IturbideCanadaIoni Bowcher UNQUALIFIED
Kadeem K NickaAustraliaAmy Elsner PROPOSAL
Nicolas O NickaItalyIvan Magalhaes PROPOSAL
Costa J FollerIndiaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kaitlin I DarakjyUnited KingdomXuxue Feng QUALIFIED
Ivar Y FerenczJapanOnyama Limba NEW
Julie G VocelkaIndiaBernardo Dominic RENEWAL
Cody M PoquetteSpainXuxue Feng RENEWAL
Darci Q GlickSpainOnyama Limba NEGOTIATION
Claire Z MaletRussiaIvan Magalhaes UNQUALIFIED
Wickens M TollnerSpainIoni Bowcher PROPOSAL
Ashley Z VenereRussiaBernardo Dominic NEW
Julie I WhobreyIndiaStephen Shaw QUALIFIED
Kadeem C CaldareraCanadaStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio E GillianArgentina2024-04-20Feiner Bros UNQUALIFIED16Ivan Magalhaes
1001Francesco R SlusarskiCanada2024-04-07Chanay, Jeffrey A Esq NEGOTIATION23Stephen Shaw
1002Claire C WieserUnited Kingdom2024-04-21Chemel, James L Cpa UNQUALIFIED27Ioni Bowcher
1003Juan J FlosiRussia2024-04-22Commercial Press PROPOSAL32Onyama Limba
1004Wickens S FollerCanada2024-04-11Commercial Press RENEWAL96Ivan Magalhaes
1005Sinclair Y OstroskyItaly2024-04-10Buckley Miller Wright UNQUALIFIED83Ioni Bowcher
1006Jefferson J RulapaughGermany2024-03-29Feiner Bros UNQUALIFIED76Stephen Shaw
1007Arvin S FigeroaFrance2024-04-24Morlong Associates RENEWAL6Bernardo Dominic
1008James B BriddickBrazil2024-04-02Rousseaux, Michael Esq NEW56Amy Elsner
1009Munro D FollerSpain2024-03-31Morlong Associates NEW32Ioni Bowcher
1010Deepesh B VocelkaGermany2024-04-23Chapman, Ross E Esq PROPOSAL56Onyama Limba
1011Francesco P SergiArgentina2024-04-05Feltz Printing Service RENEWAL79Elwin Sharvill
1012Cody M PoquetteItaly2024-04-21Benton, John B Jr NEW26Onyama Limba
1013Jefferson Q StensethUnited Kingdom2024-04-16Chapman, Ross E Esq NEGOTIATION96Bernardo Dominic
1014Leja I DarakjyItaly2024-04-19Chanay, Jeffrey A Esq UNQUALIFIED99Stephen Shaw
1015Misaki P DoeSpain2024-03-30Commercial Press PROPOSAL51Ivan Magalhaes
1016Tony R CampainAustralia2024-04-18Rousseaux, Michael Esq NEGOTIATION98Onyama Limba
1017Leja V BologniaAustralia2024-04-09Buckley Miller Wright RENEWAL56Ivan Magalhaes
1018Johnson P CaudyBrazil2024-04-02Chapman, Ross E Esq RENEWAL29Stephen Shaw
1019Sinclair M WhobreyUnited Kingdom2024-04-20Dorl, James J Esq PROPOSAL97Stephen Shaw
1020Murillo O MaletFrance2024-04-02Buckley Miller Wright NEGOTIATION55Ivan Magalhaes
1021Isabel J StensethItaly2024-03-31Feiner Bros UNQUALIFIED87Elwin Sharvill
1022Octavia A WhobreyJapan2024-03-29Printing Dimensions NEGOTIATION42Bernardo Dominic
1023Wickens C WieserIndia2024-04-15Chemel, James L Cpa UNQUALIFIED91Bernardo Dominic
1024Mayumi K GlickUnited Kingdom2024-04-07Morlong Associates NEW43Anna Fali
1025Jeanfrancois M RimCanada2024-04-16Chapman, Ross E Esq UNQUALIFIED42Asiya Javayant
1026Aruna Y FollerCanada2024-04-24Chemel, James L Cpa UNQUALIFIED43Xuxue Feng
1027Francesco Q ShinkoArgentina2024-04-21Chanay, Jeffrey A Esq RENEWAL35Amy Elsner
1028Isabel A OldroydCanada2024-04-07Chemel, James L Cpa UNQUALIFIED76Ioni Bowcher
1029Misaki Q CaldareraBrazil2024-04-15Feltz Printing Service NEW75Anna Fali
1030Kadeem X RimFrance2024-03-29Benton, John B Jr PROPOSAL65Onyama Limba
1031Stacey R MorascaArgentina2024-04-10Feiner Bros PROPOSAL9Ivan Magalhaes
1032Isabel Y FigeroaGermany2024-04-01Chapman, Ross E Esq PROPOSAL89Xuxue Feng
1033James C BriddickArgentina2024-04-06Rousseaux, Michael Esq RENEWAL52Asiya Javayant
1034Leon B PoquetteArgentina2024-03-29Feiner Bros NEW83Elwin Sharvill
1035Ivar L FlosiRussia2024-03-31King, Christopher A Esq NEGOTIATION70Bernardo Dominic
1036Emily T StockhamGermany2024-03-30Chemel, James L Cpa QUALIFIED53Ioni Bowcher
1037Munro F FlosiJapan2024-04-11King, Christopher A Esq NEGOTIATION87Bernardo Dominic
1038Isabel Q FollerArgentina2024-04-23Dorl, James J Esq PROPOSAL55Anna Fali
1039Ricardo X WieserFrance2024-04-11Benton, John B Jr NEW50Xuxue Feng
1040Faith P GlickUnited Kingdom2024-04-02Chemel, James L Cpa NEGOTIATION65Onyama Limba
1041Salvatore A MaletItaly2024-04-05Chapman, Ross E Esq NEW23Ivan Magalhaes
1042Chavez K FollerGermany2024-03-29Chanay, Jeffrey A Esq QUALIFIED68Bernardo Dominic
1043Jefferson U MorascaRussia2024-03-31Chapman, Ross E Esq PROPOSAL54Stephen Shaw
1044Leon G ChuiItaly2024-04-18Buckley Miller Wright UNQUALIFIED42Xuxue Feng
1045Aditya E MaletBrazil2024-04-27Truhlar And Truhlar Attys NEW58Asiya Javayant
1046Maria Z AlbaresItaly2024-04-15Truhlar And Truhlar Attys PROPOSAL63Amy Elsner
1047Munro B FerenczRussia2024-04-09Dorl, James J Esq QUALIFIED22Elwin Sharvill
1048Nicolas F MaletRussia2024-03-31Feltz Printing Service NEGOTIATION91Stephen Shaw
1049Francesco D SlusarskiFrance2024-04-04Rousseaux, Michael Esq NEW41Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Darci G OldroydSpainIvan Magalhaes RENEWAL
Faith B ButtSpainOnyama Limba UNQUALIFIED
Emily S BologniaAustraliaXuxue Feng NEW
Adams S CaudyJapanStephen Shaw QUALIFIED
Izzy X SlusarskiSpainAnna Fali UNQUALIFIED
Kaitlin I GlickCanadaAsiya Javayant PROPOSAL
Jennifer U InouyeItalyXuxue Feng NEW
Isabel R CaudyUnited KingdomAmy Elsner PROPOSAL
Jennifer J PerinCanadaAmy Elsner RENEWAL
Ricardo L GillianFranceStephen Shaw NEGOTIATION
Salvatore U SlusarskiSpainOnyama Limba UNQUALIFIED
Antonio Z PoquetteArgentinaAsiya Javayant NEGOTIATION
Jeanfrancois P MacleadIndiaIoni Bowcher QUALIFIED
Chavez E CaudyItalyBernardo Dominic RENEWAL
David G NickaAustraliaXuxue Feng PROPOSAL
Alejandro S ButtSpainAsiya Javayant NEW
Aika P FlosiArgentinaElwin Sharvill NEGOTIATION
Faith G MacleadBrazilBernardo Dominic NEW
Aruna W IturbideBrazilAsiya Javayant NEW
Ivar M GarufiArgentinaIvan Magalhaes PROPOSAL
Emily J ShinkoArgentinaAsiya Javayant QUALIFIED
David D OldroydJapanAmy Elsner PROPOSAL
Mujtaba E GillianFranceAsiya Javayant NEGOTIATION
Jones K GillianItalyXuxue Feng UNQUALIFIED
David S MaletJapanBernardo Dominic PROPOSAL
Alejandro S StockhamIndiaOnyama Limba NEGOTIATION
Mujtaba J MacleadAustraliaAnna Fali NEGOTIATION
Deepesh F RutaItalyOnyama Limba NEGOTIATION
Jones A SaylorsUnited KingdomXuxue Feng RENEWAL
Leon Z AmigonJapanAsiya Javayant QUALIFIED
Johnson C IturbideSpainXuxue Feng RENEWAL
Jones E TollnerAustraliaAnna Fali PROPOSAL
James O WaycottAustraliaOnyama Limba UNQUALIFIED
Leon Q RulapaughBrazilIvan Magalhaes NEGOTIATION
Ivar G MaletRussiaAmy Elsner NEGOTIATION
Alejandro R GarufiFranceStephen Shaw NEW
Octavia H RimFranceAnna Fali QUALIFIED
James X FerenczItalyIoni Bowcher RENEWAL
Octavia N RulapaughArgentinaIoni Bowcher RENEWAL
Chavez W VocelkaItalyElwin Sharvill RENEWAL
Wickens W GlickBrazilElwin Sharvill NEW
Alejandro Z SaylorsFranceIoni Bowcher RENEWAL
James H GillianIndiaAnna Fali NEGOTIATION
Jefferson F CampainItalyAmy Elsner NEGOTIATION
Leja C GillianSpainOnyama Limba RENEWAL
Alejandro V BowleyItalyAsiya Javayant NEW
Kadeem B ChuiCanadaAmy Elsner PROPOSAL
Wickens A NestleItalyAsiya Javayant UNQUALIFIED
Cody L AmigonJapanAnna Fali PROPOSAL
Murillo W VenereJapanAmy Elsner QUALIFIED
Frozen Columns
Name
Maria V Whobrey
Greenwood U Waycott
James D Malet
Adams Y Campain
Aditya B Stenseth
Faith J Briddick
Deepesh Y Rim
Aruna G Iturbide
Silvio Z Albares
Claire D Glick
Silvio L Ostrosky
Ashley O Caudy
Maisha C Albares
Adams F Butt
Adams V Kolmetz
Ricardo K Maclead
Johnson Z Bolognia
Silvio G Rim
Alejandro T Perin
Faith A Paprocki
Murillo P Oldroyd
Aruna J Morasca
Salvatore E Perin
Faith E Vocelka
Ivar J Glick
Jones D Malet
Smith K Stenseth
Jeanfrancois A Slusarski
Jeanfrancois T Butt
Antonio U Paprocki
Jones A Malet
Wickens C Albares
Rodrigues E Malet
Jeanfrancois X Rim
Wickens V Garufi
Tony I Iturbide
Clifford G Stenseth
Tony H Saylors
Deepesh W Oldroyd
Adams R Malet
Antonio U Caudy
Kadeem B Shinko
Aruna X Venere
Antonio N Caldarera
Sinclair M Garufi
Jefferson Q Gaucho
Arvin R Morasca
Leon B Waycott
Mujtaba G Nestle
Antonio L Caldarera
IdCountryDate
1000Australia2024-04-10
1001India2024-04-26
1002Argentina2024-04-23
1003Brazil2024-04-14
1004Australia2024-04-21
1005United Kingdom2024-04-27
1006Argentina2024-04-04
1007Germany2024-04-09
1008Argentina2024-04-12
1009Russia2024-04-19
1010Russia2024-04-06
1011Japan2024-04-21
1012Russia2024-04-16
1013Australia2024-04-26
1014Argentina2024-04-22
1015Spain2024-04-01
1016Russia2024-04-23
1017Russia2024-04-22
1018Argentina2024-04-27
1019France2024-04-21
1020India2024-03-31
1021Spain2024-04-17
1022France2024-04-21
1023Germany2024-04-21
1024Russia2024-04-08
1025Canada2024-04-16
1026Spain2024-04-11
1027Canada2024-04-11
1028Argentina2024-04-05
1029United Kingdom2024-04-06
1030Italy2024-04-05
1031India2024-04-06
1032Japan2024-04-14
1033India2024-04-12
1034Argentina2024-04-20
1035Japan2024-03-29
1036United Kingdom2024-04-26
1037Germany2024-04-04
1038Australia2024-04-07
1039Spain2024-03-31
1040Australia2024-04-15
1041India2024-04-19
1042Spain2024-04-20
1043Brazil2024-04-05
1044Italy2024-04-12
1045Canada2024-04-02
1046Germany2024-04-15
1047Canada2024-04-02
1048Russia2024-04-03
1049Brazil2024-04-27

On-Demand Data

NameIdCountryDate
Ivar S Doe1000Argentina2024-04-26
Smith D Amigon1001Australia2024-03-31
Izzy H Iturbide1002Argentina2024-04-22
Jeanfrancois Q Tollner1003Japan2024-04-01
Izzy M Rim1004India2024-04-22
Misaki N Whobrey1005Spain2024-04-08
Isabel Y Caudy1006Brazil2024-04-22
Cody B Tollner1007Spain2024-04-16
Aditya U Ostrosky1008United Kingdom2024-04-15
David W Campain1009Italy2024-04-20
Sinclair R Slusarski1010Germany2024-04-23
Kadeem E Morasca1011Japan2024-04-20
Juan G Gillian1012Brazil2024-04-09
Kaitlin E Albares1013India2024-04-27
Murillo H Waycott1014Canada2024-03-31
Francesco E Slusarski1015Japan2024-04-01
Leon O Waycott1016Italy2024-04-10
Johnson V Malet1017France2024-04-03
Mayumi W Kusko1018India2024-04-11
Costa P Dilliard1019Germany2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon P PoquetteSpainOnyama Limba NEW
Jeanfrancois G AlbaresRussiaOnyama Limba PROPOSAL
Alejandro L RimRussiaIoni Bowcher PROPOSAL
Antonio R CaldareraUnited KingdomXuxue Feng QUALIFIED
Kadeem K FerenczBrazilOnyama Limba NEGOTIATION
Ashley K MaletCanadaOnyama Limba PROPOSAL
Ivar L OstroskyAustraliaAmy Elsner QUALIFIED
Clifford H RutaArgentinaStephen Shaw QUALIFIED
Alejandro P OldroydRussiaElwin Sharvill QUALIFIED
Kadeem Y FollerArgentinaAmy Elsner UNQUALIFIED
Aditya I WhobreySpainOnyama Limba UNQUALIFIED
Tony M MaletFranceIvan Magalhaes QUALIFIED
Jeanfrancois Q SaylorsJapanElwin Sharvill NEW
Jeanfrancois F SlusarskiGermanyAnna Fali PROPOSAL
Alejandro H MarrierSpainStephen Shaw UNQUALIFIED
Ivar A PoquetteBrazilOnyama Limba QUALIFIED
Claire I OldroydBrazilIoni Bowcher QUALIFIED
Jennifer H SaylorsIndiaOnyama Limba NEGOTIATION
Misaki Z WaycottUnited KingdomAmy Elsner NEW
Octavia H ChuiRussiaStephen Shaw RENEWAL
Jefferson R PaprockiUnited KingdomXuxue Feng NEW
Jeanfrancois F RulapaughUnited KingdomElwin Sharvill RENEWAL
Tony E RulapaughJapanBernardo Dominic UNQUALIFIED
Maria Q FerenczBrazilAnna Fali QUALIFIED
Claire E BowleyCanadaElwin Sharvill PROPOSAL
Greenwood X KuskoArgentinaStephen Shaw QUALIFIED
Juan S DilliardAustraliaElwin Sharvill NEW
Sinclair H RoysterJapanAnna Fali NEGOTIATION
Darci U SaylorsCanadaBernardo Dominic NEW
Mayumi C SlusarskiArgentinaAnna Fali UNQUALIFIED
Jeanfrancois J DoeAustraliaXuxue Feng PROPOSAL
Nicolas H FollerArgentinaAsiya Javayant UNQUALIFIED
Aditya D MacleadJapanElwin Sharvill NEGOTIATION
Julie W ButtRussiaAnna Fali QUALIFIED
Costa O PerinJapanAsiya Javayant NEW
Faith I WieserItalyAmy Elsner UNQUALIFIED
Wickens F ShinkoIndiaElwin Sharvill UNQUALIFIED
Ricardo V WhobreyJapanAsiya Javayant QUALIFIED
Jennifer J GillianGermanyOnyama Limba QUALIFIED
Kaitlin F BriddickGermanyAmy Elsner 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>