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
Jefferson T WieserIndiaElwin Sharvill NEGOTIATION
Deepesh C RoysterGermanyStephen Shaw NEGOTIATION
Izzy B RutaArgentinaIvan Magalhaes NEW
Adams H BowleyGermanyAnna Fali RENEWAL
Darci W ChuiUnited KingdomAnna Fali RENEWAL
Francesco G CampainItalyIoni Bowcher PROPOSAL
Emily I StockhamAustraliaXuxue Feng QUALIFIED
Kaitlin A OldroydBrazilBernardo Dominic UNQUALIFIED
Morrow G StensethUnited KingdomStephen Shaw QUALIFIED
Morrow B NickaCanadaAsiya Javayant NEW
Darci R BologniaGermanyAnna Fali NEW
Chavez K SergiUnited KingdomAsiya Javayant NEW
Aika N RimIndiaBernardo Dominic NEW
Mayumi Y CampainArgentinaOnyama Limba UNQUALIFIED
Juan J MarrierIndiaAnna Fali NEW
Maria M GillianBrazilStephen Shaw PROPOSAL
Maria H RoysterAustraliaAmy Elsner PROPOSAL
Johnson A FerenczSpainBernardo Dominic RENEWAL
Misaki N SchemmerArgentinaOnyama Limba PROPOSAL
Salvatore Y BriddickFranceBernardo Dominic QUALIFIED
Jefferson F OstroskyArgentinaOnyama Limba UNQUALIFIED
Deepesh P MacleadJapanIvan Magalhaes UNQUALIFIED
Deepesh Z CaudyFranceAmy Elsner NEGOTIATION
Smith Y KolmetzFranceStephen Shaw PROPOSAL
Kaitlin I BriddickGermanyIoni Bowcher PROPOSAL
Izzy X WhobreyAustraliaElwin Sharvill RENEWAL
Alejandro M FerenczGermanyStephen Shaw NEGOTIATION
Julie W GillianCanadaIvan Magalhaes RENEWAL
Leja D GarufiJapanXuxue Feng NEW
Kaitlin N WhobreyFranceIvan Magalhaes QUALIFIED
Murillo T ChuiFranceIoni Bowcher RENEWAL
Stacey K BologniaRussiaAnna Fali UNQUALIFIED
Claire V TollnerJapanOnyama Limba QUALIFIED
Mayumi T MaletJapanXuxue Feng PROPOSAL
Aika I DarakjyRussiaBernardo Dominic PROPOSAL
Leja Y InouyeSpainElwin Sharvill NEW
Jeanfrancois I NickaSpainAmy Elsner NEGOTIATION
Aruna Y FlosiSpainBernardo Dominic QUALIFIED
Kadeem X PoquetteArgentinaIoni Bowcher UNQUALIFIED
Jones M KolmetzSpainIoni Bowcher QUALIFIED
Kadeem G ButtSpainXuxue Feng UNQUALIFIED
Antonio E FigeroaAustraliaAsiya Javayant NEW
Jones K GillianSpainBernardo Dominic QUALIFIED
Morrow W BriddickUnited KingdomOnyama Limba RENEWAL
Maisha D GlickCanadaIoni Bowcher NEGOTIATION
Isabel U ShinkoIndiaElwin Sharvill PROPOSAL
Aika M FerenczItalyOnyama Limba NEGOTIATION
Salvatore H NestleBrazilIoni Bowcher NEW
Antonio F FerenczGermanyOnyama Limba PROPOSAL
Izzy P FlosiBrazilIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Octavia K RoysterCanadaIoni Bowcher NEW
Mayumi Y WaycottAustraliaIvan Magalhaes PROPOSAL
Maria I TollnerCanadaAmy Elsner PROPOSAL
James I RulapaughArgentinaAsiya Javayant RENEWAL
Ivar W FigeroaArgentinaAmy Elsner QUALIFIED
Jennifer I StockhamBrazilOnyama Limba NEGOTIATION
Kaitlin G WhobreyRussiaStephen Shaw NEGOTIATION
Salvatore E InouyeSpainStephen Shaw PROPOSAL
Juan N GillianItalyStephen Shaw UNQUALIFIED
Deepesh R StockhamRussiaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia A StensethRussia2024-04-05Dorl, James J Esq NEGOTIATION80Asiya Javayant
1001Isabel C IturbideRussia2024-04-03Printing Dimensions NEW49Xuxue Feng
1002Sinclair E BowleyCanada2024-04-09King, Christopher A Esq QUALIFIED72Elwin Sharvill
1003Maria O BriddickItaly2024-03-19Buckley Miller Wright UNQUALIFIED47Stephen Shaw
1004James M MaletAustralia2024-04-04Commercial Press QUALIFIED52Amy Elsner
1005Deepesh O DarakjyGermany2024-04-09Feiner Bros NEW96Amy Elsner
1006Darci Z MaletArgentina2024-03-25Chapman, Ross E Esq PROPOSAL13Amy Elsner
1007Wickens N SlusarskiArgentina2024-03-25Buckley Miller Wright NEGOTIATION64Ivan Magalhaes
1008Darci L MaletFrance2024-04-08Commercial Press QUALIFIED27Ivan Magalhaes
1009Kaitlin T PaprockiItaly2024-04-09Feiner Bros QUALIFIED28Elwin Sharvill
1010Stacey B DoeSpain2024-04-06Morlong Associates QUALIFIED94Stephen Shaw
1011Emily P VocelkaItaly2024-04-15Chemel, James L Cpa NEGOTIATION22Amy Elsner
1012Salvatore Y GarufiCanada2024-03-31Benton, John B Jr NEGOTIATION40Anna Fali
1013Julie Y FigeroaUnited Kingdom2024-04-05Truhlar And Truhlar Attys RENEWAL98Anna Fali
1014Maria T MaletSpain2024-03-18Commercial Press UNQUALIFIED50Xuxue Feng
1015Rodrigues R GarufiUnited Kingdom2024-04-13Rangoni Of Florence QUALIFIED88Anna Fali
1016Claire D RoysterJapan2024-04-09Rousseaux, Michael Esq QUALIFIED36Onyama Limba
1017Aditya Y SaylorsFrance2024-04-02Chapman, Ross E Esq PROPOSAL48Asiya Javayant
1018Misaki K RulapaughItaly2024-03-28Benton, John B Jr UNQUALIFIED22Xuxue Feng
1019Aditya B VenereRussia2024-03-27Commercial Press PROPOSAL47Stephen Shaw
1020Emily J KuskoGermany2024-03-31Buckley Miller Wright PROPOSAL85Xuxue Feng
1021Murillo J MacleadBrazil2024-03-28Dorl, James J Esq RENEWAL56Bernardo Dominic
1022Smith O SlusarskiIndia2024-03-17King, Christopher A Esq RENEWAL77Elwin Sharvill
1023Mayumi P GarufiSpain2024-03-31Feiner Bros UNQUALIFIED68Onyama Limba
1024Juan B NestleAustralia2024-03-19Chapman, Ross E Esq UNQUALIFIED67Ivan Magalhaes
1025Maria C TollnerGermany2024-04-14Feiner Bros QUALIFIED11Ioni Bowcher
1026Isabel E GarufiUnited Kingdom2024-04-09Feltz Printing Service NEGOTIATION3Xuxue Feng
1027Leon L CaldareraItaly2024-03-27King, Christopher A Esq RENEWAL92Onyama Limba
1028Antonio P CaldareraAustralia2024-03-28Chapman, Ross E Esq PROPOSAL14Ioni Bowcher
1029Wickens W GillianJapan2024-04-09Rousseaux, Michael Esq QUALIFIED57Elwin Sharvill
1030David N FlosiBrazil2024-03-26King, Christopher A Esq RENEWAL32Ivan Magalhaes
1031Juan Z ChuiItaly2024-03-28Feiner Bros PROPOSAL72Ioni Bowcher
1032Emily L DarakjyCanada2024-03-30Chemel, James L Cpa UNQUALIFIED30Amy Elsner
1033Isabel K DoeRussia2024-03-21Truhlar And Truhlar Attys NEGOTIATION49Amy Elsner
1034Ricardo M BriddickUnited Kingdom2024-04-12Feltz Printing Service QUALIFIED29Elwin Sharvill
1035Octavia F GauchoCanada2024-04-03Dorl, James J Esq RENEWAL96Xuxue Feng
1036Cody E DilliardCanada2024-03-23Feltz Printing Service PROPOSAL25Xuxue Feng
1037Maisha Q WhobreyJapan2024-03-21Chanay, Jeffrey A Esq RENEWAL32Ioni Bowcher
1038Jefferson O MacleadIndia2024-04-11Rangoni Of Florence UNQUALIFIED62Anna Fali
1039Costa R GillianArgentina2024-03-22Feiner Bros QUALIFIED54Ioni Bowcher
1040Kadeem R WhobreyIndia2024-04-04King, Christopher A Esq RENEWAL45Xuxue Feng
1041Izzy K BologniaCanada2024-04-14Printing Dimensions NEGOTIATION57Asiya Javayant
1042Ricardo D MorascaRussia2024-04-07Printing Dimensions RENEWAL59Asiya Javayant
1043David E FlosiAustralia2024-03-22Morlong Associates UNQUALIFIED85Onyama Limba
1044Morrow U CampainFrance2024-03-21Rangoni Of Florence PROPOSAL34Ioni Bowcher
1045Johnson S GillianBrazil2024-04-10Chanay, Jeffrey A Esq NEGOTIATION50Bernardo Dominic
1046Stacey H KolmetzSpain2024-04-04King, Christopher A Esq NEGOTIATION12Anna Fali
1047Deepesh T MorascaCanada2024-03-22Benton, John B Jr QUALIFIED94Anna Fali
1048Isabel K BriddickGermany2024-04-06Buckley Miller Wright PROPOSAL87Xuxue Feng
1049Salvatore K RimIndia2024-04-13Benton, John B Jr NEW99Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Aika L OldroydSpainBernardo Dominic NEW
Johnson J SlusarskiBrazilAnna Fali RENEWAL
Kadeem R RimSpainAsiya Javayant PROPOSAL
Izzy D AmigonUnited KingdomOnyama Limba NEW
Alejandro U GarufiBrazilAmy Elsner PROPOSAL
Morrow M BowleyBrazilAmy Elsner NEGOTIATION
Jeanfrancois I MarrierIndiaIvan Magalhaes NEGOTIATION
Jefferson I AlbaresUnited KingdomStephen Shaw RENEWAL
Claire D OldroydCanadaAnna Fali QUALIFIED
Jefferson F RutaGermanyStephen Shaw NEW
Wickens N MaletFranceAsiya Javayant UNQUALIFIED
Emily E ShinkoArgentinaIoni Bowcher NEW
Adams D PoquetteBrazilAsiya Javayant PROPOSAL
Jefferson X AlbaresJapanElwin Sharvill NEW
Murillo W DoeJapanAmy Elsner NEW
Clifford V RoysterArgentinaStephen Shaw NEGOTIATION
Adams W RutaItalyIoni Bowcher NEGOTIATION
Stacey N SchemmerIndiaAmy Elsner NEGOTIATION
Kaitlin U VocelkaCanadaIoni Bowcher PROPOSAL
Juan T CampainIndiaIvan Magalhaes RENEWAL
Clifford T PerinJapanXuxue Feng QUALIFIED
Mujtaba E GauchoUnited KingdomElwin Sharvill NEW
Maria K FollerJapanOnyama Limba PROPOSAL
Ricardo Z AlbaresJapanAnna Fali NEW
Alejandro H GauchoUnited KingdomAmy Elsner PROPOSAL
Aika M FigeroaCanadaOnyama Limba PROPOSAL
Kadeem Y PoquetteArgentinaOnyama Limba NEW
Mayumi Z WaycottFranceOnyama Limba UNQUALIFIED
Sinclair K MorascaBrazilStephen Shaw PROPOSAL
Alejandro Y ChuiUnited KingdomStephen Shaw PROPOSAL
Julie P FollerArgentinaIvan Magalhaes PROPOSAL
Arvin U PoquetteCanadaAsiya Javayant RENEWAL
Aika H CampainItalyAnna Fali UNQUALIFIED
Munro S OldroydFranceStephen Shaw NEGOTIATION
Nicolas V KolmetzBrazilAsiya Javayant NEW
Munro J CampainArgentinaOnyama Limba RENEWAL
Ricardo Z BologniaFranceAmy Elsner UNQUALIFIED
Deepesh K RutaRussiaIvan Magalhaes RENEWAL
Mayumi G GillianItalyXuxue Feng QUALIFIED
Nicolas T NestleIndiaAnna Fali NEGOTIATION
Octavia Y GillianRussiaAnna Fali QUALIFIED
Maria X RoysterBrazilElwin Sharvill NEGOTIATION
Jeanfrancois A GlickSpainXuxue Feng NEW
Julie X SchemmerArgentinaOnyama Limba NEGOTIATION
Misaki U DoeUnited KingdomAnna Fali QUALIFIED
Johnson P MarrierGermanyIvan Magalhaes NEW
Deepesh W SlusarskiAustraliaAsiya Javayant PROPOSAL
Emily I CaldareraSpainAsiya Javayant QUALIFIED
Ashley T KolmetzUnited KingdomAmy Elsner NEW
Munro P OstroskyIndiaIvan Magalhaes PROPOSAL
Frozen Columns
Name
Morrow P Venere
Smith D Poquette
Adams M Ferencz
Maria D Sergi
Mujtaba L Morasca
Misaki O Ruta
Octavia I Paprocki
Aditya B Gillian
Ricardo S Campain
Izzy M Chui
Leja C Iturbide
Aditya S Sergi
Antonio T Flosi
Darci M Iturbide
Aruna F Slusarski
Salvatore C Nestle
Morrow R Gaucho
Salvatore H Amigon
Aika L Whobrey
Antonio Q Royster
Chavez M Ruta
Wickens T Schemmer
Aika L Vocelka
Julie L Sergi
Costa Q Butt
Arvin U Iturbide
James N Rim
Maisha Z Darakjy
Maria T Saylors
Rodrigues P Whobrey
Munro N Dilliard
Wickens O Darakjy
Rodrigues K Perin
Salvatore F Venere
Clifford X Whobrey
David P Whobrey
Jennifer C Briddick
Misaki M Slusarski
Leon U Foller
Claire J Amigon
Juan P Kusko
Jefferson N Stenseth
Jeanfrancois S Ostrosky
Francesco P Caldarera
Munro H Rulapaugh
Kaitlin Q Stockham
Nicolas W Gaucho
Juan W Wieser
Isabel X Nestle
Arvin Y Ruta
IdCountryDate
1000Brazil2024-04-03
1001Spain2024-03-17
1002Russia2024-04-13
1003Russia2024-04-07
1004France2024-04-12
1005Spain2024-04-14
1006Australia2024-04-12
1007Italy2024-03-25
1008Canada2024-04-10
1009Brazil2024-03-29
1010Brazil2024-03-31
1011Argentina2024-03-27
1012Japan2024-04-02
1013Germany2024-04-10
1014Canada2024-04-09
1015Spain2024-04-14
1016Argentina2024-04-07
1017Argentina2024-03-24
1018United Kingdom2024-04-14
1019Italy2024-03-19
1020France2024-03-27
1021Germany2024-04-13
1022Japan2024-04-01
1023Australia2024-03-31
1024India2024-04-09
1025Canada2024-04-02
1026Germany2024-04-14
1027Canada2024-04-04
1028India2024-03-18
1029Italy2024-04-10
1030India2024-04-10
1031United Kingdom2024-04-07
1032Japan2024-04-07
1033Canada2024-04-04
1034Argentina2024-03-27
1035United Kingdom2024-04-05
1036Spain2024-03-17
1037Spain2024-04-14
1038Russia2024-03-31
1039Australia2024-03-28
1040Italy2024-04-12
1041Australia2024-04-02
1042Germany2024-03-26
1043Canada2024-03-31
1044Italy2024-04-05
1045Russia2024-04-03
1046Germany2024-04-01
1047Spain2024-04-09
1048Canada2024-04-10
1049Russia2024-03-23

