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
Alejandro C MarrierIndiaBernardo Dominic NEGOTIATION
Deepesh J GillianCanadaBernardo Dominic PROPOSAL
Morrow D FlosiAustraliaBernardo Dominic NEGOTIATION
Wickens U PoquetteRussiaAmy Elsner RENEWAL
Antonio D CaudyCanadaAsiya Javayant RENEWAL
Sinclair R VocelkaIndiaXuxue Feng QUALIFIED
Johnson O FlosiAustraliaAsiya Javayant NEW
Emily X StensethIndiaIoni Bowcher RENEWAL
Morrow K StensethSpainIoni Bowcher NEW
Johnson N MarrierBrazilIvan Magalhaes NEGOTIATION
Ricardo L FerenczCanadaAsiya Javayant UNQUALIFIED
Claire B MorascaFranceAnna Fali PROPOSAL
Faith G FlosiCanadaBernardo Dominic QUALIFIED
Mujtaba G ShinkoArgentinaXuxue Feng QUALIFIED
Antonio M SlusarskiGermanyIvan Magalhaes UNQUALIFIED
Cody G MorascaBrazilIvan Magalhaes RENEWAL
Costa C FlosiAustraliaAmy Elsner PROPOSAL
Aika S DilliardArgentinaIoni Bowcher NEGOTIATION
Silvio U VocelkaSpainXuxue Feng NEW
Nicolas W SaylorsItalyAnna Fali PROPOSAL
Jones T SlusarskiItalyIvan Magalhaes NEW
Arvin T FigeroaArgentinaXuxue Feng NEGOTIATION
Misaki Y ChuiCanadaXuxue Feng PROPOSAL
Rodrigues W FerenczBrazilAsiya Javayant QUALIFIED
Tony D WieserBrazilIoni Bowcher UNQUALIFIED
Jefferson G ButtItalyElwin Sharvill RENEWAL
Arvin R NickaArgentinaXuxue Feng NEGOTIATION
Johnson K SlusarskiItalyAmy Elsner NEW
Tony S NestleSpainAsiya Javayant PROPOSAL
Smith K MaletCanadaStephen Shaw RENEWAL
Aruna N IturbideGermanyOnyama Limba RENEWAL
Sinclair U StensethFranceBernardo Dominic NEW
Sinclair E FollerIndiaAmy Elsner RENEWAL
Kadeem E CaldareraArgentinaStephen Shaw PROPOSAL
Cody Q DilliardCanadaAsiya Javayant PROPOSAL
Emily N GillianArgentinaAmy Elsner NEW
Faith J FollerAustraliaOnyama Limba RENEWAL
Antonio M BriddickIndiaAsiya Javayant UNQUALIFIED
Arvin I FlosiArgentinaIvan Magalhaes UNQUALIFIED
Morrow F OstroskyBrazilIoni Bowcher NEGOTIATION
Misaki A PerinSpainXuxue Feng NEGOTIATION
Jones O SlusarskiJapanIoni Bowcher NEGOTIATION
Kaitlin N RoysterArgentinaElwin Sharvill NEW
Izzy U NestleBrazilElwin Sharvill PROPOSAL
Misaki L SaylorsUnited KingdomAsiya Javayant NEGOTIATION
Wickens F DarakjyCanadaAnna Fali PROPOSAL
David U GillianFranceAnna Fali PROPOSAL
Sinclair X KuskoFranceIoni Bowcher PROPOSAL
Rodrigues Z ButtItalyStephen Shaw UNQUALIFIED
Alejandro F DilliardFranceIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aditya J StockhamArgentinaStephen Shaw QUALIFIED
David K CampainCanadaBernardo Dominic PROPOSAL
Jefferson T PerinRussiaBernardo Dominic PROPOSAL
Smith I PaprockiFranceOnyama Limba NEW
Cody X SlusarskiBrazilIvan Magalhaes PROPOSAL
Aika W KolmetzSpainBernardo Dominic UNQUALIFIED
Murillo U WhobreyRussiaElwin Sharvill QUALIFIED
Jennifer N DilliardJapanElwin Sharvill UNQUALIFIED
Izzy M VocelkaCanadaElwin Sharvill NEW
Clifford Q DoeItalyStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika R ButtArgentina2024-04-10Feiner Bros NEW86Xuxue Feng
1001Smith I CaldareraItaly2024-04-09Printing Dimensions NEW34Stephen Shaw
1002Kadeem P PerinUnited Kingdom2024-04-16Rousseaux, Michael Esq NEGOTIATION40Bernardo Dominic
1003Ricardo V OstroskyUnited Kingdom2024-04-28Truhlar And Truhlar Attys RENEWAL53Bernardo Dominic
1004James Y VocelkaGermany2024-04-17Rousseaux, Michael Esq NEW20Asiya Javayant
1005Juan W SergiSpain2024-04-23Rangoni Of Florence NEW17Onyama Limba
1006Deepesh R SlusarskiRussia2024-04-18Benton, John B Jr UNQUALIFIED23Onyama Limba
1007Maisha D PaprockiIndia2024-04-10Morlong Associates QUALIFIED62Stephen Shaw
1008Darci W WaycottArgentina2024-04-21King, Christopher A Esq UNQUALIFIED4Xuxue Feng
1009Aruna X OldroydJapan2024-04-12Feiner Bros QUALIFIED59Amy Elsner
1010Salvatore B GillianJapan2024-04-28Truhlar And Truhlar Attys UNQUALIFIED43Ivan Magalhaes
1011Faith Y GauchoSpain2024-04-13Benton, John B Jr NEGOTIATION81Asiya Javayant
1012Aika Z WieserItaly2024-04-01Feiner Bros QUALIFIED76Ivan Magalhaes
1013Ivar G RimFrance2024-04-02Dorl, James J Esq NEGOTIATION93Bernardo Dominic
1014Murillo C RulapaughSpain2024-04-13King, Christopher A Esq NEW90Anna Fali
1015Mayumi N RoysterRussia2024-04-10Rangoni Of Florence RENEWAL59Amy Elsner
1016Aruna E NestleRussia2024-04-18Printing Dimensions RENEWAL34Asiya Javayant
1017Deepesh J RutaFrance2024-04-11Dorl, James J Esq PROPOSAL21Bernardo Dominic
1018Emily Z PoquetteIndia2024-04-10Commercial Press QUALIFIED35Amy Elsner
1019Octavia F SaylorsRussia2024-04-24Rangoni Of Florence NEGOTIATION32Onyama Limba
1020David E GillianJapan2024-04-23Feiner Bros RENEWAL79Anna Fali
1021Maria N FerenczFrance2024-04-01Rangoni Of Florence NEGOTIATION7Ioni Bowcher
1022Mayumi U FerenczArgentina2024-04-19Rousseaux, Michael Esq NEW91Onyama Limba
1023Salvatore N FollerFrance2024-04-10Rangoni Of Florence QUALIFIED17Elwin Sharvill
1024Salvatore S SchemmerSpain2024-04-05Chemel, James L Cpa UNQUALIFIED5Onyama Limba
1025Leja W TollnerFrance2024-04-01King, Christopher A Esq NEW75Xuxue Feng
1026Costa A GauchoJapan2024-04-25Rangoni Of Florence PROPOSAL32Anna Fali
1027Silvio P RulapaughJapan2024-04-05King, Christopher A Esq QUALIFIED30Stephen Shaw
1028Emily P FerenczRussia2024-03-31Truhlar And Truhlar Attys PROPOSAL71Stephen Shaw
1029Antonio K RoysterSpain2024-04-26Dorl, James J Esq QUALIFIED35Amy Elsner
1030Claire Z RutaJapan2024-04-18Rangoni Of Florence PROPOSAL29Asiya Javayant
1031Murillo W VenereIndia2024-04-27Morlong Associates UNQUALIFIED78Amy Elsner
1032Ivar E FlosiSpain2024-04-10Dorl, James J Esq RENEWAL36Stephen Shaw
1033Salvatore I RoysterArgentina2024-04-08Buckley Miller Wright NEW33Xuxue Feng
1034Salvatore D KolmetzArgentina2024-04-21Commercial Press NEGOTIATION42Onyama Limba
1035Jennifer O WaycottUnited Kingdom2024-04-19Chemel, James L Cpa RENEWAL72Elwin Sharvill
1036Leon Z PoquetteBrazil2024-04-28Feltz Printing Service QUALIFIED98Anna Fali
1037Ashley H CaldareraAustralia2024-03-30King, Christopher A Esq NEGOTIATION77Amy Elsner
1038Maisha X DilliardAustralia2024-04-25Chemel, James L Cpa NEGOTIATION5Ioni Bowcher
1039Clifford G RoysterJapan2024-04-08Chemel, James L Cpa RENEWAL6Ivan Magalhaes
1040Jeanfrancois S SchemmerFrance2024-04-27King, Christopher A Esq RENEWAL89Bernardo Dominic
1041Aruna Q RutaArgentina2024-04-14Chemel, James L Cpa NEW15Stephen Shaw
1042Alejandro J VenereGermany2024-04-11Feltz Printing Service NEGOTIATION21Xuxue Feng
1043Darci B KolmetzAustralia2024-04-07Feiner Bros RENEWAL71Elwin Sharvill
1044Antonio K SlusarskiRussia2024-04-05Rangoni Of Florence PROPOSAL18Amy Elsner
1045Chavez U OstroskyAustralia2024-03-30Dorl, James J Esq NEGOTIATION75Ioni Bowcher
1046Maisha T RutaAustralia2024-04-17Truhlar And Truhlar Attys NEW10Amy Elsner
1047Nicolas Z BriddickJapan2024-04-25Chanay, Jeffrey A Esq PROPOSAL16Amy Elsner
1048Cody P MaletFrance2024-04-17Chemel, James L Cpa NEW1Stephen Shaw
1049Leja N SaylorsRussia2024-04-18Rangoni Of Florence NEW30Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Cody R GauchoCanadaIoni Bowcher NEW
Arvin B AmigonSpainIoni Bowcher RENEWAL
Juan M VocelkaCanadaAmy Elsner PROPOSAL
Jeanfrancois Y BowleyGermanyAmy Elsner NEGOTIATION
Leja Z NickaFranceIoni Bowcher NEGOTIATION
Mujtaba W IturbideFranceBernardo Dominic UNQUALIFIED
Smith A StensethJapanIvan Magalhaes PROPOSAL
Kaitlin P FollerUnited KingdomBernardo Dominic PROPOSAL
Leja V CaudyGermanyOnyama Limba PROPOSAL
Antonio X GlickJapanAnna Fali RENEWAL
Stacey Q RulapaughAustraliaIvan Magalhaes NEW
David Y ButtFranceIoni Bowcher PROPOSAL
Adams F RulapaughBrazilOnyama Limba UNQUALIFIED
Mujtaba N FollerSpainIoni Bowcher NEW
Jennifer J IturbideSpainXuxue Feng PROPOSAL
Clifford D ShinkoBrazilElwin Sharvill UNQUALIFIED
Leja G RulapaughFranceIoni Bowcher UNQUALIFIED
Costa D GlickSpainAmy Elsner NEW
Munro T DarakjyCanadaBernardo Dominic UNQUALIFIED
Smith K SlusarskiJapanBernardo Dominic QUALIFIED
Stacey E KolmetzJapanElwin Sharvill RENEWAL
Sinclair E SchemmerIndiaAmy Elsner NEGOTIATION
Ivar L GillianGermanyIoni Bowcher NEW
Murillo I FigeroaAustraliaXuxue Feng QUALIFIED
Jeanfrancois J SchemmerJapanStephen Shaw UNQUALIFIED
Izzy G PerinItalyStephen Shaw NEW
Salvatore V DarakjyAustraliaOnyama Limba PROPOSAL
Salvatore U SchemmerAustraliaIvan Magalhaes RENEWAL
Greenwood J RutaItalyAmy Elsner RENEWAL
Mujtaba B OstroskyFranceIvan Magalhaes NEW
Aruna W BologniaFranceIoni Bowcher UNQUALIFIED
Jeanfrancois Y NestleCanadaAnna Fali UNQUALIFIED
Jeanfrancois V GlickBrazilAmy Elsner QUALIFIED
Claire O RimJapanXuxue Feng RENEWAL
Francesco O GarufiBrazilStephen Shaw UNQUALIFIED
Kadeem J RutaRussiaBernardo Dominic NEW
Aruna U VenereBrazilIoni Bowcher UNQUALIFIED
Sinclair D RutaRussiaOnyama Limba RENEWAL
Sinclair V CaldareraFranceAnna Fali QUALIFIED
Kaitlin V ChuiItalyOnyama Limba NEGOTIATION
Munro S BowleyRussiaAsiya Javayant NEW
Deepesh T GlickCanadaAsiya Javayant NEGOTIATION
Salvatore T PerinRussiaOnyama Limba RENEWAL
Costa T OstroskyUnited KingdomStephen Shaw NEGOTIATION
Izzy X CaudyJapanOnyama Limba PROPOSAL
Darci L GauchoSpainOnyama Limba NEGOTIATION
Ivar T DoeCanadaXuxue Feng NEGOTIATION
Izzy Y SergiCanadaXuxue Feng NEGOTIATION
Leon S FerenczAustraliaIvan Magalhaes RENEWAL
Leon Q CaldareraFranceIoni Bowcher PROPOSAL
Frozen Columns
Name
Adams R Bowley
Cody T Stockham
Leja P Ruta
Mayumi L Maclead
Silvio H Malet
Munro L Iturbide
Costa U Waycott
Juan X Marrier
Nicolas C Glick
Juan Q Shinko
Juan P Waycott
Maisha T Dilliard
Munro E Poquette
Clifford S Caldarera
Morrow U Flosi
Emily K Malet
Juan X Nicka
Clifford G Waycott
Izzy D Poquette
Murillo C Caldarera
Tony A Foller
Stacey E Dilliard
Chavez Z Stenseth
Clifford N Ruta
Alejandro L Paprocki
Faith V Dilliard
Ivar Z Gaucho
Juan Z Figeroa
Kaitlin L Inouye
Tony P Stenseth
Julie V Glick
Tony D Morasca
Munro E Waycott
Faith D Rulapaugh
Mayumi I Doe
Kadeem P Ruta
Leja J Malet
Claire I Gaucho
Alejandro I Inouye
Johnson G Chui
Aika R Figeroa
Mayumi I Gaucho
Wickens U Garufi
Faith R Butt
Aruna N Bowley
Jones H Royster
Stacey N Dilliard
Ashley A Rim
Rodrigues W Paprocki
Darci R Maclead
IdCountryDate
1000Spain2024-04-24
1001Argentina2024-04-17
1002Brazil2024-04-19
1003Canada2024-04-11
1004Russia2024-04-13
1005France2024-04-11
1006Canada2024-04-18
1007India2024-04-25
1008Spain2024-04-09
1009Germany2024-04-16
1010Italy2024-04-06
1011Japan2024-04-20
1012Italy2024-04-17
1013Argentina2024-04-10
1014Argentina2024-04-23
1015Canada2024-04-28
1016Brazil2024-04-12
1017Japan2024-04-26
1018Italy2024-04-21
1019France2024-04-14
1020France2024-04-01
1021Argentina2024-04-15
1022Brazil2024-04-15
1023Italy2024-04-04
1024Canada2024-04-26
1025France2024-04-02
1026Canada2024-04-08
1027France2024-04-21
1028United Kingdom2024-04-24
1029Germany2024-04-18
1030Spain2024-04-17
1031India2024-04-06
1032Italy2024-03-30
1033Russia2024-04-21
1034Canada2024-04-03
1035India2024-04-11
1036India2024-04-27
1037Australia2024-03-30
1038Canada2024-04-11
1039Japan2024-04-28
1040Russia2024-04-15
1041United Kingdom2024-04-14
1042India2024-04-01
1043United Kingdom2024-04-01
1044Brazil2024-04-06
1045Russia2024-04-24
1046Germany2024-04-06
1047Spain2024-04-22
1048Spain2024-03-31
1049Australia2024-04-25

