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
Darci S FlosiBrazilStephen Shaw RENEWAL
Julie S CaldareraRussiaBernardo Dominic PROPOSAL
Silvio L SlusarskiCanadaElwin Sharvill QUALIFIED
Sinclair B AmigonItalyBernardo Dominic PROPOSAL
Aika T RimArgentinaBernardo Dominic NEW
Rodrigues J OldroydBrazilIvan Magalhaes NEGOTIATION
Mayumi Q NestleGermanyAmy Elsner QUALIFIED
Emily J VenereIndiaAmy Elsner NEGOTIATION
Costa K RoysterRussiaElwin Sharvill NEW
Salvatore P GauchoFranceAmy Elsner QUALIFIED
James K CaudyAustraliaIvan Magalhaes RENEWAL
Murillo G VocelkaCanadaIvan Magalhaes RENEWAL
Murillo G DilliardBrazilBernardo Dominic NEGOTIATION
Faith M StockhamJapanAsiya Javayant RENEWAL
Mayumi Q VenereAustraliaAnna Fali PROPOSAL
Deepesh U RimIndiaBernardo Dominic PROPOSAL
James A MaletAustraliaBernardo Dominic RENEWAL
Arvin D DilliardFranceOnyama Limba QUALIFIED
Ivar Q PerinGermanyIvan Magalhaes PROPOSAL
Johnson Q SchemmerRussiaIoni Bowcher NEW
Antonio O GillianAustraliaElwin Sharvill QUALIFIED
Kadeem M DarakjyBrazilAsiya Javayant PROPOSAL
Emily G StockhamCanadaIoni Bowcher PROPOSAL
Juan L SaylorsFranceXuxue Feng PROPOSAL
Munro G WieserCanadaIvan Magalhaes NEW
Misaki V GarufiAustraliaAsiya Javayant RENEWAL
Johnson Z GillianArgentinaIoni Bowcher RENEWAL
Leja W KolmetzItalyAmy Elsner PROPOSAL
Faith G AmigonUnited KingdomElwin Sharvill QUALIFIED
Cody E MaletRussiaIvan Magalhaes QUALIFIED
Johnson O FlosiArgentinaIvan Magalhaes PROPOSAL
Octavia A WhobreyBrazilBernardo Dominic NEGOTIATION
Emily Z FollerFranceAmy Elsner QUALIFIED
Stacey O GarufiItalyIoni Bowcher PROPOSAL
Juan G InouyeFranceAmy Elsner NEGOTIATION
Emily T MaletBrazilAmy Elsner PROPOSAL
Arvin I VocelkaRussiaXuxue Feng NEGOTIATION
Juan F MacleadCanadaAnna Fali NEW
Nicolas G WaycottGermanyIoni Bowcher NEGOTIATION
Mujtaba Q StensethJapanBernardo Dominic NEGOTIATION
Jennifer Z GillianCanadaIoni Bowcher UNQUALIFIED
Stacey P AlbaresArgentinaIoni Bowcher UNQUALIFIED
Kaitlin Z PoquetteJapanIoni Bowcher NEGOTIATION
Octavia I StockhamGermanyAmy Elsner UNQUALIFIED
Aruna G DoeAustraliaAnna Fali PROPOSAL
Cody Z PaprockiFranceIvan Magalhaes PROPOSAL
Darci Q GlickJapanElwin Sharvill UNQUALIFIED
Faith I InouyeBrazilIoni Bowcher NEW
Jefferson T GarufiUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas U RimCanadaAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ivar A ButtCanadaElwin Sharvill RENEWAL
Misaki R FollerSpainStephen Shaw RENEWAL
Octavia Z GarufiIndiaIvan Magalhaes PROPOSAL
Costa L StensethBrazilBernardo Dominic RENEWAL
Nicolas Y WieserBrazilIvan Magalhaes RENEWAL
Smith Y ChuiGermanyAnna Fali NEGOTIATION
Ashley E NickaItalyAmy Elsner QUALIFIED
Jeanfrancois G ChuiGermanyAsiya Javayant UNQUALIFIED
Juan W ShinkoRussiaIvan Magalhaes QUALIFIED
Greenwood T CaudyItalyStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro H ShinkoJapan2024-02-29Buckley Miller Wright NEW35Elwin Sharvill
1001Kadeem S MacleadCanada2024-03-15Truhlar And Truhlar Attys NEW18Asiya Javayant
1002Sinclair W DilliardRussia2024-03-11Printing Dimensions RENEWAL28Anna Fali
1003Ashley B RoysterCanada2024-03-15Feltz Printing Service RENEWAL91Asiya Javayant
1004Silvio A GauchoBrazil2024-03-03Rangoni Of Florence RENEWAL62Anna Fali
1005Jefferson J StensethArgentina2024-03-07Printing Dimensions QUALIFIED25Anna Fali
1006Aika P DoeBrazil2024-02-20Printing Dimensions QUALIFIED1Ivan Magalhaes
1007Kadeem F SergiBrazil2024-02-18Buckley Miller Wright RENEWAL31Ioni Bowcher
1008Jefferson A GauchoAustralia2024-02-20Feiner Bros RENEWAL75Ivan Magalhaes
1009Nicolas Z DoeArgentina2024-02-26Benton, John B Jr UNQUALIFIED36Bernardo Dominic
1010Claire E NestleCanada2024-03-05Printing Dimensions QUALIFIED7Xuxue Feng
1011Leja E GillianArgentina2024-03-07Chemel, James L Cpa QUALIFIED96Asiya Javayant
1012Izzy O OstroskyJapan2024-03-10Printing Dimensions QUALIFIED27Xuxue Feng
1013Misaki W ChuiJapan2024-02-19Buckley Miller Wright NEW19Asiya Javayant
1014Sinclair E RimIndia2024-03-04Commercial Press QUALIFIED9Elwin Sharvill
1015Aika C PoquetteAustralia2024-02-22Rangoni Of Florence PROPOSAL49Stephen Shaw
1016Morrow N BowleyGermany2024-02-22Morlong Associates NEW31Onyama Limba
1017Jeanfrancois K SergiCanada2024-02-23Rangoni Of Florence PROPOSAL56Asiya Javayant
1018Antonio Y TollnerCanada2024-02-25Truhlar And Truhlar Attys UNQUALIFIED55Elwin Sharvill
1019Juan Q RimJapan2024-02-29Chemel, James L Cpa NEW0Ioni Bowcher
1020Aditya W FollerGermany2024-03-09Truhlar And Truhlar Attys RENEWAL78Amy Elsner
1021Aditya I WaycottSpain2024-02-24Buckley Miller Wright NEW27Ioni Bowcher
1022Salvatore A KolmetzItaly2024-02-28Benton, John B Jr UNQUALIFIED60Stephen Shaw
1023Clifford I FollerItaly2024-02-23Benton, John B Jr UNQUALIFIED5Elwin Sharvill
1024James S GillianCanada2024-03-09Rousseaux, Michael Esq QUALIFIED95Amy Elsner
1025Greenwood P IturbideSpain2024-03-16Chapman, Ross E Esq RENEWAL2Anna Fali
1026Morrow Y CaldareraAustralia2024-02-27Dorl, James J Esq UNQUALIFIED97Anna Fali
1027Faith F GlickIndia2024-03-14Rousseaux, Michael Esq UNQUALIFIED45Onyama Limba
1028Emily L StockhamAustralia2024-03-17Feiner Bros RENEWAL34Stephen Shaw
1029Kaitlin B SchemmerArgentina2024-03-02Dorl, James J Esq RENEWAL39Ivan Magalhaes
1030Julie W MaletFrance2024-03-15Rousseaux, Michael Esq UNQUALIFIED76Stephen Shaw
1031Cody E NickaFrance2024-02-24Truhlar And Truhlar Attys PROPOSAL95Anna Fali
1032Chavez Z WieserGermany2024-02-26Truhlar And Truhlar Attys QUALIFIED56Bernardo Dominic
1033Salvatore H TollnerIndia2024-03-02Dorl, James J Esq PROPOSAL21Onyama Limba
1034Juan C SchemmerIndia2024-03-04Chemel, James L Cpa PROPOSAL74Amy Elsner
1035Maisha A BowleyUnited Kingdom2024-03-07Morlong Associates PROPOSAL35Amy Elsner
1036Morrow B PaprockiFrance2024-03-04King, Christopher A Esq NEGOTIATION79Amy Elsner
1037David N VocelkaItaly2024-03-06Feiner Bros QUALIFIED81Onyama Limba
1038Johnson W CampainJapan2024-02-20Truhlar And Truhlar Attys QUALIFIED50Asiya Javayant
1039Mayumi X GarufiAustralia2024-02-21Printing Dimensions QUALIFIED72Amy Elsner
1040Francesco O CaldareraArgentina2024-03-01Morlong Associates NEGOTIATION41Onyama Limba
1041Jefferson B FerenczFrance2024-03-08Printing Dimensions UNQUALIFIED82Xuxue Feng
1042Alejandro M StockhamIndia2024-03-07Benton, John B Jr NEGOTIATION47Ivan Magalhaes
1043Clifford R NestleSpain2024-03-17Chapman, Ross E Esq NEGOTIATION82Onyama Limba
1044Arvin J NickaJapan2024-03-04Rousseaux, Michael Esq QUALIFIED77Elwin Sharvill
1045James Y FigeroaRussia2024-03-11Rousseaux, Michael Esq NEGOTIATION7Ioni Bowcher
1046Cody J DoeUnited Kingdom2024-03-06Chanay, Jeffrey A Esq UNQUALIFIED87Bernardo Dominic
1047Wickens K TollnerAustralia2024-02-23Dorl, James J Esq PROPOSAL10Elwin Sharvill
1048Jones V BowleyJapan2024-03-03Benton, John B Jr PROPOSAL20Elwin Sharvill
1049Salvatore R RoysterIndia2024-03-02Rousseaux, Michael Esq PROPOSAL4Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois S RulapaughIndiaElwin Sharvill NEGOTIATION
Izzy N CaudyBrazilElwin Sharvill NEGOTIATION
Izzy A FigeroaRussiaAmy Elsner NEGOTIATION
Nicolas U ShinkoSpainBernardo Dominic QUALIFIED
Kadeem S MarrierBrazilElwin Sharvill PROPOSAL
Aika S BologniaFranceIvan Magalhaes RENEWAL
Julie V PaprockiItalyIoni Bowcher UNQUALIFIED
Misaki I CaldareraArgentinaAsiya Javayant NEGOTIATION
Alejandro O CaudyRussiaElwin Sharvill QUALIFIED
Jeanfrancois Y PerinSpainBernardo Dominic NEGOTIATION
Ivar O BologniaArgentinaAmy Elsner QUALIFIED
Maria R CampainFranceOnyama Limba RENEWAL
Morrow M DoeBrazilAmy Elsner RENEWAL
Mayumi T RutaBrazilXuxue Feng UNQUALIFIED
Francesco C AmigonSpainAnna Fali PROPOSAL
Emily S OldroydFranceOnyama Limba NEGOTIATION
Rodrigues H StockhamItalyOnyama Limba NEW
Maisha K DarakjyBrazilOnyama Limba UNQUALIFIED
Leja Y WhobreyCanadaOnyama Limba NEGOTIATION
Kadeem Z CaudyAustraliaXuxue Feng QUALIFIED
Stacey S InouyeJapanOnyama Limba UNQUALIFIED
Jeanfrancois O MaletJapanElwin Sharvill QUALIFIED
Morrow E SchemmerCanadaAsiya Javayant UNQUALIFIED
Wickens N SlusarskiArgentinaOnyama Limba NEW
Aika Y RimUnited KingdomIvan Magalhaes PROPOSAL
Salvatore J SlusarskiCanadaAmy Elsner UNQUALIFIED
Julie T GillianJapanOnyama Limba NEW
Ashley X MarrierFranceElwin Sharvill NEGOTIATION
Emily V MacleadSpainElwin Sharvill NEW
Mayumi N BriddickGermanyStephen Shaw NEW
Emily G ShinkoRussiaXuxue Feng QUALIFIED
Juan R TollnerBrazilAmy Elsner NEW
Aruna K ButtJapanStephen Shaw RENEWAL
Alejandro U DarakjySpainAmy Elsner RENEWAL
Maisha S SlusarskiItalyIoni Bowcher QUALIFIED
Johnson H PoquetteSpainAnna Fali UNQUALIFIED
Ivar X WaycottGermanyXuxue Feng NEW
Jennifer O WaycottSpainOnyama Limba QUALIFIED
Greenwood M ShinkoBrazilIoni Bowcher RENEWAL
David Y NestleSpainBernardo Dominic RENEWAL
Ivar W TollnerCanadaIvan Magalhaes NEGOTIATION
Cody S RimArgentinaAsiya Javayant PROPOSAL
Salvatore C BowleyGermanyAnna Fali PROPOSAL
Jones W IturbideRussiaIoni Bowcher RENEWAL
Isabel F TollnerGermanyAsiya Javayant QUALIFIED
Clifford B DarakjySpainAsiya Javayant NEGOTIATION
Johnson K BowleyAustraliaAnna Fali NEGOTIATION
Morrow N KolmetzItalyBernardo Dominic NEW
Tony B GarufiCanadaStephen Shaw NEW
Leon Q AlbaresBrazilIvan Magalhaes PROPOSAL
Frozen Columns
Name
Julie I Doe
Aika Q Tollner
Octavia G Campain
Darci A Kolmetz
Aruna S Gaucho
Silvio C Stenseth
Aika T Saylors
Jefferson M Briddick
Juan V Briddick
Jennifer V Slusarski
Misaki H Marrier
Jeanfrancois C Whobrey
Maria J Saylors
Morrow T Waycott
Deepesh P Bowley
Ivar G Venere
Mujtaba J Nicka
David Y Malet
Arvin N Venere
Johnson S Sergi
Ivar N Briddick
Costa L Bolognia
Mayumi W Slusarski
Leon T Kolmetz
Ashley H Dilliard
Jeanfrancois M Rim
Mujtaba B Kolmetz
Deepesh U Schemmer
Isabel U Waycott
Ashley Q Briddick
Jefferson D Wieser
Smith H Ferencz
Maria W Morasca
Jeanfrancois S Sergi
Adams T Campain
Juan T Garufi
Rodrigues I Garufi
Salvatore P Kusko
Francesco X Royster
Darci I Vocelka
Sinclair Y Gaucho
Antonio O Flosi
Sinclair Y Maclead
Leja M Chui
Claire N Figeroa
Adams Y Figeroa
Munro K Chui
Misaki H Iturbide
Izzy V Butt
Morrow F Bolognia
IdCountryDate
1000Australia2024-02-29
1001Argentina2024-02-27
1002Japan2024-03-14
1003Australia2024-03-15
1004Australia2024-03-10
1005Russia2024-03-08
1006Russia2024-03-02
1007Spain2024-03-11
1008Italy2024-03-17
1009Brazil2024-03-07
1010Canada2024-03-12
1011Russia2024-02-19
1012Germany2024-02-18
1013Canada2024-03-02
1014Spain2024-02-28
1015Canada2024-03-01
1016Italy2024-03-07
1017Japan2024-03-10
1018Russia2024-03-18
1019Italy2024-03-09
1020France2024-03-08
1021Argentina2024-03-02
1022Australia2024-02-21
1023Russia2024-02-29
1024Australia2024-02-28
1025France2024-02-27
1026France2024-03-15
1027Italy2024-02-21
1028Australia2024-02-18
1029France2024-02-22
1030India2024-02-18
1031Spain2024-02-28
1032Russia2024-03-09
1033Russia2024-03-16
1034France2024-02-19
1035France2024-03-13
1036Canada2024-03-12
1037Russia2024-02-22
1038Argentina2024-03-12
1039Canada2024-02-21
1040Canada2024-02-23
1041India2024-03-11
1042Brazil2024-02-21
1043Canada2024-03-08
1044Canada2024-03-14
1045Russia2024-02-21
1046Canada2024-02-29
1047India2024-03-08
1048Brazil2024-02-19
1049Russia2024-03-15