On-Demand Data

NameIdCountryDate
Mayumi O Caldarera1000Spain2024-03-22
Ashley Q Stockham1001Argentina2024-04-03
Francesco U Foller1002India2024-04-03
Aditya X Gillian1003Germany2024-03-25
Ivar V Shinko1004Australia2024-03-29
Kadeem Z Saylors1005Australia2024-04-01
Alejandro W Bowley1006Italy2024-04-12
Antonio W Vocelka1007Russia2024-03-17
Jefferson T Garufi1008Canada2024-04-08
Silvio E Gillian1009Russia2024-04-07
Deepesh R Malet1010Australia2024-03-29
Stacey V Caldarera1011France2024-04-02
Jeanfrancois S Saylors1012Brazil2024-04-05
Johnson G Dilliard1013Spain2024-04-14
Kadeem X Flosi1014Spain2024-04-07
Salvatore Y Briddick1015Canada2024-03-22
Kaitlin U Foller1016United Kingdom2024-04-12
Chavez Z Rulapaugh1017Russia2024-03-22
Sinclair G Ruta1018Russia2024-04-14
Francesco H Sergi1019France2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria H RutaGermanyIvan Magalhaes NEGOTIATION
Jones L RutaItalyXuxue Feng RENEWAL
Francesco N ButtCanadaXuxue Feng NEGOTIATION
Jefferson W SlusarskiFranceAnna Fali PROPOSAL
Wickens Q IturbideGermanyOnyama Limba PROPOSAL
Munro X PaprockiUnited KingdomAsiya Javayant NEW
Ivar T TollnerSpainXuxue Feng RENEWAL
Morrow Y WaycottAustraliaAsiya Javayant NEW
James T CaldareraGermanyXuxue Feng UNQUALIFIED
Adams Y FerenczItalyAnna Fali NEGOTIATION
Kaitlin D PerinRussiaIoni Bowcher RENEWAL
Leja D IturbideSpainElwin Sharvill QUALIFIED
Claire O GauchoIndiaAsiya Javayant NEW
Aditya L OstroskyIndiaXuxue Feng NEGOTIATION
David D NestleJapanOnyama Limba NEGOTIATION
Nicolas E DilliardIndiaAnna Fali QUALIFIED
Deepesh U FlosiRussiaOnyama Limba PROPOSAL
Sinclair H RutaItalyOnyama Limba UNQUALIFIED
Kadeem Y BriddickJapanAsiya Javayant UNQUALIFIED
Octavia K VenereUnited KingdomBernardo Dominic PROPOSAL
Francesco S StockhamIndiaXuxue Feng UNQUALIFIED
Wickens E SlusarskiCanadaBernardo Dominic QUALIFIED
James E SaylorsArgentinaElwin Sharvill NEW
Ricardo W BologniaBrazilStephen Shaw NEW
Isabel J BowleySpainIoni Bowcher NEW
Chavez E WieserCanadaElwin Sharvill RENEWAL
Ivar J SchemmerCanadaStephen Shaw NEW
Izzy T RoysterFranceIoni Bowcher QUALIFIED
David I GlickCanadaElwin Sharvill QUALIFIED
Aditya W MorascaItalyAnna Fali PROPOSAL
Octavia Y WhobreyArgentinaStephen Shaw QUALIFIED
Aditya F WieserGermanyAsiya Javayant UNQUALIFIED
Francesco U FigeroaFranceAmy Elsner NEGOTIATION
Greenwood Y RutaJapanIoni Bowcher NEGOTIATION
Isabel X FlosiAustraliaElwin Sharvill NEW
Darci T DoeItalyAsiya Javayant QUALIFIED
Ivar X RimBrazilOnyama Limba NEW
Ricardo U KolmetzBrazilAnna Fali NEW
Isabel A AmigonGermanyAnna Fali UNQUALIFIED
Alejandro J NestleSpainAnna Fali 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>