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
Silvio S TollnerGermanyBernardo Dominic QUALIFIED
Darci H GlickGermanyBernardo Dominic NEW
Maria R IturbideItalyAnna Fali QUALIFIED
Kaitlin P TollnerIndiaStephen Shaw RENEWAL
Nicolas D BologniaSpainIvan Magalhaes PROPOSAL
Aika Z FigeroaGermanyAsiya Javayant PROPOSAL
Aika W WaycottJapanAnna Fali NEW
Murillo J SaylorsBrazilIvan Magalhaes NEGOTIATION
Juan S RimArgentinaAsiya Javayant PROPOSAL
Leja U MarrierUnited KingdomIoni Bowcher PROPOSAL
Mayumi K VocelkaCanadaIoni Bowcher QUALIFIED
Darci A SaylorsGermanyBernardo Dominic UNQUALIFIED
Adams N BowleyJapanXuxue Feng RENEWAL
Costa G RimJapanXuxue Feng PROPOSAL
Misaki R GlickAustraliaAsiya Javayant PROPOSAL
Alejandro K SaylorsArgentinaXuxue Feng QUALIFIED
Cody P MacleadBrazilIvan Magalhaes RENEWAL
Kaitlin K RutaJapanAmy Elsner QUALIFIED
Leon X MarrierSpainIvan Magalhaes NEW
Maria S IturbideRussiaIoni Bowcher NEGOTIATION
Juan A MarrierRussiaIvan Magalhaes NEGOTIATION
Kaitlin H OstroskyUnited KingdomBernardo Dominic PROPOSAL
Aika N StensethBrazilAmy Elsner RENEWAL
Leja T NickaItalyElwin Sharvill NEW
Deepesh M WaycottCanadaIvan Magalhaes NEW
Clifford R AlbaresItalyXuxue Feng UNQUALIFIED
James V ShinkoGermanyElwin Sharvill NEW
Claire E GlickJapanAmy Elsner RENEWAL
Leon F GauchoArgentinaXuxue Feng NEGOTIATION
Darci O RutaArgentinaBernardo Dominic NEW
Misaki Y MaletIndiaIvan Magalhaes RENEWAL
Kaitlin G PaprockiSpainOnyama Limba PROPOSAL
Cody I InouyeGermanyXuxue Feng NEGOTIATION
Sinclair M RoysterFranceIvan Magalhaes RENEWAL
Aruna J WieserBrazilBernardo Dominic QUALIFIED
Aditya P CaldareraGermanyAsiya Javayant QUALIFIED
Murillo P SergiFranceIvan Magalhaes NEGOTIATION
Jeanfrancois J WaycottAustraliaIvan Magalhaes PROPOSAL
Aika E VocelkaRussiaAsiya Javayant UNQUALIFIED
Sinclair W CaudyBrazilStephen Shaw UNQUALIFIED
Ivar G RimFranceStephen Shaw QUALIFIED
Maria Z PaprockiUnited KingdomStephen Shaw RENEWAL
Faith S OstroskyItalyAnna Fali UNQUALIFIED
Nicolas W DarakjyAustraliaElwin Sharvill PROPOSAL
David W MorascaFranceElwin Sharvill QUALIFIED
Francesco S AmigonGermanyIvan Magalhaes NEGOTIATION
Octavia L FollerAustraliaStephen Shaw RENEWAL
Stacey R BowleySpainOnyama Limba PROPOSAL
Silvio G GlickCanadaElwin Sharvill NEGOTIATION
Leon C WieserBrazilBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Johnson X FlosiIndiaStephen Shaw QUALIFIED
Maria S MaletAustraliaOnyama Limba RENEWAL
Aruna X DoeSpainAsiya Javayant PROPOSAL
Arvin W RutaAustraliaOnyama Limba UNQUALIFIED
Maria J KolmetzSpainAnna Fali QUALIFIED
Maisha N NestleGermanyIoni Bowcher RENEWAL
Deepesh L ChuiBrazilAsiya Javayant UNQUALIFIED
Alejandro T MacleadIndiaAnna Fali RENEWAL
Chavez I SergiRussiaAsiya Javayant NEW
Leon E RulapaughSpainStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar M PaprockiItaly2024-04-20Dorl, James J Esq NEGOTIATION64Ioni Bowcher
1001Maisha L BriddickGermany2024-04-25Truhlar And Truhlar Attys RENEWAL24Asiya Javayant
1002Cody P RoysterAustralia2024-04-08Printing Dimensions UNQUALIFIED94Elwin Sharvill
1003Salvatore V FlosiCanada2024-04-07Printing Dimensions QUALIFIED10Bernardo Dominic
1004Mujtaba S DarakjyCanada2024-04-25Feltz Printing Service NEW66Asiya Javayant
1005Sinclair H OldroydRussia2024-04-15Chanay, Jeffrey A Esq QUALIFIED87Bernardo Dominic
1006Leja O FlosiJapan2024-04-26Chanay, Jeffrey A Esq NEW44Bernardo Dominic
1007Isabel C GillianIndia2024-04-16Dorl, James J Esq PROPOSAL14Ivan Magalhaes
1008Leon N MarrierRussia2024-04-02Chanay, Jeffrey A Esq RENEWAL6Xuxue Feng
1009Francesco J GillianAustralia2024-04-23Chanay, Jeffrey A Esq NEW48Stephen Shaw
1010Misaki I FigeroaFrance2024-04-01Rousseaux, Michael Esq QUALIFIED42Amy Elsner
1011Stacey L StockhamItaly2024-04-18Benton, John B Jr UNQUALIFIED40Bernardo Dominic
1012Chavez R SaylorsItaly2024-04-21Dorl, James J Esq PROPOSAL63Elwin Sharvill
1013Nicolas D KuskoItaly2024-04-23Morlong Associates QUALIFIED3Ivan Magalhaes
1014Morrow E MorascaUnited Kingdom2024-04-20Rousseaux, Michael Esq NEGOTIATION32Stephen Shaw
1015Maria T SchemmerGermany2024-04-28Chapman, Ross E Esq NEW21Ivan Magalhaes
1016Juan C AlbaresBrazil2024-04-08Commercial Press PROPOSAL74Ivan Magalhaes
1017Jefferson R WieserIndia2024-03-30Rousseaux, Michael Esq NEGOTIATION20Onyama Limba
1018Ashley M PerinBrazil2024-03-30Rousseaux, Michael Esq NEW9Ioni Bowcher
1019Sinclair S AlbaresSpain2024-04-06Feltz Printing Service NEW87Stephen Shaw
1020Sinclair Z RimIndia2024-04-18Chemel, James L Cpa RENEWAL89Ivan Magalhaes
1021Sinclair L VocelkaCanada2024-04-26Buckley Miller Wright PROPOSAL45Asiya Javayant
1022Antonio Q DarakjyAustralia2024-04-07Benton, John B Jr QUALIFIED85Asiya Javayant
1023Ricardo C MacleadBrazil2024-04-11Printing Dimensions PROPOSAL38Xuxue Feng
1024Antonio Y FlosiGermany2024-04-21Chapman, Ross E Esq QUALIFIED57Asiya Javayant
1025Morrow Q FlosiBrazil2024-04-28King, Christopher A Esq QUALIFIED92Amy Elsner
1026Emily M SlusarskiSpain2024-04-10Benton, John B Jr NEGOTIATION91Asiya Javayant
1027Aika I PoquetteIndia2024-04-03Chanay, Jeffrey A Esq UNQUALIFIED11Onyama Limba
1028Stacey R FollerUnited Kingdom2024-04-02Chemel, James L Cpa UNQUALIFIED93Anna Fali
1029Jones O MaletFrance2024-04-06King, Christopher A Esq RENEWAL38Stephen Shaw
1030Emily T AlbaresUnited Kingdom2024-04-03Truhlar And Truhlar Attys QUALIFIED65Amy Elsner
1031David X PerinRussia2024-04-24Benton, John B Jr RENEWAL98Stephen Shaw
1032Stacey X PoquetteArgentina2024-03-30Chanay, Jeffrey A Esq NEW40Stephen Shaw
1033Maisha O GlickUnited Kingdom2024-04-21Rousseaux, Michael Esq PROPOSAL54Elwin Sharvill
1034Clifford W GlickCanada2024-04-12Printing Dimensions PROPOSAL60Ivan Magalhaes
1035Alejandro O SaylorsRussia2024-04-18Printing Dimensions NEGOTIATION17Onyama Limba
1036Greenwood F TollnerSpain2024-04-21Benton, John B Jr UNQUALIFIED58Onyama Limba
1037Johnson N BologniaUnited Kingdom2024-04-15Benton, John B Jr UNQUALIFIED62Xuxue Feng
1038Misaki X DoeJapan2024-04-05Benton, John B Jr PROPOSAL6Ioni Bowcher
1039Antonio E CaudyRussia2024-04-17Chapman, Ross E Esq RENEWAL79Asiya Javayant
1040Darci C FlosiCanada2024-04-21Commercial Press RENEWAL85Elwin Sharvill
1041Maria W BologniaBrazil2024-04-24Benton, John B Jr RENEWAL71Asiya Javayant
1042Johnson U WaycottCanada2024-04-14Rangoni Of Florence NEW42Ioni Bowcher
1043Antonio F ShinkoBrazil2024-04-07Chapman, Ross E Esq NEGOTIATION90Ivan Magalhaes
1044Adams V OstroskyFrance2024-04-19Chanay, Jeffrey A Esq NEGOTIATION81Ivan Magalhaes
1045Rodrigues O OldroydJapan2024-04-06Printing Dimensions NEW94Onyama Limba
1046Smith P SchemmerUnited Kingdom2024-04-15Commercial Press PROPOSAL16Stephen Shaw
1047Alejandro B OldroydRussia2024-04-28Rangoni Of Florence NEGOTIATION79Elwin Sharvill
1048Tony Y WaycottIndia2024-04-16Buckley Miller Wright RENEWAL89Stephen Shaw
1049Francesco W BologniaRussia2024-04-10Chapman, Ross E Esq QUALIFIED14Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Morrow N RoysterFranceBernardo Dominic NEW
Antonio I MaletFranceAmy Elsner NEW
Sinclair F ChuiBrazilXuxue Feng PROPOSAL
Wickens G MaletArgentinaAnna Fali RENEWAL
Mayumi V VocelkaArgentinaXuxue Feng NEGOTIATION
Jefferson B BriddickCanadaBernardo Dominic RENEWAL
Izzy B KolmetzSpainBernardo Dominic UNQUALIFIED
Maisha I OldroydCanadaBernardo Dominic RENEWAL
Octavia T MarrierAustraliaXuxue Feng PROPOSAL
Jefferson Q MaletFranceXuxue Feng NEW
Murillo C BologniaSpainStephen Shaw RENEWAL
Maisha R KolmetzAustraliaBernardo Dominic QUALIFIED
David K GauchoGermanyStephen Shaw UNQUALIFIED
Julie K PerinCanadaOnyama Limba RENEWAL
Misaki V VenereItalyIoni Bowcher NEW
Stacey Q NestleFranceXuxue Feng NEGOTIATION
Mayumi V DarakjyArgentinaElwin Sharvill UNQUALIFIED
Munro J MarrierArgentinaOnyama Limba UNQUALIFIED
Wickens Z InouyeArgentinaAnna Fali QUALIFIED
Izzy L RimUnited KingdomXuxue Feng NEGOTIATION
Jennifer O BowleySpainStephen Shaw UNQUALIFIED
Wickens M MarrierJapanAnna Fali NEW
Wickens R TollnerFranceAsiya Javayant NEGOTIATION
Emily O DilliardRussiaAmy Elsner PROPOSAL
Antonio P WieserCanadaIvan Magalhaes UNQUALIFIED
Claire R KolmetzJapanBernardo Dominic NEW
Kaitlin A BologniaCanadaIvan Magalhaes QUALIFIED
Aditya R KolmetzGermanyIvan Magalhaes NEW
Maisha B CaudyAustraliaIoni Bowcher QUALIFIED
Ricardo R RoysterGermanyIoni Bowcher RENEWAL
Isabel J CampainRussiaIvan Magalhaes NEGOTIATION
Greenwood K DoeIndiaAmy Elsner NEW
Aika I ButtArgentinaIoni Bowcher QUALIFIED
David F SchemmerArgentinaIoni Bowcher UNQUALIFIED
Jefferson M IturbideRussiaIoni Bowcher QUALIFIED
Mujtaba C VenereItalyOnyama Limba QUALIFIED
Leon X GarufiRussiaIvan Magalhaes UNQUALIFIED
David Z GlickBrazilXuxue Feng NEGOTIATION
Maria Z BologniaUnited KingdomElwin Sharvill NEGOTIATION
Ivar U GlickItalyBernardo Dominic NEW
Sinclair X GlickSpainOnyama Limba NEGOTIATION
Maria H InouyeItalyOnyama Limba PROPOSAL
Ashley V ChuiFranceXuxue Feng NEGOTIATION
Greenwood H BriddickFranceElwin Sharvill UNQUALIFIED
Isabel Z OldroydFranceIoni Bowcher NEW
Rodrigues P ChuiCanadaAnna Fali RENEWAL
James P SchemmerArgentinaIoni Bowcher UNQUALIFIED
Antonio X NickaGermanyAnna Fali UNQUALIFIED
Jeanfrancois P SlusarskiItalyAnna Fali QUALIFIED
Johnson T DarakjyRussiaElwin Sharvill RENEWAL
Frozen Columns
Name
Leja W Shinko
Nicolas M Glick
Alejandro V Caudy
Aika E Darakjy
Nicolas J Royster
Rodrigues F Rulapaugh
Kadeem R Sergi
Wickens S Waycott
Mujtaba U Gaucho
David A Dilliard
Francesco V Royster
James I Venere
Antonio O Butt
Murillo T Schemmer
Morrow B Gaucho
David G Ferencz
Greenwood V Iturbide
Octavia Y Whobrey
Ivar O Oldroyd
Chavez B Inouye
Arvin O Nestle
Ashley M Wieser
Faith N Marrier
Johnson T Paprocki
Sinclair Q Morasca
Aruna N Royster
Faith C Maclead
Salvatore Q Vocelka
Rodrigues R Vocelka
Aditya X Slusarski
Tony E Figeroa
Mayumi Z Iturbide
Tony F Waycott
Octavia P Kusko
Morrow A Rim
Alejandro R Ostrosky
Aika M Gillian
Cody R Butt
Juan J Gillian
James F Venere
Claire W Saylors
Darci Y Caudy
Rodrigues K Perin
Greenwood H Saylors
Deepesh B Gillian
Jones K Rulapaugh
Octavia V Oldroyd
Arvin Z Malet
David J Dilliard
Cody L Wieser
IdCountryDate
1000Brazil2024-04-10
1001United Kingdom2024-04-16
1002Brazil2024-04-19
1003Canada2024-04-10
1004Russia2024-04-17
1005Spain2024-04-04
1006Spain2024-04-17
1007Germany2024-04-13
1008Canada2024-04-07
1009France2024-04-10
1010United Kingdom2024-04-11
1011Argentina2024-04-12
1012Brazil2024-04-17
1013Spain2024-04-07
1014India2024-04-20
1015Brazil2024-04-04
1016Spain2024-04-20
1017Russia2024-04-11
1018Russia2024-04-23
1019Russia2024-04-16
1020India2024-04-01
1021Canada2024-04-17
1022France2024-04-07
1023United Kingdom2024-04-12
1024Spain2024-04-04
1025United Kingdom2024-04-19
1026Germany2024-04-14
1027Australia2024-04-15
1028Germany2024-04-26
1029Russia2024-04-01
1030Brazil2024-04-18
1031Italy2024-04-20
1032Argentina2024-04-13
1033India2024-04-09
1034Canada2024-04-12
1035Germany2024-04-09
1036Argentina2024-04-27
1037Canada2024-04-24
1038Spain2024-04-05
1039Italy2024-04-08
1040India2024-04-13
1041Australia2024-04-01
1042Japan2024-04-20
1043Russia2024-04-14
1044Argentina2024-04-05
1045Italy2024-04-13
1046Germany2024-04-16
1047Russia2024-04-19
1048Russia2024-04-08
1049Spain2024-04-01

