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
Alejandro M GauchoBrazilIvan Magalhaes NEW
Deepesh N RimCanadaOnyama Limba RENEWAL
Greenwood P WaycottIndiaElwin Sharvill NEGOTIATION
Ashley F RoysterBrazilXuxue Feng RENEWAL
Francesco O GlickGermanyAmy Elsner QUALIFIED
Julie Y KolmetzArgentinaAnna Fali RENEWAL
Morrow F FollerUnited KingdomIoni Bowcher QUALIFIED
Ricardo S WaycottUnited KingdomElwin Sharvill QUALIFIED
Maria X BriddickJapanAnna Fali UNQUALIFIED
Arvin Z SlusarskiIndiaElwin Sharvill NEW
Izzy S StensethFranceIoni Bowcher NEGOTIATION
Isabel B BologniaUnited KingdomOnyama Limba UNQUALIFIED
Jennifer G FollerCanadaStephen Shaw NEW
Alejandro Z FlosiIndiaBernardo Dominic UNQUALIFIED
Mayumi M RimJapanBernardo Dominic UNQUALIFIED
Deepesh C DoeRussiaIoni Bowcher UNQUALIFIED
Morrow V FerenczUnited KingdomXuxue Feng NEGOTIATION
Murillo Z FerenczGermanyStephen Shaw QUALIFIED
Salvatore Q KolmetzItalyAsiya Javayant RENEWAL
Faith Z CaudyGermanyOnyama Limba NEGOTIATION
Johnson K StensethIndiaElwin Sharvill QUALIFIED
Octavia A KolmetzItalyBernardo Dominic NEW
Chavez L KolmetzRussiaOnyama Limba QUALIFIED
Ashley T NestleIndiaStephen Shaw NEW
Antonio P BologniaAustraliaElwin Sharvill UNQUALIFIED
Isabel O DarakjyBrazilStephen Shaw PROPOSAL
Leja D ChuiRussiaXuxue Feng NEGOTIATION
Ricardo L ButtGermanyBernardo Dominic NEW
James I MaletBrazilElwin Sharvill NEGOTIATION
Cody H WieserAustraliaAsiya Javayant PROPOSAL
Mujtaba D CaudyUnited KingdomBernardo Dominic PROPOSAL
Deepesh T DarakjyUnited KingdomIoni Bowcher NEW
Antonio B FlosiSpainAsiya Javayant QUALIFIED
Clifford H NickaItalyStephen Shaw PROPOSAL
Silvio S BowleyArgentinaAmy Elsner UNQUALIFIED
Antonio D DarakjyArgentinaAsiya Javayant QUALIFIED
Kadeem W CampainFranceIoni Bowcher UNQUALIFIED
Jennifer K WhobreyBrazilOnyama Limba PROPOSAL
Ivar A FerenczCanadaElwin Sharvill QUALIFIED
Claire I PerinFranceIvan Magalhaes NEW
David G PerinJapanIvan Magalhaes RENEWAL
Faith Z VenereIndiaIoni Bowcher RENEWAL
Ivar W KuskoCanadaIoni Bowcher NEW
Jeanfrancois E PaprockiRussiaAmy Elsner NEGOTIATION
Ricardo S NickaBrazilIvan Magalhaes NEGOTIATION
Maisha I SlusarskiJapanOnyama Limba PROPOSAL
Clifford E MorascaSpainXuxue Feng RENEWAL
Aika P WieserArgentinaIvan Magalhaes NEW
Mujtaba U NestleGermanyBernardo Dominic RENEWAL
David L RutaCanadaOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Juan H FerenczAustraliaStephen Shaw RENEWAL
Sinclair M GauchoJapanAmy Elsner RENEWAL
Jones R StockhamArgentinaAnna Fali PROPOSAL
Mujtaba C CaldareraFranceAmy Elsner NEW
Aruna N MarrierRussiaElwin Sharvill NEGOTIATION
Darci F MaletAustraliaIvan Magalhaes UNQUALIFIED
Aika W BriddickIndiaIoni Bowcher UNQUALIFIED
David E CampainBrazilXuxue Feng UNQUALIFIED
Kaitlin Q RutaBrazilIoni Bowcher NEGOTIATION
Sinclair N StensethJapanAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja T RimCanada2024-03-31Printing Dimensions RENEWAL78Stephen Shaw
1001Octavia S WhobreyBrazil2024-04-26Printing Dimensions NEW62Onyama Limba
1002Kadeem B DoeFrance2024-04-27Dorl, James J Esq RENEWAL80Elwin Sharvill
1003Rodrigues L WhobreyJapan2024-04-01Dorl, James J Esq UNQUALIFIED31Amy Elsner
1004Murillo D VocelkaItaly2024-04-24King, Christopher A Esq NEW93Bernardo Dominic
1005Mujtaba U TollnerRussia2024-04-07Truhlar And Truhlar Attys PROPOSAL46Onyama Limba
1006Emily V TollnerGermany2024-04-09Chapman, Ross E Esq NEGOTIATION10Ivan Magalhaes
1007Adams Y FigeroaBrazil2024-04-02King, Christopher A Esq UNQUALIFIED97Onyama Limba
1008Stacey L DoeGermany2024-04-01Truhlar And Truhlar Attys NEW95Bernardo Dominic
1009Claire D CaldareraItaly2024-04-05Feiner Bros NEGOTIATION4Onyama Limba
1010Kaitlin B AlbaresCanada2024-04-25Printing Dimensions QUALIFIED44Ioni Bowcher
1011Jones D RimIndia2024-03-30Truhlar And Truhlar Attys UNQUALIFIED45Elwin Sharvill
1012Silvio E MorascaJapan2024-03-29Commercial Press PROPOSAL70Anna Fali
1013Aika H ChuiBrazil2024-04-18Feiner Bros NEW74Elwin Sharvill
1014David R SergiItaly2024-04-26Commercial Press NEGOTIATION29Ioni Bowcher
1015Maisha T CampainGermany2024-04-05Printing Dimensions UNQUALIFIED16Asiya Javayant
1016Juan I GlickRussia2024-04-23Dorl, James J Esq NEGOTIATION95Elwin Sharvill
1017Izzy N MaletRussia2024-04-26Morlong Associates NEGOTIATION15Bernardo Dominic
1018Greenwood M WaycottUnited Kingdom2024-04-23Morlong Associates NEW40Ioni Bowcher
1019Rodrigues H InouyeArgentina2024-04-04Dorl, James J Esq PROPOSAL79Ioni Bowcher
1020Kadeem F SaylorsArgentina2024-04-02Morlong Associates RENEWAL51Elwin Sharvill
1021Jennifer T PoquetteArgentina2024-04-02Morlong Associates PROPOSAL24Stephen Shaw
1022Chavez J MacleadArgentina2024-04-25Feltz Printing Service NEGOTIATION4Ioni Bowcher
1023Johnson P RimArgentina2024-04-11Morlong Associates UNQUALIFIED39Onyama Limba
1024Leja B PaprockiJapan2024-04-24Chanay, Jeffrey A Esq NEW80Amy Elsner
1025Costa X InouyeIndia2024-04-18Buckley Miller Wright NEW82Ioni Bowcher
1026Francesco J CaldareraItaly2024-04-09Chanay, Jeffrey A Esq NEGOTIATION23Onyama Limba
1027Smith K GillianItaly2024-04-02Benton, John B Jr UNQUALIFIED95Xuxue Feng
1028Nicolas U ShinkoCanada2024-04-06Chanay, Jeffrey A Esq RENEWAL8Asiya Javayant
1029Julie Q WieserIndia2024-04-08Feiner Bros UNQUALIFIED20Ioni Bowcher
1030Juan C WaycottBrazil2024-04-25Feltz Printing Service PROPOSAL22Elwin Sharvill
1031Smith Q ShinkoUnited Kingdom2024-04-20Commercial Press QUALIFIED43Elwin Sharvill
1032Ricardo J ChuiItaly2024-04-23Printing Dimensions NEW54Asiya Javayant
1033Ashley X VocelkaRussia2024-04-12Dorl, James J Esq NEGOTIATION52Elwin Sharvill
1034Kadeem H WhobreyFrance2024-04-02Feltz Printing Service PROPOSAL4Anna Fali
1035Aika B KuskoBrazil2024-04-03Benton, John B Jr PROPOSAL82Bernardo Dominic
1036Jennifer D InouyeCanada2024-04-10Chanay, Jeffrey A Esq PROPOSAL20Xuxue Feng
1037Cody W KolmetzCanada2024-04-11Truhlar And Truhlar Attys PROPOSAL89Xuxue Feng
1038Johnson S PerinGermany2024-04-03Morlong Associates QUALIFIED50Onyama Limba
1039Rodrigues O AlbaresCanada2024-04-23Chapman, Ross E Esq PROPOSAL17Bernardo Dominic
1040Sinclair D ShinkoSpain2024-04-12Chapman, Ross E Esq QUALIFIED46Bernardo Dominic
1041Emily H VenereGermany2024-04-06Benton, John B Jr QUALIFIED51Xuxue Feng
1042Jeanfrancois E FerenczRussia2024-04-22Chemel, James L Cpa UNQUALIFIED30Bernardo Dominic
1043Julie H CaldareraFrance2024-03-30Chemel, James L Cpa NEW46Elwin Sharvill
1044Julie E ChuiArgentina2024-03-30Chanay, Jeffrey A Esq QUALIFIED98Xuxue Feng
1045Misaki L RutaUnited Kingdom2024-04-01Truhlar And Truhlar Attys NEW90Bernardo Dominic
1046Jennifer M BriddickArgentina2024-04-23Chapman, Ross E Esq NEW49Onyama Limba
1047Tony Z SlusarskiAustralia2024-04-12King, Christopher A Esq NEW79Ivan Magalhaes
1048Kadeem B NickaSpain2024-04-27Rousseaux, Michael Esq RENEWAL96Stephen Shaw
1049Kaitlin Z KuskoBrazil2024-04-11Chapman, Ross E Esq QUALIFIED75Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Costa E VenereGermanyAsiya Javayant PROPOSAL
Arvin M MacleadBrazilBernardo Dominic QUALIFIED
Nicolas U WieserArgentinaXuxue Feng QUALIFIED
Maisha I RulapaughIndiaElwin Sharvill RENEWAL
Francesco J MacleadArgentinaIoni Bowcher RENEWAL
Kadeem K KolmetzBrazilStephen Shaw PROPOSAL
Isabel L RulapaughCanadaIoni Bowcher RENEWAL
Jeanfrancois A WieserSpainElwin Sharvill QUALIFIED
Sinclair Z KolmetzJapanAnna Fali NEW
Nicolas N CampainAustraliaAmy Elsner QUALIFIED
Greenwood J FollerItalyOnyama Limba QUALIFIED
Rodrigues S BologniaRussiaOnyama Limba RENEWAL
Jeanfrancois U WhobreyRussiaAsiya Javayant NEW
Aika T IturbideFranceOnyama Limba PROPOSAL
Arvin U RoysterCanadaAsiya Javayant NEW
Leon B VocelkaUnited KingdomElwin Sharvill QUALIFIED
Darci U RulapaughItalyAnna Fali NEGOTIATION
Stacey I RimBrazilElwin Sharvill PROPOSAL
Aditya D GarufiIndiaStephen Shaw PROPOSAL
Nicolas A RoysterRussiaXuxue Feng UNQUALIFIED
Costa J BowleyBrazilBernardo Dominic NEGOTIATION
Adams Y PoquetteGermanyStephen Shaw UNQUALIFIED
Clifford S CaldareraArgentinaXuxue Feng NEGOTIATION
Chavez V ShinkoFranceIvan Magalhaes QUALIFIED
Aruna A ChuiArgentinaAmy Elsner UNQUALIFIED
Arvin R SchemmerGermanyXuxue Feng UNQUALIFIED
Greenwood J MacleadCanadaXuxue Feng PROPOSAL
Izzy R CampainJapanIoni Bowcher QUALIFIED
Silvio S MorascaGermanyAmy Elsner NEGOTIATION
Alejandro K StockhamArgentinaElwin Sharvill RENEWAL
James B VocelkaCanadaStephen Shaw PROPOSAL
Munro O InouyeArgentinaBernardo Dominic RENEWAL
Smith R RulapaughFranceAsiya Javayant NEW
Clifford U GarufiIndiaAsiya Javayant UNQUALIFIED
Antonio D PaprockiRussiaAmy Elsner NEW
Chavez J MorascaUnited KingdomOnyama Limba QUALIFIED
Deepesh U VocelkaFranceBernardo Dominic NEGOTIATION
Silvio N NestleAustraliaElwin Sharvill QUALIFIED
Jefferson O WieserArgentinaAsiya Javayant RENEWAL
Jennifer D StensethGermanyIvan Magalhaes RENEWAL
Maria S MarrierItalyAsiya Javayant NEGOTIATION
Salvatore M ShinkoBrazilAmy Elsner NEGOTIATION
Maisha K FollerBrazilAnna Fali PROPOSAL
Aditya J PoquetteAustraliaXuxue Feng NEW
Julie V StockhamSpainIoni Bowcher PROPOSAL
Kaitlin L DilliardIndiaOnyama Limba NEGOTIATION
Johnson T DilliardCanadaAmy Elsner NEGOTIATION
Octavia A RoysterIndiaElwin Sharvill UNQUALIFIED
Arvin G PoquetteFranceIoni Bowcher NEW
Claire O IturbideItalyAsiya Javayant PROPOSAL
Frozen Columns
Name
Julie B Ferencz
Darci Q Poquette
Costa I Ruta
Aika G Oldroyd
Ivar N Butt
Juan P Gaucho
Clifford B Darakjy
Isabel S Ostrosky
Alejandro F Chui
Francesco R Ruta
Kaitlin U Gillian
Faith B Flosi
Kadeem Z Slusarski
Jennifer K Figeroa
Stacey W Schemmer
Leon W Venere
Munro D Figeroa
Jeanfrancois T Malet
Aruna C Morasca
Francesco X Tollner
Maria T Wieser
Morrow G Whobrey
Ricardo R Butt
Costa B Morasca
Ricardo K Garufi
Adams M Slusarski
Alejandro I Rulapaugh
Octavia X Inouye
Mujtaba X Gillian
Izzy Y Caudy
Rodrigues R Figeroa
James A Malet
James J Royster
Johnson O Marrier
Munro H Whobrey
Antonio L Nestle
Ricardo D Amigon
Smith E Bowley
Smith S Marrier
Ricardo S Inouye
Maisha X Schemmer
Arvin N Caudy
Mujtaba R Maclead
Salvatore S Waycott
Leon F Royster
Maisha F Caldarera
Leja N Caldarera
Mayumi A Venere
Tony S Morasca
Ashley X Flosi
IdCountryDate
1000France2024-04-08
1001Argentina2024-04-12
1002Australia2024-04-13
1003Argentina2024-04-09
1004France2024-03-29
1005France2024-04-24
1006India2024-04-09
1007Italy2024-04-27
1008Russia2024-04-23
1009Australia2024-04-16
1010France2024-04-25
1011Spain2024-03-29
1012Argentina2024-04-01
1013India2024-04-01
1014Canada2024-03-29
1015Argentina2024-04-03
1016Germany2024-04-07
1017Spain2024-04-18
1018Russia2024-04-22
1019Italy2024-04-26
1020Italy2024-04-04
1021India2024-03-29
1022United Kingdom2024-04-06
1023Canada2024-04-03
1024United Kingdom2024-04-08
1025Canada2024-04-15
1026United Kingdom2024-04-22
1027Russia2024-04-27
1028Italy2024-04-21
1029Australia2024-04-05
1030Germany2024-04-12
1031United Kingdom2024-04-03
1032Russia2024-04-25
1033Italy2024-04-27
1034Argentina2024-03-30
1035United Kingdom2024-04-08
1036United Kingdom2024-04-17
1037Australia2024-04-26
1038Argentina2024-04-25
1039Australia2024-04-14
1040India2024-04-27
1041Australia2024-04-25
1042Italy2024-04-25
1043Canada2024-04-06
1044United Kingdom2024-04-06
1045Australia2024-04-17
1046Brazil2024-04-24
1047France2024-04-18
1048Japan2024-04-22
1049Russia2024-04-14

