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
Claire Q NestleFranceIvan Magalhaes QUALIFIED
Faith G DilliardCanadaElwin Sharvill NEGOTIATION
Smith M AmigonFranceAsiya Javayant UNQUALIFIED
Morrow I BowleyCanadaBernardo Dominic RENEWAL
Deepesh C SaylorsUnited KingdomAmy Elsner NEW
Rodrigues M PoquetteUnited KingdomAsiya Javayant PROPOSAL
Aditya P MarrierJapanBernardo Dominic UNQUALIFIED
Greenwood H KolmetzRussiaIoni Bowcher UNQUALIFIED
Adams C MarrierRussiaOnyama Limba NEGOTIATION
Izzy J MaletGermanyElwin Sharvill UNQUALIFIED
Emily O TollnerArgentinaAsiya Javayant RENEWAL
Jennifer S TollnerFranceIvan Magalhaes PROPOSAL
Emily Y SaylorsAustraliaStephen Shaw NEGOTIATION
Ricardo U PoquetteJapanIvan Magalhaes NEGOTIATION
Costa V FerenczFranceStephen Shaw NEGOTIATION
Stacey J PerinFranceAsiya Javayant PROPOSAL
Isabel R RimAustraliaStephen Shaw PROPOSAL
Misaki R IturbideAustraliaBernardo Dominic PROPOSAL
Ashley D InouyeAustraliaAmy Elsner NEGOTIATION
Chavez V MarrierAustraliaElwin Sharvill PROPOSAL
Kaitlin H DarakjyAustraliaStephen Shaw RENEWAL
Maisha V NickaAustraliaIvan Magalhaes QUALIFIED
Arvin U AmigonIndiaIvan Magalhaes QUALIFIED
Aruna W ChuiBrazilBernardo Dominic NEGOTIATION
Ricardo M MaletSpainStephen Shaw NEGOTIATION
Ashley U CaldareraItalyAnna Fali NEW
Greenwood J ChuiArgentinaAmy Elsner UNQUALIFIED
Greenwood P VenereFranceAmy Elsner RENEWAL
Juan F PaprockiBrazilAmy Elsner NEW
Mayumi O MaletUnited KingdomIvan Magalhaes NEW
Jeanfrancois A PoquetteItalyStephen Shaw NEW
Aika R WaycottIndiaElwin Sharvill RENEWAL
Isabel A CaudyBrazilBernardo Dominic UNQUALIFIED
Maisha K BowleySpainBernardo Dominic NEGOTIATION
Deepesh D CaudyBrazilAsiya Javayant NEW
Chavez Q NickaBrazilElwin Sharvill NEGOTIATION
Johnson A StensethBrazilStephen Shaw NEGOTIATION
Aruna E SaylorsArgentinaIvan Magalhaes NEW
Misaki Z DarakjyRussiaAmy Elsner UNQUALIFIED
Cody J VocelkaRussiaAsiya Javayant QUALIFIED
Sinclair J WieserFranceElwin Sharvill RENEWAL
Adams R CampainRussiaAnna Fali NEGOTIATION
Mayumi I CaldareraUnited KingdomXuxue Feng UNQUALIFIED
James O StockhamFranceAsiya Javayant UNQUALIFIED
Leon T MorascaSpainAsiya Javayant UNQUALIFIED
Kadeem N PaprockiAustraliaOnyama Limba NEW
Deepesh Y RimBrazilBernardo Dominic QUALIFIED
Juan S StensethJapanAmy Elsner NEW
Ashley M DarakjyFranceElwin Sharvill PROPOSAL
Faith H OldroydAustraliaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Isabel C WaycottGermanyAmy Elsner NEW
Jefferson P SergiArgentinaBernardo Dominic NEW
Rodrigues X VenereItalyElwin Sharvill QUALIFIED
Emily X GauchoIndiaElwin Sharvill NEW
Tony K SaylorsIndiaAmy Elsner NEGOTIATION
Jennifer G ShinkoArgentinaElwin Sharvill RENEWAL
Ashley E BologniaRussiaOnyama Limba NEW
Ashley O DoeJapanAmy Elsner NEGOTIATION
Antonio G PerinItalyAmy Elsner QUALIFIED
James O NickaJapanOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy E KuskoJapan2024-04-01Feiner Bros UNQUALIFIED96Asiya Javayant
1001Sinclair B KuskoGermany2024-04-19Rousseaux, Michael Esq QUALIFIED0Elwin Sharvill
1002Rodrigues Y GillianArgentina2024-04-09Commercial Press NEGOTIATION4Ioni Bowcher
1003James R NickaFrance2024-03-21Chemel, James L Cpa NEGOTIATION63Bernardo Dominic
1004Julie Y GlickGermany2024-04-05Truhlar And Truhlar Attys UNQUALIFIED14Xuxue Feng
1005Alejandro T AmigonRussia2024-03-28Chemel, James L Cpa NEW61Anna Fali
1006Cody S PoquetteCanada2024-04-08King, Christopher A Esq RENEWAL24Ioni Bowcher
1007Adams W RulapaughBrazil2024-03-27Feltz Printing Service NEGOTIATION87Onyama Limba
1008Nicolas G IturbideSpain2024-04-04Morlong Associates RENEWAL18Amy Elsner
1009Deepesh N DoeFrance2024-04-12King, Christopher A Esq NEW0Elwin Sharvill
1010Murillo I KolmetzAustralia2024-04-13Morlong Associates NEW70Xuxue Feng
1011Aditya B RutaRussia2024-04-05Truhlar And Truhlar Attys NEGOTIATION27Bernardo Dominic
1012Murillo N DoeJapan2024-03-31Feiner Bros UNQUALIFIED23Anna Fali
1013Jennifer V CaldareraCanada2024-04-04Buckley Miller Wright QUALIFIED89Bernardo Dominic
1014Adams A ShinkoBrazil2024-04-19Printing Dimensions NEGOTIATION22Elwin Sharvill
1015James K KolmetzIndia2024-04-07Printing Dimensions UNQUALIFIED19Ivan Magalhaes
1016Johnson Y PaprockiJapan2024-04-03Rousseaux, Michael Esq NEW40Asiya Javayant
1017Aditya I PaprockiIndia2024-03-30Chemel, James L Cpa NEW51Ivan Magalhaes
1018Greenwood R WieserRussia2024-03-31Commercial Press RENEWAL38Elwin Sharvill
1019Maria H CampainBrazil2024-03-23Printing Dimensions PROPOSAL98Xuxue Feng
1020Stacey U WieserRussia2024-03-25Buckley Miller Wright PROPOSAL69Ivan Magalhaes
1021Antonio E DoeRussia2024-04-12Rangoni Of Florence QUALIFIED3Bernardo Dominic
1022Aika I VocelkaRussia2024-04-07Chemel, James L Cpa PROPOSAL91Ivan Magalhaes
1023Aruna X TollnerCanada2024-04-08Rangoni Of Florence UNQUALIFIED39Ivan Magalhaes
1024Murillo Y ButtFrance2024-03-21Printing Dimensions PROPOSAL0Elwin Sharvill
1025Aika E PerinAustralia2024-03-24Feiner Bros QUALIFIED85Xuxue Feng
1026Rodrigues B SaylorsItaly2024-04-15Commercial Press NEW22Xuxue Feng
1027Francesco F SaylorsCanada2024-04-02Benton, John B Jr NEW58Asiya Javayant
1028Misaki D MaletSpain2024-04-02King, Christopher A Esq RENEWAL37Elwin Sharvill
1029Emily J CaudyGermany2024-04-16Dorl, James J Esq NEW9Xuxue Feng
1030Aditya V IturbideSpain2024-03-27Printing Dimensions UNQUALIFIED33Amy Elsner
1031Aika K SlusarskiFrance2024-04-05Benton, John B Jr UNQUALIFIED36Ioni Bowcher
1032Izzy Q PoquetteJapan2024-03-29Morlong Associates RENEWAL4Xuxue Feng
1033Aika M FollerSpain2024-04-05Benton, John B Jr NEW31Ioni Bowcher
1034Kaitlin Q CaldareraJapan2024-04-01Chemel, James L Cpa QUALIFIED42Amy Elsner
1035Leja C StockhamRussia2024-03-30Dorl, James J Esq UNQUALIFIED47Ivan Magalhaes
1036Munro F MaletArgentina2024-03-25Chapman, Ross E Esq UNQUALIFIED25Onyama Limba
1037Francesco Z StockhamJapan2024-04-12Commercial Press NEW14Ivan Magalhaes
1038Jeanfrancois D TollnerBrazil2024-03-25Rangoni Of Florence UNQUALIFIED13Asiya Javayant
1039Ricardo I BologniaRussia2024-03-22Benton, John B Jr NEGOTIATION67Stephen Shaw
1040Ricardo Y StensethUnited Kingdom2024-04-08Feltz Printing Service QUALIFIED44Onyama Limba
1041Misaki V NickaCanada2024-04-16Morlong Associates NEW76Anna Fali
1042Leja T IturbideUnited Kingdom2024-04-18Benton, John B Jr NEGOTIATION38Xuxue Feng
1043Kadeem B BriddickGermany2024-04-17Commercial Press UNQUALIFIED7Ioni Bowcher
1044Aditya J OstroskyCanada2024-03-30Chemel, James L Cpa PROPOSAL86Anna Fali
1045Darci D DilliardBrazil2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED97Stephen Shaw
1046Chavez K GillianGermany2024-04-12Commercial Press NEW30Bernardo Dominic
1047Ivar K GarufiFrance2024-04-03Chanay, Jeffrey A Esq PROPOSAL26Ioni Bowcher
1048Greenwood G KolmetzIndia2024-03-24Feltz Printing Service UNQUALIFIED91Elwin Sharvill
1049Salvatore K ButtIndia2024-03-30Printing Dimensions PROPOSAL18Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Tony C CaldareraRussiaStephen Shaw UNQUALIFIED
Cody R GauchoGermanyXuxue Feng NEGOTIATION
Chavez G DoeJapanStephen Shaw UNQUALIFIED
Silvio H RoysterSpainOnyama Limba UNQUALIFIED
Mayumi Y VenereBrazilBernardo Dominic PROPOSAL
Octavia I SlusarskiBrazilAmy Elsner UNQUALIFIED
Johnson I CaldareraAustraliaBernardo Dominic PROPOSAL
Aditya G ShinkoRussiaIvan Magalhaes NEW
Maria J ChuiFranceAnna Fali QUALIFIED
Morrow Z StensethAustraliaIoni Bowcher UNQUALIFIED
Kaitlin E DoeItalyBernardo Dominic UNQUALIFIED
Stacey G RulapaughJapanStephen Shaw PROPOSAL
Juan L StockhamCanadaElwin Sharvill QUALIFIED
Juan U NestleJapanAnna Fali NEGOTIATION
Octavia B CaudySpainStephen Shaw NEW
Francesco G RoysterSpainBernardo Dominic PROPOSAL
Alejandro T FigeroaGermanyIoni Bowcher NEW
Johnson Q IturbideIndiaElwin Sharvill RENEWAL
Wickens P NickaArgentinaXuxue Feng NEW
Jennifer Y DilliardJapanIoni Bowcher NEW
Munro O BriddickGermanyOnyama Limba UNQUALIFIED
Kadeem R GillianGermanyAmy Elsner NEW
Darci Z GillianRussiaAmy Elsner NEGOTIATION
Jefferson U CampainArgentinaXuxue Feng NEGOTIATION
Kadeem Z RimFranceXuxue Feng NEW
Juan U StensethSpainIvan Magalhaes UNQUALIFIED
Nicolas G MaletAustraliaBernardo Dominic NEGOTIATION
Aruna M ShinkoAustraliaIoni Bowcher UNQUALIFIED
Mayumi I RutaCanadaOnyama Limba NEGOTIATION
Izzy K MarrierCanadaIoni Bowcher QUALIFIED
Rodrigues D BologniaRussiaIoni Bowcher NEGOTIATION
Faith R MorascaRussiaIoni Bowcher PROPOSAL
Julie Z ShinkoIndiaIoni Bowcher QUALIFIED
Jones T DarakjyIndiaBernardo Dominic RENEWAL
Murillo C RoysterItalyXuxue Feng PROPOSAL
Emily D DarakjyCanadaAsiya Javayant QUALIFIED
Misaki F ChuiCanadaStephen Shaw QUALIFIED
Morrow C NickaArgentinaAmy Elsner NEGOTIATION
Kaitlin Y FollerJapanIvan Magalhaes NEW
Leon Z BologniaRussiaIoni Bowcher PROPOSAL
Octavia E DarakjyCanadaStephen Shaw NEW
Costa I PoquetteCanadaStephen Shaw PROPOSAL
James Q WieserUnited KingdomIoni Bowcher UNQUALIFIED
Cody M SchemmerJapanIvan Magalhaes NEGOTIATION
Mayumi H FollerIndiaAmy Elsner UNQUALIFIED
Morrow C MorascaUnited KingdomBernardo Dominic PROPOSAL
David V VenereBrazilXuxue Feng PROPOSAL
Jones Z SaylorsJapanStephen Shaw NEGOTIATION
Antonio H AmigonBrazilElwin Sharvill PROPOSAL
Aditya H NestleArgentinaBernardo Dominic NEGOTIATION
Frozen Columns
Name
Darci A Kusko
Clifford I Butt
Mujtaba A Kolmetz
Wickens C Foller
Antonio N Dilliard
Ivar R Marrier
Smith U Ruta
Greenwood L Bowley
Nicolas D Paprocki
Murillo D Maclead
Costa K Caldarera
Kadeem N Oldroyd
Deepesh D Waycott
Greenwood B Poquette
Smith V Gillian
Aditya E Marrier
Mayumi B Rulapaugh
Juan L Gaucho
Faith G Figeroa
Aditya P Perin
Jones X Morasca
Mayumi T Vocelka
David B Campain
Murillo L Kolmetz
Claire Z Foller
Silvio J Dilliard
Greenwood Y Figeroa
Faith Q Briddick
Claire E Slusarski
Munro A Ruta
Aika U Rulapaugh
Octavia R Nestle
Chavez U Waycott
Ashley O Tollner
Julie L Figeroa
Claire S Foller
Sinclair D Maclead
Jeanfrancois D Iturbide
Maisha F Garufi
Izzy H Schemmer
Costa J Garufi
Tony H Chui
Sinclair J Schemmer
Mujtaba Q Slusarski
Leon F Amigon
Kaitlin E Butt
Aruna D Saylors
Alejandro V Campain
Arvin R Stockham
Juan D Bolognia
IdCountryDate
1000United Kingdom2024-03-31
1001India2024-03-24
1002India2024-03-28
1003Italy2024-04-13
1004India2024-03-24
1005Spain2024-03-28
1006Russia2024-03-26
1007Canada2024-03-30
1008Canada2024-04-14
1009Canada2024-04-18
1010Germany2024-04-16
1011Spain2024-04-09
1012France2024-03-27
1013Russia2024-03-29
1014Argentina2024-03-21
1015France2024-04-08
1016Japan2024-03-30
1017Australia2024-03-24
1018Australia2024-03-21
1019Canada2024-03-29
1020Germany2024-04-10
1021Australia2024-04-12
1022India2024-03-29
1023Spain2024-03-21
1024Italy2024-03-26
1025Australia2024-04-10
1026Spain2024-04-15
1027India2024-03-24
1028United Kingdom2024-03-22
1029France2024-04-11
1030Spain2024-04-09
1031Italy2024-03-29
1032Australia2024-03-23
1033Spain2024-04-19
1034Spain2024-03-25
1035United Kingdom2024-03-22
1036Australia2024-03-28
1037Canada2024-03-27
1038India2024-04-06
1039United Kingdom2024-03-29
1040Brazil2024-04-10
1041Argentina2024-03-28
1042Italy2024-03-22
1043Spain2024-04-03
1044Germany2024-04-17
1045Argentina2024-04-16
1046India2024-04-02
1047United Kingdom2024-04-14
1048Germany2024-04-16
1049Russia2024-03-27

