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
Maisha H DilliardUnited KingdomAmy Elsner NEW
Izzy Z MorascaGermanyAmy Elsner UNQUALIFIED
Darci M FlosiJapanAnna Fali RENEWAL
Jennifer K MorascaArgentinaAnna Fali UNQUALIFIED
Rodrigues Z PoquetteBrazilAnna Fali NEGOTIATION
Isabel D AmigonCanadaElwin Sharvill UNQUALIFIED
Emily J CaldareraBrazilIoni Bowcher PROPOSAL
Murillo C MorascaItalyIvan Magalhaes RENEWAL
Adams C DarakjyGermanyAnna Fali PROPOSAL
Murillo V KolmetzGermanyIvan Magalhaes RENEWAL
David Z FlosiBrazilOnyama Limba PROPOSAL
Maisha J VocelkaGermanyAnna Fali QUALIFIED
Izzy B DoeArgentinaAsiya Javayant RENEWAL
Alejandro G DarakjyJapanIvan Magalhaes NEW
Maria G RulapaughJapanOnyama Limba NEW
Emily J SlusarskiCanadaStephen Shaw NEGOTIATION
Isabel P MarrierUnited KingdomAsiya Javayant PROPOSAL
Francesco U BriddickBrazilIvan Magalhaes QUALIFIED
Stacey I VenereJapanIvan Magalhaes RENEWAL
Francesco B SchemmerFranceIoni Bowcher NEW
Francesco G MaletAustraliaXuxue Feng RENEWAL
Chavez V WieserAustraliaIoni Bowcher PROPOSAL
Morrow B PerinBrazilBernardo Dominic RENEWAL
Nicolas F MorascaBrazilAnna Fali RENEWAL
Jennifer N BowleyArgentinaAsiya Javayant NEGOTIATION
Isabel C BologniaIndiaAmy Elsner QUALIFIED
Emily X RoysterIndiaXuxue Feng QUALIFIED
James N InouyeJapanAsiya Javayant RENEWAL
Morrow N SchemmerAustraliaAsiya Javayant UNQUALIFIED
Juan V TollnerRussiaBernardo Dominic NEGOTIATION
Chavez N InouyeUnited KingdomXuxue Feng UNQUALIFIED
Johnson M CaudyAustraliaStephen Shaw RENEWAL
Greenwood G PerinFranceIoni Bowcher PROPOSAL
Jennifer Y VocelkaJapanBernardo Dominic QUALIFIED
Rodrigues N NickaAustraliaAsiya Javayant QUALIFIED
Antonio G MaletItalyAsiya Javayant RENEWAL
Deepesh Y GauchoSpainXuxue Feng NEGOTIATION
Izzy E PoquetteAustraliaAsiya Javayant NEW
Deepesh D FigeroaArgentinaXuxue Feng QUALIFIED
Rodrigues M DoeUnited KingdomOnyama Limba NEGOTIATION
Jeanfrancois Y FigeroaArgentinaStephen Shaw PROPOSAL
Juan D AmigonRussiaAmy Elsner NEGOTIATION
Greenwood D PoquetteBrazilAmy Elsner NEW
Sinclair I CaudyItalyAmy Elsner UNQUALIFIED
Maria Y BriddickIndiaBernardo Dominic NEW
Aika T FigeroaUnited KingdomXuxue Feng PROPOSAL
Munro G GauchoGermanyStephen Shaw RENEWAL
Mayumi N MaletItalyXuxue Feng RENEWAL
Leja M RulapaughAustraliaAsiya Javayant PROPOSAL
Deepesh U AlbaresArgentinaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Isabel J FlosiItalyOnyama Limba RENEWAL
Aruna I ButtArgentinaIoni Bowcher NEW
Greenwood V FigeroaJapanAmy Elsner UNQUALIFIED
Juan L RulapaughBrazilAmy Elsner NEGOTIATION
Mayumi N DilliardRussiaStephen Shaw RENEWAL
James M DilliardRussiaAnna Fali QUALIFIED
Rodrigues J SaylorsUnited KingdomBernardo Dominic NEGOTIATION
Octavia W SaylorsIndiaAnna Fali NEGOTIATION
Leja S MacleadItalyIvan Magalhaes RENEWAL
Maisha Z PaprockiItalyIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo J AlbaresUnited Kingdom2024-05-01King, Christopher A Esq NEGOTIATION31Bernardo Dominic
1001Costa A MaletRussia2024-04-26Morlong Associates UNQUALIFIED88Stephen Shaw
1002Mayumi J WaycottGermany2024-05-09Chapman, Ross E Esq NEGOTIATION5Elwin Sharvill
1003Ashley C DoeBrazil2024-05-10Printing Dimensions UNQUALIFIED73Elwin Sharvill
1004Claire T FerenczArgentina2024-04-21Benton, John B Jr QUALIFIED45Asiya Javayant
1005Ashley O RimFrance2024-05-10Dorl, James J Esq RENEWAL24Asiya Javayant
1006Tony Y WaycottJapan2024-05-09Buckley Miller Wright RENEWAL83Elwin Sharvill
1007Jefferson A InouyeCanada2024-05-09Feiner Bros PROPOSAL22Elwin Sharvill
1008Stacey J GlickJapan2024-05-05Feiner Bros UNQUALIFIED50Asiya Javayant
1009Jennifer R FlosiBrazil2024-05-10Feltz Printing Service NEGOTIATION3Ioni Bowcher
1010Ashley M PaprockiUnited Kingdom2024-05-16Chanay, Jeffrey A Esq NEGOTIATION0Onyama Limba
1011Tony P FollerUnited Kingdom2024-05-10Chanay, Jeffrey A Esq UNQUALIFIED76Onyama Limba
1012Rodrigues D CaudyGermany2024-04-28Feiner Bros NEGOTIATION9Stephen Shaw
1013James N GlickFrance2024-04-23Rousseaux, Michael Esq UNQUALIFIED19Xuxue Feng
1014Mujtaba Q VocelkaRussia2024-05-07King, Christopher A Esq UNQUALIFIED34Bernardo Dominic
1015Julie Z WieserItaly2024-05-12Chemel, James L Cpa RENEWAL44Stephen Shaw
1016Deepesh M SaylorsSpain2024-05-19Chemel, James L Cpa NEW67Amy Elsner
1017Kadeem M DilliardAustralia2024-04-28Buckley Miller Wright UNQUALIFIED81Anna Fali
1018Francesco C GillianArgentina2024-05-13Chapman, Ross E Esq NEGOTIATION63Stephen Shaw
1019Chavez V MarrierUnited Kingdom2024-04-23Printing Dimensions QUALIFIED83Xuxue Feng
1020Johnson S InouyeBrazil2024-05-13Chanay, Jeffrey A Esq RENEWAL55Bernardo Dominic
1021Sinclair Q OstroskyBrazil2024-04-27King, Christopher A Esq NEW56Ioni Bowcher
1022Claire V GlickAustralia2024-04-30Feiner Bros RENEWAL6Ivan Magalhaes
1023Alejandro K OstroskyUnited Kingdom2024-05-14Feiner Bros UNQUALIFIED26Onyama Limba
1024Faith V BowleyUnited Kingdom2024-05-10Buckley Miller Wright NEW80Anna Fali
1025Wickens Y DarakjyArgentina2024-04-23Chemel, James L Cpa PROPOSAL53Asiya Javayant
1026Leja H GillianBrazil2024-05-02Benton, John B Jr QUALIFIED31Xuxue Feng
1027Nicolas Q RoysterArgentina2024-05-05Dorl, James J Esq PROPOSAL86Bernardo Dominic
1028David E BologniaArgentina2024-05-20Printing Dimensions UNQUALIFIED90Ioni Bowcher
1029Darci W GarufiAustralia2024-05-10Rousseaux, Michael Esq UNQUALIFIED51Onyama Limba
1030Deepesh Z MacleadCanada2024-05-12Rangoni Of Florence QUALIFIED73Xuxue Feng
1031Costa I NestleBrazil2024-05-06King, Christopher A Esq UNQUALIFIED48Ioni Bowcher
1032Ashley V DilliardUnited Kingdom2024-05-01Rangoni Of Florence NEW93Asiya Javayant
1033Aditya E NickaUnited Kingdom2024-05-05Printing Dimensions PROPOSAL48Onyama Limba
1034Salvatore N PerinGermany2024-05-06Benton, John B Jr UNQUALIFIED61Stephen Shaw
1035Izzy F CaudySpain2024-04-28Feiner Bros PROPOSAL99Stephen Shaw
1036Faith O BowleyRussia2024-05-03King, Christopher A Esq RENEWAL18Onyama Limba
1037Aditya S OstroskyAustralia2024-05-17King, Christopher A Esq NEW49Bernardo Dominic
1038Rodrigues M ChuiIndia2024-04-21Chanay, Jeffrey A Esq QUALIFIED89Elwin Sharvill
1039Izzy O FollerItaly2024-05-14Rangoni Of Florence PROPOSAL92Anna Fali
1040Arvin W ChuiRussia2024-04-26Benton, John B Jr RENEWAL3Asiya Javayant
1041Leja P SlusarskiJapan2024-05-01Printing Dimensions RENEWAL29Anna Fali
1042Octavia A ButtAustralia2024-05-09Chapman, Ross E Esq NEGOTIATION42Ioni Bowcher
1043Salvatore D CaldareraItaly2024-04-29Dorl, James J Esq NEW5Ioni Bowcher
1044Wickens X FollerBrazil2024-04-21Buckley Miller Wright NEW65Onyama Limba
1045Aika J MaletUnited Kingdom2024-05-17Dorl, James J Esq NEGOTIATION75Ioni Bowcher
1046Faith U DilliardUnited Kingdom2024-05-07Buckley Miller Wright PROPOSAL31Stephen Shaw
1047Maisha L ButtItaly2024-04-30Morlong Associates PROPOSAL91Ivan Magalhaes
1048Darci W RulapaughCanada2024-05-09Dorl, James J Esq NEGOTIATION97Elwin Sharvill
1049Jefferson I VenereArgentina2024-04-27Benton, John B Jr RENEWAL41Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Leon Y SaylorsGermanyIvan Magalhaes RENEWAL
Aika M RimRussiaAmy Elsner NEGOTIATION
Johnson C AmigonGermanyIvan Magalhaes UNQUALIFIED
Antonio B VocelkaIndiaXuxue Feng NEGOTIATION
Leja Q DarakjyJapanAnna Fali NEW
Jones V GarufiItalyXuxue Feng UNQUALIFIED
Izzy W MacleadItalyAsiya Javayant NEGOTIATION
Aditya E FollerItalyBernardo Dominic NEW
Silvio F FigeroaArgentinaXuxue Feng QUALIFIED
Darci L RutaCanadaStephen Shaw RENEWAL
Aruna W StockhamBrazilStephen Shaw UNQUALIFIED
Jennifer T IturbideGermanyStephen Shaw PROPOSAL
Emily A FerenczIndiaAsiya Javayant NEW
Octavia M BriddickRussiaIvan Magalhaes UNQUALIFIED
Jennifer J PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Alejandro O GauchoIndiaXuxue Feng UNQUALIFIED
Sinclair B RulapaughArgentinaBernardo Dominic PROPOSAL
Tony A BriddickIndiaAmy Elsner NEW
Nicolas K MaletArgentinaOnyama Limba UNQUALIFIED
Alejandro I KolmetzGermanyElwin Sharvill QUALIFIED
Adams I NestleGermanyAsiya Javayant PROPOSAL
Costa L CampainGermanyAmy Elsner NEGOTIATION
Jeanfrancois P AlbaresBrazilAnna Fali UNQUALIFIED
Aika E MorascaJapanIvan Magalhaes NEW
Ashley L CampainSpainAsiya Javayant RENEWAL
Murillo W PerinAustraliaElwin Sharvill NEW
Antonio M CaldareraJapanAsiya Javayant QUALIFIED
Salvatore R ShinkoAustraliaElwin Sharvill NEGOTIATION
Jefferson T CampainCanadaAsiya Javayant NEW
Maria O KolmetzFranceElwin Sharvill NEW
Deepesh U SlusarskiIndiaOnyama Limba RENEWAL
Tony H VocelkaGermanyElwin Sharvill NEW
Ashley S RoysterItalyElwin Sharvill RENEWAL
Juan A AlbaresIndiaOnyama Limba RENEWAL
Deepesh I FlosiCanadaStephen Shaw PROPOSAL
Deepesh D WaycottItalyIoni Bowcher NEW
Kaitlin C StensethGermanyXuxue Feng QUALIFIED
Morrow U KuskoIndiaIoni Bowcher PROPOSAL
Aruna M IturbideItalyOnyama Limba UNQUALIFIED
Ivar A StockhamAustraliaAnna Fali NEW
Kaitlin I DoeArgentinaXuxue Feng UNQUALIFIED
Chavez B AlbaresJapanAsiya Javayant QUALIFIED
Mayumi T WaycottRussiaStephen Shaw NEGOTIATION
Greenwood G DilliardGermanyAmy Elsner PROPOSAL
Faith H MarrierJapanAnna Fali UNQUALIFIED
Arvin O DarakjyBrazilElwin Sharvill QUALIFIED
Jeanfrancois C StensethJapanXuxue Feng UNQUALIFIED
Izzy Z RulapaughRussiaBernardo Dominic NEGOTIATION
Ashley D StensethCanadaAmy Elsner NEGOTIATION
Francesco K IturbideArgentinaIoni Bowcher RENEWAL
Frozen Columns
Name
Octavia E Dilliard
Aditya U Kusko
Jefferson J Nicka
Claire Q Bolognia
Misaki G Morasca
Cody F Saylors
Salvatore K Gaucho
Izzy A Wieser
Claire J Gaucho
Costa W Nestle
Leja A Rim
Jefferson E Rulapaugh
Johnson M Gaucho
Kaitlin G Stockham
Silvio J Chui
David M Malet
Octavia G Rim
Ivar Y Albares
Ivar I Paprocki
Misaki V Gillian
Mujtaba V Oldroyd
Aditya C Flosi
Antonio P Gillian
Morrow X Ostrosky
Silvio O Bolognia
Adams F Darakjy
Leja Q Perin
Jones Q Bolognia
David A Butt
Ricardo F Malet
Aika O Ferencz
Johnson X Ferencz
Jefferson A Rim
Aika W Perin
Munro M Ostrosky
Rodrigues M Kolmetz
James O Oldroyd
Wickens E Darakjy
Adams Q Albares
Wickens E Stenseth
Jeanfrancois H Vocelka
Maisha W Ostrosky
Cody U Ruta
Maisha Z Gaucho
Jefferson L Oldroyd
David Q Malet
Jennifer R Amigon
Faith N Figeroa
Silvio Q Ferencz
Murillo U Waycott
IdCountryDate
1000Australia2024-04-29
1001France2024-04-23
1002France2024-05-11
1003Spain2024-04-26
1004Russia2024-05-08
1005Germany2024-05-10
1006Russia2024-05-14
1007France2024-05-15
1008France2024-04-23
1009Canada2024-05-07
1010Italy2024-05-16
1011Canada2024-05-10
1012Spain2024-05-07
1013Australia2024-04-22
1014Australia2024-05-08
1015Japan2024-05-05
1016Canada2024-04-25
1017Spain2024-05-09
1018Australia2024-04-27
1019Spain2024-05-17
1020Canada2024-04-29
1021Canada2024-05-15
1022Japan2024-05-05
1023France2024-05-08
1024Italy2024-04-28
1025Russia2024-05-17
1026Italy2024-04-26
1027Argentina2024-04-23
1028Italy2024-05-07
1029Japan2024-04-27
1030Germany2024-05-13
1031Canada2024-05-13
1032France2024-05-05
1033Germany2024-04-24
1034Australia2024-05-07
1035Spain2024-04-22
1036Russia2024-05-18
1037Argentina2024-05-14
1038Japan2024-05-04
1039France2024-04-24
1040United Kingdom2024-04-30
1041Argentina2024-05-04
1042Spain2024-05-16
1043Argentina2024-05-19
1044France2024-04-29
1045Germany2024-05-02
1046Italy2024-05-08
1047Brazil2024-04-29
1048France2024-05-14
1049France2024-05-15