On-Demand Data

NameIdCountryDate
Juan O Bowley1000Argentina2024-04-08
Ricardo X Whobrey1001Spain2024-04-01
Rodrigues J Stenseth1002Canada2024-04-01
Leja E Bolognia1003Russia2024-04-02
Greenwood B Garufi1004Canada2024-04-20
Izzy S Slusarski1005Russia2024-04-04
Ashley Y Iturbide1006Brazil2024-04-22
Misaki X Poquette1007United Kingdom2024-04-26
Morrow K Caudy1008Australia2024-04-08
Wickens H Amigon1009Canada2024-04-20
Greenwood A Shinko1010India2024-04-11
Octavia Z Shinko1011Argentina2024-04-26
Misaki A Wieser1012Argentina2024-04-08
Mujtaba I Kusko1013Japan2024-04-02
Arvin P Bolognia1014Brazil2024-03-31
Mayumi O Iturbide1015Argentina2024-04-08
Jeanfrancois X Malet1016France2024-04-16
Julie F Glick1017United Kingdom2024-04-22
Izzy V Glick1018Australia2024-04-12
Murillo D Venere1019India2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia M SlusarskiIndiaAnna Fali UNQUALIFIED
Tony Z IturbideIndiaElwin Sharvill QUALIFIED
Mayumi X GauchoSpainOnyama Limba NEW
Cody G DilliardRussiaElwin Sharvill QUALIFIED
Cody W KuskoRussiaElwin Sharvill NEGOTIATION
Ivar G AlbaresFranceStephen Shaw RENEWAL
Jennifer H VenereIndiaOnyama Limba RENEWAL
Emily X RutaRussiaAsiya Javayant PROPOSAL
Tony O WieserJapanIoni Bowcher UNQUALIFIED
Maisha O IturbideBrazilBernardo Dominic NEGOTIATION
Deepesh C TollnerItalyBernardo Dominic NEW
Octavia G BologniaGermanyAnna Fali UNQUALIFIED
Nicolas F PerinRussiaAmy Elsner PROPOSAL
Cody V KuskoItalyOnyama Limba PROPOSAL
Kadeem E PerinFranceXuxue Feng UNQUALIFIED
Kaitlin J BologniaIndiaAnna Fali NEGOTIATION
Francesco P BowleyJapanXuxue Feng QUALIFIED
Juan D FigeroaAustraliaXuxue Feng UNQUALIFIED
Stacey C KolmetzItalyXuxue Feng RENEWAL
Murillo M KolmetzFranceStephen Shaw UNQUALIFIED
Sinclair Q OldroydArgentinaElwin Sharvill UNQUALIFIED
Emily B BriddickGermanyStephen Shaw QUALIFIED
Rodrigues E TollnerGermanyOnyama Limba UNQUALIFIED
Smith P SergiRussiaIoni Bowcher NEW
Isabel G ButtAustraliaXuxue Feng NEGOTIATION
Maria N CampainFranceAnna Fali RENEWAL
David H OldroydFranceAsiya Javayant RENEWAL
Jefferson O DilliardUnited KingdomBernardo Dominic RENEWAL
Tony U InouyeItalyBernardo Dominic RENEWAL
Izzy V ButtItalyXuxue Feng NEGOTIATION
Darci P GillianGermanyAsiya Javayant NEGOTIATION
Salvatore P WieserBrazilAnna Fali NEGOTIATION
Salvatore O StensethUnited KingdomStephen Shaw QUALIFIED
Ivar K OldroydCanadaStephen Shaw PROPOSAL
Jeanfrancois W VocelkaJapanAsiya Javayant RENEWAL
Alejandro H SchemmerArgentinaIoni Bowcher NEW
Greenwood L KolmetzArgentinaAmy Elsner RENEWAL
Salvatore R FigeroaItalyXuxue Feng QUALIFIED
Jennifer S ShinkoFranceBernardo Dominic NEGOTIATION
Ashley W FlosiRussiaXuxue Feng 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>