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
Ricardo C RutaUnited KingdomAmy Elsner PROPOSAL
Juan N PerinAustraliaOnyama Limba RENEWAL
Clifford P InouyeArgentinaXuxue Feng RENEWAL
Maria Q FlosiAustraliaElwin Sharvill PROPOSAL
Munro S BologniaSpainStephen Shaw PROPOSAL
Smith D OldroydRussiaAnna Fali NEW
Mayumi I FollerSpainStephen Shaw PROPOSAL
Murillo H BowleyGermanyAsiya Javayant RENEWAL
Jefferson J InouyeCanadaIoni Bowcher NEGOTIATION
Kadeem H RoysterArgentinaAnna Fali RENEWAL
Ivar M OldroydBrazilElwin Sharvill NEGOTIATION
Jones D CampainGermanyElwin Sharvill UNQUALIFIED
Maria U DoeAustraliaAmy Elsner QUALIFIED
Arvin T SlusarskiItalyBernardo Dominic NEW
Leon M FlosiRussiaAsiya Javayant QUALIFIED
Morrow L MaletItalyAsiya Javayant QUALIFIED
Isabel K OldroydSpainXuxue Feng QUALIFIED
Leon C NickaJapanStephen Shaw NEW
Rodrigues I GarufiJapanIvan Magalhaes NEW
Deepesh M MaletIndiaIvan Magalhaes RENEWAL
Adams H RimSpainAmy Elsner UNQUALIFIED
Maria A PaprockiBrazilAsiya Javayant RENEWAL
Arvin R MaletArgentinaIoni Bowcher RENEWAL
Murillo S MorascaJapanXuxue Feng NEW
Francesco A FigeroaRussiaAnna Fali RENEWAL
Aditya Y BriddickBrazilBernardo Dominic UNQUALIFIED
Misaki A VocelkaIndiaStephen Shaw UNQUALIFIED
Aika T RulapaughGermanyIoni Bowcher UNQUALIFIED
Antonio X GauchoRussiaAsiya Javayant QUALIFIED
James I InouyeBrazilBernardo Dominic QUALIFIED
Jones F BriddickRussiaAnna Fali QUALIFIED
Wickens M GlickJapanStephen Shaw NEW
Aika B FlosiCanadaBernardo Dominic NEGOTIATION
Emily B TollnerFranceAmy Elsner RENEWAL
Kadeem M BologniaUnited KingdomStephen Shaw UNQUALIFIED
Aika C SergiItalyAsiya Javayant PROPOSAL
Leon F FigeroaUnited KingdomIvan Magalhaes RENEWAL
Antonio B CampainItalyAnna Fali PROPOSAL
Jones P MaletJapanElwin Sharvill RENEWAL
Maisha T RimFranceStephen Shaw NEW
Darci R RutaUnited KingdomElwin Sharvill PROPOSAL
Emily K ChuiJapanAmy Elsner QUALIFIED
Chavez W PerinAustraliaAsiya Javayant NEW
Sinclair I NestleItalyIoni Bowcher QUALIFIED
Emily T AlbaresCanadaAsiya Javayant NEGOTIATION
Deepesh G AmigonIndiaAnna Fali RENEWAL
Juan M AlbaresRussiaIvan Magalhaes NEW
Alejandro Q FlosiGermanyXuxue Feng RENEWAL
Aika O FigeroaItalyXuxue Feng PROPOSAL
Claire D GarufiRussiaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Johnson C OstroskyJapanAsiya Javayant PROPOSAL
Costa P InouyeJapanAsiya Javayant UNQUALIFIED
Smith T MacleadCanadaOnyama Limba QUALIFIED
Chavez A GillianRussiaBernardo Dominic PROPOSAL
Claire K NestleBrazilAmy Elsner QUALIFIED
Claire D FerenczUnited KingdomOnyama Limba RENEWAL
Munro C TollnerJapanAmy Elsner QUALIFIED
Antonio V GlickFranceStephen Shaw PROPOSAL
Darci U DoeCanadaElwin Sharvill RENEWAL
Ricardo U WaycottArgentinaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa U InouyeFrance2024-04-09Benton, John B Jr QUALIFIED49Amy Elsner
1001Leja Y CampainFrance2024-04-24Rangoni Of Florence NEGOTIATION5Asiya Javayant
1002Arvin Y StockhamArgentina2024-04-18Rangoni Of Florence NEGOTIATION41Stephen Shaw
1003Claire M DarakjyUnited Kingdom2024-04-07Morlong Associates NEGOTIATION88Bernardo Dominic
1004Rodrigues F OldroydArgentina2024-04-18King, Christopher A Esq NEW6Asiya Javayant
1005Ricardo M InouyeIndia2024-04-15Morlong Associates QUALIFIED78Bernardo Dominic
1006Adams L MaletJapan2024-04-24Feltz Printing Service UNQUALIFIED9Amy Elsner
1007Maisha O ChuiItaly2024-04-18Benton, John B Jr NEW0Anna Fali
1008Ivar R TollnerCanada2024-04-21Chapman, Ross E Esq RENEWAL50Xuxue Feng
1009Jeanfrancois Y WieserSpain2024-04-09Printing Dimensions QUALIFIED89Stephen Shaw
1010Aruna N PoquetteUnited Kingdom2024-03-31Buckley Miller Wright PROPOSAL3Anna Fali
1011Isabel Q ButtFrance2024-04-23Dorl, James J Esq UNQUALIFIED5Stephen Shaw
1012Munro L SlusarskiUnited Kingdom2024-04-15Printing Dimensions NEW17Anna Fali
1013Maria D DarakjySpain2024-04-27Dorl, James J Esq NEGOTIATION64Asiya Javayant
1014Izzy X DoeArgentina2024-04-03Rangoni Of Florence PROPOSAL7Anna Fali
1015Jeanfrancois Y FigeroaFrance2024-04-04Truhlar And Truhlar Attys NEGOTIATION99Xuxue Feng
1016Rodrigues Y BowleyArgentina2024-04-18Benton, John B Jr NEW95Onyama Limba
1017Darci S VenereJapan2024-04-11Truhlar And Truhlar Attys NEW98Stephen Shaw
1018Izzy I StockhamIndia2024-04-13Chemel, James L Cpa UNQUALIFIED11Xuxue Feng
1019Smith U FlosiJapan2024-04-04Printing Dimensions PROPOSAL2Stephen Shaw
1020Ivar D CaldareraIndia2024-04-12Truhlar And Truhlar Attys UNQUALIFIED17Elwin Sharvill
1021Murillo J BowleyJapan2024-04-24King, Christopher A Esq RENEWAL92Anna Fali
1022Salvatore Z OstroskyGermany2024-04-26Truhlar And Truhlar Attys QUALIFIED63Onyama Limba
1023Aditya P WhobreyAustralia2024-04-22Rangoni Of Florence UNQUALIFIED40Elwin Sharvill
1024Claire E KuskoArgentina2024-04-01Chemel, James L Cpa RENEWAL26Asiya Javayant
1025Murillo G ShinkoGermany2024-03-29Morlong Associates UNQUALIFIED81Anna Fali
1026Ivar U BriddickUnited Kingdom2024-04-22Commercial Press PROPOSAL47Ivan Magalhaes
1027Munro J InouyeJapan2024-04-05Rousseaux, Michael Esq RENEWAL35Ioni Bowcher
1028Maisha J NickaUnited Kingdom2024-04-06Printing Dimensions QUALIFIED26Anna Fali
1029Morrow Y NickaIndia2024-04-15Chanay, Jeffrey A Esq UNQUALIFIED40Onyama Limba
1030Murillo P ShinkoGermany2024-04-27Commercial Press QUALIFIED25Onyama Limba
1031Greenwood S MacleadIndia2024-04-01Buckley Miller Wright RENEWAL20Amy Elsner
1032Misaki H VenereBrazil2024-04-09Commercial Press PROPOSAL75Anna Fali
1033Morrow K ShinkoArgentina2024-04-21Buckley Miller Wright UNQUALIFIED23Onyama Limba
1034Jennifer R SlusarskiSpain2024-04-20Benton, John B Jr RENEWAL90Onyama Limba
1035Izzy Q CampainIndia2024-04-22Commercial Press QUALIFIED66Bernardo Dominic
1036Morrow M DarakjyUnited Kingdom2024-04-10Rousseaux, Michael Esq NEGOTIATION97Elwin Sharvill
1037Julie S RulapaughItaly2024-04-09Feiner Bros QUALIFIED71Stephen Shaw
1038Adams O PerinSpain2024-03-31Feltz Printing Service RENEWAL39Stephen Shaw
1039Jefferson D RutaCanada2024-04-20Feltz Printing Service NEW20Amy Elsner
1040Darci G FollerRussia2024-04-16Feiner Bros RENEWAL44Stephen Shaw
1041Jones N FlosiArgentina2024-04-01Commercial Press NEGOTIATION28Ivan Magalhaes
1042Ricardo S OldroydBrazil2024-03-29Rangoni Of Florence NEW47Bernardo Dominic
1043Jones W IturbideCanada2024-04-04King, Christopher A Esq RENEWAL56Asiya Javayant
1044Arvin W KolmetzArgentina2024-04-25Commercial Press RENEWAL97Anna Fali
1045James C TollnerUnited Kingdom2024-04-10Truhlar And Truhlar Attys QUALIFIED97Stephen Shaw
1046Jones Q CaudyArgentina2024-04-12Chemel, James L Cpa NEW67Asiya Javayant
1047Smith K FigeroaItaly2024-04-11Morlong Associates UNQUALIFIED24Ioni Bowcher
1048Deepesh N GarufiIndia2024-04-16Truhlar And Truhlar Attys QUALIFIED92Xuxue Feng
1049Ricardo P RimIndia2024-04-18Benton, John B Jr UNQUALIFIED89Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Darci F DarakjySpainIvan Magalhaes NEGOTIATION
Isabel E BowleyFranceOnyama Limba RENEWAL
Ivar Q GauchoBrazilAmy Elsner PROPOSAL
Munro N DarakjyCanadaXuxue Feng NEGOTIATION
Aruna F VocelkaArgentinaAsiya Javayant PROPOSAL
Claire C FollerCanadaBernardo Dominic PROPOSAL
Munro K PoquetteItalyElwin Sharvill PROPOSAL
Jeanfrancois P IturbideArgentinaAnna Fali PROPOSAL
Juan K VocelkaSpainXuxue Feng RENEWAL
Maisha R OstroskyCanadaOnyama Limba PROPOSAL
Faith V MorascaAustraliaAmy Elsner RENEWAL
Wickens O GlickBrazilAmy Elsner NEW
Johnson N MarrierIndiaIoni Bowcher NEW
Stacey H KolmetzRussiaElwin Sharvill QUALIFIED
Kadeem Q ButtFranceXuxue Feng RENEWAL
Antonio Q StensethBrazilStephen Shaw RENEWAL
Arvin M DoeRussiaAmy Elsner UNQUALIFIED
Stacey A GauchoCanadaStephen Shaw PROPOSAL
Arvin U BologniaArgentinaElwin Sharvill NEW
Aditya P RutaCanadaAsiya Javayant QUALIFIED
Johnson S DarakjyArgentinaIvan Magalhaes NEGOTIATION
Tony P FerenczSpainStephen Shaw QUALIFIED
Salvatore A FigeroaBrazilIvan Magalhaes NEW
Ricardo W CaldareraArgentinaIvan Magalhaes RENEWAL
Juan C ButtItalyIoni Bowcher RENEWAL
Jeanfrancois X StockhamFranceBernardo Dominic RENEWAL
Rodrigues V IturbideFranceOnyama Limba NEGOTIATION
Octavia G WhobreyCanadaIoni Bowcher NEGOTIATION
Nicolas R GlickCanadaOnyama Limba NEW
Salvatore I GillianJapanIoni Bowcher QUALIFIED
Nicolas K CaudyUnited KingdomAmy Elsner RENEWAL
Arvin B AmigonRussiaStephen Shaw NEW
James U VenereRussiaStephen Shaw QUALIFIED
Stacey K SchemmerIndiaElwin Sharvill NEW
Johnson U ShinkoIndiaXuxue Feng NEGOTIATION
Aruna Z MacleadAustraliaBernardo Dominic NEGOTIATION
Morrow W BologniaCanadaIvan Magalhaes UNQUALIFIED
Aditya D InouyeUnited KingdomAmy Elsner QUALIFIED
Wickens N StockhamBrazilAsiya Javayant QUALIFIED
Arvin L MacleadJapanIoni Bowcher QUALIFIED
Jones R RutaIndiaIoni Bowcher NEW
David X GauchoSpainOnyama Limba UNQUALIFIED
Darci F GarufiUnited KingdomOnyama Limba QUALIFIED
Maisha P GauchoFranceElwin Sharvill PROPOSAL
Costa Z SaylorsFranceIoni Bowcher NEGOTIATION
James W SlusarskiItalyXuxue Feng NEGOTIATION
Stacey C NickaSpainBernardo Dominic NEW
Greenwood C KuskoJapanAnna Fali PROPOSAL
Misaki S ChuiUnited KingdomIoni Bowcher NEW
Mayumi N WhobreyArgentinaAsiya Javayant NEGOTIATION
Frozen Columns
Name
Leja O Stenseth
Octavia X Oldroyd
Ricardo R Bowley
Maria T Ferencz
Faith L Nicka
Tony D Nicka
Wickens L Whobrey
Jefferson R Amigon
Francesco K Paprocki
Morrow T Rim
Izzy F Kusko
Jennifer Z Inouye
Ricardo L Kusko
Francesco N Saylors
Mayumi L Nestle
Tony F Amigon
Leon B Nestle
Leja A Campain
Morrow X Figeroa
Johnson O Morasca
Juan E Inouye
Antonio W Slusarski
Jefferson A Ferencz
Chavez M Bolognia
James G Wieser
Stacey D Shinko
Jennifer T Stenseth
James P Garufi
Stacey V Nestle
Maria V Bolognia
Misaki O Doe
Morrow H Schemmer
Silvio Q Schemmer
Murillo V Royster
Sinclair I Figeroa
Aruna A Malet
David X Poquette
Jeanfrancois P Ostrosky
Ivar L Shinko
Salvatore A Flosi
Ricardo H Amigon
Claire D Bowley
Maisha W Bolognia
Octavia I Whobrey
Chavez C Caldarera
Aruna N Morasca
Costa K Paprocki
Jeanfrancois Z Ostrosky
Isabel E Sergi
Emily G Briddick
IdCountryDate
1000France2024-03-29
1001Russia2024-04-17
1002United Kingdom2024-04-05
1003Australia2024-03-30
1004Italy2024-04-18
1005Japan2024-04-11
1006Canada2024-04-22
1007Brazil2024-04-09
1008Brazil2024-04-05
1009Argentina2024-04-22
1010Australia2024-04-15
1011Germany2024-04-27
1012Canada2024-04-04
1013Canada2024-04-08
1014Australia2024-04-15
1015Japan2024-04-01
1016Argentina2024-03-29
1017Spain2024-04-12
1018Russia2024-04-27
1019France2024-04-26
1020Italy2024-04-13
1021Argentina2024-04-09
1022United Kingdom2024-04-07
1023Italy2024-04-07
1024Canada2024-04-23
1025Japan2024-03-30
1026Russia2024-04-24
1027Brazil2024-04-22
1028India2024-04-11
1029France2024-04-18
1030Japan2024-04-22
1031Japan2024-04-21
1032Spain2024-04-08
1033Russia2024-04-08
1034Canada2024-04-22
1035Germany2024-03-29
1036Argentina2024-04-01
1037Canada2024-04-14
1038Argentina2024-04-07
1039Brazil2024-04-13
1040Japan2024-04-22
1041Brazil2024-03-31
1042Spain2024-04-27
1043United Kingdom2024-04-19
1044United Kingdom2024-03-31
1045Japan2024-04-26
1046France2024-04-11
1047France2024-04-11
1048Germany2024-04-09
1049France2024-04-13

