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
Kadeem G PerinGermanyAnna Fali RENEWAL
Ashley Z StensethGermanyAsiya Javayant UNQUALIFIED
Murillo I InouyeBrazilIoni Bowcher PROPOSAL
Jones M GauchoRussiaElwin Sharvill RENEWAL
Darci L BriddickItalyIvan Magalhaes UNQUALIFIED
Arvin V FerenczGermanyAsiya Javayant NEW
Izzy X CaldareraJapanStephen Shaw RENEWAL
Greenwood G StensethRussiaElwin Sharvill NEGOTIATION
Leja G WaycottArgentinaOnyama Limba PROPOSAL
Alejandro U GillianFranceBernardo Dominic PROPOSAL
Clifford D SaylorsJapanAnna Fali NEGOTIATION
Juan Z WhobreyGermanyAsiya Javayant PROPOSAL
Ivar F DilliardArgentinaIvan Magalhaes QUALIFIED
Murillo M WhobreyUnited KingdomAnna Fali NEGOTIATION
Ivar O OldroydRussiaAsiya Javayant QUALIFIED
Antonio A AlbaresBrazilAnna Fali RENEWAL
Juan I WaycottRussiaBernardo Dominic RENEWAL
Morrow I BriddickRussiaBernardo Dominic NEGOTIATION
Isabel J WhobreyArgentinaIoni Bowcher UNQUALIFIED
Ashley U NestleBrazilOnyama Limba NEW
Mayumi W MaletIndiaAmy Elsner UNQUALIFIED
Tony U WhobreyRussiaElwin Sharvill PROPOSAL
Greenwood Q FerenczFranceStephen Shaw UNQUALIFIED
Mujtaba B BologniaBrazilAmy Elsner QUALIFIED
Costa U WaycottJapanAsiya Javayant UNQUALIFIED
Mujtaba G NestleUnited KingdomXuxue Feng NEW
Sinclair Y StockhamUnited KingdomOnyama Limba PROPOSAL
Francesco D RutaSpainAsiya Javayant PROPOSAL
Costa S InouyeIndiaBernardo Dominic PROPOSAL
Stacey T CaldareraBrazilAmy Elsner UNQUALIFIED
Jones R FigeroaUnited KingdomIoni Bowcher PROPOSAL
Stacey N CaudyIndiaStephen Shaw QUALIFIED
Salvatore T GillianAustraliaAnna Fali RENEWAL
Francesco D RutaCanadaOnyama Limba UNQUALIFIED
Izzy L GarufiBrazilAnna Fali RENEWAL
Kaitlin R WhobreyCanadaElwin Sharvill QUALIFIED
Ivar R FigeroaUnited KingdomStephen Shaw RENEWAL
Darci M GauchoFranceAnna Fali PROPOSAL
David T MorascaFranceIoni Bowcher RENEWAL
Leon N StensethAustraliaOnyama Limba NEGOTIATION
Misaki T InouyeBrazilAsiya Javayant PROPOSAL
Nicolas L BowleySpainStephen Shaw QUALIFIED
Claire Z DilliardFranceAmy Elsner QUALIFIED
Salvatore V WhobreyIndiaElwin Sharvill NEGOTIATION
Munro H NestleUnited KingdomXuxue Feng PROPOSAL
Aruna I RutaIndiaAnna Fali PROPOSAL
Faith I OstroskySpainAmy Elsner QUALIFIED
Kadeem K SchemmerGermanyStephen Shaw QUALIFIED
Arvin Z ChuiJapanElwin Sharvill NEW
Misaki S GillianRussiaIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois X RoysterBrazilStephen Shaw QUALIFIED
Leon M KuskoFranceIoni Bowcher NEW
Munro U CampainArgentinaElwin Sharvill QUALIFIED
David N GillianArgentinaAnna Fali NEGOTIATION
Francesco E IturbideCanadaAsiya Javayant NEW
Isabel B ShinkoJapanIvan Magalhaes NEGOTIATION
James B WaycottIndiaStephen Shaw RENEWAL
Aika K FlosiGermanyIoni Bowcher NEGOTIATION
Maisha Z IturbideAustraliaAmy Elsner UNQUALIFIED
Emily F AlbaresFranceXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro W GillianGermany2024-04-04Printing Dimensions UNQUALIFIED24Onyama Limba
1001Costa J IturbideJapan2024-04-09Buckley Miller Wright UNQUALIFIED19Ivan Magalhaes
1002Aditya F StensethJapan2024-04-28Buckley Miller Wright PROPOSAL18Stephen Shaw
1003Murillo H ShinkoUnited Kingdom2024-04-25Buckley Miller Wright NEGOTIATION91Bernardo Dominic
1004Antonio J AlbaresGermany2024-04-14Rangoni Of Florence QUALIFIED30Xuxue Feng
1005Isabel X BowleyRussia2024-04-11Morlong Associates RENEWAL60Asiya Javayant
1006Maisha N AmigonAustralia2024-04-15Rousseaux, Michael Esq NEW87Onyama Limba
1007Kadeem Y OstroskyBrazil2024-04-01Feiner Bros RENEWAL28Ivan Magalhaes
1008Arvin X AlbaresFrance2024-04-17Commercial Press UNQUALIFIED27Amy Elsner
1009Julie H WhobreyCanada2024-04-14Chemel, James L Cpa NEW78Bernardo Dominic
1010Aditya L SergiBrazil2024-04-27Chapman, Ross E Esq NEGOTIATION31Ivan Magalhaes
1011Isabel X WieserAustralia2024-04-08Feiner Bros PROPOSAL25Ivan Magalhaes
1012Emily I KolmetzRussia2024-04-08King, Christopher A Esq UNQUALIFIED29Ioni Bowcher
1013Kadeem H RoysterUnited Kingdom2024-04-08Benton, John B Jr RENEWAL81Amy Elsner
1014Maisha G VenereJapan2024-04-16Truhlar And Truhlar Attys RENEWAL59Ioni Bowcher
1015Murillo D OldroydCanada2024-04-13Commercial Press NEW78Ioni Bowcher
1016Darci Q WieserRussia2024-04-01Rousseaux, Michael Esq NEGOTIATION19Ivan Magalhaes
1017David B InouyeJapan2024-04-13Dorl, James J Esq NEGOTIATION9Bernardo Dominic
1018Francesco N FlosiIndia2024-04-23Chanay, Jeffrey A Esq NEGOTIATION7Ioni Bowcher
1019Jefferson F WaycottFrance2024-04-03Chapman, Ross E Esq NEW97Bernardo Dominic
1020Sinclair U DarakjyJapan2024-04-21Dorl, James J Esq RENEWAL54Bernardo Dominic
1021Isabel Q GauchoAustralia2024-04-15Rangoni Of Florence NEW79Elwin Sharvill
1022Julie W VocelkaFrance2024-04-28Chanay, Jeffrey A Esq NEW20Ivan Magalhaes
1023Salvatore I PoquetteFrance2024-04-15Chapman, Ross E Esq UNQUALIFIED6Bernardo Dominic
1024Emily C MacleadGermany2024-04-09Commercial Press UNQUALIFIED65Onyama Limba
1025Aruna T VocelkaItaly2024-04-02King, Christopher A Esq NEGOTIATION14Onyama Limba
1026Jennifer P FlosiItaly2024-04-08Chanay, Jeffrey A Esq NEGOTIATION0Asiya Javayant
1027Francesco J DilliardIndia2024-04-27Buckley Miller Wright NEGOTIATION18Asiya Javayant
1028Sinclair N AlbaresSpain2024-04-18Dorl, James J Esq QUALIFIED26Onyama Limba
1029Deepesh G MacleadSpain2024-04-14King, Christopher A Esq PROPOSAL48Amy Elsner
1030Misaki G FollerAustralia2024-04-06Chemel, James L Cpa UNQUALIFIED86Asiya Javayant
1031Ricardo S StensethBrazil2024-04-28Feltz Printing Service QUALIFIED31Anna Fali
1032Faith R RoysterCanada2024-04-23Chanay, Jeffrey A Esq NEW9Xuxue Feng
1033Jones F PaprockiCanada2024-04-11Dorl, James J Esq QUALIFIED99Asiya Javayant
1034Arvin O RoysterGermany2024-04-13Printing Dimensions NEGOTIATION82Elwin Sharvill
1035Alejandro V KolmetzBrazil2024-04-03Printing Dimensions QUALIFIED56Bernardo Dominic
1036Alejandro F WaycottFrance2024-04-25Morlong Associates QUALIFIED52Asiya Javayant
1037Emily E InouyeItaly2024-04-04Commercial Press RENEWAL25Ioni Bowcher
1038Tony F PerinRussia2024-04-06Chapman, Ross E Esq RENEWAL10Elwin Sharvill
1039Jennifer O RoysterUnited Kingdom2024-04-01Chanay, Jeffrey A Esq UNQUALIFIED4Ivan Magalhaes
1040Aika E ButtSpain2024-04-19Buckley Miller Wright RENEWAL12Ivan Magalhaes
1041James E NickaUnited Kingdom2024-04-06King, Christopher A Esq PROPOSAL74Onyama Limba
1042Darci Y InouyeIndia2024-04-05Buckley Miller Wright QUALIFIED6Xuxue Feng
1043Munro A VocelkaUnited Kingdom2024-04-25Feltz Printing Service NEW62Stephen Shaw
1044Aditya W CampainAustralia2024-04-27Dorl, James J Esq RENEWAL35Xuxue Feng
1045Jennifer M SlusarskiCanada2024-04-10Chemel, James L Cpa NEW17Ivan Magalhaes
1046Deepesh Z GarufiJapan2024-04-08Printing Dimensions NEW80Stephen Shaw
1047James Y GauchoItaly2024-03-30Benton, John B Jr NEGOTIATION48Bernardo Dominic
1048Leon B SlusarskiSpain2024-04-19Rousseaux, Michael Esq RENEWAL18Ivan Magalhaes
1049Leja D WieserBrazil2024-04-02Rangoni Of Florence UNQUALIFIED72Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Maria O KolmetzItalyAsiya Javayant QUALIFIED
Greenwood W IturbideGermanyIoni Bowcher PROPOSAL
Johnson L CaudyCanadaElwin Sharvill QUALIFIED
Tony R MorascaArgentinaIoni Bowcher PROPOSAL
Faith P BriddickIndiaAnna Fali NEW
Maisha M OstroskySpainStephen Shaw NEW
Kadeem G VenereCanadaAnna Fali QUALIFIED
Nicolas C FerenczIndiaStephen Shaw NEW
Claire H ButtJapanElwin Sharvill QUALIFIED
Mujtaba Z WieserUnited KingdomXuxue Feng PROPOSAL
Ricardo M NickaUnited KingdomOnyama Limba PROPOSAL
Emily K FerenczGermanyIvan Magalhaes NEW
Tony C GillianAustraliaOnyama Limba UNQUALIFIED
Antonio F ShinkoRussiaElwin Sharvill NEGOTIATION
Antonio B GauchoCanadaIvan Magalhaes PROPOSAL
Isabel Z SergiIndiaIvan Magalhaes RENEWAL
Jefferson V FollerGermanyAsiya Javayant QUALIFIED
Chavez U FlosiRussiaAsiya Javayant QUALIFIED
Munro C GarufiRussiaAsiya Javayant NEGOTIATION
Jones R AmigonAustraliaElwin Sharvill UNQUALIFIED
Ashley O PaprockiBrazilXuxue Feng UNQUALIFIED
Leon H MacleadArgentinaAsiya Javayant UNQUALIFIED
Chavez I CaudyFranceStephen Shaw UNQUALIFIED
Jeanfrancois I MacleadCanadaAsiya Javayant UNQUALIFIED
Maisha X BologniaIndiaAmy Elsner PROPOSAL
Johnson I KolmetzFranceIoni Bowcher RENEWAL
Isabel C CaldareraUnited KingdomIvan Magalhaes UNQUALIFIED
Morrow L ShinkoUnited KingdomIoni Bowcher PROPOSAL
Aika E VenereAustraliaBernardo Dominic RENEWAL
Deepesh H GauchoUnited KingdomStephen Shaw UNQUALIFIED
Jones O PerinArgentinaIvan Magalhaes RENEWAL
Adams H BologniaItalyAmy Elsner PROPOSAL
Jefferson X CaudyBrazilXuxue Feng QUALIFIED
Silvio Q FerenczItalyOnyama Limba QUALIFIED
Darci B CampainGermanyElwin Sharvill RENEWAL
Smith U SaylorsIndiaIvan Magalhaes NEGOTIATION
David N WhobreyIndiaStephen Shaw QUALIFIED
Deepesh X GarufiFranceElwin Sharvill QUALIFIED
Maria R DilliardFranceAsiya Javayant PROPOSAL
Ricardo Y SchemmerIndiaAmy Elsner UNQUALIFIED
Stacey Y OldroydBrazilAmy Elsner PROPOSAL
Faith Q WieserArgentinaStephen Shaw PROPOSAL
Munro Y ShinkoItalyStephen Shaw UNQUALIFIED
Aditya Q OldroydAustraliaIvan Magalhaes RENEWAL
Leja T SchemmerBrazilXuxue Feng PROPOSAL
Ricardo D AmigonArgentinaAnna Fali QUALIFIED
Aruna P StockhamCanadaBernardo Dominic NEGOTIATION
Juan G DoeIndiaXuxue Feng NEW
Mayumi E DoeItalyBernardo Dominic NEGOTIATION
Claire K BriddickBrazilElwin Sharvill NEGOTIATION
Frozen Columns
Name
Jones P Garufi
Sinclair Q Stockham
Leon Y Ostrosky
Clifford F Amigon
Isabel G Oldroyd
Maisha A Saylors
Rodrigues G Gaucho
David M Sergi
Leon Q Marrier
Murillo K Malet
Salvatore I Oldroyd
Morrow K Nestle
Antonio K Butt
Darci P Briddick
Arvin N Venere
James Z Poquette
Ricardo U Albares
Mayumi O Stenseth
Deepesh Y Ferencz
Ashley P Briddick
Maisha I Whobrey
Jones M Malet
Juan V Stenseth
Faith U Malet
Johnson J Wieser
Stacey W Amigon
Clifford Q Ostrosky
Claire T Royster
Darci F Ruta
Izzy J Schemmer
Sinclair H Perin
Izzy G Foller
Greenwood V Vocelka
Francesco S Gillian
Salvatore E Wieser
Emily P Shinko
Mujtaba Y Stenseth
Silvio Q Perin
Jones B Shinko
Jennifer S Oldroyd
Maisha M Inouye
Juan L Saylors
Arvin E Ferencz
Arvin R Glick
David C Briddick
Aika C Caudy
Sinclair G Darakjy
Rodrigues L Doe
Julie A Stockham
Clifford T Glick
IdCountryDate
1000United Kingdom2024-04-24
1001Russia2024-04-25
1002Italy2024-04-23
1003India2024-04-24
1004India2024-03-31
1005Italy2024-04-09
1006Argentina2024-03-31
1007India2024-04-09
1008France2024-04-24
1009Italy2024-04-12
1010Spain2024-04-21
1011Canada2024-04-13
1012Spain2024-04-02
1013Canada2024-03-31
1014France2024-04-16
1015Argentina2024-03-31
1016Spain2024-04-02
1017Argentina2024-04-15
1018France2024-04-10
1019United Kingdom2024-04-05
1020France2024-04-15
1021Russia2024-04-10
1022Japan2024-04-05
1023Brazil2024-04-26
1024Canada2024-04-06
1025France2024-04-09
1026Brazil2024-04-25
1027Spain2024-04-03
1028Canada2024-04-18
1029Germany2024-04-26
1030Canada2024-04-02
1031United Kingdom2024-04-08
1032India2024-04-21
1033Japan2024-04-08
1034Australia2024-04-21
1035United Kingdom2024-04-05
1036Spain2024-04-24
1037Germany2024-03-31
1038Italy2024-04-28
1039Russia2024-04-04
1040Russia2024-04-12
1041Australia2024-04-07
1042Japan2024-04-16
1043Argentina2024-03-31
1044Russia2024-04-21
1045Argentina2024-03-30
1046India2024-04-16
1047India2024-04-07
1048Brazil2024-04-17
1049Australia2024-04-16

