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
Morrow O SaylorsRussiaOnyama Limba UNQUALIFIED
Julie I WhobreySpainAnna Fali RENEWAL
Antonio T PerinFranceAsiya Javayant NEW
David I RimAustraliaElwin Sharvill QUALIFIED
Kadeem F RutaArgentinaOnyama Limba PROPOSAL
Ivar Z PerinBrazilAsiya Javayant QUALIFIED
Wickens Z GarufiRussiaXuxue Feng UNQUALIFIED
Jefferson N GillianJapanIoni Bowcher RENEWAL
Maisha F ShinkoSpainAnna Fali PROPOSAL
Darci Q NestleAustraliaAnna Fali NEW
Sinclair W DoeRussiaAnna Fali QUALIFIED
Cody N FigeroaFranceIoni Bowcher NEW
Murillo B MorascaUnited KingdomAsiya Javayant PROPOSAL
Deepesh I MarrierSpainIoni Bowcher NEW
Octavia B SlusarskiRussiaIoni Bowcher NEGOTIATION
Antonio V NestleUnited KingdomOnyama Limba NEGOTIATION
Sinclair E CaldareraSpainStephen Shaw UNQUALIFIED
Munro K SchemmerFranceIoni Bowcher NEW
Murillo E InouyeIndiaAsiya Javayant NEGOTIATION
Wickens M WieserJapanXuxue Feng QUALIFIED
Aruna U WhobreyGermanyOnyama Limba NEW
Faith I DilliardRussiaStephen Shaw PROPOSAL
Arvin L VenereBrazilStephen Shaw UNQUALIFIED
Jefferson U MacleadJapanStephen Shaw PROPOSAL
Munro R VenereJapanBernardo Dominic NEGOTIATION
Antonio M MarrierGermanyAmy Elsner UNQUALIFIED
Emily Q DilliardAustraliaXuxue Feng NEGOTIATION
Sinclair E AmigonCanadaXuxue Feng QUALIFIED
Darci U StensethFranceAsiya Javayant QUALIFIED
Julie Y RimRussiaAmy Elsner RENEWAL
Arvin L InouyeJapanAnna Fali QUALIFIED
Antonio A TollnerUnited KingdomElwin Sharvill UNQUALIFIED
Aruna H StensethAustraliaAnna Fali NEGOTIATION
Leja A DoeBrazilIoni Bowcher UNQUALIFIED
Mayumi I BologniaCanadaBernardo Dominic QUALIFIED
Silvio O ShinkoArgentinaAmy Elsner QUALIFIED
Isabel O ChuiFranceStephen Shaw PROPOSAL
Murillo Q CaldareraJapanAmy Elsner NEW
Claire J MorascaGermanyXuxue Feng RENEWAL
Nicolas T RutaGermanyAsiya Javayant RENEWAL
Deepesh G VocelkaGermanyIvan Magalhaes QUALIFIED
Faith L KolmetzUnited KingdomIvan Magalhaes PROPOSAL
Mayumi X PoquetteJapanBernardo Dominic PROPOSAL
Arvin I KolmetzJapanXuxue Feng PROPOSAL
Leon Q PaprockiCanadaBernardo Dominic RENEWAL
Faith J SchemmerFranceXuxue Feng NEW
Clifford L PaprockiAustraliaAnna Fali NEW
Francesco W OldroydJapanStephen Shaw NEGOTIATION
Stacey P MaletBrazilAsiya Javayant QUALIFIED
Octavia L RimArgentinaXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Johnson G FerenczSpainAmy Elsner UNQUALIFIED
Claire O SlusarskiFranceOnyama Limba RENEWAL
Ivar M OstroskyIndiaBernardo Dominic QUALIFIED
Rodrigues G PerinArgentinaBernardo Dominic NEGOTIATION
Isabel M AmigonBrazilAsiya Javayant NEW
Julie S BriddickSpainIvan Magalhaes NEW
Nicolas B GlickFranceXuxue Feng RENEWAL
Claire D MaletGermanyOnyama Limba NEW
Maisha R KuskoArgentinaXuxue Feng UNQUALIFIED
Tony P FigeroaItalyAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson K VenereAustralia2024-03-27Chemel, James L Cpa QUALIFIED29Anna Fali
1001Nicolas B GauchoItaly2024-03-10Benton, John B Jr PROPOSAL12Bernardo Dominic
1002Jennifer B StockhamJapan2024-03-05Rousseaux, Michael Esq NEW32Xuxue Feng
1003Izzy G BowleyItaly2024-03-01Rangoni Of Florence QUALIFIED97Onyama Limba
1004Arvin V FlosiGermany2024-03-01Printing Dimensions PROPOSAL11Stephen Shaw
1005James P NickaIndia2024-03-27King, Christopher A Esq QUALIFIED1Xuxue Feng
1006Leon R TollnerAustralia2024-03-24Truhlar And Truhlar Attys NEW4Xuxue Feng
1007Aruna Z FigeroaAustralia2024-02-29Morlong Associates QUALIFIED17Xuxue Feng
1008Aika R GlickArgentina2024-03-20Chapman, Ross E Esq UNQUALIFIED9Xuxue Feng
1009David P PoquetteJapan2024-03-24Chanay, Jeffrey A Esq NEW39Ioni Bowcher
1010Ivar F GlickBrazil2024-03-17King, Christopher A Esq RENEWAL84Onyama Limba
1011Nicolas V MaletIndia2024-03-03Feiner Bros NEGOTIATION51Amy Elsner
1012Adams J BriddickCanada2024-03-26Dorl, James J Esq QUALIFIED25Anna Fali
1013Kadeem B ChuiSpain2024-03-18Truhlar And Truhlar Attys UNQUALIFIED41Xuxue Feng
1014Adams R GillianSpain2024-03-16Chanay, Jeffrey A Esq NEW37Anna Fali
1015Salvatore R IturbideAustralia2024-03-27Chemel, James L Cpa NEW33Elwin Sharvill
1016Murillo L OldroydArgentina2024-03-18Rousseaux, Michael Esq PROPOSAL64Bernardo Dominic
1017Jefferson G GauchoUnited Kingdom2024-03-09Dorl, James J Esq RENEWAL58Elwin Sharvill
1018Costa R VocelkaIndia2024-03-11Chemel, James L Cpa UNQUALIFIED8Asiya Javayant
1019Adams P ButtJapan2024-03-03Printing Dimensions UNQUALIFIED60Ivan Magalhaes
1020Cody Y RutaJapan2024-03-17Feiner Bros UNQUALIFIED0Ioni Bowcher
1021Morrow X FerenczFrance2024-03-24Commercial Press RENEWAL53Xuxue Feng
1022David N FerenczUnited Kingdom2024-02-29Feiner Bros QUALIFIED60Ivan Magalhaes
1023Kaitlin G SaylorsGermany2024-03-12Chapman, Ross E Esq QUALIFIED5Bernardo Dominic
1024Faith Z FerenczFrance2024-03-05Rangoni Of Florence UNQUALIFIED14Anna Fali
1025Munro Q CaudyGermany2024-03-21Truhlar And Truhlar Attys UNQUALIFIED49Asiya Javayant
1026Jones X KolmetzBrazil2024-03-24Morlong Associates UNQUALIFIED55Bernardo Dominic
1027Sinclair B MaletSpain2024-03-02Rousseaux, Michael Esq NEW45Ioni Bowcher
1028Izzy U SaylorsFrance2024-03-22King, Christopher A Esq QUALIFIED82Xuxue Feng
1029Octavia U MacleadRussia2024-03-03Morlong Associates QUALIFIED12Onyama Limba
1030Cody A DilliardArgentina2024-02-29Chemel, James L Cpa RENEWAL92Ivan Magalhaes
1031Jennifer J OldroydArgentina2024-03-28Commercial Press QUALIFIED40Elwin Sharvill
1032Octavia B ChuiArgentina2024-03-05Chemel, James L Cpa RENEWAL20Elwin Sharvill
1033Smith J StockhamCanada2024-03-12Feltz Printing Service QUALIFIED78Asiya Javayant
1034Jones L GauchoCanada2024-03-15Chanay, Jeffrey A Esq RENEWAL55Anna Fali
1035Wickens E IturbideRussia2024-03-14Rangoni Of Florence RENEWAL17Ioni Bowcher
1036Deepesh P SlusarskiFrance2024-03-19Commercial Press UNQUALIFIED97Ivan Magalhaes
1037Alejandro T GarufiJapan2024-03-21Rangoni Of Florence PROPOSAL2Anna Fali
1038James V CaldareraArgentina2024-03-28Printing Dimensions RENEWAL7Ioni Bowcher
1039Costa F FollerRussia2024-03-11King, Christopher A Esq NEGOTIATION35Anna Fali
1040Antonio L VocelkaAustralia2024-03-10King, Christopher A Esq QUALIFIED38Xuxue Feng
1041Silvio D RutaFrance2024-03-25Feltz Printing Service PROPOSAL92Onyama Limba
1042David F GauchoRussia2024-03-09Feiner Bros QUALIFIED72Ivan Magalhaes
1043Wickens Y ChuiUnited Kingdom2024-03-06Feltz Printing Service NEW67Amy Elsner
1044Aika H TollnerAustralia2024-03-23Morlong Associates UNQUALIFIED32Xuxue Feng
1045Mayumi M GauchoGermany2024-03-14Dorl, James J Esq QUALIFIED89Elwin Sharvill
1046Aditya B PoquetteRussia2024-03-17Buckley Miller Wright RENEWAL88Elwin Sharvill
1047Faith L PaprockiAustralia2024-03-24Truhlar And Truhlar Attys NEGOTIATION86Bernardo Dominic
1048Leja G KolmetzJapan2024-03-11Buckley Miller Wright NEW65Xuxue Feng
1049Jones J NickaGermany2024-02-29Printing Dimensions UNQUALIFIED59Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Murillo M OldroydJapanElwin Sharvill QUALIFIED
Stacey P StensethCanadaAmy Elsner QUALIFIED
Juan B SergiJapanXuxue Feng QUALIFIED
Isabel B NestleBrazilXuxue Feng RENEWAL
Juan Y DarakjyArgentinaAnna Fali NEW
Claire U KuskoJapanAsiya Javayant RENEWAL
Ashley H OstroskyItalyAmy Elsner RENEWAL
Maisha K DarakjyUnited KingdomStephen Shaw QUALIFIED
Isabel V StensethIndiaAsiya Javayant RENEWAL
Johnson H SchemmerBrazilAnna Fali UNQUALIFIED
Izzy F GlickRussiaElwin Sharvill PROPOSAL
Jennifer T GauchoUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson I AmigonBrazilIoni Bowcher NEGOTIATION
Costa A FerenczArgentinaOnyama Limba PROPOSAL
Maisha B DoeJapanStephen Shaw NEGOTIATION
Maisha L CampainJapanIoni Bowcher RENEWAL
Wickens T ButtGermanyAsiya Javayant UNQUALIFIED
Maria O SlusarskiGermanyIvan Magalhaes UNQUALIFIED
Faith I WaycottArgentinaAnna Fali NEW
Arvin C DilliardFranceAmy Elsner NEGOTIATION
Leon G MorascaBrazilAsiya Javayant UNQUALIFIED
Juan P GillianBrazilElwin Sharvill NEGOTIATION
Kadeem R GarufiBrazilAnna Fali UNQUALIFIED
Claire H PerinGermanyBernardo Dominic UNQUALIFIED
Jefferson Q IturbideIndiaBernardo Dominic PROPOSAL
Leja W PerinJapanBernardo Dominic PROPOSAL
Emily W WieserRussiaIvan Magalhaes NEW
Emily H SlusarskiAustraliaAsiya Javayant NEGOTIATION
Leja O RoysterGermanyBernardo Dominic NEGOTIATION
Morrow G KolmetzSpainIoni Bowcher RENEWAL
Smith J WieserFranceAmy Elsner PROPOSAL
Ivar L PaprockiGermanyBernardo Dominic PROPOSAL
Octavia Q RulapaughGermanyElwin Sharvill RENEWAL
Rodrigues T MorascaBrazilBernardo Dominic UNQUALIFIED
Greenwood S SergiGermanyOnyama Limba NEGOTIATION
Silvio V DoeItalyAnna Fali PROPOSAL
Francesco W SlusarskiCanadaStephen Shaw UNQUALIFIED
Sinclair W StensethCanadaOnyama Limba QUALIFIED
Ashley I FlosiJapanIvan Magalhaes NEGOTIATION
Kaitlin F InouyeItalyElwin Sharvill NEGOTIATION
Mayumi K FigeroaGermanyAmy Elsner UNQUALIFIED
Claire Z FerenczAustraliaAsiya Javayant RENEWAL
Tony E GauchoItalyAnna Fali RENEWAL
Morrow N VenereBrazilElwin Sharvill PROPOSAL
Francesco L PerinArgentinaAnna Fali UNQUALIFIED
Antonio J PoquetteJapanOnyama Limba UNQUALIFIED
James U MorascaAustraliaBernardo Dominic QUALIFIED
Faith L GillianCanadaStephen Shaw NEW
Morrow S DarakjyGermanyElwin Sharvill NEW
Ricardo S ChuiItalyAnna Fali RENEWAL
Frozen Columns
Name
David S Butt
Silvio I Maclead
Mayumi T Caudy
Smith N Stockham
Stacey I Foller
Aruna R Slusarski
Deepesh X Kusko
Johnson Q Stockham
Costa B Nicka
Francesco A Bowley
Smith A Darakjy
Murillo Z Stenseth
Adams E Rim
Darci S Kolmetz
Kadeem Q Ruta
Salvatore B Rim
Costa X Poquette
Sinclair N Malet
Cody G Perin
Jennifer Z Whobrey
Ricardo O Gillian
Johnson A Figeroa
Mujtaba B Waycott
Claire C Briddick
Cody O Rim
Kadeem T Flosi
Ivar H Bolognia
Stacey J Tollner
Rodrigues K Campain
Aika U Morasca
Jones D Morasca
Sinclair V Glick
Arvin B Flosi
Aruna F Tollner
Antonio W Ostrosky
Chavez D Ostrosky
Leon H Schemmer
Wickens X Garufi
Sinclair Z Wieser
Ashley C Schemmer
Jennifer K Whobrey
Ashley K Figeroa
Ivar Q Malet
Murillo X Albares
Smith Z Dilliard
Antonio Z Rulapaugh
Octavia O Malet
Murillo T Nicka
Johnson X Flosi
Maria G Inouye
IdCountryDate
1000Germany2024-03-08
1001Russia2024-03-12
1002Russia2024-03-02
1003Spain2024-03-22
1004Brazil2024-03-12
1005Australia2024-03-22
1006Italy2024-03-03
1007Japan2024-02-28
1008Germany2024-03-03
1009Canada2024-03-22
1010Russia2024-03-19
1011Italy2024-03-19
1012Canada2024-03-08
1013Australia2024-03-21
1014Brazil2024-03-13
1015Argentina2024-03-24
1016Russia2024-03-01
1017India2024-03-12
1018Russia2024-03-17
1019United Kingdom2024-03-19
1020United Kingdom2024-03-23
1021France2024-03-01
1022Canada2024-03-21
1023Italy2024-03-21
1024Italy2024-03-27
1025Russia2024-02-28
1026Italy2024-03-24
1027France2024-03-04
1028Canada2024-03-08
1029France2024-03-14
1030Germany2024-03-10
1031Brazil2024-03-14
1032Germany2024-03-28
1033Argentina2024-03-17
1034Canada2024-03-16
1035Australia2024-03-15
1036United Kingdom2024-03-09
1037France2024-03-06
1038Germany2024-03-05
1039Brazil2024-02-29
1040Argentina2024-03-20
1041United Kingdom2024-03-04
1042Spain2024-03-11
1043Canada2024-03-21
1044Russia2024-03-15
1045Spain2024-03-13
1046Germany2024-03-16
1047France2024-03-03
1048Italy2024-03-28
1049United Kingdom2024-03-24