On-Demand Data

NameIdCountryDate
Tony A Poquette1000Brazil2024-03-22
Darci W Shinko1001Canada2024-03-26
Julie I Doe1002India2024-03-28
Aika D Nestle1003France2024-03-31
Aruna G Bowley1004Argentina2024-04-15
David W Oldroyd1005Spain2024-03-24
Chavez Y Nestle1006Spain2024-04-01
Aditya H Malet1007Italy2024-04-03
Alejandro R Foller1008Australia2024-04-09
Leja N Caudy1009Germany2024-04-06
David R Caudy1010Italy2024-03-26
Isabel P Oldroyd1011Spain2024-03-22
Nicolas U Albares1012France2024-03-21
Octavia J Doe1013Australia2024-03-24
Salvatore K Nicka1014India2024-04-14
James Z Malet1015Australia2024-03-26
Silvio J Bolognia1016Italy2024-03-21
Leon O Doe1017Japan2024-04-07
Julie U Caudy1018Canada2024-04-12
Tony Q Rulapaugh1019Russia2024-03-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja Q CaudySpainAsiya Javayant PROPOSAL
Munro L ChuiIndiaElwin Sharvill QUALIFIED
Aditya M RoysterBrazilStephen Shaw QUALIFIED
Smith B SaylorsSpainIoni Bowcher NEGOTIATION
Jennifer Q WieserIndiaOnyama Limba RENEWAL
Stacey J WieserIndiaIoni Bowcher PROPOSAL
Sinclair E GarufiRussiaAnna Fali PROPOSAL
Jones T RimArgentinaAsiya Javayant UNQUALIFIED
Izzy X VocelkaItalyStephen Shaw PROPOSAL
Kadeem I KolmetzAustraliaBernardo Dominic PROPOSAL
Arvin M RutaRussiaAsiya Javayant PROPOSAL
Octavia F ButtCanadaIvan Magalhaes NEW
Ashley Z ChuiItalyIoni Bowcher QUALIFIED
Faith Y AmigonUnited KingdomStephen Shaw NEGOTIATION
Faith K FollerUnited KingdomElwin Sharvill NEW
Silvio M BowleyFranceStephen Shaw UNQUALIFIED
Aruna V StensethGermanyIvan Magalhaes NEW
Munro M NestleUnited KingdomOnyama Limba NEGOTIATION
Johnson C NickaFranceXuxue Feng UNQUALIFIED
Salvatore A OldroydRussiaStephen Shaw NEW
Nicolas L FerenczBrazilElwin Sharvill QUALIFIED
Stacey Q VenereArgentinaAmy Elsner NEGOTIATION
Kaitlin R BriddickFranceAsiya Javayant QUALIFIED
Smith C KuskoArgentinaXuxue Feng UNQUALIFIED
Silvio T StensethJapanIvan Magalhaes UNQUALIFIED
Emily O MacleadFranceIvan Magalhaes PROPOSAL
Misaki Y GarufiAustraliaXuxue Feng UNQUALIFIED
Aika Z MorascaIndiaStephen Shaw UNQUALIFIED
David Y ButtCanadaStephen Shaw PROPOSAL
Francesco Z NestleJapanAsiya Javayant QUALIFIED
James X CaudyAustraliaStephen Shaw UNQUALIFIED
Antonio G MaletCanadaAsiya Javayant RENEWAL
Nicolas F SlusarskiGermanyXuxue Feng NEGOTIATION
Claire K BriddickSpainBernardo Dominic UNQUALIFIED
Morrow D AlbaresFranceIvan Magalhaes UNQUALIFIED
Faith T MorascaSpainIoni Bowcher QUALIFIED
David E GarufiRussiaAnna Fali NEGOTIATION
Aditya I CaudyItalyElwin Sharvill RENEWAL
Francesco C VocelkaGermanyElwin Sharvill QUALIFIED
Julie A DarakjySpainAmy Elsner 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>