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
Mujtaba Z MacleadCanadaElwin Sharvill UNQUALIFIED
Chavez B ChuiArgentinaXuxue Feng QUALIFIED
Adams E VenereAustraliaIvan Magalhaes PROPOSAL
Ricardo R StockhamIndiaIvan Magalhaes RENEWAL
Greenwood V MaletSpainStephen Shaw QUALIFIED
Darci A NickaUnited KingdomIvan Magalhaes QUALIFIED
Alejandro V FigeroaItalyIvan Magalhaes UNQUALIFIED
Adams M DarakjyCanadaXuxue Feng QUALIFIED
Claire U FerenczAustraliaIvan Magalhaes UNQUALIFIED
Kaitlin E MaletGermanyBernardo Dominic UNQUALIFIED
Adams F GarufiSpainXuxue Feng QUALIFIED
Greenwood G RutaUnited KingdomXuxue Feng UNQUALIFIED
Leja K DarakjyGermanyXuxue Feng UNQUALIFIED
Kaitlin F PerinRussiaBernardo Dominic NEGOTIATION
Arvin M GlickRussiaAsiya Javayant PROPOSAL
Jones D TollnerArgentinaAsiya Javayant RENEWAL
Ivar G FlosiArgentinaAmy Elsner UNQUALIFIED
Chavez X PerinBrazilStephen Shaw NEW
Darci T MaletSpainAmy Elsner NEW
Costa K InouyeAustraliaXuxue Feng PROPOSAL
Claire A GillianGermanyAnna Fali UNQUALIFIED
Costa Q RutaGermanyAmy Elsner RENEWAL
Sinclair M FlosiSpainOnyama Limba NEW
Munro K GlickJapanAmy Elsner RENEWAL
Adams O DilliardIndiaBernardo Dominic NEGOTIATION
Costa A SlusarskiGermanyIvan Magalhaes UNQUALIFIED
Nicolas S PerinGermanyOnyama Limba UNQUALIFIED
Mujtaba W ButtGermanyStephen Shaw UNQUALIFIED
Darci A SlusarskiCanadaBernardo Dominic NEW
Costa U RulapaughFranceAnna Fali NEGOTIATION
Greenwood V ButtBrazilAnna Fali UNQUALIFIED
David T DilliardUnited KingdomBernardo Dominic NEGOTIATION
Arvin E PoquetteFranceXuxue Feng RENEWAL
Cody L DilliardUnited KingdomBernardo Dominic PROPOSAL
Jennifer L KuskoGermanyStephen Shaw QUALIFIED
Smith W ButtGermanyIoni Bowcher QUALIFIED
Jones K BologniaRussiaElwin Sharvill UNQUALIFIED
Maria N BologniaItalyOnyama Limba NEGOTIATION
Octavia H DoeSpainAmy Elsner UNQUALIFIED
Greenwood O MarrierGermanyIoni Bowcher UNQUALIFIED
Mujtaba J TollnerGermanyXuxue Feng PROPOSAL
Izzy V SlusarskiCanadaAmy Elsner UNQUALIFIED
David B AmigonUnited KingdomAsiya Javayant NEGOTIATION
Nicolas M CaudyIndiaAsiya Javayant PROPOSAL
Kadeem R FollerSpainAmy Elsner PROPOSAL
Aruna U DoeIndiaAmy Elsner UNQUALIFIED
Kaitlin W TollnerGermanyAmy Elsner QUALIFIED
Jeanfrancois S AmigonFranceXuxue Feng PROPOSAL
Ricardo Z DilliardSpainBernardo Dominic QUALIFIED
Kadeem Y MaletItalyOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie F FerenczRussiaIvan Magalhaes PROPOSAL
Maria W ShinkoAustraliaStephen Shaw RENEWAL
Ivar L MacleadFranceIoni Bowcher QUALIFIED
Sinclair P NestleBrazilStephen Shaw UNQUALIFIED
Jeanfrancois T RoysterCanadaAmy Elsner UNQUALIFIED
Antonio D FollerIndiaAnna Fali RENEWAL
Aditya T VenereArgentinaBernardo Dominic NEW
Wickens X MarrierArgentinaAsiya Javayant UNQUALIFIED
Darci Z NestleArgentinaAsiya Javayant QUALIFIED
Adams Z TollnerArgentinaAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily S RimBrazil2024-04-07Chemel, James L Cpa NEGOTIATION30Stephen Shaw
1001Kaitlin S FigeroaItaly2024-04-17Printing Dimensions PROPOSAL24Asiya Javayant
1002James I SaylorsJapan2024-04-16Truhlar And Truhlar Attys RENEWAL93Stephen Shaw
1003Chavez C FigeroaBrazil2024-04-16Chemel, James L Cpa PROPOSAL53Asiya Javayant
1004Misaki T DoeBrazil2024-04-22Rousseaux, Michael Esq PROPOSAL36Ivan Magalhaes
1005Jeanfrancois C MarrierGermany2024-04-14Chapman, Ross E Esq NEGOTIATION59Asiya Javayant
1006Faith Y AlbaresItaly2024-04-10Printing Dimensions QUALIFIED3Stephen Shaw
1007Faith A OldroydAustralia2024-04-23Feiner Bros NEW83Asiya Javayant
1008Tony W SlusarskiUnited Kingdom2024-04-08Buckley Miller Wright QUALIFIED78Anna Fali
1009Alejandro F FlosiCanada2024-04-16Chanay, Jeffrey A Esq NEGOTIATION93Asiya Javayant
1010Leon A MacleadJapan2024-04-15Printing Dimensions NEW51Amy Elsner
1011Aika T ShinkoBrazil2024-04-14Feiner Bros NEGOTIATION28Bernardo Dominic
1012Faith O BologniaItaly2024-04-27Morlong Associates QUALIFIED71Xuxue Feng
1013Leja D BowleyGermany2024-04-30Dorl, James J Esq NEGOTIATION10Xuxue Feng
1014Mujtaba Y SergiFrance2024-05-04Benton, John B Jr NEW26Elwin Sharvill
1015Jones N InouyeAustralia2024-04-18Feltz Printing Service UNQUALIFIED52Bernardo Dominic
1016Jones Z MacleadSpain2024-04-24Buckley Miller Wright UNQUALIFIED94Ioni Bowcher
1017Jeanfrancois R WieserArgentina2024-04-12King, Christopher A Esq NEGOTIATION58Stephen Shaw
1018Faith I PerinBrazil2024-04-08Chanay, Jeffrey A Esq NEW38Bernardo Dominic
1019Greenwood L PoquetteFrance2024-04-29Dorl, James J Esq NEW51Ioni Bowcher
1020Wickens E BriddickArgentina2024-04-14Feiner Bros NEGOTIATION16Xuxue Feng
1021Arvin R SergiAustralia2024-05-01Feiner Bros PROPOSAL38Elwin Sharvill
1022Emily G SergiJapan2024-04-07King, Christopher A Esq PROPOSAL38Asiya Javayant
1023Leja F GauchoBrazil2024-04-12Morlong Associates PROPOSAL17Ivan Magalhaes
1024Isabel L MaletBrazil2024-04-15Buckley Miller Wright QUALIFIED33Amy Elsner
1025Octavia A GillianItaly2024-04-25Truhlar And Truhlar Attys QUALIFIED4Bernardo Dominic
1026Emily C MorascaArgentina2024-04-20Rousseaux, Michael Esq NEW85Asiya Javayant
1027Arvin O SchemmerGermany2024-04-16King, Christopher A Esq UNQUALIFIED38Onyama Limba
1028Leon F TollnerArgentina2024-04-10Rangoni Of Florence RENEWAL39Anna Fali
1029Julie L RoysterJapan2024-04-17Rangoni Of Florence UNQUALIFIED81Ivan Magalhaes
1030Jefferson Z WieserJapan2024-04-18Chanay, Jeffrey A Esq NEW15Anna Fali
1031Maisha H SaylorsBrazil2024-04-29Rangoni Of Florence NEW95Ioni Bowcher
1032Claire R RulapaughFrance2024-04-05Chanay, Jeffrey A Esq PROPOSAL30Bernardo Dominic
1033Izzy Z CaudyFrance2024-04-17Truhlar And Truhlar Attys NEW45Xuxue Feng
1034Antonio G FlosiSpain2024-04-10Commercial Press PROPOSAL18Anna Fali
1035Misaki T IturbideIndia2024-04-21Chanay, Jeffrey A Esq NEW95Ivan Magalhaes
1036Nicolas L WhobreySpain2024-04-30Morlong Associates RENEWAL54Elwin Sharvill
1037Maria A MarrierArgentina2024-04-23Dorl, James J Esq NEGOTIATION9Xuxue Feng
1038Alejandro V CampainRussia2024-04-27Feiner Bros QUALIFIED37Bernardo Dominic
1039Aditya J OldroydSpain2024-04-16Truhlar And Truhlar Attys RENEWAL4Stephen Shaw
1040Maisha V AlbaresCanada2024-04-09Morlong Associates RENEWAL21Elwin Sharvill
1041Alejandro M BologniaAustralia2024-04-23Rangoni Of Florence QUALIFIED26Anna Fali
1042Greenwood A ChuiBrazil2024-04-26Morlong Associates PROPOSAL55Elwin Sharvill
1043Sinclair W GillianCanada2024-04-25Benton, John B Jr NEGOTIATION28Bernardo Dominic
1044Claire N SlusarskiFrance2024-04-06Morlong Associates RENEWAL39Elwin Sharvill
1045Kaitlin U KuskoCanada2024-04-17Chapman, Ross E Esq QUALIFIED7Ioni Bowcher
1046Aditya Q MacleadSpain2024-05-01Feiner Bros QUALIFIED62Bernardo Dominic
1047Clifford V BologniaBrazil2024-04-26Commercial Press UNQUALIFIED46Anna Fali
1048Octavia M DarakjyArgentina2024-04-30Commercial Press PROPOSAL60Ioni Bowcher
1049Misaki F NickaItaly2024-04-24Feltz Printing Service NEGOTIATION61Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Leja Y SaylorsRussiaXuxue Feng UNQUALIFIED
Jennifer V RutaFranceStephen Shaw RENEWAL
Clifford P PerinSpainAsiya Javayant QUALIFIED
Arvin V StockhamItalyIoni Bowcher NEGOTIATION
Jones Z CaldareraBrazilIvan Magalhaes RENEWAL
Mayumi S MacleadFranceOnyama Limba NEGOTIATION
Greenwood J FlosiItalyIvan Magalhaes RENEWAL
Aditya V CaudyGermanyAsiya Javayant UNQUALIFIED
Chavez W RimSpainIvan Magalhaes UNQUALIFIED
Salvatore J KuskoGermanyAmy Elsner NEGOTIATION
Sinclair P ShinkoArgentinaOnyama Limba PROPOSAL
Arvin I BriddickArgentinaAnna Fali RENEWAL
Costa Y BriddickArgentinaAnna Fali PROPOSAL
Francesco K ChuiBrazilOnyama Limba NEW
Maria M GlickBrazilStephen Shaw PROPOSAL
David Z RoysterRussiaElwin Sharvill QUALIFIED
Murillo G ChuiSpainXuxue Feng UNQUALIFIED
Izzy U SergiItalyIvan Magalhaes QUALIFIED
Wickens I MaletIndiaAnna Fali QUALIFIED
Jones B DoeFranceAsiya Javayant QUALIFIED
Kadeem K FigeroaGermanyAsiya Javayant RENEWAL
Aika Z WieserRussiaXuxue Feng UNQUALIFIED
Jeanfrancois Z KuskoBrazilStephen Shaw NEGOTIATION
Izzy A CampainGermanyElwin Sharvill NEGOTIATION
Francesco L GlickBrazilAnna Fali NEGOTIATION
Mayumi H KolmetzBrazilAsiya Javayant RENEWAL
Emily B GarufiCanadaXuxue Feng PROPOSAL
Emily X CampainAustraliaAsiya Javayant RENEWAL
Francesco O WieserUnited KingdomBernardo Dominic QUALIFIED
Izzy Q DoeItalyAmy Elsner PROPOSAL
Adams M SaylorsIndiaAnna Fali RENEWAL
Rodrigues Z FollerGermanyBernardo Dominic NEGOTIATION
Leja O SaylorsItalyBernardo Dominic RENEWAL
Munro D WaycottItalyBernardo Dominic NEW
Arvin A PoquetteRussiaAnna Fali RENEWAL
Mujtaba E BologniaArgentinaElwin Sharvill NEGOTIATION
Ricardo P KuskoRussiaIvan Magalhaes QUALIFIED
Salvatore C PoquetteCanadaAmy Elsner RENEWAL
Costa C MacleadIndiaIvan Magalhaes NEGOTIATION
Salvatore T MaletItalyIoni Bowcher NEW
Maisha E VocelkaUnited KingdomOnyama Limba RENEWAL
Maria B AlbaresFranceAnna Fali PROPOSAL
Jefferson K KuskoIndiaXuxue Feng QUALIFIED
David M DilliardItalyAsiya Javayant PROPOSAL
Ashley B BologniaRussiaElwin Sharvill RENEWAL
Ricardo J MaletArgentinaBernardo Dominic PROPOSAL
David V FigeroaGermanyAsiya Javayant UNQUALIFIED
Maria G VenereItalyAsiya Javayant RENEWAL
David N FlosiBrazilAnna Fali NEW
Costa B KolmetzBrazilIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Ashley I Maclead
Deepesh J Rulapaugh
Jefferson T Albares
Misaki Z Butt
Misaki C Ostrosky
Jones I Shinko
Morrow N Marrier
Smith Y Shinko
Emily R Briddick
Rodrigues D Chui
Aditya J Gillian
Ashley B Oldroyd
Julie X Garufi
Jefferson I Whobrey
Arvin J Rim
James E Maclead
Adams X Kusko
Julie J Caldarera
Jefferson S Amigon
Adams S Iturbide
Kaitlin B Flosi
Nicolas R Slusarski
Ricardo H Butt
Aditya J Ferencz
Clifford O Tollner
Ashley L Briddick
Julie B Darakjy
Murillo R Gaucho
Juan J Slusarski
Izzy A Garufi
Smith C Tollner
Kaitlin Z Albares
Emily J Iturbide
Kadeem B Malet
Ricardo H Rim
Faith R Marrier
Isabel B Poquette
Clifford O Perin
Cody G Garufi
Smith D Gaucho
Silvio N Gillian
David J Caldarera
Isabel V Morasca
Aditya X Chui
Maria G Foller
Jeanfrancois D Marrier
Clifford V Venere
Kaitlin D Albares
Mayumi F Saylors
Arvin K Gaucho
IdCountryDate
1000Canada2024-04-10
1001Japan2024-04-06
1002Spain2024-05-04
1003Canada2024-05-01
1004Canada2024-05-04
1005Russia2024-04-09
1006Argentina2024-04-27
1007Australia2024-04-10
1008Russia2024-05-04
1009Canada2024-04-23
1010Germany2024-04-29
1011Canada2024-04-30
1012France2024-05-04
1013Germany2024-04-24
1014Brazil2024-04-08
1015Germany2024-05-02
1016Argentina2024-04-16
1017Japan2024-04-27
1018France2024-04-16
1019Australia2024-04-15
1020India2024-04-09
1021Spain2024-04-12
1022Argentina2024-04-20
1023United Kingdom2024-04-09
1024Brazil2024-04-28
1025India2024-04-07
1026Russia2024-04-26
1027United Kingdom2024-04-23
1028India2024-04-08
1029Spain2024-04-13
1030India2024-04-28
1031Russia2024-04-12
1032United Kingdom2024-04-27
1033Australia2024-04-28
1034United Kingdom2024-04-29
1035Russia2024-04-26
1036Italy2024-04-08
1037Argentina2024-04-18
1038France2024-04-25
1039Brazil2024-04-16
1040Japan2024-05-01
1041Italy2024-04-30
1042Russia2024-04-07
1043France2024-04-14
1044Italy2024-04-21
1045Italy2024-04-06
1046Canada2024-04-11
1047Argentina2024-04-22
1048United Kingdom2024-04-30
1049United Kingdom2024-04-21

