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
Aika L StensethIndiaIoni Bowcher RENEWAL
Wickens O KolmetzCanadaAnna Fali NEGOTIATION
Jefferson O GarufiJapanIvan Magalhaes RENEWAL
Ivar X WhobreySpainIvan Magalhaes QUALIFIED
Costa H RutaRussiaXuxue Feng RENEWAL
David L MarrierGermanyIvan Magalhaes RENEWAL
Jefferson W DoeRussiaIoni Bowcher NEGOTIATION
Stacey J ChuiIndiaStephen Shaw NEGOTIATION
Costa Y IturbideRussiaElwin Sharvill UNQUALIFIED
Deepesh E PerinCanadaBernardo Dominic NEW
Cody V WieserFranceBernardo Dominic PROPOSAL
Antonio C MaletJapanBernardo Dominic PROPOSAL
Jones H GauchoIndiaAsiya Javayant RENEWAL
Jefferson I ButtCanadaAnna Fali QUALIFIED
Adams T RoysterAustraliaElwin Sharvill PROPOSAL
Antonio K OstroskyArgentinaIvan Magalhaes QUALIFIED
Kaitlin M StockhamJapanBernardo Dominic RENEWAL
Claire W OstroskyCanadaIoni Bowcher NEW
Octavia F BologniaCanadaIvan Magalhaes PROPOSAL
Adams N VocelkaIndiaAnna Fali PROPOSAL
Rodrigues U StockhamItalyElwin Sharvill NEGOTIATION
Julie N DarakjyFranceXuxue Feng QUALIFIED
Mayumi O InouyeSpainOnyama Limba UNQUALIFIED
Claire A GlickJapanAsiya Javayant QUALIFIED
Johnson X StockhamRussiaXuxue Feng NEGOTIATION
Johnson Y FigeroaItalyAsiya Javayant PROPOSAL
Misaki E IturbideUnited KingdomAsiya Javayant PROPOSAL
Maisha B CampainJapanAmy Elsner UNQUALIFIED
Costa X GauchoArgentinaAmy Elsner NEW
Izzy Y OstroskyArgentinaStephen Shaw QUALIFIED
Adams P ButtItalyAnna Fali NEGOTIATION
Munro S OstroskyIndiaStephen Shaw UNQUALIFIED
Alejandro D SaylorsGermanyElwin Sharvill QUALIFIED
Jeanfrancois P KolmetzAustraliaXuxue Feng RENEWAL
Deepesh G GauchoArgentinaElwin Sharvill QUALIFIED
Murillo X SaylorsUnited KingdomIvan Magalhaes RENEWAL
Izzy P ShinkoBrazilXuxue Feng NEGOTIATION
Maisha F DilliardUnited KingdomAsiya Javayant NEGOTIATION
Murillo F OstroskyArgentinaOnyama Limba RENEWAL
Octavia E OldroydRussiaIvan Magalhaes RENEWAL
Izzy H GauchoUnited KingdomStephen Shaw PROPOSAL
Emily F DilliardCanadaAmy Elsner NEGOTIATION
Kaitlin I CampainGermanyAsiya Javayant RENEWAL
Johnson C FollerArgentinaStephen Shaw NEGOTIATION
Mayumi K FerenczArgentinaIvan Magalhaes NEW
Aika X NickaFranceOnyama Limba NEW
Tony G BowleyCanadaAsiya Javayant NEGOTIATION
Kadeem M DilliardSpainAnna Fali NEGOTIATION
Salvatore E OstroskyJapanXuxue Feng PROPOSAL
Leon V GauchoItalyStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Maria C AlbaresRussiaIoni Bowcher NEW
Octavia S KolmetzUnited KingdomElwin Sharvill NEGOTIATION
Jones U RutaFranceAnna Fali RENEWAL
Maisha H NestleUnited KingdomStephen Shaw QUALIFIED
Deepesh H NestleIndiaElwin Sharvill PROPOSAL
Murillo Y FlosiIndiaOnyama Limba NEGOTIATION
Nicolas Y RoysterFranceAmy Elsner UNQUALIFIED
Juan G NestleJapanStephen Shaw QUALIFIED
Jennifer Q WaycottGermanyAnna Fali RENEWAL
Sinclair J WieserGermanyIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas Q RulapaughItaly2024-04-02Chemel, James L Cpa RENEWAL14Bernardo Dominic
1001Munro X ButtCanada2024-04-05Buckley Miller Wright UNQUALIFIED93Bernardo Dominic
1002Arvin G NestleUnited Kingdom2024-04-17Benton, John B Jr PROPOSAL45Stephen Shaw
1003David C GarufiUnited Kingdom2024-04-27Benton, John B Jr UNQUALIFIED53Bernardo Dominic
1004Jennifer M NickaAustralia2024-04-21Benton, John B Jr PROPOSAL82Onyama Limba
1005Octavia K SlusarskiGermany2024-03-29Chapman, Ross E Esq RENEWAL6Amy Elsner
1006Jones A FerenczUnited Kingdom2024-04-04Rangoni Of Florence PROPOSAL86Amy Elsner
1007Mayumi C PoquetteJapan2024-03-31Feiner Bros UNQUALIFIED12Ioni Bowcher
1008Murillo N CaudyIndia2024-04-15Chanay, Jeffrey A Esq UNQUALIFIED24Onyama Limba
1009Stacey A TollnerArgentina2024-04-22Truhlar And Truhlar Attys PROPOSAL57Elwin Sharvill
1010Silvio L WieserArgentina2024-04-13Feiner Bros RENEWAL17Ivan Magalhaes
1011Juan Z DilliardIndia2024-04-13Printing Dimensions RENEWAL93Ivan Magalhaes
1012Sinclair U ShinkoItaly2024-03-29Morlong Associates RENEWAL42Xuxue Feng
1013Adams N VocelkaAustralia2024-03-31Buckley Miller Wright QUALIFIED45Ivan Magalhaes
1014Faith K MaletCanada2024-04-15Buckley Miller Wright NEW44Bernardo Dominic
1015Alejandro D DarakjyCanada2024-03-31King, Christopher A Esq RENEWAL14Stephen Shaw
1016Kaitlin J WhobreyGermany2024-04-03Rousseaux, Michael Esq NEGOTIATION59Bernardo Dominic
1017Jefferson C WhobreyCanada2024-03-29Buckley Miller Wright NEW65Stephen Shaw
1018Izzy F StockhamArgentina2024-03-31Chapman, Ross E Esq NEW72Anna Fali
1019Juan A DarakjyJapan2024-04-07King, Christopher A Esq UNQUALIFIED16Anna Fali
1020Adams E FigeroaIndia2024-04-27Chapman, Ross E Esq QUALIFIED27Asiya Javayant
1021Juan I DilliardJapan2024-04-09Buckley Miller Wright PROPOSAL37Asiya Javayant
1022Arvin L WhobreyRussia2024-04-17Dorl, James J Esq NEW59Amy Elsner
1023Greenwood D GillianItaly2024-04-17Buckley Miller Wright NEGOTIATION55Amy Elsner
1024Salvatore R WieserBrazil2024-04-02Feiner Bros NEW71Ivan Magalhaes
1025Salvatore B StensethRussia2024-04-27Printing Dimensions UNQUALIFIED63Asiya Javayant
1026Smith U AmigonCanada2024-04-19Feiner Bros RENEWAL61Ioni Bowcher
1027Julie V ButtRussia2024-04-23Truhlar And Truhlar Attys PROPOSAL6Bernardo Dominic
1028Kaitlin D FerenczUnited Kingdom2024-04-22Commercial Press RENEWAL9Anna Fali
1029Octavia X KuskoGermany2024-04-27Commercial Press UNQUALIFIED96Amy Elsner
1030Stacey K IturbideItaly2024-04-06Benton, John B Jr NEGOTIATION26Onyama Limba
1031Aditya C NickaArgentina2024-04-15Buckley Miller Wright RENEWAL41Onyama Limba
1032Darci X CaudyAustralia2024-04-03Chapman, Ross E Esq QUALIFIED87Anna Fali
1033Kaitlin R GauchoRussia2024-04-16Chanay, Jeffrey A Esq PROPOSAL59Bernardo Dominic
1034Ricardo P NickaRussia2024-04-23Chanay, Jeffrey A Esq QUALIFIED30Ioni Bowcher
1035Antonio Y SergiCanada2024-04-01Printing Dimensions QUALIFIED23Bernardo Dominic
1036Stacey Z SaylorsArgentina2024-04-23Rousseaux, Michael Esq QUALIFIED51Ioni Bowcher
1037Leon X StensethSpain2024-04-06Benton, John B Jr RENEWAL13Stephen Shaw
1038Leon D CaudyRussia2024-04-17Chanay, Jeffrey A Esq PROPOSAL92Ivan Magalhaes
1039Misaki Y FerenczItaly2024-04-08Chanay, Jeffrey A Esq PROPOSAL93Ioni Bowcher
1040Clifford E MaletBrazil2024-04-17Feiner Bros PROPOSAL48Anna Fali
1041David B AmigonIndia2024-04-22Printing Dimensions QUALIFIED86Ioni Bowcher
1042Ricardo N WhobreyUnited Kingdom2024-04-10Benton, John B Jr NEW22Stephen Shaw
1043Smith N MaletSpain2024-03-31Truhlar And Truhlar Attys RENEWAL3Onyama Limba
1044Alejandro Z WaycottFrance2024-04-15Chanay, Jeffrey A Esq NEW57Xuxue Feng
1045Jones E NestleJapan2024-04-08Dorl, James J Esq NEW80Anna Fali
1046Johnson F KolmetzBrazil2024-04-11Chanay, Jeffrey A Esq QUALIFIED66Asiya Javayant
1047Rodrigues M PaprockiGermany2024-04-01Truhlar And Truhlar Attys UNQUALIFIED6Anna Fali
1048Ricardo I GarufiAustralia2024-04-13Commercial Press QUALIFIED43Ivan Magalhaes
1049Jones B InouyeSpain2024-04-21Chapman, Ross E Esq PROPOSAL72Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Murillo R DoeBrazilIoni Bowcher QUALIFIED
Deepesh I SchemmerCanadaBernardo Dominic NEW
Darci A OldroydArgentinaXuxue Feng NEW
Ivar P AlbaresBrazilStephen Shaw PROPOSAL
Ricardo P PerinArgentinaElwin Sharvill NEGOTIATION
Octavia Y TollnerIndiaAnna Fali NEGOTIATION
David Y DoeFranceAnna Fali RENEWAL
Johnson G SergiUnited KingdomAsiya Javayant NEW
Munro L SchemmerUnited KingdomIvan Magalhaes QUALIFIED
Kaitlin M AlbaresIndiaAsiya Javayant RENEWAL
Francesco T BologniaAustraliaAsiya Javayant QUALIFIED
Clifford G NestleIndiaElwin Sharvill NEGOTIATION
Antonio B AmigonArgentinaIoni Bowcher RENEWAL
Johnson O FollerBrazilOnyama Limba RENEWAL
Chavez F BriddickGermanyOnyama Limba NEGOTIATION
Clifford S OldroydItalyBernardo Dominic NEW
Sinclair Q IturbideFranceStephen Shaw PROPOSAL
Emily N FlosiGermanyXuxue Feng NEGOTIATION
Adams I GauchoFranceOnyama Limba UNQUALIFIED
Chavez J TollnerArgentinaElwin Sharvill QUALIFIED
Chavez P SchemmerItalyAmy Elsner UNQUALIFIED
Stacey H PaprockiArgentinaIoni Bowcher NEW
Silvio M GillianArgentinaIoni Bowcher QUALIFIED
Costa E VenereFranceIvan Magalhaes UNQUALIFIED
Greenwood L MacleadCanadaElwin Sharvill NEGOTIATION
Chavez K BologniaFranceIvan Magalhaes QUALIFIED
Izzy Z WieserCanadaBernardo Dominic QUALIFIED
Antonio O MarrierGermanyAsiya Javayant NEW
Chavez X VenereRussiaStephen Shaw NEGOTIATION
Leon X FigeroaGermanyAsiya Javayant NEGOTIATION
Ricardo L KolmetzSpainXuxue Feng NEW
Aruna H VocelkaArgentinaBernardo Dominic RENEWAL
Darci P DilliardCanadaBernardo Dominic NEW
Costa P BowleyBrazilAmy Elsner NEGOTIATION
Aruna T InouyeRussiaAnna Fali QUALIFIED
Aika B IturbideGermanyAmy Elsner RENEWAL
Izzy D ButtFranceIvan Magalhaes PROPOSAL
Julie M RutaUnited KingdomAmy Elsner RENEWAL
Kaitlin W GauchoBrazilAnna Fali RENEWAL
Wickens L FollerSpainIoni Bowcher NEGOTIATION
Claire Y BowleyUnited KingdomAnna Fali QUALIFIED
James H NickaGermanyAnna Fali PROPOSAL
Rodrigues E RoysterArgentinaOnyama Limba QUALIFIED
Munro D RoysterSpainBernardo Dominic PROPOSAL
Izzy Y WieserArgentinaIoni Bowcher NEW
Aika X ChuiRussiaXuxue Feng NEW
Smith C PerinGermanyXuxue Feng NEGOTIATION
Francesco N PaprockiFranceIvan Magalhaes PROPOSAL
Mujtaba O PaprockiFranceOnyama Limba NEGOTIATION
Greenwood N ChuiCanadaElwin Sharvill NEW
Frozen Columns
Name
Morrow F Caldarera
Salvatore K Bolognia
Salvatore X Paprocki
Isabel V Slusarski
Greenwood W Vocelka
David M Poquette
Johnson V Doe
Jennifer V Oldroyd
Ricardo Q Morasca
Maria M Doe
Jennifer Y Gaucho
Claire V Bolognia
Aditya Z Maclead
Darci W Stockham
Faith D Sergi
Rodrigues E Maclead
Rodrigues K Caudy
Silvio A Schemmer
Silvio N Ostrosky
Costa V Doe
Greenwood G Briddick
Maria R Figeroa
Alejandro L Rim
Morrow I Ruta
Silvio E Iturbide
Jones A Rulapaugh
Julie V Campain
Alejandro L Venere
Aika O Caudy
Murillo M Bolognia
Mayumi S Gillian
Ashley G Venere
Darci D Nestle
Mujtaba T Amigon
Wickens B Rulapaugh
Tony H Briddick
Misaki E Inouye
Nicolas U Nicka
James J Paprocki
Julie A Albares
Deepesh X Nestle
Aditya D Butt
Morrow V Darakjy
Alejandro K Chui
Chavez C Ostrosky
Maisha M Caldarera
David L Morasca
Clifford P Malet
Aruna U Tollner
Morrow F Darakjy
IdCountryDate
1000Canada2024-04-17
1001India2024-04-06
1002Japan2024-04-21
1003Canada2024-04-27
1004Australia2024-04-25
1005Spain2024-04-13
1006India2024-04-02
1007Russia2024-04-18
1008Italy2024-04-18
1009Japan2024-04-04
1010Italy2024-04-11
1011United Kingdom2024-04-02
1012United Kingdom2024-04-06
1013Russia2024-04-01
1014Argentina2024-04-21
1015Argentina2024-04-13
1016Spain2024-04-23
1017Canada2024-04-11
1018Russia2024-04-13
1019Russia2024-04-04
1020Japan2024-04-04
1021Russia2024-04-21
1022United Kingdom2024-04-07
1023Italy2024-04-01
1024Russia2024-04-19
1025Canada2024-04-26
1026United Kingdom2024-03-31
1027Brazil2024-04-15
1028Argentina2024-04-20
1029Japan2024-04-04
1030India2024-04-18
1031Germany2024-04-16
1032United Kingdom2024-04-12
1033United Kingdom2024-04-11
1034Spain2024-04-12
1035Italy2024-04-22
1036France2024-04-22
1037Australia2024-04-25
1038Germany2024-04-14
1039Argentina2024-04-23
1040Russia2024-04-17
1041Russia2024-04-15
1042France2024-03-30
1043Russia2024-03-29
1044Spain2024-04-08
1045Japan2024-04-07
1046Russia2024-03-30
1047Australia2024-04-06
1048France2024-04-15
1049Russia2024-04-18