On-Demand Data

NameIdCountryDate
Julie Q Kusko1000Canada2024-04-06
James N Gaucho1001Japan2024-03-30
Silvio O Bolognia1002France2024-04-23
Darci O Sergi1003United Kingdom2024-04-08
Misaki E Marrier1004Italy2024-03-31
Munro S Butt1005Russia2024-04-23
Jefferson D Wieser1006Japan2024-04-17
Isabel L Figeroa1007Spain2024-04-25
Mayumi I Kolmetz1008Canada2024-04-03
Rodrigues J Caudy1009Australia2024-04-22
Stacey R Wieser1010United Kingdom2024-04-19
Octavia H Poquette1011Canada2024-04-14
Wickens H Ostrosky1012Canada2024-04-10
Rodrigues S Figeroa1013Brazil2024-04-11
Emily T Bowley1014Argentina2024-04-02
David U Figeroa1015Australia2024-04-12
Octavia M Paprocki1016Australia2024-04-08
James O Stenseth1017Germany2024-04-23
Stacey S Sergi1018United Kingdom2024-04-05
Munro W Whobrey1019India2024-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem H CaudyBrazilIvan Magalhaes UNQUALIFIED
Ashley E NickaGermanyXuxue Feng NEGOTIATION
Maria T RimCanadaAsiya Javayant UNQUALIFIED
Francesco N SergiCanadaXuxue Feng NEGOTIATION
Misaki G WhobreyUnited KingdomXuxue Feng QUALIFIED
Juan Q GlickItalyStephen Shaw RENEWAL
Clifford Y BowleyJapanXuxue Feng PROPOSAL
Stacey J BologniaArgentinaElwin Sharvill UNQUALIFIED
Emily T OstroskyFranceXuxue Feng UNQUALIFIED
Greenwood Q RimRussiaAnna Fali UNQUALIFIED
Emily Q MorascaAustraliaXuxue Feng QUALIFIED
Murillo F CaldareraRussiaXuxue Feng NEGOTIATION
Isabel L InouyeArgentinaStephen Shaw PROPOSAL
Ricardo N NickaUnited KingdomIoni Bowcher PROPOSAL
Ricardo G PerinBrazilIvan Magalhaes NEGOTIATION
Nicolas N WieserUnited KingdomIoni Bowcher QUALIFIED
Isabel Z MaletGermanyAnna Fali QUALIFIED
Tony M WieserCanadaStephen Shaw UNQUALIFIED
James I AlbaresRussiaElwin Sharvill NEGOTIATION
Leon X WaycottSpainStephen Shaw NEW
Jennifer D AmigonJapanXuxue Feng NEW
Aditya X CampainSpainAmy Elsner QUALIFIED
Arvin K GillianAustraliaIoni Bowcher QUALIFIED
Smith I MarrierArgentinaXuxue Feng NEGOTIATION
Jefferson S ChuiSpainXuxue Feng RENEWAL
Smith K PoquetteItalyOnyama Limba NEW
Stacey M FollerRussiaElwin Sharvill NEW
David F WieserBrazilAmy Elsner QUALIFIED
Jennifer V CampainAustraliaElwin Sharvill NEW
Tony D BologniaAustraliaBernardo Dominic NEW
Cody C CaldareraArgentinaXuxue Feng UNQUALIFIED
Smith V OstroskyItalyBernardo Dominic QUALIFIED
Morrow F RoysterUnited KingdomIoni Bowcher QUALIFIED
Francesco Y BowleyItalyOnyama Limba NEGOTIATION
Alejandro U FigeroaFranceAsiya Javayant UNQUALIFIED
Juan V RulapaughBrazilXuxue Feng NEGOTIATION
Alejandro Q CampainRussiaIvan Magalhaes UNQUALIFIED
Arvin T DarakjyAustraliaStephen Shaw NEGOTIATION
Francesco F RulapaughFranceBernardo Dominic QUALIFIED
Jefferson E MacleadGermanyElwin Sharvill 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>