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
Johnson T VocelkaArgentinaIvan Magalhaes UNQUALIFIED
Arvin P GlickSpainIvan Magalhaes NEGOTIATION
Leja H ButtCanadaAmy Elsner NEGOTIATION
Jennifer Z WieserIndiaElwin Sharvill QUALIFIED
Salvatore T WaycottArgentinaStephen Shaw NEGOTIATION
Stacey P DarakjySpainOnyama Limba PROPOSAL
Jeanfrancois Z MorascaRussiaOnyama Limba PROPOSAL
Murillo B MaletFranceOnyama Limba UNQUALIFIED
Leja H PerinAustraliaAsiya Javayant QUALIFIED
Adams U SaylorsItalyAnna Fali UNQUALIFIED
Costa Q SaylorsAustraliaElwin Sharvill QUALIFIED
Maria R VocelkaGermanyIvan Magalhaes RENEWAL
Salvatore H RimBrazilOnyama Limba NEW
Misaki W FigeroaGermanyIvan Magalhaes RENEWAL
Clifford H PaprockiAustraliaAsiya Javayant UNQUALIFIED
Chavez S IturbideGermanyBernardo Dominic UNQUALIFIED
Kaitlin Y WaycottArgentinaBernardo Dominic QUALIFIED
Kadeem L FigeroaBrazilAnna Fali UNQUALIFIED
Maisha G GauchoCanadaAsiya Javayant PROPOSAL
Salvatore V BologniaBrazilAnna Fali NEGOTIATION
Stacey I CampainRussiaXuxue Feng NEGOTIATION
Claire C BowleyAustraliaBernardo Dominic RENEWAL
Leja D SlusarskiBrazilOnyama Limba PROPOSAL
Kadeem U ChuiJapanOnyama Limba NEGOTIATION
Mayumi T SlusarskiRussiaXuxue Feng NEGOTIATION
Isabel K ChuiBrazilIoni Bowcher PROPOSAL
Maisha X DilliardSpainStephen Shaw NEW
Kaitlin P BriddickUnited KingdomXuxue Feng PROPOSAL
Francesco N FerenczCanadaBernardo Dominic QUALIFIED
Wickens V PerinGermanyAnna Fali RENEWAL
Wickens Z OldroydIndiaStephen Shaw NEGOTIATION
Sinclair R AmigonAustraliaElwin Sharvill UNQUALIFIED
Juan R FigeroaFranceOnyama Limba NEGOTIATION
Jeanfrancois R VocelkaSpainIvan Magalhaes QUALIFIED
Munro Y AlbaresFranceOnyama Limba NEW
Ivar C RoysterItalyBernardo Dominic RENEWAL
Ricardo V WieserBrazilBernardo Dominic RENEWAL
Adams Y StensethUnited KingdomIvan Magalhaes NEW
Costa Q DilliardAustraliaAsiya Javayant NEW
Cody B SlusarskiArgentinaIvan Magalhaes PROPOSAL
Greenwood L AmigonBrazilIoni Bowcher RENEWAL
Johnson P DarakjyUnited KingdomXuxue Feng NEW
Jennifer G InouyeAustraliaStephen Shaw RENEWAL
Izzy C BologniaArgentinaAsiya Javayant QUALIFIED
Jones E SchemmerFranceBernardo Dominic NEGOTIATION
Leja D StensethItalyIvan Magalhaes NEW
Smith S WieserItalyAmy Elsner QUALIFIED
Kaitlin A BologniaSpainAsiya Javayant QUALIFIED
Nicolas P CaldareraAustraliaElwin Sharvill NEW
Morrow C GlickFranceXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Deepesh P RoysterUnited KingdomIoni Bowcher PROPOSAL
Aruna H GillianJapanAmy Elsner PROPOSAL
Smith X RimItalyStephen Shaw QUALIFIED
Adams D StensethCanadaOnyama Limba NEW
Aruna K StensethBrazilBernardo Dominic PROPOSAL
Octavia V ButtUnited KingdomStephen Shaw NEW
Aika Y StockhamCanadaStephen Shaw NEGOTIATION
Kaitlin P CaudyRussiaXuxue Feng QUALIFIED
Emily T MarrierIndiaElwin Sharvill RENEWAL
Silvio V MaletAustraliaStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja J AmigonGermany2024-03-27Truhlar And Truhlar Attys NEGOTIATION90Xuxue Feng
1001Octavia C BriddickUnited Kingdom2024-04-25Dorl, James J Esq QUALIFIED8Bernardo Dominic
1002Aika G MorascaArgentina2024-04-06Buckley Miller Wright QUALIFIED53Ivan Magalhaes
1003Tony P MaletIndia2024-03-30Chemel, James L Cpa PROPOSAL50Elwin Sharvill
1004Julie F DarakjyFrance2024-04-08Chanay, Jeffrey A Esq NEGOTIATION94Ioni Bowcher
1005Sinclair N ButtAustralia2024-04-10Morlong Associates PROPOSAL23Stephen Shaw
1006Stacey V DilliardArgentina2024-04-08Rangoni Of Florence RENEWAL66Anna Fali
1007Sinclair Y PerinFrance2024-03-27Chanay, Jeffrey A Esq UNQUALIFIED48Ioni Bowcher
1008Leja P CaldareraUnited Kingdom2024-03-28Feltz Printing Service UNQUALIFIED43Elwin Sharvill
1009Arvin B BowleyRussia2024-04-21Commercial Press UNQUALIFIED36Xuxue Feng
1010Leon M WieserSpain2024-04-16Buckley Miller Wright NEGOTIATION69Ioni Bowcher
1011Izzy B BowleyUnited Kingdom2024-04-10Buckley Miller Wright UNQUALIFIED20Bernardo Dominic
1012Munro W BowleySpain2024-04-11Truhlar And Truhlar Attys UNQUALIFIED76Onyama Limba
1013Johnson N MacleadSpain2024-04-23Benton, John B Jr RENEWAL13Xuxue Feng
1014Ricardo M SlusarskiSpain2024-04-18Feiner Bros QUALIFIED8Stephen Shaw
1015Kadeem W PaprockiUnited Kingdom2024-04-25Chemel, James L Cpa NEGOTIATION93Ioni Bowcher
1016Faith A GlickRussia2024-04-25Chapman, Ross E Esq QUALIFIED16Bernardo Dominic
1017Arvin T InouyeSpain2024-03-30Buckley Miller Wright QUALIFIED7Anna Fali
1018Julie R WieserCanada2024-04-02Chemel, James L Cpa RENEWAL15Asiya Javayant
1019Munro L CampainAustralia2024-04-25Chapman, Ross E Esq NEW54Ioni Bowcher
1020Juan W TollnerUnited Kingdom2024-04-10Dorl, James J Esq UNQUALIFIED32Anna Fali
1021Faith A DoeUnited Kingdom2024-03-29Chemel, James L Cpa UNQUALIFIED17Elwin Sharvill
1022Deepesh T IturbideBrazil2024-04-21Morlong Associates QUALIFIED44Xuxue Feng
1023Antonio H KuskoUnited Kingdom2024-03-27Feltz Printing Service UNQUALIFIED56Xuxue Feng
1024Jones U VocelkaUnited Kingdom2024-04-06Benton, John B Jr NEW72Elwin Sharvill
1025Adams M SaylorsBrazil2024-04-10Feiner Bros QUALIFIED63Ioni Bowcher
1026Aditya V RoysterCanada2024-04-16Chanay, Jeffrey A Esq NEGOTIATION52Asiya Javayant
1027Julie M SaylorsItaly2024-04-22Printing Dimensions PROPOSAL5Bernardo Dominic
1028David Z GarufiGermany2024-04-15Morlong Associates NEGOTIATION58Stephen Shaw
1029Aditya G AmigonJapan2024-04-10Chapman, Ross E Esq NEW52Bernardo Dominic
1030Stacey Z PaprockiItaly2024-04-19Benton, John B Jr NEGOTIATION25Asiya Javayant
1031Ashley B GauchoArgentina2024-04-07Feltz Printing Service UNQUALIFIED3Xuxue Feng
1032Silvio X CampainUnited Kingdom2024-04-06Chapman, Ross E Esq RENEWAL78Bernardo Dominic
1033Darci W VenereUnited Kingdom2024-03-28Benton, John B Jr NEW56Bernardo Dominic
1034Smith M VenereItaly2024-04-10Rangoni Of Florence RENEWAL73Ioni Bowcher
1035Francesco X DoeItaly2024-04-23Commercial Press UNQUALIFIED98Onyama Limba
1036Aruna C RimCanada2024-03-29Benton, John B Jr PROPOSAL12Xuxue Feng
1037Tony S OldroydUnited Kingdom2024-04-14Feltz Printing Service RENEWAL28Xuxue Feng
1038Leja E FlosiItaly2024-04-15Benton, John B Jr NEW86Xuxue Feng
1039Julie W StensethCanada2024-04-20Dorl, James J Esq NEGOTIATION28Asiya Javayant
1040Darci A AmigonAustralia2024-03-30Buckley Miller Wright QUALIFIED28Elwin Sharvill
1041Deepesh U DarakjyRussia2024-04-24Printing Dimensions QUALIFIED55Amy Elsner
1042Stacey O NickaIndia2024-04-10King, Christopher A Esq PROPOSAL70Bernardo Dominic
1043Maisha G VenereUnited Kingdom2024-04-21Dorl, James J Esq RENEWAL71Ivan Magalhaes
1044Salvatore D InouyeRussia2024-04-15Dorl, James J Esq NEGOTIATION85Xuxue Feng
1045Costa Y NickaIndia2024-03-29Rousseaux, Michael Esq QUALIFIED30Elwin Sharvill
1046Izzy S FollerItaly2024-04-01Benton, John B Jr QUALIFIED58Ivan Magalhaes
1047Ashley D CaldareraArgentina2024-04-10Chemel, James L Cpa RENEWAL27Anna Fali
1048Wickens U MacleadAustralia2024-04-03Truhlar And Truhlar Attys NEGOTIATION74Xuxue Feng
1049Rodrigues W TollnerJapan2024-04-03Rangoni Of Florence RENEWAL31Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues M AmigonCanadaElwin Sharvill NEW
Claire Y StockhamJapanIoni Bowcher RENEWAL
Smith A DilliardArgentinaOnyama Limba RENEWAL
Munro E RutaAustraliaAnna Fali NEGOTIATION
Kadeem I SergiAustraliaElwin Sharvill NEGOTIATION
Costa A VocelkaJapanXuxue Feng QUALIFIED
Costa T ButtItalyElwin Sharvill PROPOSAL
Wickens M KuskoGermanyIvan Magalhaes UNQUALIFIED
Kadeem V NickaGermanyBernardo Dominic NEW
Aruna A CampainBrazilOnyama Limba UNQUALIFIED
Faith I BologniaRussiaOnyama Limba NEW
Salvatore S IturbideItalyIoni Bowcher NEW
Sinclair P FlosiJapanAnna Fali RENEWAL
Kadeem I ShinkoCanadaOnyama Limba QUALIFIED
Wickens B RimFranceXuxue Feng RENEWAL
Wickens K MacleadCanadaIoni Bowcher QUALIFIED
Aruna O DilliardUnited KingdomAsiya Javayant NEW
Leon G KuskoCanadaAnna Fali NEW
Arvin H CampainCanadaBernardo Dominic RENEWAL
Leon N RutaJapanAmy Elsner NEGOTIATION
Arvin D RulapaughCanadaIoni Bowcher RENEWAL
Antonio G ChuiGermanyElwin Sharvill NEW
Adams F GarufiJapanAnna Fali PROPOSAL
Jeanfrancois Q ChuiJapanAsiya Javayant QUALIFIED
Ivar Z IturbideRussiaIoni Bowcher PROPOSAL
Leja O ButtIndiaIvan Magalhaes RENEWAL
Ivar R DoeGermanyElwin Sharvill QUALIFIED
Faith R AmigonCanadaIoni Bowcher NEGOTIATION
Johnson K VenereIndiaAmy Elsner UNQUALIFIED
David H GillianUnited KingdomIoni Bowcher UNQUALIFIED
Smith Q AmigonAustraliaAnna Fali UNQUALIFIED
Alejandro J MacleadFranceAnna Fali UNQUALIFIED
Leon M StockhamRussiaIvan Magalhaes UNQUALIFIED
David K GarufiFranceXuxue Feng RENEWAL
Francesco R IturbideAustraliaOnyama Limba QUALIFIED
Arvin S PaprockiAustraliaBernardo Dominic UNQUALIFIED
Maisha O PoquetteIndiaXuxue Feng UNQUALIFIED
Adams G ShinkoIndiaAmy Elsner PROPOSAL
Octavia P FerenczAustraliaAnna Fali NEW
Kaitlin I FollerArgentinaBernardo Dominic QUALIFIED
Juan L VocelkaAustraliaStephen Shaw NEGOTIATION
Izzy F SchemmerIndiaAsiya Javayant RENEWAL
Maria H DarakjyRussiaBernardo Dominic QUALIFIED
Claire T AmigonIndiaBernardo Dominic NEGOTIATION
Julie J RutaGermanyOnyama Limba NEW
Maria K ShinkoAustraliaAnna Fali UNQUALIFIED
Faith P OstroskyGermanyAmy Elsner QUALIFIED
Faith P ButtAustraliaXuxue Feng RENEWAL
David G SlusarskiIndiaAsiya Javayant NEGOTIATION
Jefferson V AlbaresArgentinaAmy Elsner NEGOTIATION
Frozen Columns
Name
Murillo X Wieser
Leja E Nestle
Costa A Caudy
Jeanfrancois H Tollner
Deepesh K Kolmetz
Greenwood C Shinko
Aika T Ostrosky
Mujtaba O Oldroyd
Jeanfrancois N Briddick
Chavez H Oldroyd
Rodrigues X Sergi
Jefferson M Garufi
Jeanfrancois F Ruta
Octavia I Paprocki
David X Stenseth
Silvio B Iturbide
Alejandro K Paprocki
Ashley I Wieser
Greenwood J Doe
Claire C Iturbide
Jeanfrancois J Campain
Alejandro L Ostrosky
Silvio V Venere
Antonio V Ferencz
Francesco W Butt
Faith I Morasca
Mayumi D Garufi
Faith V Bolognia
Kaitlin M Whobrey
Maria D Whobrey
David M Maclead
Smith J Paprocki
Ricardo X Royster
Aika C Figeroa
Nicolas Z Bolognia
Munro Q Rulapaugh
Maisha T Royster
Stacey L Tollner
Murillo R Wieser
Clifford C Foller
Tony S Dilliard
Aditya F Iturbide
Wickens H Morasca
Octavia B Royster
Maisha W Gillian
Isabel M Caldarera
Smith Z Oldroyd
David B Darakjy
Leja T Marrier
Tony Y Butt
IdCountryDate
1000France2024-04-17
1001Canada2024-04-12
1002Brazil2024-04-10
1003Japan2024-04-13
1004United Kingdom2024-04-07
1005Spain2024-04-21
1006Japan2024-04-04
1007Spain2024-04-01
1008Russia2024-04-25
1009France2024-04-17
1010Russia2024-04-16
1011Argentina2024-04-18
1012Italy2024-04-18
1013Japan2024-04-09
1014France2024-04-05
1015Argentina2024-03-28
1016Italy2024-04-09
1017India2024-04-13
1018Spain2024-03-29
1019Japan2024-04-25
1020Italy2024-04-25
1021Spain2024-04-25
1022Italy2024-04-06
1023Russia2024-04-14
1024United Kingdom2024-04-15
1025Canada2024-04-18
1026Germany2024-04-22
1027France2024-03-31
1028Brazil2024-04-07
1029France2024-04-04
1030Russia2024-03-31
1031Italy2024-04-18
1032Italy2024-04-05
1033Japan2024-04-07
1034Argentina2024-04-02
1035Brazil2024-04-23
1036Russia2024-04-15
1037Spain2024-03-29
1038India2024-04-14
1039Italy2024-04-23
1040France2024-04-22
1041Brazil2024-04-03
1042Germany2024-04-09
1043Germany2024-04-07
1044Canada2024-04-12
1045Italy2024-04-07
1046Japan2024-04-04
1047Japan2024-04-17
1048France2024-03-29
1049Japan2024-04-02

