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
Antonio C SlusarskiUnited KingdomAsiya Javayant NEW
Clifford F BriddickJapanAnna Fali UNQUALIFIED
Ashley F TollnerAustraliaOnyama Limba NEW
Cody C KolmetzJapanBernardo Dominic PROPOSAL
Kadeem J KolmetzAustraliaAsiya Javayant NEW
Mayumi I PoquetteItalyAnna Fali UNQUALIFIED
Costa D CaldareraRussiaAnna Fali PROPOSAL
Faith J RoysterAustraliaElwin Sharvill QUALIFIED
Aruna Q OstroskyItalyElwin Sharvill QUALIFIED
Kaitlin M DilliardArgentinaBernardo Dominic PROPOSAL
James W NickaSpainIvan Magalhaes RENEWAL
Silvio T TollnerGermanyAsiya Javayant PROPOSAL
Munro E RutaFranceBernardo Dominic NEGOTIATION
Julie J SchemmerArgentinaIvan Magalhaes NEGOTIATION
Silvio H OstroskyUnited KingdomAsiya Javayant QUALIFIED
Johnson O CaldareraAustraliaXuxue Feng NEGOTIATION
Jones K PerinJapanAnna Fali QUALIFIED
Aika M StockhamGermanyBernardo Dominic NEGOTIATION
Tony H CampainItalyAsiya Javayant QUALIFIED
Salvatore U MarrierRussiaStephen Shaw RENEWAL
Kadeem H SergiBrazilOnyama Limba NEGOTIATION
Aika H StensethJapanBernardo Dominic NEGOTIATION
Alejandro Z CaudyUnited KingdomAnna Fali NEW
Aditya C PerinItalyOnyama Limba PROPOSAL
Isabel C VenereFranceXuxue Feng NEW
Claire A SaylorsAustraliaOnyama Limba PROPOSAL
Kaitlin R FerenczBrazilAnna Fali NEGOTIATION
Wickens R BologniaItalyIoni Bowcher NEW
Costa T BologniaIndiaBernardo Dominic NEW
Nicolas J OldroydRussiaIoni Bowcher QUALIFIED
Ivar E SchemmerRussiaIvan Magalhaes PROPOSAL
Stacey H GauchoJapanXuxue Feng NEW
Claire O AlbaresAustraliaXuxue Feng PROPOSAL
Cody E OstroskyCanadaAmy Elsner UNQUALIFIED
Sinclair Y OldroydGermanyIoni Bowcher PROPOSAL
Ricardo V ShinkoGermanyBernardo Dominic PROPOSAL
Wickens L TollnerRussiaAmy Elsner NEGOTIATION
Wickens A SaylorsBrazilIoni Bowcher NEW
Chavez R SergiGermanyOnyama Limba QUALIFIED
Greenwood T RoysterIndiaBernardo Dominic PROPOSAL
Darci C KuskoItalyIvan Magalhaes PROPOSAL
Ricardo T MacleadAustraliaOnyama Limba UNQUALIFIED
Ivar X CampainBrazilElwin Sharvill NEGOTIATION
Jennifer B FigeroaItalyIvan Magalhaes NEGOTIATION
Cody M CaudyUnited KingdomAnna Fali PROPOSAL
Greenwood P SaylorsGermanyAmy Elsner PROPOSAL
Clifford M StockhamFranceAnna Fali NEW
Salvatore W SchemmerJapanBernardo Dominic NEGOTIATION
Stacey R ChuiFranceAsiya Javayant NEGOTIATION
Antonio E SergiCanadaAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Greenwood A RutaUnited KingdomAmy Elsner NEGOTIATION
Nicolas V NestleArgentinaAsiya Javayant NEGOTIATION
Kaitlin R VocelkaRussiaBernardo Dominic UNQUALIFIED
Wickens K PerinItalyAmy Elsner UNQUALIFIED
Mayumi R PaprockiBrazilStephen Shaw RENEWAL
Murillo D BowleyItalyIvan Magalhaes UNQUALIFIED
Chavez Z PaprockiGermanyAsiya Javayant PROPOSAL
Munro F CampainSpainAnna Fali NEGOTIATION
Murillo D StockhamIndiaAsiya Javayant NEGOTIATION
Maria G IturbideUnited KingdomAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith G GauchoArgentina2024-04-09Morlong Associates QUALIFIED48Stephen Shaw
1001Nicolas I KolmetzJapan2024-04-02Chapman, Ross E Esq UNQUALIFIED47Xuxue Feng
1002Johnson Y FerenczSpain2024-04-19Chanay, Jeffrey A Esq NEW83Ioni Bowcher
1003James D RulapaughArgentina2024-04-10King, Christopher A Esq PROPOSAL65Bernardo Dominic
1004Octavia N BowleyGermany2024-04-20Feiner Bros NEGOTIATION87Xuxue Feng
1005Maisha H MarrierJapan2024-04-24Truhlar And Truhlar Attys RENEWAL80Amy Elsner
1006Ricardo S RimArgentina2024-04-11Benton, John B Jr QUALIFIED95Onyama Limba
1007Isabel Q DilliardRussia2024-04-05Printing Dimensions RENEWAL42Bernardo Dominic
1008Tony V SlusarskiCanada2024-04-12King, Christopher A Esq NEGOTIATION49Asiya Javayant
1009Antonio G OstroskyItaly2024-04-02Dorl, James J Esq NEGOTIATION74Ioni Bowcher
1010Rodrigues F OstroskyJapan2024-04-01Buckley Miller Wright NEW9Onyama Limba
1011Aruna F FollerArgentina2024-04-10Morlong Associates RENEWAL19Asiya Javayant
1012Maisha C MaletUnited Kingdom2024-04-09Chapman, Ross E Esq QUALIFIED47Amy Elsner
1013Leon Y RutaArgentina2024-04-03Feltz Printing Service QUALIFIED65Elwin Sharvill
1014Mayumi X OldroydIndia2024-04-08Benton, John B Jr UNQUALIFIED52Ivan Magalhaes
1015Costa W AmigonIndia2024-04-06Chemel, James L Cpa PROPOSAL48Amy Elsner
1016Kadeem E ChuiRussia2024-04-11Feltz Printing Service NEGOTIATION18Asiya Javayant
1017Jeanfrancois R BriddickJapan2024-04-06Benton, John B Jr QUALIFIED16Onyama Limba
1018Ricardo K CaudyJapan2024-04-16Dorl, James J Esq NEW65Anna Fali
1019Ricardo A MacleadBrazil2024-04-14Rangoni Of Florence NEW1Amy Elsner
1020Chavez I OstroskyFrance2024-04-06Rangoni Of Florence PROPOSAL84Ivan Magalhaes
1021Aditya C DilliardGermany2024-04-03Dorl, James J Esq QUALIFIED39Xuxue Feng
1022Emily D VenereJapan2024-04-14Feltz Printing Service PROPOSAL18Onyama Limba
1023Alejandro U NickaSpain2024-03-30Printing Dimensions QUALIFIED20Anna Fali
1024Jeanfrancois W OldroydAustralia2024-04-24Printing Dimensions NEW0Asiya Javayant
1025Johnson N GauchoArgentina2024-04-08King, Christopher A Esq QUALIFIED13Stephen Shaw
1026Antonio P GlickIndia2024-04-16Truhlar And Truhlar Attys NEGOTIATION99Anna Fali
1027Alejandro S ButtSpain2024-04-17Feiner Bros QUALIFIED29Xuxue Feng
1028Sinclair Q FigeroaCanada2024-04-23Printing Dimensions UNQUALIFIED27Ivan Magalhaes
1029Claire R MaletIndia2024-04-23Dorl, James J Esq RENEWAL58Elwin Sharvill
1030Greenwood H AlbaresFrance2024-04-15Commercial Press NEW5Ioni Bowcher
1031Leon A GillianJapan2024-04-25Rousseaux, Michael Esq PROPOSAL68Xuxue Feng
1032Clifford U GauchoRussia2024-04-21Chemel, James L Cpa QUALIFIED55Xuxue Feng
1033Nicolas U VocelkaCanada2024-04-07Commercial Press NEGOTIATION55Stephen Shaw
1034Deepesh B OstroskyBrazil2024-04-11Rousseaux, Michael Esq UNQUALIFIED56Elwin Sharvill
1035Aruna O WieserFrance2024-04-27Benton, John B Jr RENEWAL63Stephen Shaw
1036Wickens R RoysterArgentina2024-04-23Printing Dimensions RENEWAL7Stephen Shaw
1037Francesco Y CaudyItaly2024-04-03Morlong Associates NEGOTIATION40Stephen Shaw
1038Izzy R AlbaresBrazil2024-04-02King, Christopher A Esq NEGOTIATION47Amy Elsner
1039Adams B KolmetzCanada2024-04-24Morlong Associates NEGOTIATION75Ivan Magalhaes
1040Juan Q RimRussia2024-04-01Feltz Printing Service UNQUALIFIED67Amy Elsner
1041Ivar F GarufiArgentina2024-04-05Printing Dimensions NEGOTIATION91Asiya Javayant
1042Juan C BriddickFrance2024-04-07Chapman, Ross E Esq RENEWAL81Onyama Limba
1043Nicolas K CaudyRussia2024-03-31Benton, John B Jr NEGOTIATION49Xuxue Feng
1044Jennifer A DoeIndia2024-04-09Rousseaux, Michael Esq RENEWAL87Amy Elsner
1045Emily D KolmetzJapan2024-04-02Morlong Associates PROPOSAL83Ivan Magalhaes
1046Wickens R DilliardArgentina2024-04-26Truhlar And Truhlar Attys RENEWAL14Asiya Javayant
1047Cody R FerenczIndia2024-04-01Commercial Press QUALIFIED28Ivan Magalhaes
1048Tony O PaprockiCanada2024-04-26Truhlar And Truhlar Attys RENEWAL32Ivan Magalhaes
1049Tony S PoquetteJapan2024-04-06Benton, John B Jr QUALIFIED76Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois L StensethGermanyIvan Magalhaes QUALIFIED
Nicolas U PerinSpainAsiya Javayant NEW
Jefferson M IturbideAustraliaIvan Magalhaes UNQUALIFIED
Emily R GauchoCanadaBernardo Dominic NEGOTIATION
Jeanfrancois U StockhamAustraliaIoni Bowcher UNQUALIFIED
Aruna R DilliardArgentinaElwin Sharvill PROPOSAL
James I PaprockiItalyIoni Bowcher UNQUALIFIED
Kadeem W GlickGermanyAnna Fali UNQUALIFIED
Maisha B AmigonBrazilBernardo Dominic PROPOSAL
Costa H NestleJapanAnna Fali UNQUALIFIED
Ivar H CampainGermanyAnna Fali NEW
Smith M DarakjyRussiaIvan Magalhaes UNQUALIFIED
David M KolmetzBrazilIoni Bowcher NEW
Francesco K WieserGermanyXuxue Feng NEW
Octavia G StockhamCanadaElwin Sharvill NEW
Juan B OldroydSpainBernardo Dominic NEGOTIATION
Maria M VenereCanadaOnyama Limba PROPOSAL
Rodrigues G GillianItalyIoni Bowcher PROPOSAL
Tony O OldroydCanadaIoni Bowcher RENEWAL
Aditya U PoquetteGermanyAsiya Javayant PROPOSAL
Ricardo M WhobreyIndiaAmy Elsner PROPOSAL
Leon H CampainItalyElwin Sharvill NEGOTIATION
Greenwood J BologniaAustraliaAnna Fali PROPOSAL
Faith A IturbideGermanyAmy Elsner RENEWAL
Mayumi R CampainJapanElwin Sharvill NEGOTIATION
Johnson Y CampainUnited KingdomIoni Bowcher QUALIFIED
Emily H DoeItalyIvan Magalhaes NEW
Izzy A MarrierUnited KingdomElwin Sharvill RENEWAL
Misaki Z ChuiGermanyXuxue Feng RENEWAL
David A RoysterBrazilBernardo Dominic RENEWAL
Nicolas W DilliardCanadaOnyama Limba QUALIFIED
Misaki L StensethIndiaOnyama Limba PROPOSAL
Julie Z GarufiArgentinaElwin Sharvill RENEWAL
Octavia Q FollerItalyBernardo Dominic PROPOSAL
Aditya N SchemmerArgentinaAmy Elsner RENEWAL
Julie N RulapaughIndiaOnyama Limba NEW
Sinclair P CaudySpainOnyama Limba NEGOTIATION
Deepesh G PerinBrazilIoni Bowcher UNQUALIFIED
Sinclair S RutaBrazilBernardo Dominic UNQUALIFIED
Mayumi S MorascaRussiaBernardo Dominic PROPOSAL
Stacey V NestleJapanIvan Magalhaes RENEWAL
Maisha L ShinkoAustraliaIoni Bowcher RENEWAL
Emily J FigeroaRussiaAmy Elsner NEGOTIATION
Wickens P GauchoFranceIoni Bowcher RENEWAL
Arvin W AmigonFranceOnyama Limba UNQUALIFIED
Maria F NestleAustraliaXuxue Feng PROPOSAL
Kadeem R WhobreySpainIvan Magalhaes PROPOSAL
Jefferson Z CaudySpainStephen Shaw NEGOTIATION
Claire J PaprockiBrazilBernardo Dominic NEW
Wickens I GauchoIndiaOnyama Limba NEGOTIATION
Frozen Columns
Name
Misaki G Shinko
Salvatore V Ruta
Rodrigues G Caldarera
Kaitlin D Foller
Costa E Morasca
Smith G Foller
Wickens Z Waycott
Julie M Gillian
Julie I Poquette
Juan F Briddick
Leja C Stenseth
Misaki N Maclead
Johnson H Marrier
Kaitlin I Tollner
Adams T Bowley
Jones L Butt
Kadeem F Flosi
Maisha P Venere
Kaitlin V Maclead
Deepesh W Nicka
Julie V Malet
Ashley T Oldroyd
Juan U Oldroyd
Greenwood W Ostrosky
Leon T Gaucho
Mayumi M Chui
Francesco Y Stenseth
Costa B Iturbide
Izzy E Foller
Faith M Rulapaugh
Misaki W Nicka
Stacey N Foller
Faith E Gillian
James N Sergi
Johnson R Perin
Costa X Stockham
Cody G Venere
Costa M Gillian
Rodrigues D Inouye
Juan Q Rulapaugh
Misaki K Stenseth
Aditya B Caldarera
Maria E Foller
Deepesh D Dilliard
Darci F Inouye
Aruna S Paprocki
Leja R Malet
Silvio B Oldroyd
Izzy L Ferencz
Clifford P Stockham
IdCountryDate
1000Germany2024-04-11
1001Russia2024-04-22
1002Argentina2024-04-05
1003India2024-04-07
1004Germany2024-04-19
1005Italy2024-04-12
1006Canada2024-04-04
1007Russia2024-04-01
1008Brazil2024-04-20
1009Germany2024-04-13
1010Italy2024-04-26
1011Canada2024-04-10
1012Italy2024-04-26
1013United Kingdom2024-03-31
1014India2024-04-24
1015Japan2024-04-09
1016Australia2024-04-10
1017Russia2024-04-27
1018France2024-04-27
1019Brazil2024-04-10
1020Italy2024-04-02
1021Japan2024-04-12
1022India2024-03-30
1023India2024-04-06
1024Italy2024-04-01
1025Australia2024-04-05
1026Germany2024-04-25
1027Japan2024-04-11
1028India2024-04-24
1029India2024-03-30
1030France2024-04-27
1031Argentina2024-04-12
1032Argentina2024-04-09
1033Russia2024-04-17
1034India2024-04-20
1035Australia2024-04-24
1036Canada2024-04-03
1037Argentina2024-04-02
1038Brazil2024-04-23
1039India2024-04-19
1040Canada2024-04-21
1041Germany2024-04-16
1042India2024-04-15
1043Australia2024-04-03
1044United Kingdom2024-04-09
1045Italy2024-04-13
1046United Kingdom2024-04-09
1047Brazil2024-04-22
1048France2024-04-22
1049France2024-04-28