On-Demand Data

NameIdCountryDate
Morrow P Darakjy1000Canada2024-03-10
Arvin L Royster1001Argentina2024-02-23
Aditya J Poquette1002Japan2024-02-18
Izzy C Nicka1003Germany2024-03-03
Leja O Rim1004Italy2024-02-29
Greenwood O Nicka1005Italy2024-02-26
Leja X Venere1006Germany2024-03-18
Julie U Bolognia1007Italy2024-02-29
Emily I Venere1008Russia2024-03-09
Mujtaba X Waycott1009Brazil2024-03-15
Greenwood O Schemmer1010Germany2024-03-04
Jones I Dilliard1011France2024-03-01
Jefferson X Malet1012France2024-03-12
Kadeem X Perin1013Brazil2024-03-13
Adams J Stockham1014Russia2024-02-27
Maisha H Maclead1015Australia2024-02-23
Ivar M Foller1016Germany2024-03-11
Munro I Shinko1017France2024-02-28
Morrow N Bolognia1018United Kingdom2024-03-10
Maria B Malet1019Italy2024-03-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin T AmigonCanadaAnna Fali QUALIFIED
Octavia T StockhamGermanyAnna Fali QUALIFIED
Jeanfrancois Q CaldareraJapanStephen Shaw NEW
Antonio T BologniaArgentinaBernardo Dominic PROPOSAL
Cody H AlbaresItalyStephen Shaw RENEWAL
Munro J NickaArgentinaIvan Magalhaes RENEWAL
Maisha V CaudyUnited KingdomAmy Elsner NEW
Costa J SlusarskiIndiaElwin Sharvill UNQUALIFIED
Jennifer X DilliardAustraliaBernardo Dominic RENEWAL
Jefferson I PerinRussiaAmy Elsner PROPOSAL
Salvatore J GlickAustraliaXuxue Feng UNQUALIFIED
Johnson W TollnerFranceElwin Sharvill RENEWAL
Murillo C StensethArgentinaAmy Elsner PROPOSAL
Chavez N ButtFranceXuxue Feng RENEWAL
Chavez X CaldareraIndiaElwin Sharvill NEGOTIATION
Adams Y DoeSpainAmy Elsner RENEWAL
Isabel V RulapaughIndiaOnyama Limba NEGOTIATION
Leon W FollerItalyBernardo Dominic QUALIFIED
Salvatore S SlusarskiItalyBernardo Dominic UNQUALIFIED
Octavia K SchemmerAustraliaAmy Elsner UNQUALIFIED
Wickens B RulapaughAustraliaAmy Elsner NEW
Julie V KuskoUnited KingdomIoni Bowcher PROPOSAL
Cody M MaletCanadaIvan Magalhaes NEGOTIATION
Octavia I IturbideBrazilAnna Fali UNQUALIFIED
Aika F MaletRussiaOnyama Limba NEGOTIATION
Smith D TollnerSpainAsiya Javayant NEW
Rodrigues V CaudySpainIoni Bowcher QUALIFIED
Stacey R CaudyFranceElwin Sharvill UNQUALIFIED
Julie P CampainCanadaXuxue Feng UNQUALIFIED
Mayumi Y DarakjyJapanBernardo Dominic QUALIFIED
Nicolas K BologniaUnited KingdomOnyama Limba RENEWAL
Greenwood R BowleyBrazilStephen Shaw QUALIFIED
Ivar C RoysterIndiaOnyama Limba NEGOTIATION
Greenwood M FerenczJapanAsiya Javayant QUALIFIED
Salvatore V ChuiGermanyXuxue Feng PROPOSAL
Rodrigues S InouyeFranceIvan Magalhaes RENEWAL
Jones M CampainJapanAmy Elsner QUALIFIED
Izzy S OstroskyCanadaAnna Fali QUALIFIED
Faith L PerinUnited KingdomIvan Magalhaes QUALIFIED
Smith H MorascaRussiaAsiya Javayant UNQUALIFIED

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