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
Munro X ChuiCanadaOnyama Limba PROPOSAL
Julie A GlickUnited KingdomStephen Shaw QUALIFIED
Adams T InouyeItalyBernardo Dominic NEW
Faith P GillianJapanAnna Fali QUALIFIED
Tony U FlosiUnited KingdomStephen Shaw RENEWAL
Clifford D MaletAustraliaIvan Magalhaes UNQUALIFIED
Juan F AlbaresIndiaStephen Shaw NEW
Isabel A WaycottSpainStephen Shaw RENEWAL
Munro D SchemmerRussiaElwin Sharvill PROPOSAL
Tony Q AlbaresGermanyElwin Sharvill UNQUALIFIED
Darci T ChuiCanadaAnna Fali RENEWAL
Arvin A OstroskyAustraliaAmy Elsner RENEWAL
Antonio M ChuiGermanyXuxue Feng PROPOSAL
Francesco N DarakjyAustraliaIvan Magalhaes RENEWAL
Tony R CaudyGermanyAsiya Javayant QUALIFIED
Jennifer D KolmetzRussiaStephen Shaw QUALIFIED
Munro V WhobreyGermanyAsiya Javayant UNQUALIFIED
Smith W RimAustraliaStephen Shaw RENEWAL
Tony T RimUnited KingdomOnyama Limba PROPOSAL
Smith T BologniaCanadaIoni Bowcher NEW
Aika D GillianFranceAsiya Javayant RENEWAL
Emily E DilliardFranceOnyama Limba RENEWAL
Costa J DarakjyJapanAnna Fali UNQUALIFIED
Morrow M DarakjyAustraliaAsiya Javayant NEW
Wickens R StensethFranceIvan Magalhaes NEGOTIATION
Faith D ShinkoItalyAsiya Javayant NEW
Emily H VenereGermanyStephen Shaw PROPOSAL
Jennifer O GarufiFranceElwin Sharvill UNQUALIFIED
Munro C IturbideArgentinaAsiya Javayant NEW
Jennifer W AlbaresJapanIvan Magalhaes NEW
Jeanfrancois Q RimItalyIvan Magalhaes NEW
Murillo U NestleIndiaElwin Sharvill RENEWAL
Murillo D NestleItalyAsiya Javayant UNQUALIFIED
Chavez Z MarrierAustraliaStephen Shaw NEW
Tony C StockhamAustraliaBernardo Dominic NEGOTIATION
Faith S GauchoCanadaAsiya Javayant RENEWAL
Emily L SchemmerAustraliaXuxue Feng NEW
Darci E OstroskyBrazilBernardo Dominic NEW
Kadeem D GillianArgentinaIoni Bowcher UNQUALIFIED
Mujtaba A MacleadItalyAmy Elsner NEGOTIATION
Alejandro M FlosiItalyAsiya Javayant UNQUALIFIED
Juan R BriddickFranceBernardo Dominic RENEWAL
Aika Q CaldareraAustraliaAmy Elsner PROPOSAL
Stacey A WaycottBrazilAmy Elsner NEGOTIATION
Smith N ButtSpainStephen Shaw PROPOSAL
Emily O FerenczFranceIvan Magalhaes NEW
Jennifer C GillianGermanyAsiya Javayant UNQUALIFIED
Francesco M RutaItalyIvan Magalhaes UNQUALIFIED
Silvio E WieserFranceOnyama Limba RENEWAL
Francesco Z MorascaFranceIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
James N AlbaresJapanStephen Shaw NEGOTIATION
Clifford W KuskoArgentinaIoni Bowcher QUALIFIED
Salvatore W VenereItalyAsiya Javayant QUALIFIED
Claire Z FollerSpainBernardo Dominic RENEWAL
Arvin J PoquetteJapanBernardo Dominic RENEWAL
Aika V GauchoJapanIvan Magalhaes QUALIFIED
Leon R VocelkaItalyOnyama Limba QUALIFIED
Faith P GillianCanadaOnyama Limba NEGOTIATION
Mujtaba V SchemmerSpainAsiya Javayant NEW
Francesco S NestleBrazilStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem L SchemmerCanada2024-05-02Benton, John B Jr UNQUALIFIED23Onyama Limba
1001Greenwood J OldroydRussia2024-04-22Rousseaux, Michael Esq NEGOTIATION59Onyama Limba
1002Aruna C BowleyIndia2024-05-01Feiner Bros UNQUALIFIED60Ioni Bowcher
1003Wickens K GlickArgentina2024-04-22King, Christopher A Esq NEW69Amy Elsner
1004Aditya L GauchoFrance2024-05-03King, Christopher A Esq RENEWAL74Amy Elsner
1005Arvin L MaletFrance2024-05-01Dorl, James J Esq PROPOSAL98Asiya Javayant
1006Antonio T FigeroaArgentina2024-05-08Benton, John B Jr NEW85Ioni Bowcher
1007Leja P BowleyUnited Kingdom2024-05-13Truhlar And Truhlar Attys NEW36Anna Fali
1008Jeanfrancois C MaletFrance2024-05-07Feiner Bros RENEWAL18Ivan Magalhaes
1009Darci B FlosiArgentina2024-04-25Feltz Printing Service NEGOTIATION90Anna Fali
1010Antonio I KuskoGermany2024-04-22Benton, John B Jr NEGOTIATION40Ivan Magalhaes
1011Maisha L WaycottJapan2024-05-21Feltz Printing Service NEW96Bernardo Dominic
1012Clifford A BriddickSpain2024-05-12Feltz Printing Service NEGOTIATION13Onyama Limba
1013Greenwood C OstroskyRussia2024-04-26Printing Dimensions PROPOSAL13Amy Elsner
1014Costa Z CampainAustralia2024-05-07Rangoni Of Florence NEW21Elwin Sharvill
1015Julie L StockhamCanada2024-05-06Chemel, James L Cpa QUALIFIED12Ioni Bowcher
1016Morrow M MorascaBrazil2024-04-25Chapman, Ross E Esq UNQUALIFIED13Xuxue Feng
1017Arvin H KolmetzUnited Kingdom2024-04-23Buckley Miller Wright PROPOSAL69Ivan Magalhaes
1018Nicolas S PaprockiUnited Kingdom2024-05-18Chemel, James L Cpa PROPOSAL85Xuxue Feng
1019Octavia L RulapaughArgentina2024-04-22Morlong Associates PROPOSAL96Amy Elsner
1020Cody A VocelkaCanada2024-05-18King, Christopher A Esq NEW7Xuxue Feng
1021Aruna F DoeFrance2024-05-02Feltz Printing Service PROPOSAL44Bernardo Dominic
1022Cody T CampainArgentina2024-05-16Feiner Bros QUALIFIED53Ivan Magalhaes
1023Leon A OstroskyFrance2024-05-05Rangoni Of Florence UNQUALIFIED8Ivan Magalhaes
1024Kadeem O RimGermany2024-05-13Commercial Press QUALIFIED25Stephen Shaw
1025Murillo Q PerinJapan2024-05-07Feltz Printing Service QUALIFIED76Stephen Shaw
1026Munro L BriddickIndia2024-04-26King, Christopher A Esq QUALIFIED83Bernardo Dominic
1027Maria E BowleyJapan2024-04-29King, Christopher A Esq QUALIFIED69Onyama Limba
1028Arvin M NickaJapan2024-04-30Truhlar And Truhlar Attys QUALIFIED10Xuxue Feng
1029Johnson W NickaCanada2024-05-09Benton, John B Jr UNQUALIFIED78Elwin Sharvill
1030Aika E MarrierIndia2024-05-10Chanay, Jeffrey A Esq UNQUALIFIED20Asiya Javayant
1031Kaitlin M MaletAustralia2024-04-30Chanay, Jeffrey A Esq NEGOTIATION7Asiya Javayant
1032Sinclair O SaylorsIndia2024-05-08Buckley Miller Wright NEW96Bernardo Dominic
1033Jefferson L InouyeRussia2024-04-22Printing Dimensions NEW78Bernardo Dominic
1034Darci Q TollnerGermany2024-05-14Rousseaux, Michael Esq NEGOTIATION68Amy Elsner
1035David E GauchoJapan2024-04-25King, Christopher A Esq PROPOSAL37Onyama Limba
1036Costa F KuskoAustralia2024-04-23Rousseaux, Michael Esq RENEWAL65Asiya Javayant
1037Ivar S PaprockiIndia2024-04-30Printing Dimensions UNQUALIFIED69Xuxue Feng
1038Chavez S DoeGermany2024-05-19Chanay, Jeffrey A Esq PROPOSAL71Asiya Javayant
1039Isabel C IturbideBrazil2024-04-22Dorl, James J Esq NEGOTIATION61Xuxue Feng
1040Silvio V VocelkaBrazil2024-04-23Benton, John B Jr NEGOTIATION5Bernardo Dominic
1041Darci T KuskoFrance2024-05-21Feltz Printing Service PROPOSAL97Stephen Shaw
1042Stacey N GlickRussia2024-05-02Chemel, James L Cpa NEGOTIATION96Amy Elsner
1043Misaki D KolmetzFrance2024-05-04Commercial Press PROPOSAL21Xuxue Feng
1044Aruna U FerenczFrance2024-05-18Truhlar And Truhlar Attys QUALIFIED17Onyama Limba
1045Wickens T FerenczBrazil2024-05-21Feiner Bros QUALIFIED19Amy Elsner
1046Salvatore H PerinFrance2024-05-17Truhlar And Truhlar Attys PROPOSAL58Elwin Sharvill
1047Faith C MarrierBrazil2024-05-09Commercial Press RENEWAL18Ivan Magalhaes
1048Leon V MorascaBrazil2024-04-22King, Christopher A Esq UNQUALIFIED65Ivan Magalhaes
1049Tony K ShinkoIndia2024-04-29Chapman, Ross E Esq PROPOSAL26Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Ivar U RoysterIndiaStephen Shaw QUALIFIED
Leja F DilliardUnited KingdomAnna Fali UNQUALIFIED
Salvatore Q PaprockiGermanyAmy Elsner RENEWAL
David H BriddickSpainAmy Elsner UNQUALIFIED
Aruna B VenereFranceAnna Fali NEGOTIATION
Deepesh J RimRussiaIoni Bowcher RENEWAL
Arvin X MacleadSpainAsiya Javayant UNQUALIFIED
Murillo C FlosiFranceIoni Bowcher QUALIFIED
Julie Q StockhamCanadaAnna Fali NEW
Silvio J KolmetzAustraliaIoni Bowcher NEW
Greenwood Q OstroskyCanadaAmy Elsner PROPOSAL
Chavez H FerenczGermanyBernardo Dominic PROPOSAL
Darci Q WhobreyGermanyOnyama Limba PROPOSAL
Izzy H FollerFranceOnyama Limba UNQUALIFIED
Sinclair O OstroskyAustraliaOnyama Limba PROPOSAL
Octavia C SergiJapanStephen Shaw QUALIFIED
Nicolas I FlosiIndiaAmy Elsner PROPOSAL
Nicolas S RimCanadaAsiya Javayant RENEWAL
Clifford N GillianAustraliaAmy Elsner QUALIFIED
Jennifer O RimAustraliaBernardo Dominic NEGOTIATION
Deepesh U GlickIndiaAmy Elsner PROPOSAL
Ivar A SlusarskiGermanyAmy Elsner RENEWAL
Antonio A KolmetzRussiaElwin Sharvill QUALIFIED
Francesco G IturbideCanadaIvan Magalhaes QUALIFIED
Maisha R RulapaughJapanOnyama Limba UNQUALIFIED
Johnson J BowleyGermanyAsiya Javayant PROPOSAL
Francesco W RutaUnited KingdomIvan Magalhaes NEGOTIATION
Claire T BologniaIndiaStephen Shaw NEGOTIATION
Murillo B CaldareraArgentinaIoni Bowcher QUALIFIED
Darci O PerinGermanyAsiya Javayant QUALIFIED
Aditya Z WaycottCanadaStephen Shaw UNQUALIFIED
Johnson C RulapaughIndiaAsiya Javayant PROPOSAL
Johnson K AlbaresArgentinaIoni Bowcher PROPOSAL
Emily Y PaprockiJapanXuxue Feng UNQUALIFIED
Octavia E GillianUnited KingdomAmy Elsner PROPOSAL
Cody M VenereRussiaIoni Bowcher NEW
Salvatore X CaudyUnited KingdomBernardo Dominic NEW
Aika T SchemmerUnited KingdomIvan Magalhaes PROPOSAL
Stacey D CaldareraCanadaIvan Magalhaes NEW
Isabel P KolmetzGermanyOnyama Limba QUALIFIED
Octavia E BowleyUnited KingdomElwin Sharvill NEW
Jeanfrancois E SergiCanadaIoni Bowcher QUALIFIED
Stacey A PerinRussiaAmy Elsner UNQUALIFIED
Maria B SaylorsAustraliaAsiya Javayant PROPOSAL
Jefferson N WaycottGermanyAmy Elsner UNQUALIFIED
Murillo O GarufiRussiaAsiya Javayant UNQUALIFIED
Mujtaba Z MaletAustraliaBernardo Dominic QUALIFIED
Clifford X OldroydRussiaAnna Fali NEW
Kaitlin U VocelkaAustraliaIvan Magalhaes RENEWAL
Octavia I OldroydFranceBernardo Dominic NEGOTIATION
Frozen Columns
Name
Nicolas V Poquette
Kadeem B Iturbide
Ivar V Marrier
Izzy I Bolognia
Mayumi J Kusko
Juan B Caldarera
Munro X Whobrey
Faith T Shinko
Aditya Q Bowley
Aika D Caldarera
Julie A Flosi
Darci E Bolognia
Aditya O Paprocki
Misaki O Briddick
Ashley L Campain
Mujtaba F Caldarera
Maria K Morasca
Aika Y Gillian
Jennifer K Rulapaugh
Leja J Ruta
Deepesh G Oldroyd
Nicolas W Whobrey
Jefferson E Gaucho
Tony L Vocelka
Aika B Marrier
Isabel W Flosi
Aika C Rulapaugh
Stacey G Chui
Silvio S Caldarera
Kadeem A Marrier
Stacey B Saylors
Jennifer I Shinko
Jones F Vocelka
Rodrigues L Briddick
Leja D Dilliard
Ricardo D Flosi
Jones O Morasca
Ricardo F Royster
Darci J Oldroyd
Izzy B Ferencz
Alejandro C Poquette
Sinclair P Nicka
Ivar I Sergi
Misaki G Rim
Greenwood H Oldroyd
Aruna A Vocelka
Ashley V Ruta
Leja N Maclead
Leon C Stenseth
Aditya V Ruta
IdCountryDate
1000Germany2024-05-12
1001Australia2024-05-15
1002India2024-05-10
1003Argentina2024-05-17
1004Russia2024-05-05
1005United Kingdom2024-05-12
1006France2024-04-25
1007India2024-05-16
1008India2024-05-19
1009Germany2024-05-20
1010Brazil2024-05-04
1011India2024-04-29
1012Australia2024-04-27
1013Argentina2024-04-29
1014Japan2024-05-17
1015United Kingdom2024-05-11
1016Russia2024-05-20
1017Germany2024-04-30
1018France2024-04-22
1019Canada2024-05-13
1020Germany2024-05-19
1021Germany2024-05-04
1022Brazil2024-05-05
1023France2024-05-08
1024Australia2024-05-04
1025Italy2024-05-08
1026Canada2024-04-25
1027Argentina2024-04-26
1028Australia2024-05-14
1029Brazil2024-05-18
1030India2024-05-04
1031Spain2024-04-27
1032Argentina2024-05-13
1033France2024-05-17
1034Brazil2024-05-21
1035India2024-04-24
1036Germany2024-04-23
1037Canada2024-05-11
1038Japan2024-04-30
1039Australia2024-04-27
1040Germany2024-05-06
1041India2024-05-05
1042United Kingdom2024-05-14
1043India2024-04-27
1044Japan2024-05-21
1045Italy2024-05-01
1046Canada2024-05-13
1047Brazil2024-05-04
1048United Kingdom2024-05-13
1049Brazil2024-05-12