On-Demand Data

NameIdCountryDate
Clifford K Rulapaugh1000Australia2024-04-25
Ricardo W Morasca1001Brazil2024-05-01
Izzy F Saylors1002Australia2024-05-09
Adams N Rulapaugh1003Japan2024-04-24
Nicolas H Kusko1004Canada2024-04-22
Ricardo I Dilliard1005Germany2024-04-26
Arvin M Amigon1006United Kingdom2024-05-19
Francesco P Glick1007United Kingdom2024-05-07
Jefferson N Schemmer1008Germany2024-04-24
Morrow M Stockham1009France2024-05-08
Aika X Darakjy1010Japan2024-04-29
Aditya K Chui1011Brazil2024-04-24
Ricardo H Campain1012Spain2024-04-26
Mujtaba W Slusarski1013Brazil2024-05-16
Izzy Z Saylors1014Australia2024-04-24
Munro I Rim1015France2024-04-29
Greenwood J Iturbide1016India2024-05-08
Darci F Nicka1017Italy2024-05-05
Johnson K Shinko1018Japan2024-05-12
Adams F Morasca1019Italy2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon E SchemmerGermanyXuxue Feng UNQUALIFIED
Octavia Q StensethArgentinaAnna Fali NEW
Greenwood X MaletAustraliaAmy Elsner NEW
Kaitlin T TollnerItalyStephen Shaw RENEWAL
Nicolas D IturbideGermanyXuxue Feng RENEWAL
Murillo T PaprockiSpainAnna Fali QUALIFIED
Emily V NestleUnited KingdomIoni Bowcher NEW
Cody M CaldareraJapanBernardo Dominic PROPOSAL
Misaki F WieserItalyIvan Magalhaes UNQUALIFIED
Nicolas Y SlusarskiBrazilBernardo Dominic NEGOTIATION
Clifford R CampainItalyIoni Bowcher RENEWAL
Ricardo C PoquetteGermanyAsiya Javayant UNQUALIFIED
Juan N FlosiJapanAsiya Javayant PROPOSAL
Wickens R BriddickJapanXuxue Feng NEGOTIATION
Leja L VenereArgentinaIoni Bowcher RENEWAL
Kadeem X FlosiFranceXuxue Feng NEGOTIATION
Nicolas C FigeroaRussiaAnna Fali NEGOTIATION
Aditya G CaldareraGermanyOnyama Limba QUALIFIED
Tony P PoquetteBrazilAsiya Javayant NEGOTIATION
Jennifer B KuskoGermanyXuxue Feng PROPOSAL
Aika O RulapaughItalyIvan Magalhaes NEW
Jeanfrancois N AlbaresUnited KingdomOnyama Limba UNQUALIFIED
Wickens S FlosiJapanAsiya Javayant PROPOSAL
Darci A MaletFranceAmy Elsner UNQUALIFIED
Greenwood L GlickRussiaIvan Magalhaes NEGOTIATION
Ricardo P GlickCanadaBernardo Dominic NEW
Mayumi X SlusarskiSpainStephen Shaw NEW
Jones B NickaSpainIvan Magalhaes PROPOSAL
Leon P OstroskySpainStephen Shaw PROPOSAL
Claire Q WieserGermanyAnna Fali UNQUALIFIED
Wickens W SergiAustraliaAmy Elsner UNQUALIFIED
Faith E AlbaresGermanyBernardo Dominic QUALIFIED
Maisha Z CampainSpainElwin Sharvill UNQUALIFIED
Aruna W NickaFranceAmy Elsner UNQUALIFIED
Silvio N InouyeSpainXuxue Feng RENEWAL
James A GarufiAustraliaElwin Sharvill QUALIFIED
Mujtaba L GlickCanadaIoni Bowcher PROPOSAL
Wickens G FerenczBrazilIvan Magalhaes UNQUALIFIED
Maisha Z MaletBrazilXuxue Feng QUALIFIED
Sinclair C PaprockiItalyBernardo Dominic 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>