On-Demand Data

NameIdCountryDate
Octavia G Rulapaugh1000United Kingdom2024-04-28
Stacey I Chui1001Russia2024-04-03
Cody U Perin1002Australia2024-03-30
Kaitlin L Sergi1003Germany2024-04-13
Salvatore X Campain1004Argentina2024-04-26
Deepesh V Ostrosky1005India2024-04-04
Mujtaba W Ferencz1006Brazil2024-04-28
Aika I Iturbide1007Brazil2024-04-08
Isabel I Briddick1008Canada2024-04-06
Greenwood Z Campain1009Brazil2024-04-14
Munro J Stenseth1010Australia2024-04-28
Leon O Wieser1011Italy2024-04-25
Octavia N Foller1012Brazil2024-04-08
Octavia S Stenseth1013Japan2024-04-07
Deepesh Q Doe1014Japan2024-04-17
Kadeem B Schemmer1015Germany2024-04-17
Munro Q Perin1016Japan2024-04-07
Deepesh L Wieser1017Spain2024-04-01
Arvin N Campain1018Australia2024-04-18
Rodrigues D Malet1019Spain2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford D MaletItalyStephen Shaw UNQUALIFIED
Maisha B BowleyBrazilAsiya Javayant QUALIFIED
Octavia D PaprockiItalyOnyama Limba NEW
Ivar M FollerUnited KingdomXuxue Feng NEW
James S DilliardAustraliaXuxue Feng PROPOSAL
Jefferson V FlosiBrazilXuxue Feng UNQUALIFIED
Munro P StensethBrazilXuxue Feng QUALIFIED
Morrow U DilliardJapanIvan Magalhaes QUALIFIED
Octavia I AlbaresArgentinaXuxue Feng NEW
Jennifer P MarrierUnited KingdomXuxue Feng UNQUALIFIED
Deepesh W VenereJapanAmy Elsner NEGOTIATION
Rodrigues G FollerIndiaStephen Shaw RENEWAL
Antonio E DoeArgentinaOnyama Limba PROPOSAL
Deepesh B MaletBrazilIvan Magalhaes NEGOTIATION
Octavia K WhobreyJapanOnyama Limba UNQUALIFIED
Costa S MaletSpainAmy Elsner RENEWAL
Izzy Y WaycottFranceStephen Shaw QUALIFIED
Mayumi Z NickaUnited KingdomAnna Fali QUALIFIED
Aditya R RulapaughCanadaStephen Shaw NEW
Deepesh X CampainBrazilElwin Sharvill NEGOTIATION
Misaki Y FigeroaItalyBernardo Dominic NEW
Claire O BriddickRussiaOnyama Limba NEGOTIATION
Adams D BowleyUnited KingdomStephen Shaw RENEWAL
Deepesh S NickaItalyIoni Bowcher RENEWAL
Maria A TollnerSpainIvan Magalhaes PROPOSAL
Nicolas D SergiCanadaElwin Sharvill RENEWAL
David T IturbideArgentinaIvan Magalhaes QUALIFIED
Costa H CampainJapanElwin Sharvill UNQUALIFIED
Octavia A IturbideGermanyAsiya Javayant NEW
Faith I FigeroaArgentinaAnna Fali RENEWAL
Munro I NestleJapanIoni Bowcher UNQUALIFIED
Francesco B RutaJapanIoni Bowcher QUALIFIED
Maria I DarakjySpainIoni Bowcher NEW
Darci Z DoeSpainAsiya Javayant RENEWAL
Jennifer D CampainArgentinaAmy Elsner NEGOTIATION
Clifford F NestleArgentinaElwin Sharvill RENEWAL
James W FigeroaIndiaOnyama Limba QUALIFIED
Kaitlin L FlosiItalyIvan Magalhaes NEGOTIATION
Antonio U RoysterFranceAsiya Javayant NEGOTIATION
Morrow Y FerenczSpainAsiya Javayant 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>