On-Demand Data

NameIdCountryDate
Octavia K Flosi1000Germany2024-04-20
Adams D Sergi1001Brazil2024-04-11
Juan F Poquette1002Italy2024-04-21
Maisha D Kolmetz1003Japan2024-04-24
Aika E Amigon1004United Kingdom2024-04-21
Maria R Gaucho1005Spain2024-04-06
Stacey Z Nicka1006India2024-04-08
Aruna T Oldroyd1007Argentina2024-05-02
Mayumi J Tollner1008Russia2024-05-04
Murillo S Inouye1009Russia2024-04-17
Nicolas G Rim1010France2024-04-13
Cody F Campain1011Argentina2024-05-02
Sinclair M Sergi1012India2024-04-26
Johnson L Campain1013Italy2024-05-03
Cody B Malet1014France2024-04-23
Aika M Shinko1015India2024-04-26
Leja G Figeroa1016Argentina2024-04-23
Francesco S Poquette1017Australia2024-04-30
Darci X Ruta1018Argentina2024-04-22
Aditya C Maclead1019Japan2024-05-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily J DarakjyIndiaIvan Magalhaes QUALIFIED
Deepesh S MarrierUnited KingdomAmy Elsner NEW
Leja Z DarakjyIndiaOnyama Limba PROPOSAL
Ashley H TollnerCanadaAnna Fali NEW
Julie O NestleGermanyBernardo Dominic PROPOSAL
James G AmigonBrazilAmy Elsner UNQUALIFIED
Alejandro R SergiSpainIvan Magalhaes RENEWAL
Misaki T AlbaresSpainElwin Sharvill QUALIFIED
Smith K AlbaresFranceElwin Sharvill UNQUALIFIED
Wickens D RimItalyIoni Bowcher NEW
Antonio L PerinJapanIvan Magalhaes QUALIFIED
Antonio Y PerinArgentinaBernardo Dominic PROPOSAL
Jones D KolmetzItalyAmy Elsner PROPOSAL
Costa W SlusarskiUnited KingdomAmy Elsner NEW
Johnson U GillianRussiaBernardo Dominic NEW
Emily N OldroydUnited KingdomStephen Shaw NEW
Julie P PoquetteAustraliaAmy Elsner QUALIFIED
Claire Q IturbideCanadaAnna Fali NEGOTIATION
Jones V MorascaRussiaAmy Elsner QUALIFIED
Darci O BologniaAustraliaBernardo Dominic NEGOTIATION
Jones O GlickGermanyBernardo Dominic PROPOSAL
Francesco C RulapaughItalyAmy Elsner PROPOSAL
Ashley K AlbaresItalyBernardo Dominic NEGOTIATION
Ivar R FerenczAustraliaIvan Magalhaes NEGOTIATION
Antonio B StockhamSpainIvan Magalhaes QUALIFIED
Kaitlin A PaprockiArgentinaBernardo Dominic QUALIFIED
Kaitlin C BologniaItalyOnyama Limba NEW
Ashley A PaprockiUnited KingdomIoni Bowcher NEW
Rodrigues D AmigonJapanElwin Sharvill RENEWAL
James F SchemmerItalyAsiya Javayant QUALIFIED
Jeanfrancois H MarrierIndiaAsiya Javayant QUALIFIED
Murillo U VenereRussiaAsiya Javayant UNQUALIFIED
Francesco M DilliardGermanyStephen Shaw UNQUALIFIED
Aika A SaylorsJapanAnna Fali PROPOSAL
Jones R VocelkaArgentinaAsiya Javayant RENEWAL
Kaitlin N KuskoItalyXuxue Feng NEW
Izzy H StockhamUnited KingdomAmy Elsner RENEWAL
Ricardo C FlosiCanadaBernardo Dominic QUALIFIED
Maria Y MacleadRussiaAmy Elsner NEGOTIATION
Aika G KolmetzJapanBernardo Dominic 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>