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
Deepesh I ButtItalyElwin Sharvill UNQUALIFIED
Emily N RimItalyBernardo Dominic RENEWAL
Ivar A PaprockiRussiaOnyama Limba UNQUALIFIED
Silvio W GlickArgentinaAnna Fali QUALIFIED
Izzy D VenereFranceIoni Bowcher PROPOSAL
Chavez G AlbaresUnited KingdomIvan Magalhaes PROPOSAL
Emily P GauchoBrazilOnyama Limba UNQUALIFIED
Maria B VenereBrazilAnna Fali UNQUALIFIED
Antonio B KuskoIndiaXuxue Feng QUALIFIED
David T MaletAustraliaIvan Magalhaes QUALIFIED
James G PoquetteRussiaAsiya Javayant UNQUALIFIED
Claire C WhobreyUnited KingdomXuxue Feng NEW
Claire T MacleadBrazilElwin Sharvill PROPOSAL
Ricardo T GauchoItalyStephen Shaw QUALIFIED
Deepesh C WieserRussiaAmy Elsner PROPOSAL
Aika A StensethBrazilIvan Magalhaes UNQUALIFIED
Nicolas N MaletBrazilAsiya Javayant NEW
Smith X MorascaArgentinaAsiya Javayant QUALIFIED
Francesco A FerenczIndiaXuxue Feng NEGOTIATION
Munro I GillianSpainOnyama Limba PROPOSAL
Darci P BriddickArgentinaAnna Fali NEGOTIATION
Aruna L ChuiAustraliaIoni Bowcher UNQUALIFIED
Claire P SlusarskiIndiaAsiya Javayant RENEWAL
Kadeem X BriddickCanadaAnna Fali NEGOTIATION
Jefferson E DarakjyIndiaOnyama Limba PROPOSAL
Leja J GlickCanadaOnyama Limba PROPOSAL
Kaitlin F WieserGermanyOnyama Limba UNQUALIFIED
Darci X InouyeCanadaStephen Shaw QUALIFIED
Faith D SlusarskiUnited KingdomElwin Sharvill UNQUALIFIED
Claire B BologniaUnited KingdomElwin Sharvill QUALIFIED
Mayumi I DarakjyArgentinaXuxue Feng QUALIFIED
Greenwood N DilliardUnited KingdomIoni Bowcher NEGOTIATION
Adams X GauchoArgentinaAsiya Javayant UNQUALIFIED
Darci L StockhamBrazilElwin Sharvill NEGOTIATION
Salvatore M MaletRussiaStephen Shaw UNQUALIFIED
Arvin C FlosiBrazilXuxue Feng UNQUALIFIED
Maria H OldroydJapanElwin Sharvill UNQUALIFIED
Nicolas B DilliardArgentinaXuxue Feng NEW
Clifford Q InouyeSpainBernardo Dominic RENEWAL
Francesco D ShinkoUnited KingdomXuxue Feng RENEWAL
Darci E WhobreyAustraliaIoni Bowcher QUALIFIED
Ashley S KolmetzRussiaAsiya Javayant NEW
Izzy F SergiBrazilIoni Bowcher NEW
Maria Z VenereArgentinaAnna Fali RENEWAL
Clifford X FigeroaRussiaIoni Bowcher UNQUALIFIED
Nicolas W DoeSpainAmy Elsner NEW
Emily K PerinFranceIvan Magalhaes PROPOSAL
Deepesh M OldroydFranceAnna Fali QUALIFIED
Ashley T CaldareraArgentinaBernardo Dominic NEGOTIATION
Salvatore T GillianAustraliaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois C OstroskyAustraliaIoni Bowcher PROPOSAL
Faith M GauchoAustraliaOnyama Limba PROPOSAL
Ivar O WaycottJapanAsiya Javayant UNQUALIFIED
Nicolas O KuskoIndiaOnyama Limba NEW
Smith R WieserBrazilAmy Elsner UNQUALIFIED
Adams I InouyeUnited KingdomStephen Shaw RENEWAL
Stacey P PaprockiArgentinaAnna Fali NEGOTIATION
Greenwood Q RulapaughCanadaAsiya Javayant PROPOSAL
Aika R CampainAustraliaOnyama Limba RENEWAL
Johnson E SaylorsGermanyOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio R ButtCanada2024-04-22Chapman, Ross E Esq QUALIFIED56Ivan Magalhaes
1001Mujtaba S PerinGermany2024-04-03Truhlar And Truhlar Attys QUALIFIED58Stephen Shaw
1002Salvatore C SchemmerFrance2024-04-03Printing Dimensions RENEWAL84Ivan Magalhaes
1003Wickens Z OstroskyBrazil2024-04-26Chanay, Jeffrey A Esq PROPOSAL18Elwin Sharvill
1004Claire G StensethFrance2024-04-21Buckley Miller Wright QUALIFIED15Anna Fali
1005Wickens E FlosiItaly2024-04-06Chapman, Ross E Esq QUALIFIED10Stephen Shaw
1006Johnson R OldroydUnited Kingdom2024-04-18Commercial Press NEGOTIATION52Ivan Magalhaes
1007Adams I RutaRussia2024-04-05King, Christopher A Esq NEW12Bernardo Dominic
1008Cody J RulapaughSpain2024-04-20Benton, John B Jr UNQUALIFIED16Elwin Sharvill
1009Salvatore M WaycottBrazil2024-04-13Rangoni Of Florence QUALIFIED49Anna Fali
1010Jefferson S CaldareraRussia2024-04-24Printing Dimensions UNQUALIFIED8Ivan Magalhaes
1011Morrow R GarufiSpain2024-04-20Buckley Miller Wright PROPOSAL43Anna Fali
1012Aika O ChuiJapan2024-04-02Rangoni Of Florence PROPOSAL60Elwin Sharvill
1013Juan S RimJapan2024-03-30Dorl, James J Esq UNQUALIFIED46Amy Elsner
1014Chavez M AlbaresGermany2024-04-19Buckley Miller Wright QUALIFIED40Xuxue Feng
1015Sinclair T MacleadArgentina2024-04-12Truhlar And Truhlar Attys NEGOTIATION85Ivan Magalhaes
1016Munro N StensethBrazil2024-04-20Benton, John B Jr UNQUALIFIED36Asiya Javayant
1017Rodrigues H RulapaughUnited Kingdom2024-03-31Rangoni Of Florence RENEWAL89Amy Elsner
1018Tony M RimRussia2024-04-04Chapman, Ross E Esq QUALIFIED67Xuxue Feng
1019Rodrigues O GarufiGermany2024-04-26King, Christopher A Esq QUALIFIED53Stephen Shaw
1020James G AlbaresRussia2024-04-26Dorl, James J Esq UNQUALIFIED39Onyama Limba
1021Adams O ButtAustralia2024-04-11Morlong Associates NEW52Anna Fali
1022Greenwood Z AlbaresCanada2024-04-02Feiner Bros QUALIFIED70Anna Fali
1023Greenwood P VocelkaJapan2024-04-03Chapman, Ross E Esq RENEWAL35Elwin Sharvill
1024Emily E IturbideRussia2024-04-10Rousseaux, Michael Esq PROPOSAL55Stephen Shaw
1025Mujtaba N SaylorsGermany2024-04-18King, Christopher A Esq QUALIFIED98Onyama Limba
1026Antonio C KolmetzFrance2024-03-29Rousseaux, Michael Esq PROPOSAL38Asiya Javayant
1027Francesco A DarakjySpain2024-04-23Morlong Associates NEGOTIATION93Xuxue Feng
1028Mujtaba D MaletArgentina2024-04-13Benton, John B Jr RENEWAL66Stephen Shaw
1029Claire Z CampainUnited Kingdom2024-04-15Printing Dimensions RENEWAL53Elwin Sharvill
1030Stacey J GillianCanada2024-03-28Printing Dimensions PROPOSAL97Xuxue Feng
1031Cody R FerenczJapan2024-04-08Chapman, Ross E Esq PROPOSAL46Xuxue Feng
1032Maisha V NickaIndia2024-03-29Dorl, James J Esq QUALIFIED2Stephen Shaw
1033Aika G DilliardUnited Kingdom2024-03-29Chanay, Jeffrey A Esq NEGOTIATION2Asiya Javayant
1034Rodrigues K NickaItaly2024-04-23Chapman, Ross E Esq PROPOSAL92Amy Elsner
1035Cody R DilliardCanada2024-04-10Morlong Associates RENEWAL56Bernardo Dominic
1036Stacey F FlosiUnited Kingdom2024-04-09Chanay, Jeffrey A Esq NEGOTIATION0Anna Fali
1037Misaki J DilliardJapan2024-04-13Commercial Press RENEWAL78Amy Elsner
1038Cody F RutaRussia2024-04-15Rousseaux, Michael Esq UNQUALIFIED52Stephen Shaw
1039Ricardo V VenereJapan2024-03-31Feltz Printing Service NEGOTIATION48Bernardo Dominic
1040Greenwood H DarakjyFrance2024-04-13Chanay, Jeffrey A Esq RENEWAL27Amy Elsner
1041Smith C ShinkoArgentina2024-04-22Commercial Press NEGOTIATION57Amy Elsner
1042Murillo B DoeGermany2024-04-16Feltz Printing Service NEGOTIATION26Anna Fali
1043Johnson F StensethIndia2024-04-12Chapman, Ross E Esq QUALIFIED29Bernardo Dominic
1044James C FollerAustralia2024-04-17Printing Dimensions NEGOTIATION91Stephen Shaw
1045Aruna J BowleyBrazil2024-04-17Printing Dimensions NEGOTIATION47Stephen Shaw
1046Ashley I SaylorsRussia2024-04-20Feltz Printing Service NEW91Onyama Limba
1047Jennifer T BologniaRussia2024-04-02Benton, John B Jr UNQUALIFIED54Asiya Javayant
1048David M ShinkoJapan2024-03-29Chapman, Ross E Esq RENEWAL45Asiya Javayant
1049Isabel H MaletAustralia2024-04-08Feiner Bros UNQUALIFIED92Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Wickens W PoquetteSpainXuxue Feng NEGOTIATION
Silvio X DarakjyAustraliaAnna Fali RENEWAL
Jefferson R WaycottRussiaIoni Bowcher RENEWAL
James H SergiItalyIoni Bowcher QUALIFIED
Emily E FigeroaGermanyBernardo Dominic PROPOSAL
Jennifer K FerenczFranceAmy Elsner RENEWAL
Morrow W KuskoArgentinaOnyama Limba NEGOTIATION
Isabel U RimBrazilBernardo Dominic QUALIFIED
Aika L SchemmerJapanElwin Sharvill NEW
Antonio V FerenczFranceXuxue Feng PROPOSAL
Sinclair X AmigonSpainAsiya Javayant PROPOSAL
Mayumi Z VocelkaItalyAsiya Javayant NEGOTIATION
Tony B WieserBrazilStephen Shaw QUALIFIED
Maisha E SaylorsJapanXuxue Feng UNQUALIFIED
Claire S DilliardGermanyIoni Bowcher RENEWAL
Smith C OstroskyArgentinaIvan Magalhaes UNQUALIFIED
Jeanfrancois B SergiUnited KingdomIoni Bowcher NEGOTIATION
Arvin Q DilliardAustraliaStephen Shaw PROPOSAL
Ashley W NickaIndiaElwin Sharvill NEGOTIATION
Jeanfrancois R AmigonBrazilIvan Magalhaes NEGOTIATION
Ivar E WaycottBrazilStephen Shaw NEW
Clifford R StensethUnited KingdomIvan Magalhaes UNQUALIFIED
Darci P FlosiIndiaElwin Sharvill QUALIFIED
Emily I FerenczRussiaOnyama Limba RENEWAL
Adams I AmigonJapanIoni Bowcher RENEWAL
Julie K KuskoFranceIvan Magalhaes QUALIFIED
Salvatore E IturbideUnited KingdomXuxue Feng PROPOSAL
Kaitlin P OstroskyGermanyIoni Bowcher RENEWAL
Murillo Q SlusarskiJapanStephen Shaw QUALIFIED
Smith K RutaSpainIoni Bowcher NEGOTIATION
Mayumi V RoysterFranceAsiya Javayant UNQUALIFIED
Johnson W KuskoGermanyAsiya Javayant NEW
Izzy B CaldareraSpainStephen Shaw QUALIFIED
Silvio E DilliardFranceStephen Shaw RENEWAL
Murillo K IturbideItalyBernardo Dominic RENEWAL
Claire Q GillianBrazilXuxue Feng UNQUALIFIED
Leja G CaudyItalyStephen Shaw NEGOTIATION
Aditya E BologniaUnited KingdomAmy Elsner NEW
Izzy Q CampainGermanyBernardo Dominic NEW
Stacey F FollerJapanStephen Shaw NEW
Aika J WieserFranceIoni Bowcher NEW
Faith F StockhamBrazilBernardo Dominic NEW
Johnson X GillianItalyOnyama Limba QUALIFIED
Leon R VocelkaUnited KingdomIoni Bowcher NEGOTIATION
Ashley M PaprockiArgentinaAsiya Javayant NEGOTIATION
Stacey B FigeroaFranceAsiya Javayant PROPOSAL
Francesco F SlusarskiSpainAsiya Javayant RENEWAL
Ashley L RulapaughRussiaXuxue Feng NEW
Aruna E TollnerIndiaIoni Bowcher NEW
Isabel D MarrierAustraliaBernardo Dominic NEW
Frozen Columns
Name
Julie Q Shinko
Octavia W Caldarera
Izzy P Vocelka
Ricardo S Slusarski
Arvin X Schemmer
Leja F Kolmetz
Isabel V Marrier
Chavez F Royster
Aruna X Figeroa
Faith Q Ruta
Faith E Stenseth
Francesco Y Tollner
Mayumi P Nicka
Arvin G Nestle
Salvatore E Garufi
Izzy H Amigon
Aditya U Briddick
Murillo D Flosi
Arvin H Foller
Leja A Stockham
Mujtaba U Oldroyd
Jones E Darakjy
Julie S Flosi
Faith Q Nicka
Arvin L Bowley
Jefferson G Wieser
Antonio B Rim
Isabel M Schemmer
Sinclair A Rim
Faith P Waycott
Julie X Stenseth
Stacey G Figeroa
Ashley V Gaucho
Claire I Whobrey
Murillo S Figeroa
Emily A Gillian
Juan Z Rulapaugh
Johnson I Nestle
Murillo V Caldarera
James N Shinko
Leon S Waycott
Ashley G Stockham
Maria O Caudy
Silvio Q Rim
Johnson H Ferencz
Faith B Tollner
Morrow I Malet
Leon A Bolognia
Antonio K Whobrey
Jeanfrancois N Malet
IdCountryDate
1000Germany2024-04-26
1001United Kingdom2024-04-06
1002Argentina2024-03-31
1003Italy2024-04-16
1004Canada2024-04-10
1005Russia2024-04-18
1006Canada2024-04-26
1007Italy2024-03-28
1008India2024-04-03
1009Argentina2024-04-08
1010Australia2024-04-04
1011Argentina2024-04-22
1012United Kingdom2024-04-24
1013Japan2024-04-14
1014Argentina2024-04-02
1015Russia2024-04-17
1016Argentina2024-04-03
1017India2024-04-22
1018Australia2024-04-03
1019Brazil2024-04-08
1020Argentina2024-04-13
1021Argentina2024-04-18
1022France2024-04-03
1023Japan2024-04-22
1024Australia2024-04-22
1025France2024-04-25
1026United Kingdom2024-04-17
1027Spain2024-04-04
1028United Kingdom2024-03-29
1029Japan2024-04-10
1030Australia2024-04-08
1031Spain2024-04-04
1032Canada2024-04-25
1033United Kingdom2024-03-30
1034Russia2024-04-02
1035Italy2024-04-22
1036Brazil2024-04-20
1037Argentina2024-03-28
1038France2024-04-21
1039Japan2024-04-07
1040Russia2024-04-20
1041Australia2024-04-12
1042Canada2024-04-18
1043Japan2024-04-14
1044United Kingdom2024-04-25
1045United Kingdom2024-04-10
1046Japan2024-04-21
1047United Kingdom2024-03-30
1048Spain2024-04-20
1049France2024-04-12