On-Demand Data

NameIdCountryDate
Izzy R Marrier1000Spain2024-03-27
Tony R Rim1001United Kingdom2024-04-13
Isabel N Amigon1002Germany2024-04-10
Smith E Slusarski1003Australia2024-04-09
Leja X Maclead1004Spain2024-04-08
James C Stockham1005Japan2024-04-25
Jennifer D Inouye1006France2024-04-20
Tony T Perin1007Russia2024-03-30
Ivar H Waycott1008Brazil2024-04-05
Antonio I Gillian1009Russia2024-03-28
Costa Z Oldroyd1010Australia2024-04-10
Cody E Darakjy1011Canada2024-04-13
Silvio A Chui1012Australia2024-04-25
David I Rim1013Germany2024-04-16
Ivar D Marrier1014Canada2024-04-01
Murillo C Stenseth1015Russia2024-04-13
Sinclair Y Malet1016France2024-04-01
Mujtaba D Saylors1017Italy2024-03-28
Deepesh H Vocelka1018India2024-04-08
Deepesh D Kolmetz1019Germany2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie H InouyeCanadaIoni Bowcher NEGOTIATION
Francesco M PaprockiJapanStephen Shaw UNQUALIFIED
Rodrigues K GauchoBrazilIvan Magalhaes QUALIFIED
Salvatore J RulapaughBrazilIoni Bowcher UNQUALIFIED
Deepesh E MorascaItalyAsiya Javayant RENEWAL
Emily N CaudyGermanyOnyama Limba PROPOSAL
Sinclair F StensethFranceIvan Magalhaes RENEWAL
Aika H GillianItalyXuxue Feng UNQUALIFIED
Arvin M SlusarskiAustraliaStephen Shaw RENEWAL
Alejandro V InouyeSpainXuxue Feng RENEWAL
Juan I CaldareraUnited KingdomIoni Bowcher UNQUALIFIED
Faith J MacleadGermanyBernardo Dominic PROPOSAL
Salvatore G SlusarskiRussiaXuxue Feng UNQUALIFIED
Wickens L KuskoBrazilStephen Shaw RENEWAL
Nicolas D FerenczBrazilStephen Shaw RENEWAL
Stacey S RutaItalyStephen Shaw RENEWAL
Kadeem S DilliardGermanyOnyama Limba PROPOSAL
Ivar W ButtSpainElwin Sharvill NEGOTIATION
Salvatore C DoeCanadaBernardo Dominic PROPOSAL
Deepesh B VenereItalyStephen Shaw UNQUALIFIED
Deepesh E GillianSpainBernardo Dominic QUALIFIED
Chavez P FerenczItalyAmy Elsner UNQUALIFIED
Leja V StensethCanadaElwin Sharvill RENEWAL
Greenwood H ChuiArgentinaStephen Shaw RENEWAL
Sinclair D FlosiBrazilAmy Elsner UNQUALIFIED
Mayumi Q SchemmerCanadaAsiya Javayant QUALIFIED
Deepesh W GauchoCanadaAnna Fali UNQUALIFIED
Morrow B GlickCanadaAsiya Javayant QUALIFIED
Mayumi Z BologniaJapanIvan Magalhaes PROPOSAL
Kadeem D RutaSpainStephen Shaw NEGOTIATION
Munro W FlosiItalyXuxue Feng UNQUALIFIED
Cody E DilliardItalyIoni Bowcher NEGOTIATION
Salvatore U InouyeJapanBernardo Dominic UNQUALIFIED
Mayumi O FollerGermanyAsiya Javayant PROPOSAL
Mujtaba S BowleyBrazilXuxue Feng UNQUALIFIED
Faith E BowleyBrazilIoni Bowcher UNQUALIFIED
Mujtaba M KolmetzCanadaAnna Fali RENEWAL
Munro M WhobreyJapanIvan Magalhaes NEGOTIATION
Adams S AmigonSpainXuxue Feng PROPOSAL
Julie G BologniaBrazilAsiya 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>