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
Ricardo N CampainAustraliaXuxue Feng RENEWAL
Claire T RulapaughJapanAnna Fali NEGOTIATION
Emily H GillianFranceBernardo Dominic QUALIFIED
Johnson K WhobreyCanadaAsiya Javayant QUALIFIED
Deepesh J NickaUnited KingdomIoni Bowcher RENEWAL
Deepesh V MacleadUnited KingdomBernardo Dominic PROPOSAL
Costa D KolmetzFranceXuxue Feng NEGOTIATION
Silvio F MacleadCanadaElwin Sharvill UNQUALIFIED
Chavez T AmigonItalyElwin Sharvill RENEWAL
Juan X FigeroaSpainOnyama Limba UNQUALIFIED
Alejandro C RimJapanIoni Bowcher QUALIFIED
Smith G StockhamArgentinaStephen Shaw RENEWAL
Clifford X RoysterItalyElwin Sharvill NEW
Ricardo Q PoquetteItalyIvan Magalhaes NEW
Antonio R NestleUnited KingdomXuxue Feng RENEWAL
Maisha E WhobreyArgentinaBernardo Dominic NEGOTIATION
Alejandro G CaudyArgentinaAnna Fali RENEWAL
Morrow N DarakjyArgentinaAmy Elsner RENEWAL
Jeanfrancois F BowleyGermanyElwin Sharvill NEW
Maria D BowleyGermanyElwin Sharvill PROPOSAL
Chavez J SchemmerJapanOnyama Limba QUALIFIED
Aruna K AmigonFranceXuxue Feng UNQUALIFIED
Jennifer V FollerFranceIvan Magalhaes RENEWAL
Leon X MorascaIndiaOnyama Limba NEW
Costa B FigeroaArgentinaAnna Fali NEW
Rodrigues T StockhamJapanBernardo Dominic NEW
Cody H StensethUnited KingdomAmy Elsner UNQUALIFIED
Leja H PerinUnited KingdomStephen Shaw QUALIFIED
Chavez R BologniaJapanAnna Fali NEGOTIATION
Arvin T CaldareraSpainStephen Shaw NEGOTIATION
Silvio B PoquetteRussiaAmy Elsner QUALIFIED
Salvatore S SlusarskiUnited KingdomElwin Sharvill PROPOSAL
Kaitlin Y IturbideJapanIoni Bowcher NEW
Sinclair X SaylorsBrazilIvan Magalhaes PROPOSAL
Kadeem A DarakjyGermanyStephen Shaw QUALIFIED
Sinclair B NickaIndiaOnyama Limba NEW
Mujtaba Q WieserAustraliaIvan Magalhaes UNQUALIFIED
Faith Z RutaBrazilAmy Elsner NEW
Antonio H KolmetzRussiaElwin Sharvill NEW
Mujtaba K SlusarskiArgentinaAsiya Javayant RENEWAL
Juan E FollerGermanyAnna Fali NEW
Costa V SaylorsAustraliaXuxue Feng NEW
Murillo A GarufiJapanStephen Shaw UNQUALIFIED
Claire V FlosiJapanAsiya Javayant QUALIFIED
Smith V BowleyGermanyOnyama Limba RENEWAL
Leja K MaletFranceAmy Elsner RENEWAL
Julie X PaprockiAustraliaIoni Bowcher PROPOSAL
Morrow H RimFranceAsiya Javayant NEW
Izzy M TollnerGermanyAsiya Javayant NEGOTIATION
Ashley E ChuiJapanElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Alejandro P PaprockiCanadaElwin Sharvill RENEWAL
Kadeem T AmigonGermanyAsiya Javayant RENEWAL
Leon Y BowleySpainOnyama Limba NEGOTIATION
Aika N ShinkoArgentinaIvan Magalhaes RENEWAL
David E InouyeBrazilIvan Magalhaes QUALIFIED
Faith E BologniaArgentinaElwin Sharvill NEGOTIATION
Murillo L PerinJapanAnna Fali QUALIFIED
Salvatore Z SlusarskiSpainOnyama Limba PROPOSAL
Morrow F CaldareraGermanyStephen Shaw NEW
Jeanfrancois S GlickFranceOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia E CaudyFrance2024-04-01Buckley Miller Wright PROPOSAL58Asiya Javayant
1001Adams Z PoquetteFrance2024-04-05Feltz Printing Service NEW78Asiya Javayant
1002Smith H FerenczSpain2024-04-23Chemel, James L Cpa UNQUALIFIED63Stephen Shaw
1003James O MaletRussia2024-04-24Feiner Bros QUALIFIED36Amy Elsner
1004Juan U SaylorsArgentina2024-04-27King, Christopher A Esq UNQUALIFIED68Ivan Magalhaes
1005Jeanfrancois Q BriddickCanada2024-04-16Dorl, James J Esq NEW93Ioni Bowcher
1006Ashley C CaldareraArgentina2024-03-31Chanay, Jeffrey A Esq RENEWAL75Ioni Bowcher
1007Ricardo X MarrierArgentina2024-04-25Feiner Bros QUALIFIED37Ioni Bowcher
1008Greenwood F PerinGermany2024-04-06Commercial Press RENEWAL51Ivan Magalhaes
1009Maria I MaletSpain2024-04-05Chapman, Ross E Esq RENEWAL47Ivan Magalhaes
1010Jeanfrancois C StockhamUnited Kingdom2024-04-11Feltz Printing Service NEGOTIATION44Asiya Javayant
1011Maria M BologniaRussia2024-04-12Feltz Printing Service PROPOSAL48Asiya Javayant
1012Claire Z TollnerSpain2024-04-28Commercial Press PROPOSAL90Elwin Sharvill
1013Aika L RulapaughArgentina2024-04-28Feiner Bros PROPOSAL70Onyama Limba
1014Leon V DilliardSpain2024-04-03Morlong Associates PROPOSAL97Ivan Magalhaes
1015Maria E GillianRussia2024-04-27Feiner Bros PROPOSAL54Asiya Javayant
1016Arvin I AmigonFrance2024-04-29Benton, John B Jr RENEWAL59Ivan Magalhaes
1017Francesco I VocelkaFrance2024-04-13Chapman, Ross E Esq UNQUALIFIED85Asiya Javayant
1018Greenwood Q SergiCanada2024-04-09Chanay, Jeffrey A Esq RENEWAL62Xuxue Feng
1019Salvatore P AmigonGermany2024-04-25Truhlar And Truhlar Attys NEW52Anna Fali
1020Alejandro G NickaBrazil2024-04-16Feltz Printing Service PROPOSAL52Bernardo Dominic
1021Izzy A RutaAustralia2024-04-23Truhlar And Truhlar Attys NEW20Elwin Sharvill
1022Cody Y VenereGermany2024-04-26Morlong Associates NEGOTIATION49Ioni Bowcher
1023Nicolas J OldroydArgentina2024-04-10Chemel, James L Cpa NEGOTIATION19Amy Elsner
1024Morrow S FigeroaSpain2024-04-25Commercial Press QUALIFIED46Bernardo Dominic
1025Greenwood S KolmetzUnited Kingdom2024-04-28Morlong Associates NEGOTIATION39Ioni Bowcher
1026Adams P PoquetteFrance2024-04-03Chanay, Jeffrey A Esq QUALIFIED27Ivan Magalhaes
1027Ricardo H WaycottGermany2024-04-29Chapman, Ross E Esq RENEWAL81Ivan Magalhaes
1028Alejandro M SlusarskiFrance2024-04-05King, Christopher A Esq UNQUALIFIED34Onyama Limba
1029Greenwood I VocelkaArgentina2024-04-17Feiner Bros QUALIFIED21Elwin Sharvill
1030Izzy Z GarufiIndia2024-04-04Feltz Printing Service PROPOSAL50Amy Elsner
1031Murillo A RutaAustralia2024-04-11Chapman, Ross E Esq RENEWAL82Bernardo Dominic
1032Alejandro T KolmetzCanada2024-04-17Feltz Printing Service UNQUALIFIED82Ivan Magalhaes
1033Nicolas M WhobreyArgentina2024-04-24King, Christopher A Esq QUALIFIED60Stephen Shaw
1034Octavia N StensethBrazil2024-04-29Truhlar And Truhlar Attys QUALIFIED86Ioni Bowcher
1035Aditya B BowleyUnited Kingdom2024-04-28Benton, John B Jr PROPOSAL44Elwin Sharvill
1036Salvatore Z AlbaresAustralia2024-04-11Chemel, James L Cpa PROPOSAL37Anna Fali
1037Maisha E TollnerUnited Kingdom2024-04-14Buckley Miller Wright QUALIFIED58Bernardo Dominic
1038Misaki S DilliardArgentina2024-04-03Benton, John B Jr UNQUALIFIED30Amy Elsner
1039Kaitlin K PoquetteItaly2024-04-27Rousseaux, Michael Esq RENEWAL31Xuxue Feng
1040Johnson G TollnerUnited Kingdom2024-04-26Morlong Associates NEGOTIATION90Elwin Sharvill
1041Mujtaba V BologniaRussia2024-04-05Benton, John B Jr NEW42Asiya Javayant
1042Cody S GlickCanada2024-04-23Chemel, James L Cpa PROPOSAL73Ioni Bowcher
1043Clifford X InouyeItaly2024-04-27Chemel, James L Cpa QUALIFIED97Ivan Magalhaes
1044Chavez F VenereFrance2024-04-23Dorl, James J Esq QUALIFIED77Anna Fali
1045Tony H DoeCanada2024-04-06Chemel, James L Cpa PROPOSAL13Elwin Sharvill
1046Maria V CaudyCanada2024-04-17Benton, John B Jr QUALIFIED65Elwin Sharvill
1047Munro A SlusarskiIndia2024-04-26Printing Dimensions NEGOTIATION93Bernardo Dominic
1048Clifford Z CampainFrance2024-04-13Printing Dimensions UNQUALIFIED30Bernardo Dominic
1049Aika L CaudyJapan2024-04-09Morlong Associates UNQUALIFIED36Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Clifford S MarrierGermanyAmy Elsner NEW
Costa H GillianIndiaAsiya Javayant UNQUALIFIED
Kadeem W AmigonBrazilBernardo Dominic UNQUALIFIED
Mujtaba Z DoeAustraliaAsiya Javayant RENEWAL
Chavez V FlosiUnited KingdomIvan Magalhaes PROPOSAL
Antonio S ChuiSpainAmy Elsner PROPOSAL
Silvio X DarakjyGermanyAsiya Javayant NEGOTIATION
Sinclair N MaletArgentinaIoni Bowcher UNQUALIFIED
Mujtaba T BologniaJapanAmy Elsner NEGOTIATION
Wickens Q SlusarskiJapanAsiya Javayant NEGOTIATION
Cody Q RutaIndiaIvan Magalhaes UNQUALIFIED
Jeanfrancois H RoysterUnited KingdomIvan Magalhaes UNQUALIFIED
Kadeem J CaudyAustraliaIoni Bowcher QUALIFIED
Emily T CampainRussiaIoni Bowcher QUALIFIED
Aruna U GillianSpainBernardo Dominic PROPOSAL
Aruna A RimSpainAmy Elsner NEW
Julie F PoquetteJapanIvan Magalhaes NEGOTIATION
Stacey J PaprockiSpainElwin Sharvill RENEWAL
Leon X SlusarskiRussiaStephen Shaw NEW
Greenwood N KolmetzItalyIoni Bowcher NEW
Wickens V PaprockiFranceElwin Sharvill NEW
Antonio R WhobreyJapanBernardo Dominic PROPOSAL
Jennifer T StensethIndiaOnyama Limba UNQUALIFIED
Darci X VenereUnited KingdomElwin Sharvill NEW
Adams M BowleyUnited KingdomAnna Fali NEGOTIATION
Aruna M RimUnited KingdomIoni Bowcher UNQUALIFIED
Aditya D SergiAustraliaXuxue Feng NEW
Deepesh O OldroydGermanyOnyama Limba QUALIFIED
Aruna Y PoquetteUnited KingdomElwin Sharvill UNQUALIFIED
Chavez N GarufiRussiaStephen Shaw NEW
Emily H KuskoIndiaAmy Elsner RENEWAL
Mujtaba F FlosiJapanAnna Fali NEGOTIATION
Deepesh N MacleadSpainElwin Sharvill NEW
Faith Y BowleyCanadaStephen Shaw NEW
Alejandro D StockhamUnited KingdomXuxue Feng PROPOSAL
Kadeem J GauchoArgentinaAsiya Javayant QUALIFIED
Julie M TollnerIndiaAnna Fali RENEWAL
Nicolas N AlbaresSpainIvan Magalhaes NEW
Leon D CaldareraArgentinaIoni Bowcher UNQUALIFIED
Misaki D OstroskyUnited KingdomElwin Sharvill NEGOTIATION
Nicolas I SchemmerCanadaOnyama Limba NEW
Alejandro P FlosiFranceIvan Magalhaes PROPOSAL
Darci E NestleGermanyAnna Fali NEW
Octavia P OstroskyUnited KingdomIoni Bowcher PROPOSAL
Salvatore S CaldareraBrazilIvan Magalhaes UNQUALIFIED
Adams X TollnerUnited KingdomIvan Magalhaes NEGOTIATION
Kaitlin Q SaylorsAustraliaStephen Shaw RENEWAL
Sinclair Z GlickItalyAmy Elsner NEW
Tony U VocelkaRussiaXuxue Feng QUALIFIED
Jones F CaldareraArgentinaBernardo Dominic NEGOTIATION
Frozen Columns
Name
Francesco Z Foller
Kadeem J Marrier
Alejandro G Albares
Clifford X Flosi
Isabel F Poquette
Aditya S Albares
Johnson L Iturbide
Cody K Flosi
Silvio M Shinko
Clifford E Slusarski
Misaki Y Ruta
Ashley Q Whobrey
Arvin U Slusarski
Jeanfrancois G Rulapaugh
Johnson S Rulapaugh
Johnson I Caldarera
Mujtaba M Schemmer
Jennifer M Morasca
Izzy G Foller
Arvin G Bowley
Johnson Z Stenseth
Maisha E Malet
Alejandro C Bolognia
Izzy K Bolognia
Greenwood G Stenseth
Jeanfrancois I Perin
Jones W Wieser
Ashley V Dilliard
Kaitlin W Chui
Leja N Inouye
Leja A Poquette
Maria S Ferencz
Leon R Malet
Adams O Venere
David G Darakjy
Adams T Garufi
Johnson D Malet
Leja Y Poquette
Octavia M Nestle
Maria M Nicka
Mujtaba O Amigon
Ivar F Nicka
Leja Z Ferencz
Leja D Shinko
Stacey G Foller
Antonio U Ostrosky
Johnson D Garufi
Ricardo N Royster
Antonio G Briddick
Mujtaba A Garufi
IdCountryDate
1000Australia2024-04-26
1001Canada2024-04-16
1002Australia2024-04-02
1003United Kingdom2024-04-15
1004Australia2024-04-16
1005India2024-04-21
1006Japan2024-04-22
1007Argentina2024-04-12
1008France2024-04-13
1009Japan2024-04-17
1010Italy2024-04-18
1011Argentina2024-04-26
1012Russia2024-04-06
1013France2024-04-10
1014Italy2024-04-13
1015India2024-04-04
1016Brazil2024-04-16
1017Argentina2024-03-31
1018Russia2024-04-15
1019United Kingdom2024-04-18
1020Argentina2024-04-15
1021United Kingdom2024-04-23
1022France2024-04-23
1023Spain2024-04-20
1024Spain2024-04-08
1025India2024-04-16
1026Germany2024-04-06
1027Canada2024-04-26
1028Brazil2024-04-06
1029Australia2024-04-26
1030France2024-04-11
1031Spain2024-04-20
1032Brazil2024-04-07
1033United Kingdom2024-04-07
1034Japan2024-04-28
1035India2024-04-11
1036Russia2024-04-29
1037Australia2024-04-20
1038Spain2024-04-03
1039Australia2024-04-10
1040France2024-04-18
1041Canada2024-04-14
1042Brazil2024-04-17
1043Japan2024-04-25
1044United Kingdom2024-04-04
1045Italy2024-04-19
1046France2024-04-03
1047United Kingdom2024-04-05
1048Germany2024-04-24
1049Spain2024-04-18

