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
Leon K CaldareraItalyAnna Fali PROPOSAL
Munro D VocelkaSpainStephen Shaw NEGOTIATION
Chavez O BologniaUnited KingdomBernardo Dominic NEW
Maria U OstroskySpainIvan Magalhaes QUALIFIED
Murillo E WaycottUnited KingdomIvan Magalhaes NEGOTIATION
Antonio D MaletAustraliaIoni Bowcher RENEWAL
Octavia L VocelkaItalyAmy Elsner NEGOTIATION
Greenwood W MorascaIndiaBernardo Dominic RENEWAL
Jones I BologniaItalyIvan Magalhaes RENEWAL
Chavez M PoquetteGermanyOnyama Limba UNQUALIFIED
Antonio H NickaIndiaElwin Sharvill RENEWAL
Jennifer D FlosiFranceElwin Sharvill QUALIFIED
Emily I StockhamJapanAnna Fali NEGOTIATION
Chavez W FigeroaGermanyXuxue Feng PROPOSAL
David C SlusarskiArgentinaXuxue Feng NEGOTIATION
Kadeem D PoquetteCanadaStephen Shaw PROPOSAL
Morrow J AlbaresIndiaXuxue Feng QUALIFIED
Clifford L DarakjyArgentinaXuxue Feng NEW
Wickens G TollnerSpainAmy Elsner RENEWAL
Costa N GlickCanadaElwin Sharvill PROPOSAL
Chavez O DarakjyRussiaStephen Shaw QUALIFIED
Jones Q BowleyAustraliaBernardo Dominic PROPOSAL
Jeanfrancois F MacleadGermanyAsiya Javayant UNQUALIFIED
Claire C WhobreySpainOnyama Limba RENEWAL
Kaitlin T DilliardFranceStephen Shaw RENEWAL
Leon P MarrierUnited KingdomBernardo Dominic QUALIFIED
Maisha A MorascaSpainBernardo Dominic NEGOTIATION
Maisha V PoquetteFranceOnyama Limba QUALIFIED
Cody Y BowleyUnited KingdomAsiya Javayant PROPOSAL
Alejandro O MacleadRussiaBernardo Dominic NEW
James B RimJapanIvan Magalhaes PROPOSAL
Chavez U NickaJapanAmy Elsner RENEWAL
Izzy J NickaIndiaAnna Fali UNQUALIFIED
Stacey V NestleCanadaBernardo Dominic NEGOTIATION
Claire Z CaldareraRussiaAsiya Javayant NEW
Francesco N SergiRussiaXuxue Feng NEW
Jennifer A OldroydFranceStephen Shaw UNQUALIFIED
Morrow G SaylorsBrazilOnyama Limba PROPOSAL
Johnson H MaletRussiaAnna Fali RENEWAL
Aika E MorascaItalyAsiya Javayant QUALIFIED
Nicolas O DoeFranceStephen Shaw NEW
Munro Y GlickItalyIoni Bowcher PROPOSAL
Leja F StensethCanadaStephen Shaw UNQUALIFIED
Octavia K ButtSpainIoni Bowcher QUALIFIED
Alejandro Y VenereCanadaIvan Magalhaes UNQUALIFIED
Leon I BologniaJapanAnna Fali NEGOTIATION
James U BriddickJapanIvan Magalhaes QUALIFIED
Aditya E TollnerIndiaBernardo Dominic NEGOTIATION
David L RoysterRussiaAnna Fali RENEWAL
Stacey C CaldareraGermanyOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Mujtaba C SlusarskiGermanyStephen Shaw NEW
Adams H BowleyJapanXuxue Feng RENEWAL
James A WhobreyFranceAsiya Javayant QUALIFIED
Antonio J KolmetzIndiaAmy Elsner NEGOTIATION
Isabel H MorascaIndiaIvan Magalhaes PROPOSAL
Jeanfrancois B AlbaresGermanyAsiya Javayant NEGOTIATION
James A PerinArgentinaXuxue Feng RENEWAL
Deepesh I MacleadFranceIoni Bowcher NEGOTIATION
Arvin D WhobreyRussiaXuxue Feng NEGOTIATION
Aditya B MaletBrazilOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh U DilliardItaly2024-04-07Printing Dimensions RENEWAL24Anna Fali
1001Deepesh X VocelkaItaly2024-04-16Commercial Press NEGOTIATION17Ivan Magalhaes
1002Octavia X MaletUnited Kingdom2024-04-07Buckley Miller Wright PROPOSAL62Onyama Limba
1003Julie H WhobreyAustralia2024-04-08Feltz Printing Service PROPOSAL29Ioni Bowcher
1004Greenwood G GillianUnited Kingdom2024-04-08Commercial Press NEW56Bernardo Dominic
1005Arvin E PerinJapan2024-04-08Rousseaux, Michael Esq PROPOSAL79Bernardo Dominic
1006Maria D BowleyAustralia2024-04-06Printing Dimensions NEGOTIATION19Elwin Sharvill
1007Francesco I MorascaSpain2024-03-26Buckley Miller Wright PROPOSAL66Anna Fali
1008Johnson G MaletItaly2024-03-27Chapman, Ross E Esq QUALIFIED17Xuxue Feng
1009James T NestleBrazil2024-03-28Chanay, Jeffrey A Esq RENEWAL16Amy Elsner
1010Antonio J OldroydItaly2024-04-20Morlong Associates PROPOSAL31Stephen Shaw
1011Antonio T RimIndia2024-04-18Benton, John B Jr NEW10Xuxue Feng
1012David S IturbideUnited Kingdom2024-03-25Dorl, James J Esq QUALIFIED48Stephen Shaw
1013Emily I WieserSpain2024-03-30Chemel, James L Cpa RENEWAL26Xuxue Feng
1014Costa V SaylorsUnited Kingdom2024-04-19Rousseaux, Michael Esq UNQUALIFIED56Stephen Shaw
1015Mujtaba U VenereAustralia2024-04-02Rousseaux, Michael Esq RENEWAL92Ivan Magalhaes
1016Nicolas B SergiCanada2024-04-02Chanay, Jeffrey A Esq PROPOSAL55Amy Elsner
1017Jennifer I DilliardItaly2024-04-23Dorl, James J Esq PROPOSAL21Bernardo Dominic
1018Jeanfrancois R FollerArgentina2024-04-17Commercial Press RENEWAL66Xuxue Feng
1019Maria M MaletJapan2024-04-19Printing Dimensions UNQUALIFIED66Amy Elsner
1020Darci H FerenczJapan2024-04-11Morlong Associates PROPOSAL49Asiya Javayant
1021Tony Z DoeJapan2024-03-27Dorl, James J Esq QUALIFIED9Amy Elsner
1022Maisha K VocelkaItaly2024-04-15Buckley Miller Wright UNQUALIFIED11Ioni Bowcher
1023Stacey Q IturbideItaly2024-03-25Printing Dimensions QUALIFIED18Ivan Magalhaes
1024Darci O KuskoSpain2024-04-15King, Christopher A Esq UNQUALIFIED67Asiya Javayant
1025Munro P KuskoBrazil2024-04-21Benton, John B Jr RENEWAL5Amy Elsner
1026Deepesh E SchemmerBrazil2024-04-18Chapman, Ross E Esq UNQUALIFIED96Xuxue Feng
1027Juan D SchemmerArgentina2024-03-31Buckley Miller Wright PROPOSAL7Anna Fali
1028Smith O BriddickJapan2024-04-07Chapman, Ross E Esq UNQUALIFIED87Anna Fali
1029Aruna E DilliardFrance2024-04-10Rousseaux, Michael Esq QUALIFIED75Bernardo Dominic
1030Munro C WieserGermany2024-04-22Truhlar And Truhlar Attys PROPOSAL74Amy Elsner
1031James J CaldareraCanada2024-04-10Chemel, James L Cpa NEW56Amy Elsner
1032Octavia Q SergiJapan2024-04-06Dorl, James J Esq NEGOTIATION14Xuxue Feng
1033Aditya H AlbaresBrazil2024-04-01Buckley Miller Wright UNQUALIFIED21Anna Fali
1034Smith Y GauchoIndia2024-04-04Chemel, James L Cpa NEW22Elwin Sharvill
1035Murillo R KolmetzUnited Kingdom2024-04-08Feiner Bros QUALIFIED41Anna Fali
1036Nicolas Q SchemmerFrance2024-03-29Benton, John B Jr RENEWAL92Onyama Limba
1037Johnson B TollnerAustralia2024-04-21Commercial Press NEGOTIATION34Stephen Shaw
1038Ivar T SergiIndia2024-04-07Feiner Bros NEGOTIATION62Xuxue Feng
1039Alejandro G InouyeFrance2024-04-09Printing Dimensions RENEWAL93Bernardo Dominic
1040Maisha G RimItaly2024-04-06Truhlar And Truhlar Attys PROPOSAL94Amy Elsner
1041Stacey T MaletRussia2024-04-04Chemel, James L Cpa QUALIFIED22Anna Fali
1042Leja G CaldareraFrance2024-03-26Rousseaux, Michael Esq PROPOSAL75Onyama Limba
1043Kaitlin I WieserArgentina2024-04-07King, Christopher A Esq RENEWAL48Xuxue Feng
1044Francesco A DoeArgentina2024-04-16Dorl, James J Esq QUALIFIED69Amy Elsner
1045Ashley J CampainItaly2024-04-14Commercial Press NEGOTIATION65Ivan Magalhaes
1046Jennifer I CaudyUnited Kingdom2024-04-04Truhlar And Truhlar Attys RENEWAL92Bernardo Dominic
1047Jones M VenereCanada2024-04-01Feiner Bros QUALIFIED71Onyama Limba
1048Ricardo P AlbaresBrazil2024-04-12Truhlar And Truhlar Attys QUALIFIED93Ioni Bowcher
1049Maria Q BowleyFrance2024-03-25Truhlar And Truhlar Attys NEW32Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba B PaprockiItalyStephen Shaw RENEWAL
Maria X NestleUnited KingdomOnyama Limba RENEWAL
Darci Z OldroydRussiaXuxue Feng UNQUALIFIED
Sinclair Q CaldareraBrazilXuxue Feng NEGOTIATION
Sinclair F MaletCanadaAsiya Javayant UNQUALIFIED
Stacey Z RulapaughGermanyIvan Magalhaes NEW
Emily U KuskoItalyStephen Shaw PROPOSAL
Faith J StockhamFranceIvan Magalhaes RENEWAL
Costa V OstroskyIndiaIoni Bowcher PROPOSAL
Smith X PaprockiFranceBernardo Dominic PROPOSAL
Francesco J GauchoRussiaAsiya Javayant NEW
Juan R AmigonAustraliaStephen Shaw NEW
Murillo N OstroskyItalyIoni Bowcher UNQUALIFIED
Munro R ChuiIndiaElwin Sharvill NEGOTIATION
Deepesh I MarrierIndiaOnyama Limba QUALIFIED
Sinclair N ButtUnited KingdomAmy Elsner QUALIFIED
Mayumi G DilliardGermanyStephen Shaw UNQUALIFIED
Jefferson U InouyeBrazilAmy Elsner RENEWAL
Cody L MacleadItalyIoni Bowcher RENEWAL
Greenwood U NestleCanadaAsiya Javayant NEW
David N MacleadGermanyAsiya Javayant RENEWAL
Mayumi W RoysterJapanIvan Magalhaes PROPOSAL
Emily A PoquetteFranceElwin Sharvill PROPOSAL
Isabel O OstroskyFranceElwin Sharvill UNQUALIFIED
Chavez F IturbideFranceIoni Bowcher NEW
Salvatore H CampainGermanyXuxue Feng RENEWAL
Clifford I VocelkaCanadaIoni Bowcher QUALIFIED
Juan W WhobreyUnited KingdomElwin Sharvill NEW
Faith F KolmetzFranceStephen Shaw UNQUALIFIED
Silvio X PaprockiCanadaIvan Magalhaes QUALIFIED
Deepesh J CaudyUnited KingdomElwin Sharvill QUALIFIED
Johnson E RimBrazilAnna Fali PROPOSAL
Mayumi V RoysterUnited KingdomIvan Magalhaes QUALIFIED
Chavez L IturbideJapanAmy Elsner UNQUALIFIED
Antonio S StensethFranceAmy Elsner RENEWAL
Murillo J GauchoJapanIoni Bowcher QUALIFIED
Maisha U WhobreyFranceStephen Shaw QUALIFIED
Smith U BologniaCanadaBernardo Dominic UNQUALIFIED
Leon E NestleJapanElwin Sharvill UNQUALIFIED
Johnson I VocelkaBrazilAsiya Javayant RENEWAL
Ricardo Q FlosiRussiaStephen Shaw NEW
Ivar T StensethAustraliaIvan Magalhaes RENEWAL
Salvatore N BriddickCanadaBernardo Dominic UNQUALIFIED
Aruna C GillianCanadaIoni Bowcher PROPOSAL
Misaki O CampainRussiaIvan Magalhaes QUALIFIED
Aika J SlusarskiItalyAmy Elsner PROPOSAL
Mayumi T SlusarskiItalyAnna Fali NEGOTIATION
Sinclair S MorascaItalyAnna Fali NEW
James M StockhamGermanyAnna Fali UNQUALIFIED
James O InouyeCanadaBernardo Dominic PROPOSAL
Frozen Columns
Name
Kadeem D Amigon
Wickens V Schemmer
Jones B Caudy
Jeanfrancois D Flosi
Tony D Slusarski
Munro T Dilliard
Jennifer M Royster
Aruna S Morasca
Kaitlin O Caudy
Ashley H Morasca
Aruna Y Kusko
Jeanfrancois Y Gillian
Isabel O Inouye
Ricardo J Gillian
Salvatore S Campain
Salvatore Y Gaucho
Jefferson B Perin
Aika Y Nestle
Silvio F Maclead
Morrow E Morasca
Jones K Garufi
Tony J Slusarski
Ivar L Garufi
Darci W Albares
Mujtaba U Iturbide
Leja Q Inouye
Juan Y Vocelka
Jefferson Y Shinko
Faith H Iturbide
Chavez V Iturbide
Leja T Nestle
Antonio L Albares
Octavia E Rulapaugh
Nicolas Q Royster
Johnson U Maclead
Rodrigues B Perin
James T Darakjy
Jefferson C Gillian
Arvin H Butt
David D Ostrosky
Emily N Stockham
Leon H Malet
Adams Y Bowley
James Q Inouye
Leja N Garufi
Maria Y Rulapaugh
Sinclair R Morasca
Adams M Nicka
Leon S Perin
Emily J Iturbide
IdCountryDate
1000Australia2024-04-18
1001Canada2024-04-19
1002Japan2024-03-25
1003Canada2024-04-01
1004Spain2024-04-06
1005Japan2024-04-09
1006Argentina2024-04-10
1007Brazil2024-04-20
1008Japan2024-03-27
1009Russia2024-04-12
1010Argentina2024-03-31
1011Japan2024-04-10
1012Spain2024-04-05
1013Japan2024-04-23
1014France2024-04-23
1015Australia2024-03-29
1016Germany2024-03-27
1017Russia2024-04-03
1018Italy2024-04-15
1019Canada2024-04-07
1020Germany2024-04-20
1021Argentina2024-03-30
1022Germany2024-04-10
1023Canada2024-04-05
1024Germany2024-04-17
1025Argentina2024-03-28
1026Australia2024-04-02
1027United Kingdom2024-04-15
1028France2024-04-17
1029Spain2024-04-15
1030France2024-04-15
1031Brazil2024-04-20
1032Australia2024-04-23
1033India2024-04-10
1034Canada2024-03-26
1035Italy2024-04-06
1036Canada2024-04-14
1037United Kingdom2024-04-10
1038Brazil2024-04-20
1039France2024-04-16
1040Japan2024-04-16
1041Italy2024-04-15
1042France2024-04-05
1043France2024-04-15
1044Spain2024-04-21
1045Argentina2024-03-26
1046Italy2024-04-09
1047Italy2024-03-30
1048Russia2024-03-26
1049Spain2024-03-31