On-Demand Data

NameIdCountryDate
Morrow C Iturbide1000Spain2024-03-14
Aditya J Garufi1001Germany2024-03-20
Munro C Foller1002France2024-03-26
Claire X Kusko1003India2024-03-13
Costa O Gaucho1004France2024-03-06
Jones E Malet1005Brazil2024-03-27
Clifford W Doe1006France2024-03-17
Jefferson U Maclead1007Spain2024-03-21
Ivar K Perin1008Japan2024-03-17
Maria F Bowley1009Canada2024-03-10
Alejandro K Stenseth1010Brazil2024-03-16
Tony K Inouye1011Japan2024-03-15
Munro T Iturbide1012Australia2024-03-21
Kaitlin U Doe1013France2024-03-11
Adams R Saylors1014United Kingdom2024-03-09
Aika O Albares1015Spain2024-03-24
Cody T Ostrosky1016United Kingdom2024-03-08
Rodrigues Q Malet1017Argentina2024-03-04
Jennifer Z Campain1018Canada2024-03-05
Kaitlin J Stenseth1019France2024-03-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin N GillianItalyStephen Shaw QUALIFIED
Antonio T InouyeRussiaAsiya Javayant RENEWAL
Salvatore P SergiFranceElwin Sharvill RENEWAL
Aditya F ShinkoAustraliaXuxue Feng PROPOSAL
Mujtaba G BowleyArgentinaAnna Fali RENEWAL
Rodrigues Q MorascaSpainAmy Elsner UNQUALIFIED
Sinclair I WhobreySpainOnyama Limba QUALIFIED
David C DoeFranceIvan Magalhaes PROPOSAL
Costa T RutaIndiaOnyama Limba PROPOSAL
Jefferson S MorascaBrazilXuxue Feng NEW
Alejandro O BriddickBrazilAsiya Javayant QUALIFIED
Isabel G FerenczArgentinaBernardo Dominic NEGOTIATION
Nicolas V GlickJapanAmy Elsner RENEWAL
Costa B ButtCanadaIoni Bowcher UNQUALIFIED
Kaitlin K RoysterSpainOnyama Limba QUALIFIED
David O StensethItalyIoni Bowcher RENEWAL
Munro Z CaldareraAustraliaIoni Bowcher NEW
Wickens O SlusarskiUnited KingdomOnyama Limba PROPOSAL
Morrow J DilliardSpainOnyama Limba QUALIFIED
Juan K VenereGermanyBernardo Dominic NEW
Wickens M PaprockiBrazilElwin Sharvill NEGOTIATION
Jeanfrancois A CaudyJapanOnyama Limba NEGOTIATION
Kaitlin X MorascaBrazilAnna Fali NEW
Jones I DarakjyArgentinaIvan Magalhaes NEGOTIATION
Kaitlin R MarrierIndiaAmy Elsner PROPOSAL
Munro O AlbaresJapanOnyama Limba NEGOTIATION
Jones H FollerIndiaAsiya Javayant RENEWAL
Murillo C CaldareraJapanElwin Sharvill UNQUALIFIED
Johnson P FlosiUnited KingdomStephen Shaw QUALIFIED
Aika Q MaletCanadaXuxue Feng NEW
Claire J MaletRussiaXuxue Feng QUALIFIED
Salvatore D ShinkoJapanXuxue Feng PROPOSAL
Leon Q FerenczIndiaXuxue Feng PROPOSAL
Maisha X OstroskyAustraliaStephen Shaw RENEWAL
Costa L FigeroaIndiaAmy Elsner RENEWAL
Darci F NestleFranceOnyama Limba UNQUALIFIED
David B MarrierGermanyStephen Shaw NEW
Kadeem R MarrierArgentinaStephen Shaw PROPOSAL
Deepesh B PerinFranceAmy Elsner UNQUALIFIED
Emily C RutaSpainBernardo Dominic 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>