On-Demand Data

NameIdCountryDate
Ashley D Flosi1000Brazil2024-03-28
Leja Z Garufi1001Italy2024-04-10
Julie J Nicka1002Italy2024-04-16
Aika D Glick1003Spain2024-04-01
Greenwood J Rulapaugh1004Italy2024-04-25
Aruna E Venere1005Russia2024-04-01
Kaitlin N Briddick1006Russia2024-04-19
Misaki C Ostrosky1007Germany2024-04-08
Mujtaba H Foller1008Canada2024-04-09
Wickens X Maclead1009India2024-04-23
Jeanfrancois B Whobrey1010India2024-04-07
Cody G Malet1011France2024-04-04
Misaki Q Darakjy1012Australia2024-04-25
Chavez T Ostrosky1013Japan2024-04-10
Chavez Z Bolognia1014France2024-04-19
Chavez P Sergi1015Brazil2024-04-05
Arvin O Vocelka1016Japan2024-04-03
Smith N Poquette1017France2024-03-30
Salvatore M Dilliard1018Italy2024-04-11
Jefferson L Perin1019United Kingdom2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia S NickaBrazilXuxue Feng UNQUALIFIED
Ivar D CaldareraCanadaOnyama Limba PROPOSAL
Claire Y WaycottCanadaAnna Fali NEW
Deepesh C SlusarskiGermanyIoni Bowcher UNQUALIFIED
Morrow S SaylorsArgentinaElwin Sharvill PROPOSAL
Munro C StensethItalyElwin Sharvill NEGOTIATION
Sinclair U PoquetteBrazilAnna Fali UNQUALIFIED
Maria I WaycottGermanyStephen Shaw RENEWAL
Wickens X SaylorsJapanIvan Magalhaes RENEWAL
Ashley W RutaArgentinaAmy Elsner UNQUALIFIED
Aruna Y KuskoRussiaIvan Magalhaes UNQUALIFIED
Ashley L SlusarskiJapanXuxue Feng NEW
Misaki L SchemmerBrazilIvan Magalhaes NEW
Mujtaba O RulapaughUnited KingdomOnyama Limba PROPOSAL
Francesco A ShinkoSpainAmy Elsner QUALIFIED
Arvin S GauchoGermanyAsiya Javayant RENEWAL
Adams K CaudyJapanElwin Sharvill RENEWAL
Johnson S CampainRussiaAmy Elsner PROPOSAL
Arvin U AmigonItalyOnyama Limba QUALIFIED
Aditya N MacleadGermanyAmy Elsner UNQUALIFIED
Silvio E StockhamCanadaOnyama Limba RENEWAL
Adams K CaudyAustraliaAsiya Javayant QUALIFIED
Clifford D MacleadFranceIoni Bowcher RENEWAL
Maria G RimBrazilAmy Elsner NEW
Izzy Z ShinkoFranceOnyama Limba PROPOSAL
Maria M FigeroaJapanElwin Sharvill QUALIFIED
Octavia Z StockhamFranceAnna Fali UNQUALIFIED
Darci H OldroydSpainOnyama Limba NEW
Chavez X RoysterGermanyStephen Shaw QUALIFIED
Jennifer E MorascaUnited KingdomXuxue Feng NEW
Wickens W KuskoBrazilStephen Shaw RENEWAL
Smith N KuskoUnited KingdomAnna Fali RENEWAL
Morrow G RimUnited KingdomIvan Magalhaes PROPOSAL
Juan V ChuiBrazilAmy Elsner UNQUALIFIED
Munro L WaycottIndiaBernardo Dominic RENEWAL
Costa M TollnerArgentinaAsiya Javayant NEGOTIATION
Maisha U CaldareraIndiaElwin Sharvill NEW
Claire N WhobreyGermanyStephen Shaw NEW
Maisha W AlbaresArgentinaIvan Magalhaes NEGOTIATION
Aditya S BowleyArgentinaAmy Elsner 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>