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
Cody Z KolmetzItalyOnyama Limba RENEWAL
Morrow Z FlosiCanadaAsiya Javayant NEGOTIATION
Sinclair D BriddickUnited KingdomBernardo Dominic NEGOTIATION
Isabel T CaldareraJapanAmy Elsner UNQUALIFIED
Francesco E RoysterArgentinaAsiya Javayant RENEWAL
Emily V SlusarskiSpainOnyama Limba QUALIFIED
Adams I FerenczArgentinaXuxue Feng QUALIFIED
Antonio U CaldareraArgentinaBernardo Dominic QUALIFIED
Maria D CaldareraCanadaAmy Elsner NEW
Darci Z CaldareraIndiaAmy Elsner NEW
Isabel S GillianGermanyBernardo Dominic NEGOTIATION
Emily Q PaprockiGermanyAsiya Javayant NEW
Izzy K DarakjySpainStephen Shaw NEGOTIATION
Francesco T ShinkoIndiaAsiya Javayant UNQUALIFIED
Mayumi P GarufiIndiaXuxue Feng QUALIFIED
Ashley A ChuiGermanyOnyama Limba PROPOSAL
Costa J BowleyRussiaOnyama Limba UNQUALIFIED
Greenwood Y RimJapanIoni Bowcher PROPOSAL
Juan R AmigonCanadaOnyama Limba QUALIFIED
Aditya N PerinJapanStephen Shaw RENEWAL
Tony Y BologniaUnited KingdomOnyama Limba PROPOSAL
Misaki I ShinkoItalyOnyama Limba RENEWAL
Francesco I RulapaughRussiaElwin Sharvill NEGOTIATION
Deepesh P VocelkaArgentinaOnyama Limba QUALIFIED
Chavez S ChuiBrazilIoni Bowcher PROPOSAL
Tony X GarufiFranceXuxue Feng QUALIFIED
Adams D FerenczJapanAmy Elsner RENEWAL
Kadeem K BologniaRussiaIoni Bowcher PROPOSAL
Adams O CaldareraGermanyIoni Bowcher RENEWAL
Francesco I GauchoRussiaOnyama Limba QUALIFIED
Nicolas Y RulapaughItalyStephen Shaw QUALIFIED
Nicolas J AlbaresUnited KingdomBernardo Dominic QUALIFIED
Leon C FlosiBrazilIoni Bowcher RENEWAL
Nicolas B OstroskyIndiaAmy Elsner PROPOSAL
Antonio I RulapaughGermanyStephen Shaw QUALIFIED
Greenwood B KuskoItalyAsiya Javayant RENEWAL
Emily A FigeroaArgentinaXuxue Feng UNQUALIFIED
Claire R PoquetteBrazilStephen Shaw NEW
Misaki Q DarakjyCanadaAmy Elsner QUALIFIED
Jennifer B GauchoArgentinaOnyama Limba PROPOSAL
Jennifer Y CampainIndiaBernardo Dominic NEGOTIATION
Arvin T GlickItalyStephen Shaw UNQUALIFIED
Ricardo M WhobreySpainAsiya Javayant NEW
Leon P MorascaJapanBernardo Dominic UNQUALIFIED
Chavez H MaletRussiaAmy Elsner NEGOTIATION
Faith Z FollerItalyElwin Sharvill NEGOTIATION
Aika D FigeroaIndiaXuxue Feng NEW
Octavia F MaletAustraliaElwin Sharvill UNQUALIFIED
Chavez J FlosiItalyXuxue Feng RENEWAL
James Q OldroydFranceIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Salvatore H TollnerArgentinaOnyama Limba RENEWAL
Faith K WieserIndiaOnyama Limba NEGOTIATION
Silvio T GlickSpainBernardo Dominic UNQUALIFIED
Juan B BologniaSpainStephen Shaw PROPOSAL
Wickens J MacleadRussiaIoni Bowcher UNQUALIFIED
Juan B KuskoItalyAmy Elsner NEGOTIATION
Emily U KolmetzIndiaElwin Sharvill NEW
Francesco K BriddickBrazilXuxue Feng QUALIFIED
Clifford O RoysterCanadaAmy Elsner UNQUALIFIED
Octavia P SlusarskiGermanyStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith C MaletRussia2024-05-01Rousseaux, Michael Esq UNQUALIFIED88Bernardo Dominic
1001Jefferson G RimSpain2024-04-20Printing Dimensions NEW37Onyama Limba
1002Salvatore V RimAustralia2024-05-02Benton, John B Jr UNQUALIFIED39Xuxue Feng
1003Ivar J DoeJapan2024-04-22King, Christopher A Esq NEGOTIATION64Ivan Magalhaes
1004Nicolas S DoeBrazil2024-04-19Benton, John B Jr RENEWAL19Asiya Javayant
1005Maisha J VocelkaRussia2024-04-14Rousseaux, Michael Esq UNQUALIFIED85Ioni Bowcher
1006Smith K PaprockiRussia2024-05-04Chapman, Ross E Esq UNQUALIFIED63Ivan Magalhaes
1007Aditya H FollerUnited Kingdom2024-05-05Feiner Bros PROPOSAL7Ivan Magalhaes
1008Kadeem X DilliardIndia2024-04-28Dorl, James J Esq UNQUALIFIED93Amy Elsner
1009James P KolmetzCanada2024-04-11Feltz Printing Service PROPOSAL28Elwin Sharvill
1010Maisha R VenereArgentina2024-05-06Truhlar And Truhlar Attys PROPOSAL44Stephen Shaw
1011Maisha J MacleadAustralia2024-04-11Dorl, James J Esq NEW82Anna Fali
1012Salvatore U DarakjyIndia2024-05-02Chapman, Ross E Esq NEGOTIATION41Asiya Javayant
1013Emily R GarufiArgentina2024-05-08Feltz Printing Service QUALIFIED69Ioni Bowcher
1014Maisha A AlbaresArgentina2024-05-05King, Christopher A Esq PROPOSAL89Bernardo Dominic
1015Wickens X KuskoItaly2024-04-27Feiner Bros RENEWAL11Asiya Javayant
1016Smith Z WieserIndia2024-04-26Morlong Associates RENEWAL33Asiya Javayant
1017Costa E FigeroaAustralia2024-04-19Chanay, Jeffrey A Esq NEGOTIATION30Xuxue Feng
1018Aruna Y WaycottAustralia2024-04-22Rousseaux, Michael Esq RENEWAL44Amy Elsner
1019Costa U ShinkoGermany2024-05-01Benton, John B Jr QUALIFIED43Amy Elsner
1020Sinclair C MaletUnited Kingdom2024-04-21Truhlar And Truhlar Attys UNQUALIFIED35Xuxue Feng
1021Rodrigues K PaprockiAustralia2024-04-29Chapman, Ross E Esq QUALIFIED38Ivan Magalhaes
1022Mayumi P MacleadGermany2024-05-02King, Christopher A Esq NEGOTIATION16Ioni Bowcher
1023Aruna L GarufiArgentina2024-04-11King, Christopher A Esq PROPOSAL41Elwin Sharvill
1024Morrow Q DarakjyUnited Kingdom2024-05-07Benton, John B Jr NEW90Asiya Javayant
1025Aditya R FlosiArgentina2024-04-21King, Christopher A Esq RENEWAL36Ioni Bowcher
1026Mayumi X PerinArgentina2024-04-28Chapman, Ross E Esq NEW64Stephen Shaw
1027Greenwood I KolmetzFrance2024-04-22Commercial Press NEGOTIATION2Ioni Bowcher
1028Juan Z DilliardAustralia2024-05-02Dorl, James J Esq PROPOSAL72Elwin Sharvill
1029Darci E SergiJapan2024-04-30Rousseaux, Michael Esq QUALIFIED26Asiya Javayant
1030Ivar N AlbaresJapan2024-04-19Rangoni Of Florence RENEWAL7Ivan Magalhaes
1031Sinclair A IturbideUnited Kingdom2024-05-01Chanay, Jeffrey A Esq NEW69Ioni Bowcher
1032Leja X ShinkoGermany2024-04-11Rangoni Of Florence RENEWAL75Elwin Sharvill
1033Ricardo Z PaprockiCanada2024-04-24Commercial Press RENEWAL34Bernardo Dominic
1034Octavia C FigeroaUnited Kingdom2024-04-29Dorl, James J Esq NEGOTIATION48Anna Fali
1035Claire J GarufiUnited Kingdom2024-04-15Chanay, Jeffrey A Esq UNQUALIFIED60Onyama Limba
1036Antonio J MaletIndia2024-05-09Truhlar And Truhlar Attys PROPOSAL88Onyama Limba
1037Nicolas N DoeFrance2024-04-17Chanay, Jeffrey A Esq QUALIFIED59Onyama Limba
1038Emily U DilliardItaly2024-04-18Rangoni Of Florence NEW21Stephen Shaw
1039Rodrigues A MacleadCanada2024-04-18Rangoni Of Florence UNQUALIFIED61Onyama Limba
1040Julie Q FigeroaJapan2024-04-26Truhlar And Truhlar Attys UNQUALIFIED25Anna Fali
1041Misaki R SchemmerGermany2024-04-21Rousseaux, Michael Esq NEW17Bernardo Dominic
1042Juan G MarrierArgentina2024-05-09Buckley Miller Wright NEGOTIATION45Xuxue Feng
1043Salvatore N CampainIndia2024-04-22Chemel, James L Cpa UNQUALIFIED40Stephen Shaw
1044Aruna C GauchoFrance2024-04-15Benton, John B Jr RENEWAL96Xuxue Feng
1045Antonio C WieserFrance2024-04-13Rousseaux, Michael Esq QUALIFIED6Ivan Magalhaes
1046Johnson Y SergiJapan2024-04-26Chanay, Jeffrey A Esq QUALIFIED51Anna Fali
1047Aruna C RulapaughIndia2024-04-30Benton, John B Jr QUALIFIED6Ivan Magalhaes
1048Johnson Z BologniaRussia2024-05-09Chapman, Ross E Esq UNQUALIFIED60Onyama Limba
1049Emily C AmigonArgentina2024-04-26Printing Dimensions PROPOSAL95Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Alejandro L OldroydAustraliaAnna Fali NEW
Costa A AmigonCanadaAmy Elsner UNQUALIFIED
Jennifer Z DoeJapanBernardo Dominic RENEWAL
Mayumi U OstroskyBrazilAnna Fali RENEWAL
Costa R NestleIndiaAsiya Javayant PROPOSAL
Misaki N SchemmerArgentinaIoni Bowcher RENEWAL
Tony P CaudyCanadaOnyama Limba NEGOTIATION
Juan H StensethRussiaAnna Fali QUALIFIED
Chavez P NickaRussiaAsiya Javayant NEGOTIATION
Aika L NestleGermanyIoni Bowcher NEW
Aika W RutaAustraliaBernardo Dominic QUALIFIED
Kaitlin V StockhamSpainIoni Bowcher PROPOSAL
Salvatore G OldroydCanadaStephen Shaw UNQUALIFIED
Juan C PoquetteItalyElwin Sharvill QUALIFIED
Juan R VenereFranceBernardo Dominic UNQUALIFIED
Francesco F AmigonFranceAnna Fali UNQUALIFIED
Aruna Z AlbaresSpainAsiya Javayant NEW
Greenwood P SchemmerFranceAsiya Javayant QUALIFIED
Isabel S BriddickUnited KingdomAnna Fali QUALIFIED
Leja C PerinAustraliaAmy Elsner RENEWAL
Leon D GlickJapanStephen Shaw NEGOTIATION
Jennifer H DilliardFranceAnna Fali NEW
Greenwood Y ShinkoUnited KingdomXuxue Feng UNQUALIFIED
Alejandro K GarufiUnited KingdomXuxue Feng RENEWAL
Leon M PaprockiArgentinaAnna Fali NEW
Munro Q PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Cody I WhobreyJapanOnyama Limba RENEWAL
Leon Y CaldareraRussiaAnna Fali UNQUALIFIED
Deepesh O ShinkoUnited KingdomAnna Fali NEW
Isabel I ShinkoJapanStephen Shaw RENEWAL
Kaitlin K MaletAustraliaAnna Fali NEGOTIATION
Isabel L BologniaUnited KingdomIoni Bowcher NEGOTIATION
Maisha Q StockhamAustraliaBernardo Dominic PROPOSAL
Greenwood S FerenczJapanAmy Elsner PROPOSAL
Octavia J PaprockiArgentinaElwin Sharvill QUALIFIED
Salvatore S GlickAustraliaOnyama Limba UNQUALIFIED
Emily L StockhamIndiaAnna Fali NEW
Juan T PerinFranceAmy Elsner UNQUALIFIED
Chavez I RoysterBrazilBernardo Dominic UNQUALIFIED
Juan B AmigonUnited KingdomIvan Magalhaes QUALIFIED
Faith Q RimCanadaAnna Fali UNQUALIFIED
Smith S GillianUnited KingdomElwin Sharvill UNQUALIFIED
Emily S BowleyUnited KingdomStephen Shaw QUALIFIED
Emily Y FerenczFranceAmy Elsner NEW
Salvatore H WhobreyJapanBernardo Dominic NEGOTIATION
Stacey T TollnerSpainAnna Fali UNQUALIFIED
David G StockhamIndiaXuxue Feng UNQUALIFIED
Munro L DarakjySpainElwin Sharvill PROPOSAL
Juan Q DarakjyArgentinaAsiya Javayant UNQUALIFIED
James U InouyeArgentinaXuxue Feng QUALIFIED
Frozen Columns
Name
Murillo W Inouye
Sinclair D Caudy
Misaki D Whobrey
Kadeem K Albares
Morrow O Oldroyd
Chavez L Royster
Misaki M Kolmetz
Adams B Garufi
Mujtaba D Sergi
James F Royster
Misaki R Shinko
Kaitlin L Kusko
Aruna S Butt
David L Bolognia
Tony T Albares
Izzy Q Morasca
Nicolas P Briddick
Aika Z Dilliard
Maisha N Amigon
Ashley K Sergi
Julie C Schemmer
Sinclair N Rim
Arvin A Glick
Ricardo K Shinko
Jones H Caldarera
Octavia O Gillian
Chavez D Figeroa
Murillo D Bowley
Octavia U Poquette
Smith L Nicka
Murillo R Dilliard
Mayumi Y Darakjy
Munro O Rim
Isabel N Inouye
Faith R Flosi
Isabel Z Morasca
Isabel G Rim
Misaki H Maclead
Cody A Malet
Ashley B Iturbide
Isabel W Stockham
Isabel W Waycott
Alejandro P Royster
Costa Q Glick
Juan D Marrier
Rodrigues V Caldarera
Julie M Iturbide
Isabel Y Flosi
Ricardo G Chui
Juan W Bowley
IdCountryDate
1000Canada2024-05-08
1001Japan2024-05-04
1002Spain2024-04-24
1003Italy2024-04-14
1004Argentina2024-04-23
1005Canada2024-04-28
1006Japan2024-05-01
1007Germany2024-05-02
1008Italy2024-04-30
1009United Kingdom2024-04-29
1010Spain2024-04-10
1011Italy2024-04-13
1012Russia2024-04-12
1013United Kingdom2024-04-14
1014Argentina2024-04-22
1015India2024-04-16
1016Spain2024-05-02
1017Spain2024-05-07
1018Spain2024-04-12
1019Brazil2024-05-04
1020Russia2024-04-24
1021Argentina2024-04-11
1022Argentina2024-04-11
1023India2024-04-10
1024Canada2024-04-29
1025Italy2024-04-20
1026Argentina2024-04-22
1027Australia2024-04-16
1028India2024-04-12
1029Spain2024-04-24
1030Australia2024-04-30
1031Russia2024-04-22
1032Spain2024-04-21
1033Canada2024-05-02
1034Spain2024-04-28
1035Italy2024-04-26
1036Canada2024-04-16
1037Canada2024-04-14
1038France2024-04-10
1039France2024-04-26
1040Italy2024-04-21
1041Australia2024-04-25
1042India2024-04-11
1043France2024-04-30
1044France2024-04-18
1045Brazil2024-04-28
1046Italy2024-04-25
1047Brazil2024-04-17
1048France2024-05-04
1049Germany2024-04-22