On-Demand Data

NameIdCountryDate
Cody M Oldroyd1000Argentina2024-04-02
Izzy O Inouye1001Argentina2024-03-27
Wickens A Bolognia1002United Kingdom2024-04-03
Greenwood M Foller1003Canada2024-04-07
Kadeem G Ruta1004Australia2024-04-10
Mujtaba H Sergi1005India2024-04-14
Jennifer V Oldroyd1006Brazil2024-03-29
Aditya U Caudy1007Germany2024-03-31
Costa A Maclead1008United Kingdom2024-04-13
Ricardo W Bowley1009Canada2024-04-08
Mujtaba R Shinko1010United Kingdom2024-04-22
Tony Z Venere1011Italy2024-04-18
David Q Whobrey1012Brazil2024-04-04
Adams F Doe1013India2024-03-29
Antonio M Morasca1014Japan2024-03-29
Murillo E Slusarski1015Japan2024-04-04
Izzy S Butt1016Australia2024-04-10
Aika B Caudy1017Canada2024-04-21
Darci W Tollner1018Brazil2024-04-16
Faith E Chui1019Brazil2024-03-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues I VocelkaUnited KingdomElwin Sharvill PROPOSAL
Darci K RoysterFranceIvan Magalhaes NEW
Silvio I PoquetteItalyBernardo Dominic UNQUALIFIED
Arvin G PerinIndiaStephen Shaw PROPOSAL
Maisha A GarufiUnited KingdomElwin Sharvill UNQUALIFIED
Munro Y GauchoAustraliaStephen Shaw NEGOTIATION
Aika P MarrierUnited KingdomIvan Magalhaes RENEWAL
Stacey X ShinkoArgentinaStephen Shaw NEGOTIATION
Costa X CaldareraUnited KingdomAsiya Javayant QUALIFIED
Smith B IturbideJapanIvan Magalhaes NEGOTIATION
Jeanfrancois H WaycottJapanStephen Shaw PROPOSAL
Kadeem K BowleyRussiaAmy Elsner NEGOTIATION
Maisha M DoeArgentinaStephen Shaw UNQUALIFIED
Izzy T GauchoAustraliaXuxue Feng PROPOSAL
Aditya J SaylorsSpainAnna Fali QUALIFIED
Jennifer W FlosiArgentinaElwin Sharvill QUALIFIED
Faith P VenereFranceStephen Shaw NEGOTIATION
Sinclair W OstroskyFranceIoni Bowcher QUALIFIED
Jones J KuskoGermanyAmy Elsner PROPOSAL
Greenwood Y BowleyGermanyAmy Elsner NEW
Deepesh M CampainJapanXuxue Feng PROPOSAL
Kaitlin B OldroydAustraliaOnyama Limba NEGOTIATION
Murillo R IturbideBrazilAmy Elsner NEW
Jeanfrancois Z GillianFranceXuxue Feng NEGOTIATION
Nicolas U BologniaSpainIvan Magalhaes PROPOSAL
Mujtaba Q TollnerIndiaAnna Fali UNQUALIFIED
Kaitlin X TollnerItalyOnyama Limba QUALIFIED
Arvin X RulapaughItalyIvan Magalhaes RENEWAL
Munro D BowleyJapanAmy Elsner QUALIFIED
Maria G DilliardGermanyStephen Shaw NEGOTIATION
Chavez L FigeroaIndiaBernardo Dominic NEW
Jennifer Z PerinSpainIvan Magalhaes PROPOSAL
Salvatore U WieserSpainIoni Bowcher UNQUALIFIED
Mayumi V MarrierCanadaAnna Fali UNQUALIFIED
Cody D NickaArgentinaAmy Elsner UNQUALIFIED
Leon Z MorascaAustraliaIoni Bowcher RENEWAL
Claire N InouyeGermanyIoni Bowcher NEW
Munro I OldroydAustraliaAnna Fali NEW
Ricardo A NickaItalyBernardo Dominic RENEWAL
Jones B DoeJapanXuxue Feng UNQUALIFIED

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