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
Tony W BologniaGermanyIoni Bowcher RENEWAL
Murillo T KuskoArgentinaStephen Shaw NEW
Salvatore Q RoysterAustraliaAmy Elsner PROPOSAL
Murillo J CaldareraUnited KingdomStephen Shaw NEGOTIATION
Isabel C CaudyFranceOnyama Limba PROPOSAL
Maisha U MacleadUnited KingdomAsiya Javayant RENEWAL
Kadeem M FigeroaRussiaAnna Fali NEW
Arvin T DoeCanadaOnyama Limba NEGOTIATION
Murillo Z NestleRussiaElwin Sharvill NEGOTIATION
Adams R ShinkoIndiaStephen Shaw PROPOSAL
Alejandro Z WieserCanadaIvan Magalhaes QUALIFIED
Leja V MorascaRussiaIoni Bowcher RENEWAL
Alejandro Z TollnerArgentinaElwin Sharvill NEGOTIATION
Mujtaba F PoquetteSpainXuxue Feng PROPOSAL
Mujtaba S AmigonUnited KingdomStephen Shaw QUALIFIED
Faith H DilliardJapanStephen Shaw PROPOSAL
Aruna C ButtArgentinaAnna Fali NEW
Adams L RoysterArgentinaAmy Elsner RENEWAL
Clifford K MaletJapanAmy Elsner RENEWAL
Aruna M BowleyUnited KingdomIvan Magalhaes QUALIFIED
Smith A GarufiBrazilIoni Bowcher NEW
Cody Y AmigonIndiaIoni Bowcher RENEWAL
Misaki M AmigonBrazilIoni Bowcher NEGOTIATION
Aruna D NestleArgentinaStephen Shaw PROPOSAL
Silvio S CaudyBrazilAnna Fali UNQUALIFIED
Sinclair X ShinkoGermanyOnyama Limba UNQUALIFIED
Juan N NestleItalyBernardo Dominic QUALIFIED
Leon M FollerRussiaOnyama Limba PROPOSAL
Chavez W KolmetzAustraliaXuxue Feng UNQUALIFIED
Misaki J OldroydJapanAsiya Javayant QUALIFIED
Maisha O MarrierFranceIvan Magalhaes PROPOSAL
Faith W DoeSpainXuxue Feng RENEWAL
Octavia B AlbaresCanadaElwin Sharvill RENEWAL
Jones U MarrierRussiaStephen Shaw RENEWAL
Misaki B PerinJapanStephen Shaw NEW
Claire M VenereGermanyAsiya Javayant NEGOTIATION
Leja T PoquetteBrazilIoni Bowcher RENEWAL
Silvio Y BriddickRussiaAnna Fali QUALIFIED
Octavia C IturbideCanadaAsiya Javayant RENEWAL
Clifford D WaycottUnited KingdomBernardo Dominic NEGOTIATION
Jennifer X SlusarskiAustraliaOnyama Limba RENEWAL
Aruna W ShinkoFranceAmy Elsner RENEWAL
Francesco Y AlbaresItalyIvan Magalhaes QUALIFIED
Mayumi I BowleyFranceAmy Elsner QUALIFIED
Maria R MarrierAustraliaAnna Fali QUALIFIED
Ivar R CampainFranceElwin Sharvill NEW
Isabel R FigeroaAustraliaAsiya Javayant UNQUALIFIED
Izzy Z GlickRussiaElwin Sharvill RENEWAL
Aruna A MacleadItalyStephen Shaw QUALIFIED
Kaitlin P StockhamBrazilIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois T PerinFranceAnna Fali UNQUALIFIED
Maria Y FerenczIndiaAsiya Javayant NEGOTIATION
Costa Z PaprockiUnited KingdomAmy Elsner NEGOTIATION
Mayumi X BriddickSpainStephen Shaw NEW
Silvio N TollnerAustraliaBernardo Dominic PROPOSAL
Kaitlin V NestleBrazilBernardo Dominic RENEWAL
Sinclair M AmigonSpainAmy Elsner RENEWAL
Francesco X MarrierUnited KingdomAnna Fali QUALIFIED
Maria J WaycottUnited KingdomIoni Bowcher QUALIFIED
Kaitlin Q MaletAustraliaBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey O OstroskyBrazil2024-04-15King, Christopher A Esq QUALIFIED6Bernardo Dominic
1001Antonio D PoquetteCanada2024-04-17Chanay, Jeffrey A Esq RENEWAL34Anna Fali
1002Aika T ChuiIndia2024-04-18Feiner Bros PROPOSAL72Elwin Sharvill
1003David S FerenczCanada2024-04-01King, Christopher A Esq PROPOSAL11Amy Elsner
1004Aditya N SergiBrazil2024-04-27Truhlar And Truhlar Attys RENEWAL77Anna Fali
1005Isabel F CampainBrazil2024-04-28Truhlar And Truhlar Attys NEGOTIATION28Bernardo Dominic
1006Silvio C StockhamSpain2024-04-04Printing Dimensions UNQUALIFIED65Ioni Bowcher
1007Rodrigues Y AmigonSpain2024-04-25Truhlar And Truhlar Attys RENEWAL53Amy Elsner
1008Morrow R WaycottIndia2024-04-03Chanay, Jeffrey A Esq PROPOSAL7Anna Fali
1009Aruna K TollnerAustralia2024-04-14Chanay, Jeffrey A Esq NEGOTIATION18Bernardo Dominic
1010Adams N StensethCanada2024-04-25Commercial Press NEGOTIATION93Ioni Bowcher
1011James Q MaletArgentina2024-04-24King, Christopher A Esq NEW40Stephen Shaw
1012Munro R MacleadJapan2024-04-12Chanay, Jeffrey A Esq PROPOSAL25Ivan Magalhaes
1013Wickens Y RimAustralia2024-04-13Truhlar And Truhlar Attys RENEWAL75Ioni Bowcher
1014Kadeem P BologniaCanada2024-04-18Morlong Associates NEGOTIATION90Elwin Sharvill
1015David L AlbaresCanada2024-04-22Buckley Miller Wright PROPOSAL15Amy Elsner
1016Ashley G MarrierBrazil2024-03-30Chapman, Ross E Esq NEW12Ivan Magalhaes
1017Leon U FigeroaArgentina2024-04-21Printing Dimensions NEGOTIATION60Asiya Javayant
1018Arvin A NestleIndia2024-04-22Commercial Press RENEWAL57Elwin Sharvill
1019Ricardo E GarufiArgentina2024-04-26Rangoni Of Florence UNQUALIFIED84Stephen Shaw
1020Nicolas V ChuiIndia2024-04-24Buckley Miller Wright NEW22Stephen Shaw
1021Isabel X TollnerCanada2024-04-28Chapman, Ross E Esq PROPOSAL46Anna Fali
1022Faith L MaletCanada2024-04-22Printing Dimensions UNQUALIFIED77Xuxue Feng
1023Silvio C DarakjyIndia2024-04-16Benton, John B Jr RENEWAL91Onyama Limba
1024Johnson U GarufiSpain2024-04-28Buckley Miller Wright NEW91Anna Fali
1025Tony D FerenczFrance2024-04-18Printing Dimensions NEGOTIATION8Anna Fali
1026Leja T IturbideRussia2024-04-16Truhlar And Truhlar Attys RENEWAL33Stephen Shaw
1027Juan U SlusarskiFrance2024-04-28Chanay, Jeffrey A Esq NEW6Ivan Magalhaes
1028Jennifer Y PaprockiItaly2024-04-01Printing Dimensions RENEWAL74Bernardo Dominic
1029Greenwood X PoquetteCanada2024-04-16Rousseaux, Michael Esq RENEWAL58Elwin Sharvill
1030Cody J ChuiSpain2024-04-17Benton, John B Jr NEW91Elwin Sharvill
1031Deepesh V MarrierUnited Kingdom2024-04-05Chapman, Ross E Esq RENEWAL60Asiya Javayant
1032Alejandro I WhobreyAustralia2024-04-16Benton, John B Jr PROPOSAL82Xuxue Feng
1033Cody A GauchoArgentina2024-04-13Chapman, Ross E Esq UNQUALIFIED34Bernardo Dominic
1034Alejandro N RoysterAustralia2024-04-17Feltz Printing Service QUALIFIED84Asiya Javayant
1035Adams O SergiIndia2024-04-16Chemel, James L Cpa UNQUALIFIED14Onyama Limba
1036Tony A SaylorsItaly2024-04-01Commercial Press NEW95Bernardo Dominic
1037Jennifer R MarrierUnited Kingdom2024-04-16Printing Dimensions PROPOSAL1Asiya Javayant
1038Maisha E DoeGermany2024-04-11Feltz Printing Service UNQUALIFIED90Asiya Javayant
1039Chavez U DoeBrazil2024-04-03Rousseaux, Michael Esq NEGOTIATION86Bernardo Dominic
1040Costa S RutaJapan2024-04-13Chanay, Jeffrey A Esq UNQUALIFIED81Ioni Bowcher
1041Costa N ShinkoCanada2024-04-01Chapman, Ross E Esq PROPOSAL31Amy Elsner
1042Jefferson V FlosiFrance2024-04-25Chapman, Ross E Esq UNQUALIFIED15Anna Fali
1043Mayumi F GlickGermany2024-04-14Dorl, James J Esq NEGOTIATION65Ioni Bowcher
1044Rodrigues O PoquetteBrazil2024-04-21Benton, John B Jr RENEWAL3Bernardo Dominic
1045Johnson R CaudyCanada2024-04-25Rousseaux, Michael Esq UNQUALIFIED94Elwin Sharvill
1046Maisha O NickaIndia2024-04-25Printing Dimensions RENEWAL32Xuxue Feng
1047Ivar L NestleUnited Kingdom2024-04-07Rangoni Of Florence UNQUALIFIED43Ioni Bowcher
1048Izzy J CampainBrazil2024-04-09Chanay, Jeffrey A Esq PROPOSAL13Elwin Sharvill
1049Mayumi P DilliardGermany2024-04-03Morlong Associates RENEWAL43Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Silvio M AlbaresAustraliaOnyama Limba UNQUALIFIED
Jones S MorascaSpainBernardo Dominic UNQUALIFIED
Rodrigues A OstroskyUnited KingdomAmy Elsner NEW
Munro M StockhamSpainOnyama Limba RENEWAL
Ricardo C FlosiSpainOnyama Limba QUALIFIED
Deepesh Y KolmetzGermanyBernardo Dominic UNQUALIFIED
Octavia E FlosiRussiaStephen Shaw QUALIFIED
Johnson H DarakjyFranceIoni Bowcher NEGOTIATION
Smith D ButtIndiaElwin Sharvill UNQUALIFIED
Smith T MarrierCanadaAnna Fali UNQUALIFIED
Emily V SergiCanadaXuxue Feng UNQUALIFIED
Kadeem J WhobreySpainAnna Fali UNQUALIFIED
Jones V MaletGermanyBernardo Dominic NEW
Ivar I MorascaItalyOnyama Limba NEGOTIATION
Jeanfrancois G KolmetzBrazilOnyama Limba PROPOSAL
Cody S BowleyJapanStephen Shaw NEW
Mujtaba Q CampainFranceAsiya Javayant UNQUALIFIED
Kadeem J AlbaresBrazilIvan Magalhaes NEW
Francesco J FigeroaIndiaStephen Shaw UNQUALIFIED
David T SlusarskiSpainAnna Fali UNQUALIFIED
Wickens U SlusarskiIndiaAsiya Javayant QUALIFIED
Isabel Y WhobreyItalyXuxue Feng RENEWAL
Jennifer U BowleyItalyAnna Fali UNQUALIFIED
Francesco I KolmetzAustraliaAmy Elsner PROPOSAL
Sinclair T WieserAustraliaAsiya Javayant NEW
Murillo E FigeroaArgentinaElwin Sharvill NEW
Tony F KolmetzSpainOnyama Limba RENEWAL
Arvin I GauchoRussiaIvan Magalhaes RENEWAL
Kaitlin D RulapaughItalyIvan Magalhaes NEGOTIATION
David A GarufiBrazilAnna Fali UNQUALIFIED
James F AmigonGermanyBernardo Dominic QUALIFIED
Cody S MorascaIndiaBernardo Dominic QUALIFIED
Smith K SergiCanadaBernardo Dominic QUALIFIED
Alejandro T AmigonItalyOnyama Limba NEGOTIATION
Morrow O MorascaSpainStephen Shaw RENEWAL
Adams U ButtJapanAnna Fali UNQUALIFIED
Ivar U WaycottRussiaAmy Elsner UNQUALIFIED
Maisha A DilliardBrazilElwin Sharvill NEGOTIATION
Munro O StensethJapanOnyama Limba NEGOTIATION
Morrow F NickaFranceOnyama Limba PROPOSAL
Salvatore H AmigonIndiaAnna Fali RENEWAL
James P SergiIndiaStephen Shaw QUALIFIED
Morrow G RimBrazilStephen Shaw UNQUALIFIED
Smith O RoysterFranceAnna Fali UNQUALIFIED
Greenwood L FerenczItalyElwin Sharvill RENEWAL
Jefferson F VenereFranceIoni Bowcher NEGOTIATION
Juan V SaylorsBrazilBernardo Dominic PROPOSAL
Munro R IturbideUnited KingdomIoni Bowcher NEGOTIATION
Julie J WieserBrazilBernardo Dominic QUALIFIED
Darci E WieserBrazilIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Leja K Vocelka
Isabel Y Bolognia
Smith G Malet
Leja O Wieser
Aika F Dilliard
Clifford T Saylors
Octavia R Vocelka
Murillo A Bolognia
Darci K Schemmer
Julie A Stenseth
Ashley N Stockham
Cody Z Dilliard
Emily V Wieser
Munro R Ruta
Smith I Glick
Ricardo I Briddick
Juan K Vocelka
Arvin K Paprocki
Deepesh M Figeroa
Maisha U Wieser
Maisha U Butt
David W Whobrey
Faith V Gaucho
Costa O Schemmer
Smith V Slusarski
Sinclair B Oldroyd
Tony W Slusarski
Wickens J Nicka
Cody A Briddick
Faith W Butt
Kadeem H Glick
Aika P Amigon
Faith L Bowley
Antonio F Paprocki
Silvio A Dilliard
Salvatore W Figeroa
James X Schemmer
Wickens V Ostrosky
Jones V Dilliard
Tony X Royster
Morrow V Shinko
Emily U Wieser
Mayumi Y Paprocki
Murillo O Gaucho
Stacey S Royster
Salvatore Z Kolmetz
Deepesh K Gillian
Isabel A Paprocki
Costa M Kusko
Jefferson F Perin
IdCountryDate
1000Argentina2024-04-25
1001United Kingdom2024-04-01
1002Argentina2024-04-21
1003France2024-04-24
1004Germany2024-04-05
1005Australia2024-04-26
1006Canada2024-04-12
1007Canada2024-04-15
1008Japan2024-04-27
1009Brazil2024-04-11
1010Brazil2024-04-01
1011Canada2024-04-21
1012Canada2024-04-24
1013Spain2024-04-14
1014Japan2024-04-17
1015Brazil2024-04-04
1016United Kingdom2024-04-16
1017France2024-04-03
1018Canada2024-04-26
1019Spain2024-04-20
1020Argentina2024-04-09
1021Brazil2024-04-15
1022Italy2024-04-07
1023Australia2024-04-08
1024Australia2024-04-26
1025Brazil2024-04-07
1026Brazil2024-04-23
1027United Kingdom2024-04-15
1028Spain2024-04-20
1029Brazil2024-04-25
1030Brazil2024-04-22
1031Russia2024-04-25
1032Brazil2024-04-03
1033United Kingdom2024-04-04
1034Russia2024-04-18
1035France2024-04-26
1036Brazil2024-04-15
1037United Kingdom2024-04-11
1038France2024-04-07
1039Brazil2024-04-14
1040India2024-04-06
1041Argentina2024-04-02
1042Brazil2024-04-19
1043France2024-04-18
1044Italy2024-04-04
1045France2024-04-03
1046Canada2024-04-25
1047Canada2024-04-23
1048Australia2024-04-17
1049Russia2024-04-12