On-Demand Data

NameIdCountryDate
Jeanfrancois M Figeroa1000Italy2024-04-29
Mayumi I Caudy1001Australia2024-04-20
Jones K Perin1002Canada2024-04-23
James E Sergi1003France2024-04-10
Julie Y Albares1004United Kingdom2024-04-18
Faith S Waycott1005Russia2024-04-07
Maria Y Gillian1006Brazil2024-04-20
Aruna I Morasca1007Australia2024-04-26
Salvatore N Caudy1008Canada2024-04-04
Julie H Ferencz1009Canada2024-04-25
Wickens F Poquette1010Japan2024-04-15
Cody Z Maclead1011Argentina2024-04-16
Jefferson E Caldarera1012Russia2024-04-01
Emily S Saylors1013Canada2024-04-02
Francesco L Bowley1014Russia2024-04-27
Darci F Poquette1015Spain2024-04-24
Jones C Malet1016Canada2024-04-11
Faith G Wieser1017Spain2024-04-01
Mujtaba L Doe1018Canada2024-04-25
Costa Z Venere1019Japan2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel T CaudyGermanyAnna Fali PROPOSAL
Murillo H DoeIndiaIvan Magalhaes QUALIFIED
Wickens N CampainGermanyAsiya Javayant NEW
Emily P AlbaresRussiaIvan Magalhaes RENEWAL
James J DoeBrazilAnna Fali QUALIFIED
Clifford S BowleySpainAmy Elsner UNQUALIFIED
Mujtaba Q SergiAustraliaAmy Elsner UNQUALIFIED
Smith V FlosiIndiaBernardo Dominic NEGOTIATION
Maria T MacleadSpainAmy Elsner QUALIFIED
Izzy N StensethIndiaBernardo Dominic PROPOSAL
David W ButtAustraliaAsiya Javayant RENEWAL
Ivar J WieserAustraliaStephen Shaw UNQUALIFIED
Munro I BriddickUnited KingdomAsiya Javayant RENEWAL
Tony X TollnerAustraliaXuxue Feng NEGOTIATION
Ashley K KolmetzRussiaElwin Sharvill QUALIFIED
Antonio T ShinkoIndiaXuxue Feng NEW
Adams H KuskoJapanStephen Shaw UNQUALIFIED
Munro R ShinkoAustraliaAmy Elsner QUALIFIED
Octavia C PaprockiGermanyAnna Fali QUALIFIED
Munro V MaletUnited KingdomStephen Shaw UNQUALIFIED
Maria R GarufiItalyXuxue Feng QUALIFIED
Cody D BologniaJapanXuxue Feng NEGOTIATION
Silvio B RulapaughArgentinaAmy Elsner UNQUALIFIED
Antonio S FerenczGermanyAsiya Javayant NEW
Leja X TollnerRussiaElwin Sharvill UNQUALIFIED
Arvin N ButtCanadaBernardo Dominic NEGOTIATION
Wickens P MaletArgentinaOnyama Limba PROPOSAL
Jeanfrancois S RimJapanAmy Elsner UNQUALIFIED
Morrow D GillianUnited KingdomBernardo Dominic QUALIFIED
Chavez T GillianAustraliaOnyama Limba NEGOTIATION
Kadeem P SlusarskiItalyOnyama Limba NEW
Izzy I MacleadJapanAmy Elsner NEGOTIATION
Ricardo U StensethRussiaXuxue Feng NEGOTIATION
Arvin D AlbaresItalyAnna Fali NEW
Rodrigues A FollerFranceBernardo Dominic PROPOSAL
Deepesh R PaprockiItalyBernardo Dominic NEW
Smith A DoeArgentinaIvan Magalhaes QUALIFIED
Antonio P SlusarskiSpainAnna Fali UNQUALIFIED
Kadeem U DarakjyFranceIvan Magalhaes UNQUALIFIED
Clifford Q SchemmerCanadaAsiya Javayant 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>