On-Demand Data

NameIdCountryDate
Francesco R Morasca1000Russia2024-04-24
Kaitlin W Kolmetz1001India2024-04-26
Ricardo Y Nicka1002India2024-04-10
Antonio Y Bolognia1003France2024-04-13
Jones T Schemmer1004Spain2024-04-19
Sinclair V Saylors1005Brazil2024-04-13
Aika V Paprocki1006Argentina2024-04-20
Costa Z Slusarski1007India2024-04-05
Jennifer A Ferencz1008Canada2024-04-15
Alejandro L Rim1009Russia2024-04-17
Silvio T Foller1010Spain2024-04-14
Ricardo Q Gillian1011Japan2024-04-14
Isabel K Iturbide1012France2024-04-17
Misaki F Glick1013Russia2024-04-07
Wickens A Rim1014Spain2024-04-09
Rodrigues T Whobrey1015Argentina2024-04-03
Ivar X Waycott1016Russia2024-04-27
Ashley O Kusko1017Germany2024-04-21
Murillo Z Kusko1018Spain2024-04-09
Tony U Stenseth1019India2024-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore T SlusarskiArgentinaIoni Bowcher PROPOSAL
Deepesh K SlusarskiFranceXuxue Feng NEW
Izzy U DarakjyBrazilIoni Bowcher NEGOTIATION
David Y SlusarskiRussiaAnna Fali QUALIFIED
Francesco T MarrierUnited KingdomOnyama Limba NEGOTIATION
Salvatore N PerinAustraliaBernardo Dominic NEGOTIATION
Kaitlin P MaletJapanAnna Fali PROPOSAL
Clifford G NestleUnited KingdomXuxue Feng NEGOTIATION
Mayumi Z FigeroaFranceIoni Bowcher RENEWAL
Maisha Q ChuiIndiaIoni Bowcher UNQUALIFIED
David Z OldroydUnited KingdomIoni Bowcher NEGOTIATION
Salvatore T TollnerBrazilBernardo Dominic UNQUALIFIED
Jeanfrancois M AlbaresAustraliaElwin Sharvill NEGOTIATION
James R WaycottBrazilIvan Magalhaes RENEWAL
Murillo B SergiItalyIvan Magalhaes PROPOSAL
Chavez G RoysterSpainOnyama Limba NEW
Aika H MaletAustraliaAnna Fali NEW
Rodrigues V RoysterJapanIoni Bowcher PROPOSAL
Maria E CaldareraArgentinaOnyama Limba UNQUALIFIED
David B KuskoIndiaBernardo Dominic NEGOTIATION
Silvio Q GlickUnited KingdomStephen Shaw NEW
Darci G SchemmerJapanStephen Shaw QUALIFIED
Ashley Q SaylorsAustraliaAmy Elsner NEW
Antonio S PerinCanadaElwin Sharvill UNQUALIFIED
Maria P NickaArgentinaXuxue Feng UNQUALIFIED
Mujtaba K CaudySpainIoni Bowcher UNQUALIFIED
Arvin E IturbideGermanyXuxue Feng NEW
Silvio M InouyeArgentinaBernardo Dominic RENEWAL
Ricardo X ShinkoSpainElwin Sharvill RENEWAL
Nicolas M GauchoGermanyBernardo Dominic PROPOSAL
Tony R GauchoJapanAsiya Javayant NEGOTIATION
James K InouyeUnited KingdomIvan Magalhaes NEGOTIATION
Juan V FlosiIndiaIoni Bowcher NEGOTIATION
Deepesh S AlbaresCanadaElwin Sharvill NEGOTIATION
Tony S ButtFranceAnna Fali NEGOTIATION
Kadeem M RoysterSpainStephen Shaw UNQUALIFIED
Juan Z CampainRussiaAnna Fali RENEWAL
Stacey I WieserCanadaBernardo Dominic NEGOTIATION
Leon I MaletItalyElwin Sharvill QUALIFIED
Claire K ShinkoArgentinaIoni Bowcher 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>