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 H KolmetzIndiaIvan Magalhaes NEW
Aditya W MorascaSpainStephen Shaw PROPOSAL
Aika G OldroydUnited KingdomBernardo Dominic QUALIFIED
Tony Y GauchoJapanXuxue Feng PROPOSAL
Cody O VenereArgentinaAmy Elsner QUALIFIED
Aika Y SergiUnited KingdomBernardo Dominic RENEWAL
Kadeem Z MorascaFranceOnyama Limba QUALIFIED
Jeanfrancois A OldroydJapanBernardo Dominic UNQUALIFIED
Leon Y KolmetzArgentinaElwin Sharvill UNQUALIFIED
Clifford X PaprockiFranceIoni Bowcher NEW
Rodrigues J VocelkaJapanIvan Magalhaes NEGOTIATION
Murillo L CaldareraFranceBernardo Dominic PROPOSAL
Julie Q OldroydArgentinaIvan Magalhaes UNQUALIFIED
Alejandro K StockhamUnited KingdomAsiya Javayant QUALIFIED
Silvio R PerinItalyElwin Sharvill NEGOTIATION
Salvatore D FlosiBrazilIoni Bowcher NEGOTIATION
Isabel Y FlosiCanadaAsiya Javayant UNQUALIFIED
Julie A AlbaresJapanBernardo Dominic UNQUALIFIED
Kaitlin J RulapaughIndiaOnyama Limba NEW
Octavia S FerenczIndiaAsiya Javayant RENEWAL
Clifford U FlosiBrazilIvan Magalhaes UNQUALIFIED
Antonio I RulapaughFranceElwin Sharvill PROPOSAL
Chavez W InouyeJapanBernardo Dominic QUALIFIED
Silvio L MaletFranceStephen Shaw RENEWAL
Claire C PoquetteRussiaAmy Elsner NEW
Adams A AmigonJapanAmy Elsner UNQUALIFIED
Stacey K FigeroaGermanyElwin Sharvill NEGOTIATION
Misaki Y KolmetzIndiaXuxue Feng QUALIFIED
Murillo B FlosiUnited KingdomIvan Magalhaes RENEWAL
Faith M PaprockiAustraliaElwin Sharvill NEGOTIATION
Mayumi M OstroskyItalyOnyama Limba NEW
Jones N WieserUnited KingdomIoni Bowcher RENEWAL
Kaitlin I SlusarskiArgentinaStephen Shaw NEW
Clifford O FigeroaBrazilAsiya Javayant NEW
Mujtaba S NickaCanadaAmy Elsner NEW
Maisha M PaprockiGermanyIvan Magalhaes UNQUALIFIED
Cody H GauchoFranceAsiya Javayant UNQUALIFIED
Greenwood Y ButtJapanXuxue Feng RENEWAL
Rodrigues Z CaldareraUnited KingdomOnyama Limba PROPOSAL
Mujtaba U VocelkaBrazilElwin Sharvill NEW
Clifford D CaudyUnited KingdomStephen Shaw RENEWAL
Ricardo H GarufiCanadaOnyama Limba UNQUALIFIED
Clifford O RutaUnited KingdomStephen Shaw NEGOTIATION
Kaitlin N MacleadAustraliaElwin Sharvill RENEWAL
Wickens W BowleyAustraliaAsiya Javayant QUALIFIED
Greenwood F VenereIndiaIvan Magalhaes NEW
Nicolas J VenereUnited KingdomAmy Elsner NEW
Johnson U CaudySpainIoni Bowcher UNQUALIFIED
Alejandro W WieserArgentinaIoni Bowcher PROPOSAL
Aruna S MaletIndiaBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Mayumi D TollnerUnited KingdomIoni Bowcher UNQUALIFIED
Mayumi L StensethUnited KingdomOnyama Limba PROPOSAL
Darci S MarrierItalyIoni Bowcher NEW
Izzy T TollnerItalyBernardo Dominic PROPOSAL
Aruna B FollerCanadaAnna Fali NEW
Chavez B SlusarskiGermanyElwin Sharvill NEW
Jones A BologniaGermanyElwin Sharvill RENEWAL
Claire N ShinkoUnited KingdomElwin Sharvill UNQUALIFIED
Maria K MaletGermanyBernardo Dominic UNQUALIFIED
Sinclair C GarufiCanadaAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio P FigeroaRussia2024-05-02Morlong Associates QUALIFIED72Bernardo Dominic
1001Deepesh T GlickFrance2024-05-04Commercial Press NEGOTIATION67Elwin Sharvill
1002Julie S IturbideFrance2024-04-29Rangoni Of Florence UNQUALIFIED51Ioni Bowcher
1003Juan C CaudyJapan2024-05-04Buckley Miller Wright PROPOSAL31Ivan Magalhaes
1004Jennifer C BologniaBrazil2024-05-10Rangoni Of Florence NEW44Ioni Bowcher
1005Nicolas L WaycottCanada2024-04-13Feiner Bros PROPOSAL45Ivan Magalhaes
1006Mayumi H CaldareraArgentina2024-04-30Feltz Printing Service QUALIFIED84Stephen Shaw
1007Ashley Z AmigonGermany2024-04-11Morlong Associates PROPOSAL76Xuxue Feng
1008Greenwood E IturbideRussia2024-04-17Commercial Press UNQUALIFIED62Onyama Limba
1009Jennifer W RulapaughGermany2024-04-28Chemel, James L Cpa NEGOTIATION82Ioni Bowcher
1010Kaitlin D IturbideAustralia2024-04-20Feiner Bros QUALIFIED4Amy Elsner
1011Alejandro Y GlickJapan2024-04-16Feiner Bros RENEWAL20Stephen Shaw
1012Claire P InouyeGermany2024-04-18King, Christopher A Esq UNQUALIFIED65Amy Elsner
1013Francesco E ButtArgentina2024-04-28Feiner Bros PROPOSAL73Stephen Shaw
1014Kadeem Y CampainJapan2024-04-13Printing Dimensions UNQUALIFIED4Bernardo Dominic
1015James A FlosiArgentina2024-04-30Feiner Bros RENEWAL98Bernardo Dominic
1016Isabel P GlickItaly2024-05-03Feltz Printing Service PROPOSAL12Ivan Magalhaes
1017Adams P DarakjyUnited Kingdom2024-04-14King, Christopher A Esq QUALIFIED33Asiya Javayant
1018Greenwood X FlosiCanada2024-04-30Benton, John B Jr NEGOTIATION4Bernardo Dominic
1019Antonio X NickaAustralia2024-05-09Morlong Associates UNQUALIFIED18Onyama Limba
1020Ivar R GillianArgentina2024-05-07Buckley Miller Wright PROPOSAL56Bernardo Dominic
1021Jefferson K RutaUnited Kingdom2024-05-09Truhlar And Truhlar Attys UNQUALIFIED33Onyama Limba
1022James U MaletGermany2024-05-02Dorl, James J Esq NEGOTIATION78Bernardo Dominic
1023Jefferson K StockhamJapan2024-04-12Chanay, Jeffrey A Esq NEW27Stephen Shaw
1024Deepesh H AlbaresAustralia2024-04-19Rangoni Of Florence UNQUALIFIED28Onyama Limba
1025Costa Q MaletCanada2024-04-12Dorl, James J Esq NEW41Anna Fali
1026Salvatore V InouyeCanada2024-05-07King, Christopher A Esq PROPOSAL54Ioni Bowcher
1027Maisha M OstroskyFrance2024-04-25Commercial Press UNQUALIFIED47Ioni Bowcher
1028Aditya U PaprockiUnited Kingdom2024-04-12Benton, John B Jr QUALIFIED15Elwin Sharvill
1029Jefferson K PaprockiGermany2024-04-21Morlong Associates PROPOSAL1Ioni Bowcher
1030Salvatore L NestleGermany2024-05-01Rousseaux, Michael Esq QUALIFIED82Amy Elsner
1031Leon Q PaprockiJapan2024-04-13Chapman, Ross E Esq QUALIFIED97Ivan Magalhaes
1032Jones L SchemmerJapan2024-04-26Rousseaux, Michael Esq PROPOSAL57Ioni Bowcher
1033Mujtaba X OldroydRussia2024-04-25Buckley Miller Wright UNQUALIFIED91Elwin Sharvill
1034Murillo Z GarufiBrazil2024-04-22Benton, John B Jr RENEWAL82Ioni Bowcher
1035Francesco B BriddickBrazil2024-04-14Chapman, Ross E Esq NEW31Ioni Bowcher
1036James U CaudyArgentina2024-05-07Feltz Printing Service UNQUALIFIED81Bernardo Dominic
1037Wickens A NickaIndia2024-04-11Benton, John B Jr QUALIFIED50Ivan Magalhaes
1038Arvin J ShinkoArgentina2024-05-08Chanay, Jeffrey A Esq NEW25Stephen Shaw
1039Izzy F DilliardGermany2024-05-09Chanay, Jeffrey A Esq NEGOTIATION78Xuxue Feng
1040Mayumi C BowleyAustralia2024-04-18Morlong Associates NEW11Ioni Bowcher
1041Darci X WieserRussia2024-05-07Rousseaux, Michael Esq RENEWAL43Anna Fali
1042Antonio L GarufiArgentina2024-04-16Rousseaux, Michael Esq NEGOTIATION24Stephen Shaw
1043Salvatore X DarakjyAustralia2024-04-26Morlong Associates RENEWAL18Xuxue Feng
1044Jefferson C MaletAustralia2024-05-06Rangoni Of Florence NEW43Stephen Shaw
1045Ivar W ButtSpain2024-04-28Truhlar And Truhlar Attys PROPOSAL95Stephen Shaw
1046Chavez J GlickUnited Kingdom2024-04-27King, Christopher A Esq UNQUALIFIED80Bernardo Dominic
1047Maria W StockhamJapan2024-04-23Chemel, James L Cpa QUALIFIED20Amy Elsner
1048Chavez H BologniaIndia2024-04-28Morlong Associates NEW92Asiya Javayant
1049Johnson O MorascaFrance2024-04-29Feiner Bros RENEWAL32Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Leja Y DarakjyRussiaAmy Elsner QUALIFIED
Mayumi F SlusarskiRussiaIoni Bowcher RENEWAL
Leja Z ButtItalyAmy Elsner RENEWAL
Julie I AlbaresCanadaAnna Fali UNQUALIFIED
Francesco A SergiItalyAmy Elsner PROPOSAL
Maria G NickaArgentinaStephen Shaw NEGOTIATION
Jefferson B RoysterUnited KingdomOnyama Limba NEGOTIATION
Greenwood I FlosiBrazilXuxue Feng QUALIFIED
David Y PerinUnited KingdomXuxue Feng NEW
Arvin E ShinkoRussiaOnyama Limba NEGOTIATION
Ricardo Q MaletAustraliaBernardo Dominic QUALIFIED
Isabel M FigeroaArgentinaIoni Bowcher UNQUALIFIED
Leja X RutaItalyAnna Fali RENEWAL
Juan U DoeAustraliaIoni Bowcher PROPOSAL
Greenwood R FollerCanadaIoni Bowcher NEGOTIATION
Leon R ButtBrazilAnna Fali NEW
Silvio M KolmetzRussiaOnyama Limba UNQUALIFIED
Faith M SchemmerSpainAmy Elsner QUALIFIED
Greenwood K NestleUnited KingdomXuxue Feng RENEWAL
Claire Q CaldareraIndiaOnyama Limba QUALIFIED
Emily M VocelkaArgentinaBernardo Dominic PROPOSAL
Misaki T ChuiUnited KingdomIvan Magalhaes UNQUALIFIED
Juan E WaycottArgentinaAmy Elsner NEGOTIATION
Nicolas F MacleadRussiaElwin Sharvill NEW
Emily A FigeroaCanadaAmy Elsner NEW
Wickens G BologniaJapanXuxue Feng UNQUALIFIED
Leon V ButtIndiaOnyama Limba QUALIFIED
Mayumi I ShinkoArgentinaStephen Shaw QUALIFIED
Aruna C StensethIndiaIvan Magalhaes NEGOTIATION
Antonio H GarufiUnited KingdomAmy Elsner NEGOTIATION
Antonio I BriddickSpainIvan Magalhaes NEW
Aditya S BowleyJapanStephen Shaw QUALIFIED
Salvatore W KolmetzAustraliaXuxue Feng RENEWAL
Smith K TollnerJapanAsiya Javayant UNQUALIFIED
Faith F MarrierFranceIvan Magalhaes UNQUALIFIED
Stacey I WaycottSpainAsiya Javayant NEGOTIATION
Johnson C InouyeAustraliaAmy Elsner UNQUALIFIED
Greenwood N CaldareraBrazilBernardo Dominic QUALIFIED
Arvin G VenereFranceOnyama Limba NEGOTIATION
Morrow Q ShinkoGermanyStephen Shaw NEW
Kadeem I PoquetteIndiaStephen Shaw RENEWAL
Clifford P GlickGermanyIoni Bowcher UNQUALIFIED
Arvin O StensethItalyAnna Fali NEW
Silvio A WhobreySpainIvan Magalhaes NEGOTIATION
Aruna I NestleGermanyIoni Bowcher QUALIFIED
Darci K FigeroaBrazilIvan Magalhaes RENEWAL
Leon U GlickJapanElwin Sharvill QUALIFIED
Julie S SaylorsGermanyAnna Fali UNQUALIFIED
Jeanfrancois Q GauchoGermanyBernardo Dominic UNQUALIFIED
Arvin N MorascaRussiaStephen Shaw RENEWAL
Frozen Columns
Name
Darci E Morasca
Arvin G Garufi
Rodrigues X Whobrey
Sinclair V Garufi
Izzy Y Saylors
Maisha H Ruta
Jennifer G Waycott
Chavez Q Inouye
Aika U Nestle
Ashley J Marrier
Claire S Royster
David R Darakjy
Chavez M Ostrosky
Murillo Z Tollner
Mujtaba N Foller
Cody E Malet
Julie O Butt
Aika T Inouye
Juan N Kolmetz
Jones G Caldarera
Deepesh A Caldarera
Ashley W Bolognia
Munro V Garufi
Johnson N Saylors
Misaki L Flosi
Kadeem E Nestle
Maisha Y Oldroyd
Adams K Ostrosky
Ashley T Albares
Cody T Morasca
Silvio D Campain
Isabel R Nestle
Johnson W Caldarera
Rodrigues T Garufi
Stacey T Campain
Ricardo U Darakjy
Claire G Poquette
Aruna E Vocelka
Emily Y Caudy
Adams W Rulapaugh
Adams K Slusarski
Octavia J Oldroyd
Munro W Kolmetz
Faith F Waycott
Leon S Briddick
Arvin I Nestle
Leja V Butt
David D Inouye
Francesco B Rulapaugh
Kaitlin C Sergi
IdCountryDate
1000Canada2024-04-16
1001India2024-04-14
1002India2024-05-01
1003Japan2024-04-18
1004India2024-05-04
1005France2024-05-04
1006Japan2024-05-01
1007United Kingdom2024-04-22
1008India2024-05-01
1009India2024-05-05
1010Brazil2024-04-13
1011Japan2024-04-11
1012Spain2024-04-13
1013United Kingdom2024-04-24
1014Russia2024-04-21
1015Russia2024-04-30
1016Japan2024-04-19
1017India2024-04-26
1018Canada2024-05-02
1019United Kingdom2024-04-12
1020India2024-04-19
1021Argentina2024-05-09
1022Italy2024-05-08
1023Japan2024-04-16
1024France2024-04-27
1025Canada2024-04-26
1026Spain2024-04-12
1027United Kingdom2024-04-25
1028Brazil2024-04-28
1029United Kingdom2024-04-18
1030Japan2024-04-14
1031Brazil2024-04-30
1032Russia2024-05-08
1033France2024-04-16
1034Italy2024-04-17
1035United Kingdom2024-04-25
1036Italy2024-05-08
1037Argentina2024-04-25
1038Spain2024-05-09
1039Australia2024-04-12
1040Russia2024-05-06
1041Japan2024-04-25
1042Argentina2024-04-16
1043Russia2024-04-17
1044Russia2024-04-25
1045Spain2024-04-18
1046Italy2024-05-10
1047Brazil2024-05-06
1048France2024-04-27
1049Argentina2024-04-13

