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
Juan P DoeRussiaElwin Sharvill PROPOSAL
Aditya E AmigonFranceOnyama Limba QUALIFIED
Emily M CaldareraCanadaXuxue Feng PROPOSAL
Darci Z FerenczIndiaIvan Magalhaes NEW
Kadeem N RulapaughCanadaElwin Sharvill QUALIFIED
Chavez G VocelkaAustraliaAsiya Javayant QUALIFIED
Ashley L RulapaughAustraliaStephen Shaw NEGOTIATION
Chavez B RutaAustraliaElwin Sharvill PROPOSAL
Kadeem E PoquetteIndiaOnyama Limba NEW
Greenwood V AlbaresIndiaAsiya Javayant NEW
Ashley J AlbaresUnited KingdomBernardo Dominic NEGOTIATION
Nicolas Z OstroskyArgentinaIvan Magalhaes RENEWAL
Mayumi K FlosiJapanBernardo Dominic UNQUALIFIED
Izzy G WhobreyFranceIoni Bowcher NEW
Jefferson A DarakjyRussiaElwin Sharvill QUALIFIED
Cody H CampainBrazilIvan Magalhaes RENEWAL
Maria A FigeroaGermanyElwin Sharvill NEGOTIATION
Misaki Q CampainFranceIoni Bowcher NEW
Munro O CampainGermanyIvan Magalhaes NEGOTIATION
Wickens B GlickCanadaIvan Magalhaes RENEWAL
Misaki X FerenczArgentinaXuxue Feng NEGOTIATION
Kaitlin U BriddickJapanAnna Fali UNQUALIFIED
Munro T NickaGermanyElwin Sharvill PROPOSAL
Munro A SlusarskiAustraliaStephen Shaw NEW
Leon X IturbideRussiaIoni Bowcher NEGOTIATION
Morrow X AmigonRussiaOnyama Limba NEGOTIATION
Mayumi A OstroskyUnited KingdomIoni Bowcher NEW
Claire U CampainRussiaBernardo Dominic NEGOTIATION
Jefferson I CampainJapanBernardo Dominic NEW
David P BriddickItalyBernardo Dominic NEGOTIATION
Maria F WaycottAustraliaElwin Sharvill QUALIFIED
Salvatore Z RutaGermanyAmy Elsner PROPOSAL
Sinclair E DarakjyCanadaIoni Bowcher NEW
Morrow H IturbideFranceIoni Bowcher QUALIFIED
Ricardo K MorascaGermanyAmy Elsner NEGOTIATION
Aditya M WaycottGermanyAnna Fali NEGOTIATION
Murillo V KuskoJapanAnna Fali NEW
Munro J RutaItalyAnna Fali QUALIFIED
Johnson C DilliardGermanyElwin Sharvill RENEWAL
Emily A CaudyGermanyIvan Magalhaes PROPOSAL
Clifford X StensethSpainOnyama Limba NEW
David H GlickCanadaIvan Magalhaes UNQUALIFIED
Maria A DilliardBrazilAnna Fali PROPOSAL
Wickens X VocelkaAustraliaStephen Shaw QUALIFIED
Aditya K TollnerUnited KingdomXuxue Feng PROPOSAL
Izzy M FollerBrazilIvan Magalhaes NEW
Salvatore M FerenczSpainBernardo Dominic UNQUALIFIED
Leja Z AmigonUnited KingdomAmy Elsner PROPOSAL
Clifford B NickaUnited KingdomStephen Shaw PROPOSAL
Munro M InouyeAustraliaXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Mayumi N WieserRussiaOnyama Limba UNQUALIFIED
Claire F WieserRussiaAsiya Javayant QUALIFIED
Clifford M DilliardSpainAmy Elsner RENEWAL
Izzy V MacleadItalyXuxue Feng RENEWAL
Julie E RulapaughArgentinaIoni Bowcher NEGOTIATION
Jeanfrancois S PerinUnited KingdomAmy Elsner UNQUALIFIED
Juan L PaprockiIndiaElwin Sharvill NEW
Greenwood Z ChuiSpainBernardo Dominic NEGOTIATION
Ricardo I OstroskyArgentinaOnyama Limba NEW
Tony C NestleIndiaIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson H StockhamSpain2024-04-28Chapman, Ross E Esq NEGOTIATION81Anna Fali
1001Jennifer Y StensethIndia2024-04-20Dorl, James J Esq UNQUALIFIED61Amy Elsner
1002Kaitlin V CampainItaly2024-04-22Rousseaux, Michael Esq QUALIFIED60Ivan Magalhaes
1003Munro D TollnerUnited Kingdom2024-04-17Benton, John B Jr NEGOTIATION16Bernardo Dominic
1004Izzy Z GauchoBrazil2024-04-24Truhlar And Truhlar Attys RENEWAL34Stephen Shaw
1005Ashley U BriddickGermany2024-04-28Rangoni Of Florence RENEWAL28Anna Fali
1006Antonio K WieserGermany2024-04-08Feltz Printing Service PROPOSAL55Asiya Javayant
1007Maria K GarufiArgentina2024-04-12Chapman, Ross E Esq NEW5Onyama Limba
1008Isabel V SaylorsGermany2024-04-17Morlong Associates QUALIFIED89Asiya Javayant
1009Nicolas J KuskoJapan2024-04-01Chemel, James L Cpa PROPOSAL51Ioni Bowcher
1010Jennifer X PoquetteFrance2024-04-17Chanay, Jeffrey A Esq NEW6Xuxue Feng
1011Francesco L RoysterAustralia2024-04-18Feltz Printing Service RENEWAL38Stephen Shaw
1012Ivar E FlosiIndia2024-04-21Feiner Bros NEGOTIATION16Ivan Magalhaes
1013Kadeem Y ShinkoJapan2024-04-29Rangoni Of Florence PROPOSAL68Asiya Javayant
1014Nicolas A OstroskyCanada2024-04-12Truhlar And Truhlar Attys NEW99Anna Fali
1015Costa N SchemmerGermany2024-04-15Chemel, James L Cpa NEGOTIATION97Stephen Shaw
1016Aruna Q VenereFrance2024-04-13King, Christopher A Esq PROPOSAL7Asiya Javayant
1017Smith Q CampainSpain2024-04-15Truhlar And Truhlar Attys QUALIFIED57Elwin Sharvill
1018Emily C BowleyFrance2024-04-13Buckley Miller Wright NEGOTIATION90Xuxue Feng
1019Morrow Y RutaJapan2024-04-10King, Christopher A Esq NEGOTIATION22Asiya Javayant
1020Kadeem P PaprockiUnited Kingdom2024-04-09Dorl, James J Esq NEGOTIATION65Stephen Shaw
1021Ivar B VocelkaFrance2024-04-17Dorl, James J Esq PROPOSAL10Amy Elsner
1022Silvio Z IturbideGermany2024-04-28Chemel, James L Cpa NEGOTIATION36Amy Elsner
1023Clifford F SchemmerItaly2024-04-19Feiner Bros UNQUALIFIED28Bernardo Dominic
1024Jefferson I StensethRussia2024-04-16Feiner Bros QUALIFIED99Anna Fali
1025Morrow Q CampainArgentina2024-04-12Benton, John B Jr NEGOTIATION57Amy Elsner
1026Cody F RulapaughJapan2024-04-09King, Christopher A Esq PROPOSAL34Onyama Limba
1027Darci W MaletSpain2024-04-25Truhlar And Truhlar Attys PROPOSAL77Anna Fali
1028Faith C KuskoBrazil2024-04-04Commercial Press UNQUALIFIED6Bernardo Dominic
1029Leon L SlusarskiJapan2024-03-31Truhlar And Truhlar Attys NEW87Elwin Sharvill
1030Ivar G MacleadRussia2024-04-15Feltz Printing Service UNQUALIFIED0Xuxue Feng
1031Adams F BriddickAustralia2024-03-31Benton, John B Jr RENEWAL34Anna Fali
1032Antonio X DilliardGermany2024-04-27Printing Dimensions NEGOTIATION67Asiya Javayant
1033Chavez T SlusarskiBrazil2024-04-06Printing Dimensions NEGOTIATION4Amy Elsner
1034Leon R OldroydGermany2024-04-21Buckley Miller Wright UNQUALIFIED17Amy Elsner
1035Murillo J NickaBrazil2024-04-16King, Christopher A Esq UNQUALIFIED98Asiya Javayant
1036Morrow T OstroskyGermany2024-04-06Commercial Press PROPOSAL94Anna Fali
1037Kaitlin C MaletUnited Kingdom2024-04-16Feiner Bros PROPOSAL64Amy Elsner
1038Francesco J RimGermany2024-04-23Truhlar And Truhlar Attys QUALIFIED5Onyama Limba
1039Juan B FlosiIndia2024-04-09Printing Dimensions NEGOTIATION27Ivan Magalhaes
1040Jeanfrancois H ShinkoBrazil2024-04-23Rangoni Of Florence NEW85Elwin Sharvill
1041Adams T GlickJapan2024-04-13King, Christopher A Esq NEGOTIATION51Bernardo Dominic
1042Murillo I SaylorsBrazil2024-04-02Dorl, James J Esq RENEWAL24Asiya Javayant
1043Faith D WhobreyBrazil2024-04-27Benton, John B Jr PROPOSAL13Ioni Bowcher
1044Chavez A AlbaresBrazil2024-04-27Chanay, Jeffrey A Esq NEGOTIATION78Asiya Javayant
1045Leja G ChuiAustralia2024-04-07King, Christopher A Esq PROPOSAL27Ivan Magalhaes
1046Wickens Z SaylorsIndia2024-04-08Rousseaux, Michael Esq NEGOTIATION98Onyama Limba
1047Misaki C RoysterArgentina2024-04-28Buckley Miller Wright RENEWAL80Asiya Javayant
1048Kaitlin G PerinAustralia2024-04-25Chemel, James L Cpa QUALIFIED33Ivan Magalhaes
1049James K CaudyIndia2024-04-14Chapman, Ross E Esq NEGOTIATION74Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Clifford D MacleadItalyAnna Fali NEW
Alejandro G TollnerSpainXuxue Feng PROPOSAL
Leja P DilliardGermanyBernardo Dominic QUALIFIED
Stacey W TollnerItalyIvan Magalhaes PROPOSAL
Faith N SergiArgentinaIoni Bowcher RENEWAL
Tony V AlbaresAustraliaIoni Bowcher NEGOTIATION
Johnson B SlusarskiAustraliaOnyama Limba QUALIFIED
Octavia A RulapaughSpainXuxue Feng RENEWAL
Juan G SergiIndiaXuxue Feng QUALIFIED
Johnson M NestleAustraliaStephen Shaw NEGOTIATION
Mujtaba Q RimFranceIvan Magalhaes NEW
Darci N AmigonIndiaElwin Sharvill PROPOSAL
Stacey F CampainArgentinaIoni Bowcher NEW
Arvin Z FollerGermanyXuxue Feng QUALIFIED
Wickens Y MaletCanadaBernardo Dominic PROPOSAL
Ashley J MarrierUnited KingdomAsiya Javayant QUALIFIED
Aika N PaprockiCanadaAmy Elsner NEW
Julie A NestleBrazilStephen Shaw NEGOTIATION
Stacey T DoeFranceStephen Shaw PROPOSAL
Tony F ChuiRussiaStephen Shaw RENEWAL
Salvatore O FigeroaIndiaElwin Sharvill NEW
Kaitlin D FerenczFranceOnyama Limba UNQUALIFIED
Maisha U BriddickUnited KingdomStephen Shaw PROPOSAL
Claire Z WieserAustraliaElwin Sharvill RENEWAL
David Q PaprockiRussiaAsiya Javayant RENEWAL
Aruna X VenereCanadaXuxue Feng NEW
Antonio J OldroydAustraliaAsiya Javayant RENEWAL
Nicolas G ShinkoItalyIvan Magalhaes PROPOSAL
Salvatore Y DilliardAustraliaElwin Sharvill UNQUALIFIED
Murillo S CampainCanadaAsiya Javayant PROPOSAL
Costa P BowleySpainBernardo Dominic NEGOTIATION
Jones Z RimUnited KingdomAsiya Javayant PROPOSAL
Salvatore O WhobreyAustraliaAsiya Javayant RENEWAL
James R KuskoRussiaStephen Shaw NEGOTIATION
Ashley S TollnerGermanyBernardo Dominic NEGOTIATION
Emily B MacleadCanadaIoni Bowcher QUALIFIED
Clifford G PoquetteUnited KingdomXuxue Feng UNQUALIFIED
Adams X StensethRussiaElwin Sharvill NEGOTIATION
Mujtaba Y OstroskyJapanXuxue Feng NEW
Leja M AlbaresUnited KingdomIoni Bowcher NEGOTIATION
Jones Z AlbaresSpainIoni Bowcher PROPOSAL
Morrow K StensethBrazilAmy Elsner NEGOTIATION
James M WhobreyIndiaStephen Shaw QUALIFIED
Johnson T KolmetzGermanyStephen Shaw NEGOTIATION
Munro U AmigonAustraliaBernardo Dominic NEGOTIATION
Faith A WaycottBrazilIoni Bowcher NEGOTIATION
Aika K DarakjyArgentinaOnyama Limba PROPOSAL
Aruna X MacleadCanadaAnna Fali NEW
Stacey Y SchemmerIndiaAsiya Javayant RENEWAL
Johnson N WhobreyArgentinaXuxue Feng NEW
Frozen Columns
Name
Arvin W Kusko
Maisha N Albares
Silvio L Caudy
Aika M Morasca
Kaitlin E Tollner
Alejandro E Gillian
Julie B Bolognia
Alejandro F Malet
Morrow L Ferencz
Aruna F Inouye
Deepesh R Briddick
Stacey X Glick
Silvio Q Waycott
David X Briddick
Morrow D Gillian
Kaitlin K Bolognia
Deepesh A Poquette
Aika F Poquette
Jefferson D Marrier
Leon L Caldarera
Izzy V Nicka
James A Kolmetz
Emily X Stenseth
Salvatore U Poquette
Maria G Vocelka
Darci U Slusarski
Cody K Garufi
Salvatore P Rim
Antonio T Caudy
Misaki W Tollner
Murillo D Malet
Kadeem H Wieser
Mayumi W Amigon
Isabel B Morasca
Maria B Iturbide
David X Rulapaugh
Maisha E Malet
Juan I Stockham
Tony P Bolognia
Wickens R Venere
Kadeem U Caldarera
Jefferson S Slusarski
Alejandro V Caldarera
Greenwood H Whobrey
Munro E Paprocki
Wickens W Caudy
Maisha H Gillian
Greenwood Y Butt
Francesco V Ferencz
Maisha G Tollner
IdCountryDate
1000India2024-04-11
1001Argentina2024-04-14
1002Germany2024-04-15
1003Brazil2024-04-10
1004India2024-04-05
1005India2024-04-13
1006Japan2024-04-23
1007Brazil2024-04-14
1008United Kingdom2024-04-10
1009Spain2024-04-06
1010France2024-04-29
1011Italy2024-04-12
1012Argentina2024-04-21
1013Japan2024-04-02
1014Australia2024-04-05
1015Argentina2024-04-08
1016United Kingdom2024-04-24
1017Russia2024-04-18
1018United Kingdom2024-04-08
1019Germany2024-04-12
1020Australia2024-04-21
1021Japan2024-04-13
1022India2024-04-15
1023France2024-03-31
1024Australia2024-04-01
1025Canada2024-04-15
1026Australia2024-04-08
1027Spain2024-04-14
1028Canada2024-04-05
1029United Kingdom2024-04-17
1030Russia2024-04-09
1031Russia2024-04-04
1032United Kingdom2024-04-26
1033Australia2024-04-04
1034Canada2024-04-14
1035United Kingdom2024-04-26
1036Germany2024-04-01
1037Italy2024-04-17
1038Russia2024-04-13
1039Argentina2024-04-20
1040Australia2024-04-20
1041Canada2024-04-02
1042France2024-04-03
1043India2024-04-17
1044Japan2024-04-25
1045Spain2024-04-20
1046Russia2024-04-07
1047Italy2024-04-10
1048France2024-04-11
1049Argentina2024-04-07

