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 I GarufiAustraliaAnna Fali QUALIFIED
Isabel R CaldareraSpainStephen Shaw NEW
Mujtaba U BriddickCanadaAsiya Javayant RENEWAL
Smith G FlosiRussiaXuxue Feng PROPOSAL
Octavia W FollerBrazilStephen Shaw RENEWAL
Izzy M CaldareraBrazilXuxue Feng QUALIFIED
David B GauchoUnited KingdomAnna Fali NEW
Aruna J FlosiAustraliaXuxue Feng NEW
Chavez D CampainSpainXuxue Feng NEW
Juan T RutaBrazilIvan Magalhaes NEW
Octavia X SaylorsUnited KingdomAmy Elsner NEGOTIATION
Wickens M DoeAustraliaAsiya Javayant UNQUALIFIED
David X OldroydCanadaBernardo Dominic UNQUALIFIED
Ivar Z FerenczGermanyOnyama Limba NEW
Smith W TollnerFranceIoni Bowcher RENEWAL
Clifford P GauchoCanadaAmy Elsner PROPOSAL
Aditya L PaprockiAustraliaAnna Fali UNQUALIFIED
Silvio V DarakjyAustraliaAmy Elsner NEW
Stacey Y DarakjyRussiaAnna Fali PROPOSAL
Jennifer R CampainItalyXuxue Feng UNQUALIFIED
Costa F RutaJapanOnyama Limba RENEWAL
Adams J IturbideFranceBernardo Dominic RENEWAL
David C VocelkaGermanyXuxue Feng RENEWAL
Clifford I FerenczJapanIoni Bowcher NEW
Deepesh T NickaCanadaElwin Sharvill NEGOTIATION
Antonio X KolmetzGermanyStephen Shaw PROPOSAL
Smith R DoeCanadaAsiya Javayant NEW
Maria T IturbideRussiaAsiya Javayant UNQUALIFIED
Deepesh Z WhobreyAustraliaBernardo Dominic NEW
Antonio K CaudyRussiaAnna Fali NEGOTIATION
Clifford S RulapaughUnited KingdomAmy Elsner RENEWAL
Izzy P FerenczCanadaXuxue Feng RENEWAL
Smith O PoquetteArgentinaIvan Magalhaes NEW
Deepesh W MacleadArgentinaOnyama Limba UNQUALIFIED
Julie X InouyeFranceBernardo Dominic UNQUALIFIED
Octavia E StensethRussiaBernardo Dominic QUALIFIED
Murillo C StensethUnited KingdomBernardo Dominic QUALIFIED
Ricardo K TollnerArgentinaIvan Magalhaes UNQUALIFIED
Antonio H AlbaresJapanStephen Shaw RENEWAL
Stacey D GlickJapanAsiya Javayant UNQUALIFIED
Wickens A DoeCanadaIoni Bowcher PROPOSAL
Octavia O FigeroaIndiaBernardo Dominic QUALIFIED
Sinclair G SaylorsBrazilStephen Shaw QUALIFIED
Tony W CaldareraRussiaElwin Sharvill UNQUALIFIED
David E KuskoItalyAmy Elsner NEW
Cody Z GauchoJapanIvan Magalhaes RENEWAL
Rodrigues S GillianAustraliaAmy Elsner NEW
Tony O FlosiUnited KingdomStephen Shaw QUALIFIED
Silvio Z ShinkoJapanXuxue Feng RENEWAL
Mujtaba B DilliardSpainIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aditya J OldroydAustraliaAnna Fali RENEWAL
Faith M AlbaresIndiaBernardo Dominic NEW
Aruna K MarrierUnited KingdomXuxue Feng UNQUALIFIED
Stacey I SaylorsCanadaAnna Fali QUALIFIED
Arvin S BowleyIndiaIoni Bowcher QUALIFIED
Silvio H MarrierSpainOnyama Limba RENEWAL
Nicolas E AlbaresCanadaOnyama Limba NEGOTIATION
Cody X RutaSpainXuxue Feng PROPOSAL
Deepesh L ButtCanadaOnyama Limba PROPOSAL
Aditya J RimUnited KingdomElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya Q GlickUnited Kingdom2024-04-11Rangoni Of Florence NEW37Elwin Sharvill
1001Cody K MaletArgentina2024-04-11Chanay, Jeffrey A Esq QUALIFIED82Ivan Magalhaes
1002Tony Q NestleGermany2024-04-28Feltz Printing Service NEW15Asiya Javayant
1003Aruna H FigeroaFrance2024-04-19Commercial Press QUALIFIED61Ioni Bowcher
1004Jefferson C KuskoItaly2024-04-08Rangoni Of Florence QUALIFIED25Xuxue Feng
1005Mujtaba B RutaIndia2024-04-13Feltz Printing Service RENEWAL28Amy Elsner
1006Julie X AlbaresItaly2024-04-07Commercial Press NEGOTIATION15Xuxue Feng
1007Juan T InouyeGermany2024-04-25Feltz Printing Service RENEWAL53Amy Elsner
1008Deepesh Q MarrierSpain2024-05-02Rangoni Of Florence NEW50Anna Fali
1009Isabel E FollerUnited Kingdom2024-04-13Commercial Press PROPOSAL13Bernardo Dominic
1010Octavia T MorascaUnited Kingdom2024-04-10Chemel, James L Cpa UNQUALIFIED36Stephen Shaw
1011Ivar K ShinkoUnited Kingdom2024-04-09Rangoni Of Florence UNQUALIFIED68Elwin Sharvill
1012Ivar F VenereFrance2024-04-17Buckley Miller Wright NEGOTIATION89Amy Elsner
1013Isabel K CampainUnited Kingdom2024-04-27Chapman, Ross E Esq RENEWAL74Onyama Limba
1014Kaitlin P WaycottItaly2024-04-03King, Christopher A Esq RENEWAL74Ioni Bowcher
1015Maria J WieserFrance2024-04-25Chemel, James L Cpa NEGOTIATION60Amy Elsner
1016Juan Q WaycottJapan2024-04-08Chemel, James L Cpa UNQUALIFIED23Anna Fali
1017Mayumi H InouyeAustralia2024-04-12Dorl, James J Esq PROPOSAL83Amy Elsner
1018Emily R DilliardGermany2024-04-16Benton, John B Jr NEW69Elwin Sharvill
1019Alejandro N InouyeArgentina2024-04-29Chemel, James L Cpa RENEWAL77Amy Elsner
1020Arvin U VocelkaRussia2024-04-12Feltz Printing Service NEW79Elwin Sharvill
1021Adams C SergiItaly2024-04-25Chapman, Ross E Esq QUALIFIED60Asiya Javayant
1022James K BologniaGermany2024-04-27Rangoni Of Florence QUALIFIED82Bernardo Dominic
1023Mujtaba S KolmetzSpain2024-04-06Feiner Bros NEW54Xuxue Feng
1024Clifford E BriddickItaly2024-04-30Rousseaux, Michael Esq UNQUALIFIED99Stephen Shaw
1025Darci U GillianAustralia2024-04-22Benton, John B Jr QUALIFIED24Stephen Shaw
1026Leja F KolmetzUnited Kingdom2024-04-08Feltz Printing Service NEGOTIATION55Amy Elsner
1027Mayumi S WieserSpain2024-04-17Chemel, James L Cpa QUALIFIED31Amy Elsner
1028Emily M ChuiFrance2024-04-23Commercial Press RENEWAL64Stephen Shaw
1029David Z DarakjyFrance2024-04-12Morlong Associates UNQUALIFIED28Elwin Sharvill
1030Alejandro H OstroskyItaly2024-04-28Morlong Associates NEGOTIATION82Xuxue Feng
1031Costa J BowleyUnited Kingdom2024-04-13Dorl, James J Esq RENEWAL0Elwin Sharvill
1032Deepesh O IturbideItaly2024-04-25Feltz Printing Service PROPOSAL64Stephen Shaw
1033Faith P RimArgentina2024-04-14Truhlar And Truhlar Attys UNQUALIFIED54Onyama Limba
1034Maria I FlosiRussia2024-04-30Commercial Press NEW38Amy Elsner
1035Tony O StensethIndia2024-04-10Benton, John B Jr RENEWAL71Stephen Shaw
1036Maisha L MacleadJapan2024-04-21Printing Dimensions RENEWAL90Stephen Shaw
1037Munro W IturbideIndia2024-04-24Feiner Bros QUALIFIED57Bernardo Dominic
1038Cody U OstroskyCanada2024-04-26Printing Dimensions NEW95Xuxue Feng
1039Izzy J VenereRussia2024-04-30Commercial Press NEGOTIATION35Bernardo Dominic
1040Salvatore J SlusarskiItaly2024-04-26Benton, John B Jr PROPOSAL17Stephen Shaw
1041Aika O FollerCanada2024-04-17Morlong Associates NEGOTIATION27Xuxue Feng
1042Greenwood K DarakjyBrazil2024-04-11Commercial Press NEGOTIATION77Amy Elsner
1043Costa N DilliardBrazil2024-05-02Rousseaux, Michael Esq QUALIFIED40Ivan Magalhaes
1044Alejandro Z SchemmerRussia2024-04-20Rousseaux, Michael Esq NEGOTIATION19Amy Elsner
1045Munro C WaycottUnited Kingdom2024-04-07Buckley Miller Wright PROPOSAL92Bernardo Dominic
1046Chavez V StensethItaly2024-04-15Rousseaux, Michael Esq PROPOSAL85Stephen Shaw
1047Kadeem D NestleFrance2024-04-23Chemel, James L Cpa PROPOSAL62Onyama Limba
1048Kadeem M OldroydArgentina2024-04-21Rangoni Of Florence QUALIFIED39Xuxue Feng
1049Deepesh R CampainFrance2024-05-01Feiner Bros QUALIFIED91Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Ashley K FollerIndiaBernardo Dominic QUALIFIED
Jeanfrancois G RoysterItalyOnyama Limba UNQUALIFIED
Isabel Z MacleadRussiaBernardo Dominic UNQUALIFIED
Jefferson N WhobreyBrazilAnna Fali RENEWAL
Arvin Q CampainJapanOnyama Limba QUALIFIED
Aruna Z NickaItalyAnna Fali PROPOSAL
Costa G OldroydUnited KingdomXuxue Feng RENEWAL
Aruna U PoquetteArgentinaIvan Magalhaes NEGOTIATION
Misaki A WhobreyJapanAnna Fali UNQUALIFIED
Jones R OldroydItalyElwin Sharvill UNQUALIFIED
Aruna G MaletArgentinaAsiya Javayant UNQUALIFIED
Juan Z FigeroaAustraliaStephen Shaw PROPOSAL
Sinclair V FlosiSpainOnyama Limba PROPOSAL
Isabel C PaprockiAustraliaStephen Shaw NEW
Morrow T AmigonAustraliaBernardo Dominic UNQUALIFIED
Jeanfrancois C AmigonFranceAmy Elsner QUALIFIED
Juan N MarrierFranceIoni Bowcher QUALIFIED
Emily B VenereArgentinaIoni Bowcher PROPOSAL
Wickens X DoeGermanyAmy Elsner NEGOTIATION
Octavia K DoeIndiaBernardo Dominic PROPOSAL
Kadeem N DarakjyGermanyIoni Bowcher NEW
Claire Q FlosiFranceStephen Shaw NEW
Johnson N MarrierItalyXuxue Feng UNQUALIFIED
Jones J GarufiRussiaIoni Bowcher QUALIFIED
Emily M SlusarskiCanadaAmy Elsner PROPOSAL
Misaki K WhobreyBrazilStephen Shaw NEW
Juan T GarufiGermanyIoni Bowcher NEW
Chavez Z SlusarskiGermanyAsiya Javayant PROPOSAL
Jennifer K CaudyIndiaXuxue Feng UNQUALIFIED
Claire P AlbaresCanadaStephen Shaw NEGOTIATION
Mayumi Q PerinBrazilBernardo Dominic UNQUALIFIED
Munro B SlusarskiSpainAmy Elsner PROPOSAL
Morrow C GauchoBrazilAsiya Javayant RENEWAL
Tony J SlusarskiBrazilXuxue Feng RENEWAL
Kadeem B RimRussiaAnna Fali UNQUALIFIED
Claire G WaycottAustraliaStephen Shaw UNQUALIFIED
Johnson T BowleyJapanAsiya Javayant PROPOSAL
Adams O MaletCanadaAnna Fali PROPOSAL
Stacey G DarakjyIndiaIoni Bowcher RENEWAL
Clifford K SergiUnited KingdomXuxue Feng NEW
Ashley W AlbaresSpainBernardo Dominic QUALIFIED
Isabel I RimItalyAnna Fali NEW
Tony V SlusarskiUnited KingdomAnna Fali RENEWAL
Faith Q WieserItalyIoni Bowcher NEGOTIATION
Aditya F RutaItalyStephen Shaw QUALIFIED
Izzy L GarufiFranceAsiya Javayant RENEWAL
Julie V MacleadRussiaBernardo Dominic NEW
Murillo S DilliardCanadaOnyama Limba RENEWAL
Jennifer Q MaletIndiaAnna Fali PROPOSAL
Jeanfrancois L InouyeCanadaElwin Sharvill NEW
Frozen Columns
Name
Faith B Slusarski
Deepesh N Nicka
Smith M Ruta
Jones R Campain
Jeanfrancois N Paprocki
Mayumi Z Paprocki
Greenwood Z Gaucho
Maria G Kusko
David F Flosi
Claire B Vocelka
Arvin G Kolmetz
Costa R Waycott
Leja I Ruta
Maria F Chui
Misaki R Rulapaugh
Smith J Campain
Johnson E Chui
Stacey H Paprocki
Jefferson F Gillian
Tony G Iturbide
Mayumi X Royster
Aditya U Waycott
Juan R Shinko
Antonio Q Amigon
Chavez L Amigon
Maria B Kolmetz
Clifford P Morasca
Alejandro P Doe
Ricardo M Darakjy
Clifford O Iturbide
Mujtaba J Oldroyd
Greenwood I Caudy
Maria E Stockham
Juan B Malet
Leja L Kusko
Cody Z Bowley
Silvio U Caldarera
Maria W Chui
Jennifer O Iturbide
Aika P Doe
Claire X Vocelka
Leon J Stenseth
Leja S Nestle
Octavia N Briddick
Clifford R Glick
Sinclair X Rulapaugh
Arvin K Malet
Mujtaba D Malet
Maisha P Maclead
Rodrigues P Ostrosky
IdCountryDate
1000France2024-04-08
1001Germany2024-04-11
1002Spain2024-04-06
1003Germany2024-05-02
1004Germany2024-04-15
1005Canada2024-04-07
1006Russia2024-04-17
1007Brazil2024-04-05
1008United Kingdom2024-04-24
1009Argentina2024-04-26
1010Argentina2024-04-28
1011Australia2024-04-16
1012Spain2024-04-29
1013Russia2024-04-04
1014Russia2024-04-19
1015Spain2024-04-04
1016Japan2024-04-11
1017India2024-04-16
1018Australia2024-04-03
1019Brazil2024-04-20
1020Argentina2024-04-07
1021United Kingdom2024-04-07
1022India2024-04-28
1023Italy2024-04-23
1024India2024-04-12
1025France2024-04-26
1026Argentina2024-04-12
1027France2024-04-20
1028United Kingdom2024-04-17
1029Canada2024-04-26
1030France2024-04-30
1031United Kingdom2024-04-18
1032Canada2024-04-18
1033Italy2024-04-27
1034Australia2024-04-05
1035Germany2024-04-09
1036India2024-04-14
1037France2024-04-22
1038Australia2024-04-20
1039India2024-04-05
1040Russia2024-05-02
1041Canada2024-05-01
1042Brazil2024-04-10
1043Russia2024-04-12
1044Germany2024-04-29
1045Brazil2024-04-05
1046Italy2024-04-23
1047Argentina2024-04-21
1048United Kingdom2024-04-21
1049Argentina2024-04-29