On-Demand Data

NameIdCountryDate
Murillo P Amigon1000India2024-04-15
Jones L Venere1001Canada2024-04-18
Nicolas I Figeroa1002Canada2024-04-02
Francesco G Glick1003France2024-04-26
Leja P Venere1004Argentina2024-04-15
Stacey R Gillian1005Italy2024-03-30
Maria A Wieser1006United Kingdom2024-04-02
Ashley X Dilliard1007Germany2024-04-28
Tony R Wieser1008United Kingdom2024-04-15
Isabel E Waycott1009Japan2024-04-01
Costa I Malet1010Argentina2024-04-17
Maria K Stenseth1011Japan2024-03-31
Salvatore O Kolmetz1012United Kingdom2024-04-27
Izzy A Bowley1013Russia2024-04-20
Salvatore Y Sergi1014Spain2024-04-19
Greenwood V Garufi1015Russia2024-04-14
Octavia K Ostrosky1016Canada2024-04-05
Julie C Stockham1017Russia2024-04-11
Stacey Y Poquette1018Australia2024-04-08
Juan L Nicka1019Spain2024-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair C GillianFranceIoni Bowcher NEW
Arvin X AmigonArgentinaIoni Bowcher NEGOTIATION
Silvio Y GarufiItalyXuxue Feng QUALIFIED
Maisha T NickaSpainXuxue Feng NEW
Deepesh Z OldroydJapanIvan Magalhaes PROPOSAL
Smith T ChuiCanadaStephen Shaw PROPOSAL
Clifford D CaudyRussiaIoni Bowcher NEW
Aditya T StensethSpainOnyama Limba QUALIFIED
Antonio Z KuskoItalyAnna Fali UNQUALIFIED
Rodrigues A GlickAustraliaOnyama Limba UNQUALIFIED
Nicolas O DilliardUnited KingdomStephen Shaw NEW
Smith W ChuiUnited KingdomStephen Shaw RENEWAL
David R AlbaresRussiaBernardo Dominic NEW
Salvatore U AlbaresBrazilIvan Magalhaes UNQUALIFIED
Clifford E FigeroaAustraliaBernardo Dominic NEGOTIATION
Darci K PerinJapanOnyama Limba UNQUALIFIED
Francesco Y AmigonSpainIvan Magalhaes NEGOTIATION
Isabel K NickaBrazilAmy Elsner RENEWAL
Morrow M WieserGermanyAsiya Javayant QUALIFIED
Tony C StockhamUnited KingdomAnna Fali RENEWAL
Leon I FerenczRussiaBernardo Dominic UNQUALIFIED
James V AmigonItalyStephen Shaw UNQUALIFIED
Jefferson A BowleyRussiaIvan Magalhaes RENEWAL
Jefferson J BologniaArgentinaAnna Fali NEGOTIATION
Claire Q AmigonSpainElwin Sharvill NEW
Salvatore P InouyeSpainAnna Fali UNQUALIFIED
Stacey W MaletRussiaXuxue Feng QUALIFIED
Alejandro E AmigonIndiaOnyama Limba RENEWAL
Jefferson D VenereRussiaAsiya Javayant QUALIFIED
Clifford T FlosiGermanyOnyama Limba QUALIFIED
Alejandro V RimJapanAnna Fali PROPOSAL
Murillo S KuskoItalyAnna Fali UNQUALIFIED
Leon H NickaArgentinaIvan Magalhaes QUALIFIED
Octavia X VenereUnited KingdomElwin Sharvill NEGOTIATION
Deepesh O AmigonArgentinaStephen Shaw NEW
Juan V PoquetteJapanIoni Bowcher NEW
Leja Z CaldareraUnited KingdomBernardo Dominic QUALIFIED
Clifford Z InouyeAustraliaAnna Fali QUALIFIED
Salvatore A SaylorsIndiaIoni Bowcher QUALIFIED
Greenwood A VocelkaArgentinaBernardo 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>