On-Demand Data

NameIdCountryDate
Deepesh S Caudy1000Japan2024-04-22
Clifford T Poquette1001Argentina2024-04-14
Cody Q Saylors1002United Kingdom2024-04-10
Silvio Q Foller1003Italy2024-04-08
Nicolas T Albares1004France2024-04-05
Maria N Waycott1005Argentina2024-04-12
Francesco N Nicka1006United Kingdom2024-03-31
Jennifer F Oldroyd1007Brazil2024-04-25
Costa G Malet1008Italy2024-04-12
Maria P Malet1009Brazil2024-04-16
Silvio D Briddick1010Russia2024-04-18
Darci I Dilliard1011Germany2024-04-26
Julie I Foller1012Italy2024-04-16
Johnson D Slusarski1013Germany2024-04-05
Ricardo I Flosi1014Spain2024-04-04
Jeanfrancois Y Slusarski1015Spain2024-04-27
Silvio E Ruta1016France2024-04-10
Nicolas Q Paprocki1017Argentina2024-04-16
Faith O Poquette1018Spain2024-04-16
James C Garufi1019Germany2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody D ShinkoIndiaStephen Shaw NEGOTIATION
Sinclair J PoquetteArgentinaAsiya Javayant RENEWAL
Arvin V SlusarskiSpainXuxue Feng UNQUALIFIED
Aika X RulapaughGermanyBernardo Dominic RENEWAL
Ashley B SlusarskiGermanyAnna Fali QUALIFIED
Mayumi B BowleyIndiaOnyama Limba UNQUALIFIED
Chavez L TollnerUnited KingdomAnna Fali UNQUALIFIED
Jeanfrancois W SchemmerSpainIoni Bowcher PROPOSAL
Mujtaba G MarrierSpainIoni Bowcher NEW
Emily Z PoquetteItalyOnyama Limba NEGOTIATION
Jefferson K WaycottJapanAsiya Javayant QUALIFIED
Deepesh A DarakjyIndiaXuxue Feng RENEWAL
Kadeem M KolmetzAustraliaElwin Sharvill PROPOSAL
Morrow M RoysterIndiaElwin Sharvill QUALIFIED
Faith G DilliardUnited KingdomBernardo Dominic PROPOSAL
Aruna H ChuiArgentinaAmy Elsner NEGOTIATION
Salvatore C WhobreyIndiaAnna Fali QUALIFIED
Jennifer A VocelkaCanadaIoni Bowcher RENEWAL
Francesco R PerinIndiaBernardo Dominic QUALIFIED
Smith V FerenczCanadaIvan Magalhaes UNQUALIFIED
Maria O RoysterGermanyOnyama Limba NEGOTIATION
Misaki F MaletUnited KingdomAmy Elsner RENEWAL
Darci Z CampainUnited KingdomOnyama Limba UNQUALIFIED
Smith F SergiIndiaAmy Elsner UNQUALIFIED
Adams F NestleItalyElwin Sharvill RENEWAL
David F IturbideJapanIvan Magalhaes QUALIFIED
Maria G ButtItalyIvan Magalhaes NEGOTIATION
Ricardo S VocelkaJapanElwin Sharvill NEW
Jefferson E VenereAustraliaAsiya Javayant QUALIFIED
Mayumi J AmigonJapanAmy Elsner RENEWAL
Mujtaba I DarakjyItalyBernardo Dominic RENEWAL
Adams Q BowleyBrazilAsiya Javayant RENEWAL
Morrow F ShinkoRussiaIoni Bowcher UNQUALIFIED
Silvio K BriddickArgentinaAnna Fali QUALIFIED
Cody W SergiCanadaStephen Shaw UNQUALIFIED
Darci Z SergiJapanAmy Elsner PROPOSAL
Antonio P VocelkaFranceBernardo Dominic NEW
Leon L MarrierGermanyOnyama Limba PROPOSAL
Johnson J BowleyFranceIoni Bowcher UNQUALIFIED
Ricardo G NickaBrazilAnna Fali PROPOSAL

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