On-Demand Data

NameIdCountryDate
Greenwood E Gaucho1000Australia2024-05-01
Murillo T Bowley1001United Kingdom2024-04-20
Wickens B Oldroyd1002Brazil2024-04-16
Juan U Gillian1003Italy2024-04-24
Sinclair H Dilliard1004Russia2024-05-05
Mujtaba Q Flosi1005Argentina2024-04-18
Mayumi U Perin1006Australia2024-05-08
Salvatore Z Perin1007Brazil2024-04-16
Octavia J Flosi1008United Kingdom2024-04-23
Mayumi J Bolognia1009Japan2024-04-17
Octavia P Oldroyd1010Italy2024-04-22
Octavia Y Ostrosky1011Spain2024-04-20
Ashley V Glick1012India2024-04-30
Cody D Maclead1013Brazil2024-04-28
Rodrigues R Shinko1014Spain2024-04-12
Julie Z Ferencz1015Italy2024-04-18
David D Malet1016Canada2024-04-23
Leja F Stenseth1017Brazil2024-05-05
Johnson V Venere1018Canada2024-04-28
Salvatore G Poquette1019United Kingdom2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki I ChuiRussiaOnyama Limba PROPOSAL
Tony X ShinkoSpainXuxue Feng RENEWAL
Antonio T FigeroaAustraliaAmy Elsner UNQUALIFIED
Faith N FerenczAustraliaIoni Bowcher NEW
Kaitlin W FlosiUnited KingdomOnyama Limba UNQUALIFIED
Stacey I InouyeArgentinaBernardo Dominic PROPOSAL
Jennifer S AlbaresAustraliaStephen Shaw QUALIFIED
Juan A CaldareraFranceElwin Sharvill RENEWAL
Silvio M StockhamGermanyAnna Fali QUALIFIED
James Y FlosiCanadaAmy Elsner UNQUALIFIED
Leja A IturbideCanadaAsiya Javayant NEW
Ashley K DoeCanadaIoni Bowcher UNQUALIFIED
Greenwood K ChuiJapanIvan Magalhaes RENEWAL
Juan S RutaJapanXuxue Feng NEGOTIATION
Aika T MacleadItalyIvan Magalhaes NEW
Kadeem C IturbideCanadaOnyama Limba RENEWAL
Maria K IturbideIndiaIvan Magalhaes PROPOSAL
Morrow Z WaycottArgentinaOnyama Limba RENEWAL
Aditya U StockhamAustraliaElwin Sharvill PROPOSAL
Cody F IturbideSpainOnyama Limba PROPOSAL
Octavia F GillianCanadaElwin Sharvill RENEWAL
Kadeem D GauchoGermanyOnyama Limba NEGOTIATION
Octavia Y BowleyIndiaXuxue Feng UNQUALIFIED
Aika N PoquetteBrazilIvan Magalhaes NEGOTIATION
Ivar H VocelkaCanadaIvan Magalhaes NEW
Aditya A MacleadIndiaAsiya Javayant RENEWAL
Aditya P FigeroaJapanStephen Shaw UNQUALIFIED
Juan A DoeRussiaIoni Bowcher PROPOSAL
Cody B DarakjyIndiaOnyama Limba RENEWAL
Aika G OldroydRussiaOnyama Limba UNQUALIFIED
Misaki E NestleSpainAsiya Javayant PROPOSAL
Jeanfrancois Y AlbaresItalyIoni Bowcher NEW
Stacey T RutaItalyAsiya Javayant PROPOSAL
Mayumi T ShinkoIndiaIvan Magalhaes RENEWAL
Misaki Z DoeCanadaIoni Bowcher NEGOTIATION
Aika V InouyeIndiaStephen Shaw NEW
Antonio D FigeroaRussiaBernardo Dominic UNQUALIFIED
Jefferson V FollerUnited KingdomXuxue Feng UNQUALIFIED
Leja M NickaArgentinaIvan Magalhaes RENEWAL
Johnson I FollerJapanStephen Shaw NEW

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