On-Demand Data

NameIdCountryDate
Jennifer E Inouye1000Canada2024-04-16
Ivar T Poquette1001Italy2024-04-25
Juan P Chui1002United Kingdom2024-04-10
Ivar R Caudy1003Russia2024-04-02
Aika F Wieser1004India2024-04-04
Ivar T Foller1005India2024-04-10
Darci P Sergi1006Australia2024-03-30
Octavia L Albares1007India2024-04-05
Aruna C Nestle1008Spain2024-04-27
Costa Q Paprocki1009Italy2024-03-30
Stacey X Flosi1010Japan2024-04-08
Emily K Butt1011Italy2024-04-19
Deepesh C Doe1012France2024-04-25
Kaitlin L Campain1013United Kingdom2024-04-26
Maria E Iturbide1014Canada2024-04-08
Aika F Ostrosky1015Canada2024-04-06
Claire S Whobrey1016India2024-04-08
Deepesh A Bolognia1017Australia2024-04-07
Nicolas I Slusarski1018Argentina2024-04-08
Izzy I Stenseth1019Germany2024-03-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem I IturbideIndiaStephen Shaw PROPOSAL
Octavia F FlosiAustraliaBernardo Dominic UNQUALIFIED
Adams Z DoeFranceElwin Sharvill QUALIFIED
Leja E NestleArgentinaAsiya Javayant NEGOTIATION
Munro P AlbaresBrazilOnyama Limba NEGOTIATION
Maria T AlbaresRussiaAnna Fali NEW
Ricardo Q FigeroaSpainAsiya Javayant QUALIFIED
Francesco T FollerRussiaAnna Fali UNQUALIFIED
Cody C FigeroaSpainIoni Bowcher RENEWAL
Nicolas A PerinIndiaAmy Elsner PROPOSAL
Ivar Z ButtAustraliaElwin Sharvill PROPOSAL
Ivar F SaylorsAustraliaAsiya Javayant NEGOTIATION
Julie W DilliardBrazilElwin Sharvill UNQUALIFIED
Claire L InouyeCanadaAmy Elsner UNQUALIFIED
Antonio B MarrierCanadaAmy Elsner RENEWAL
Sinclair O DilliardArgentinaBernardo Dominic PROPOSAL
Ricardo E AlbaresGermanyBernardo Dominic QUALIFIED
Misaki V ChuiItalyAmy Elsner NEW
Ivar J KolmetzSpainOnyama Limba QUALIFIED
Jefferson X GlickCanadaXuxue Feng NEW
Misaki N IturbideArgentinaBernardo Dominic QUALIFIED
Deepesh O FerenczItalyAmy Elsner NEW
Greenwood G RulapaughArgentinaXuxue Feng RENEWAL
Octavia A CaudyCanadaAmy Elsner UNQUALIFIED
Leja J GarufiJapanOnyama Limba NEW
David I VenereCanadaAmy Elsner NEW
Smith G SaylorsArgentinaStephen Shaw UNQUALIFIED
Jennifer I FollerItalyStephen Shaw PROPOSAL
Stacey D AlbaresBrazilOnyama Limba QUALIFIED
David B DoeBrazilAnna Fali NEGOTIATION
Cody Q DoeArgentinaIoni Bowcher NEGOTIATION
Nicolas R PaprockiIndiaAnna Fali PROPOSAL
Isabel P FlosiCanadaOnyama Limba QUALIFIED
Maisha Q DarakjyFranceIoni Bowcher PROPOSAL
Maria N OldroydSpainAsiya Javayant RENEWAL
Aika X CaldareraCanadaXuxue Feng PROPOSAL
Julie C PerinSpainAmy Elsner RENEWAL
Smith R MacleadJapanElwin Sharvill NEW
Antonio K RoysterUnited KingdomXuxue Feng UNQUALIFIED
Murillo M IturbideSpainIoni 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>