On-Demand Data

NameIdCountryDate
Jones Q Flosi1000Italy2024-04-20
Darci Y Stenseth1001India2024-04-15
Greenwood M Morasca1002Spain2024-04-06
Murillo R Doe1003India2024-04-26
Ivar U Malet1004Australia2024-04-02
Munro O Kusko1005France2024-04-18
Aditya E Wieser1006Germany2024-04-20
Deepesh M Oldroyd1007Spain2024-04-03
Rodrigues P Amigon1008Russia2024-04-10
Kaitlin Z Shinko1009France2024-04-03
Stacey K Waycott1010Germany2024-04-13
Rodrigues G Dilliard1011United Kingdom2024-04-03
Leja N Albares1012Japan2024-04-17
James Q Ferencz1013Australia2024-04-20
Emily B Perin1014United Kingdom2024-04-13
Izzy J Poquette1015Japan2024-04-18
Rodrigues I Inouye1016Australia2024-04-06
Ricardo H Kolmetz1017Russia2024-04-07
Clifford S Poquette1018Brazil2024-04-05
Claire K Slusarski1019India2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody R RoysterIndiaAsiya Javayant NEGOTIATION
Isabel R DilliardIndiaElwin Sharvill NEW
Silvio W WaycottAustraliaBernardo Dominic QUALIFIED
Johnson M StensethFranceXuxue Feng UNQUALIFIED
Arvin N WaycottUnited KingdomIvan Magalhaes RENEWAL
Deepesh L RutaJapanXuxue Feng NEGOTIATION
Mayumi Q WieserCanadaOnyama Limba NEW
Ashley T MaletArgentinaAmy Elsner NEGOTIATION
Mujtaba N RulapaughRussiaBernardo Dominic QUALIFIED
James T NickaJapanOnyama Limba NEGOTIATION
Faith P FigeroaUnited KingdomXuxue Feng NEGOTIATION
Leja U DoeFranceAsiya Javayant QUALIFIED
Octavia H ShinkoCanadaIvan Magalhaes PROPOSAL
Greenwood U ChuiCanadaXuxue Feng NEW
Leon D DilliardArgentinaAsiya Javayant PROPOSAL
Chavez P GlickFranceIvan Magalhaes PROPOSAL
Aditya O FlosiJapanElwin Sharvill RENEWAL
Cody Q FigeroaIndiaElwin Sharvill NEW
Alejandro I SergiFranceIvan Magalhaes NEGOTIATION
Tony I GarufiArgentinaXuxue Feng NEW
Nicolas A MaletRussiaAsiya Javayant UNQUALIFIED
Deepesh S GauchoBrazilAnna Fali NEW
Ashley I ShinkoFranceXuxue Feng RENEWAL
Jeanfrancois L PaprockiIndiaXuxue Feng PROPOSAL
Ivar R InouyeBrazilAsiya Javayant UNQUALIFIED
Julie S SergiFranceAsiya Javayant NEW
Morrow P FerenczCanadaElwin Sharvill NEGOTIATION
Stacey J RimSpainXuxue Feng NEGOTIATION
Wickens I InouyeUnited KingdomStephen Shaw RENEWAL
Emily C OstroskyGermanyAmy Elsner QUALIFIED
Silvio N DarakjyRussiaStephen Shaw RENEWAL
Faith R GillianRussiaBernardo Dominic PROPOSAL
Julie A GlickBrazilBernardo Dominic NEGOTIATION
Cody J InouyeJapanAsiya Javayant NEGOTIATION
Salvatore H VenereItalyElwin Sharvill QUALIFIED
Ivar V FerenczGermanyIoni Bowcher UNQUALIFIED
Kaitlin D CampainAustraliaStephen Shaw UNQUALIFIED
Claire B FlosiRussiaStephen Shaw NEW
Adams A MorascaSpainIoni Bowcher RENEWAL
Nicolas F FigeroaBrazilAsiya Javayant 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>