On-Demand Data

NameIdCountryDate
Leja R Iturbide1000Russia2024-04-01
Darci A Nicka1001Japan2024-04-11
Mujtaba S Caudy1002Brazil2024-03-30
Kaitlin X Maclead1003Italy2024-04-19
Aruna P Figeroa1004Russia2024-04-26
Isabel I Flosi1005Japan2024-04-08
Leon U Shinko1006Germany2024-04-14
Sinclair L Caldarera1007Germany2024-04-23
Maisha S Briddick1008Russia2024-04-04
Silvio N Wieser1009France2024-04-05
Ashley Q Malet1010Japan2024-04-22
Adams W Wieser1011Germany2024-04-01
Kaitlin W Ruta1012Japan2024-04-14
Claire Y Ferencz1013Argentina2024-04-19
Stacey X Poquette1014Brazil2024-04-08
Chavez X Venere1015Brazil2024-04-11
Mayumi J Albares1016Australia2024-04-08
Aika W Dilliard1017Australia2024-04-01
Rodrigues F Gaucho1018Spain2024-04-13
Wickens X Dilliard1019Australia2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow O ButtIndiaElwin Sharvill RENEWAL
Kadeem U VenereIndiaBernardo Dominic QUALIFIED
Jones X FerenczJapanXuxue Feng RENEWAL
Jennifer Y SlusarskiBrazilBernardo Dominic PROPOSAL
Aika C BowleyUnited KingdomBernardo Dominic NEGOTIATION
Rodrigues S FlosiFranceAsiya Javayant PROPOSAL
Maria I NickaFranceStephen Shaw PROPOSAL
Salvatore M ButtArgentinaIvan Magalhaes UNQUALIFIED
Greenwood B FlosiIndiaIoni Bowcher NEW
Leja Z CaldareraIndiaOnyama Limba QUALIFIED
Morrow E OstroskyArgentinaAmy Elsner RENEWAL
Aika V SlusarskiFranceIvan Magalhaes PROPOSAL
Chavez B TollnerCanadaXuxue Feng UNQUALIFIED
Sinclair J StockhamRussiaXuxue Feng QUALIFIED
Clifford E WieserItalyAsiya Javayant NEGOTIATION
Faith Y RimIndiaXuxue Feng UNQUALIFIED
Johnson R GauchoCanadaAmy Elsner QUALIFIED
Maisha D GlickItalyStephen Shaw UNQUALIFIED
Claire H RimBrazilAnna Fali NEGOTIATION
Maisha C StockhamAustraliaOnyama Limba NEW
Salvatore J FerenczFranceAmy Elsner PROPOSAL
Rodrigues U TollnerGermanyXuxue Feng NEW
Juan F DarakjyFranceAnna Fali NEGOTIATION
Salvatore B FlosiSpainIvan Magalhaes QUALIFIED
Antonio H BologniaFranceAmy Elsner RENEWAL
Kadeem R CaudyBrazilElwin Sharvill QUALIFIED
Emily O CaudySpainElwin Sharvill NEW
Jones T StensethItalyAsiya Javayant NEGOTIATION
Jefferson N FerenczBrazilXuxue Feng QUALIFIED
Francesco D CaldareraArgentinaAmy Elsner RENEWAL
Tony R StockhamBrazilOnyama Limba QUALIFIED
Jennifer K ButtItalyAsiya Javayant PROPOSAL
Francesco T IturbideGermanyAmy Elsner PROPOSAL
Kadeem E StockhamJapanAnna Fali RENEWAL
Murillo N GlickBrazilOnyama Limba RENEWAL
Emily M VocelkaBrazilAmy Elsner NEW
Julie M GauchoJapanElwin Sharvill NEW
Rodrigues V FollerItalyAnna Fali NEGOTIATION
Jennifer W DoeSpainOnyama Limba RENEWAL
Chavez Q FerenczRussiaIvan Magalhaes QUALIFIED

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