On-Demand Data

NameIdCountryDate
David S Morasca1000Canada2024-04-15
Claire C Kolmetz1001Australia2024-04-15
Smith U Maclead1002Japan2024-04-10
Claire D Albares1003Russia2024-04-26
Octavia Z Poquette1004Italy2024-04-09
Arvin T Malet1005Russia2024-04-28
Clifford A Stenseth1006Australia2024-04-25
Costa X Gillian1007Germany2024-04-11
Nicolas P Wieser1008Japan2024-04-29
Francesco M Royster1009Spain2024-04-04
Sinclair L Saylors1010United Kingdom2024-04-24
Izzy B Sergi1011Australia2024-04-06
Adams R Rulapaugh1012United Kingdom2024-04-18
Mujtaba P Figeroa1013India2024-04-14
Arvin B Bowley1014United Kingdom2024-04-16
Claire P Kolmetz1015Canada2024-05-02
Jeanfrancois K Shinko1016Russia2024-04-05
Wickens Y Amigon1017Brazil2024-04-15
Smith D Malet1018United Kingdom2024-04-28
Munro R Albares1019Germany2024-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith T FlosiCanadaAsiya Javayant QUALIFIED
Maria J GillianRussiaIoni Bowcher RENEWAL
Aruna Y BowleyGermanyOnyama Limba NEW
Arvin L BriddickItalyIoni Bowcher NEGOTIATION
Tony Z InouyeIndiaOnyama Limba UNQUALIFIED
Emily A GauchoRussiaIvan Magalhaes UNQUALIFIED
Octavia I IturbideItalyAmy Elsner UNQUALIFIED
Nicolas K SchemmerSpainIvan Magalhaes PROPOSAL
Smith A FerenczAustraliaAsiya Javayant NEW
Mayumi Q SaylorsSpainIvan Magalhaes RENEWAL
Adams B FerenczBrazilBernardo Dominic QUALIFIED
David X SchemmerAustraliaElwin Sharvill QUALIFIED
Maisha M GauchoAustraliaOnyama Limba NEW
Alejandro H BriddickArgentinaAnna Fali UNQUALIFIED
David T CaudyUnited KingdomAmy Elsner PROPOSAL
Leja J CaudyItalyStephen Shaw UNQUALIFIED
Francesco T KolmetzRussiaAmy Elsner NEGOTIATION
Johnson O BowleyBrazilAsiya Javayant QUALIFIED
Isabel D GillianItalyAnna Fali QUALIFIED
Aika I WieserAustraliaXuxue Feng UNQUALIFIED
Izzy A GarufiRussiaAsiya Javayant RENEWAL
Aditya T PoquetteAustraliaAsiya Javayant UNQUALIFIED
Chavez V NestleUnited KingdomXuxue Feng NEW
Silvio C WaycottAustraliaIoni Bowcher RENEWAL
Munro O PoquetteBrazilStephen Shaw RENEWAL
Kadeem P RutaUnited KingdomStephen Shaw PROPOSAL
Cody R RimCanadaXuxue Feng NEGOTIATION
Misaki J FollerJapanStephen Shaw NEGOTIATION
Wickens Q OldroydGermanyAnna Fali NEGOTIATION
Deepesh S KolmetzGermanyIvan Magalhaes NEGOTIATION
Salvatore X NestleGermanyAmy Elsner NEGOTIATION
Isabel S RulapaughAustraliaAnna Fali RENEWAL
Antonio C GillianCanadaAsiya Javayant RENEWAL
David B OldroydUnited KingdomAnna Fali QUALIFIED
Kadeem B FlosiGermanyAmy Elsner NEGOTIATION
Mujtaba C BologniaJapanOnyama Limba RENEWAL
Salvatore J VocelkaSpainOnyama Limba QUALIFIED
Jennifer E GarufiIndiaAnna Fali UNQUALIFIED
Juan E RimArgentinaOnyama Limba NEGOTIATION
Tony W MaletBrazilXuxue Feng 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>