On-Demand Data

NameIdCountryDate
Aika Q Ostrosky1000Australia2024-04-14
Kadeem X Flosi1001Japan2024-05-06
Jefferson V Rim1002Australia2024-05-04
Alejandro A Royster1003Germany2024-05-04
Kaitlin R Amigon1004Australia2024-04-25
Maisha B Caldarera1005Australia2024-04-27
Francesco V Rulapaugh1006United Kingdom2024-05-03
Maria K Ostrosky1007Spain2024-04-10
James N Morasca1008Canada2024-05-01
Faith B Ruta1009Canada2024-04-30
Ashley C Stenseth1010Australia2024-04-15
Johnson B Malet1011Australia2024-04-20
Rodrigues E Nestle1012Australia2024-04-11
Rodrigues J Paprocki1013Russia2024-04-15
Ricardo D Caldarera1014United Kingdom2024-05-09
Nicolas R Malet1015India2024-04-15
James J Wieser1016France2024-04-16
Misaki X Briddick1017Germany2024-04-27
Stacey E Chui1018India2024-04-13
Murillo A Campain1019Argentina2024-05-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem W NestleJapanAnna Fali NEW
Smith A SchemmerJapanXuxue Feng QUALIFIED
Antonio O GarufiBrazilAmy Elsner UNQUALIFIED
Jones O PerinFranceIoni Bowcher NEGOTIATION
Faith M AmigonSpainIvan Magalhaes NEW
Alejandro O FollerSpainElwin Sharvill RENEWAL
Murillo R WaycottRussiaXuxue Feng QUALIFIED
David O VocelkaFranceAnna Fali UNQUALIFIED
James I CaudyGermanyAmy Elsner NEGOTIATION
Maria I MaletUnited KingdomXuxue Feng UNQUALIFIED
Kadeem P BowleySpainAsiya Javayant NEGOTIATION
Clifford I NestleItalyElwin Sharvill PROPOSAL
Leja Z MaletAustraliaAsiya Javayant NEW
Adams Q MacleadIndiaAsiya Javayant NEGOTIATION
Misaki G DoeArgentinaXuxue Feng UNQUALIFIED
Stacey M MorascaGermanyElwin Sharvill NEGOTIATION
Aruna N MaletGermanyAsiya Javayant RENEWAL
Kadeem E ChuiUnited KingdomAsiya Javayant NEW
Munro Z NickaCanadaAnna Fali NEW
Jeanfrancois H MaletIndiaIvan Magalhaes QUALIFIED
Ivar K DoeBrazilXuxue Feng PROPOSAL
Deepesh D KuskoBrazilAmy Elsner UNQUALIFIED
Octavia R IturbideSpainElwin Sharvill QUALIFIED
Julie Z PerinSpainOnyama Limba QUALIFIED
Francesco G SlusarskiRussiaBernardo Dominic QUALIFIED
Jefferson C GauchoAustraliaStephen Shaw NEGOTIATION
Costa T DarakjyAustraliaXuxue Feng UNQUALIFIED
Maria F DarakjyJapanBernardo Dominic RENEWAL
Faith N DarakjySpainIoni Bowcher NEW
Arvin U AlbaresGermanyOnyama Limba PROPOSAL
Claire H GlickGermanyAnna Fali RENEWAL
Nicolas E FlosiJapanOnyama Limba UNQUALIFIED
David R MaletIndiaElwin Sharvill UNQUALIFIED
Jefferson T SlusarskiBrazilOnyama Limba RENEWAL
Morrow F IturbideItalyIvan Magalhaes NEGOTIATION
Deepesh G SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Francesco V DarakjyFranceIoni Bowcher QUALIFIED
Misaki D InouyeRussiaStephen Shaw NEGOTIATION
Costa T WhobreyArgentinaAnna Fali RENEWAL
Jefferson M FerenczRussiaElwin Sharvill NEGOTIATION

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