On-Demand Data

NameIdCountryDate
Claire U Oldroyd1000Spain2024-05-08
Antonio P Darakjy1001Canada2024-05-02
Sinclair Z Venere1002Brazil2024-04-28
Aruna A Malet1003Argentina2024-05-14
Faith A Paprocki1004Argentina2024-05-19
Isabel L Briddick1005Canada2024-05-20
Stacey T Malet1006India2024-05-08
Ashley T Kusko1007Argentina2024-05-07
Rodrigues O Morasca1008Spain2024-05-19
Sinclair W Ostrosky1009Brazil2024-05-18
Greenwood M Amigon1010Japan2024-04-26
Aika V Darakjy1011Japan2024-05-14
James Z Albares1012Russia2024-05-08
Leja B Malet1013United Kingdom2024-05-08
Jones B Garufi1014France2024-05-07
Sinclair Z Caldarera1015Argentina2024-05-07
Ivar I Sergi1016Spain2024-05-18
Antonio W Gillian1017India2024-04-23
Nicolas P Briddick1018Japan2024-05-09
David P Gaucho1019Australia2024-05-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya U NickaCanadaIoni Bowcher UNQUALIFIED
Maisha S NickaJapanOnyama Limba QUALIFIED
Isabel Z MorascaSpainIvan Magalhaes NEGOTIATION
Johnson N WieserIndiaOnyama Limba NEW
Kaitlin V FerenczCanadaAsiya Javayant UNQUALIFIED
Salvatore D DoeSpainAnna Fali PROPOSAL
Emily A DoeGermanyStephen Shaw NEW
Nicolas X BowleyGermanyAsiya Javayant QUALIFIED
Izzy Y ButtGermanyOnyama Limba UNQUALIFIED
Misaki D RulapaughSpainAnna Fali NEW
Maisha A SergiAustraliaBernardo Dominic NEGOTIATION
Johnson E CampainBrazilXuxue Feng PROPOSAL
Sinclair M FlosiJapanAnna Fali NEGOTIATION
David D RulapaughRussiaElwin Sharvill NEGOTIATION
Adams X StockhamSpainOnyama Limba RENEWAL
Morrow A DilliardSpainBernardo Dominic QUALIFIED
Nicolas K FlosiIndiaAnna Fali QUALIFIED
Greenwood N ButtArgentinaOnyama Limba RENEWAL
Kaitlin R SchemmerCanadaBernardo Dominic UNQUALIFIED
Mujtaba M DilliardAustraliaBernardo Dominic UNQUALIFIED
Salvatore E BologniaCanadaElwin Sharvill QUALIFIED
Misaki Z GauchoRussiaElwin Sharvill PROPOSAL
Darci Q FerenczArgentinaStephen Shaw PROPOSAL
Emily X FigeroaArgentinaOnyama Limba QUALIFIED
Aika E BriddickCanadaStephen Shaw NEGOTIATION
Costa O WaycottUnited KingdomIvan Magalhaes UNQUALIFIED
Arvin J CaldareraArgentinaIvan Magalhaes RENEWAL
Ashley H DilliardRussiaElwin Sharvill QUALIFIED
Rodrigues U CaldareraUnited KingdomAsiya Javayant NEGOTIATION
Nicolas K CaudyArgentinaIoni Bowcher UNQUALIFIED
James R RoysterRussiaAmy Elsner PROPOSAL
Cody A FlosiFranceElwin Sharvill NEW
David V ChuiJapanAsiya Javayant NEGOTIATION
Aruna X AmigonAustraliaOnyama Limba UNQUALIFIED
Sinclair V KolmetzUnited KingdomIvan Magalhaes NEGOTIATION
Jennifer I DoeCanadaBernardo Dominic NEW
Wickens B IturbideItalyAsiya Javayant PROPOSAL
Emily J TollnerAustraliaAsiya Javayant NEGOTIATION
Jefferson Y WaycottItalyIoni Bowcher RENEWAL
Octavia N PerinCanadaOnyama Limba UNQUALIFIED

<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>