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
Clifford M WhobreyIndiaAmy Elsner RENEWAL
Nicolas J InouyeItalyIoni Bowcher NEGOTIATION
Salvatore Q BologniaArgentinaElwin Sharvill UNQUALIFIED
Jennifer W SaylorsFranceXuxue Feng UNQUALIFIED
Aditya X WaycottRussiaAnna Fali NEW
Julie B StockhamArgentinaAsiya Javayant NEGOTIATION
Chavez E FollerArgentinaAmy Elsner NEGOTIATION
Octavia K ButtSpainOnyama Limba NEW
Antonio D VocelkaBrazilStephen Shaw UNQUALIFIED
Ivar F FigeroaBrazilElwin Sharvill NEW
Octavia W RimGermanyAnna Fali NEW
Johnson L PoquetteRussiaElwin Sharvill RENEWAL
Jefferson Z NestleCanadaAnna Fali NEGOTIATION
Faith J StockhamRussiaBernardo Dominic NEGOTIATION
Julie T ButtArgentinaElwin Sharvill NEW
Izzy R RimFranceBernardo Dominic PROPOSAL
Juan B BriddickJapanAnna Fali UNQUALIFIED
Maisha J MaletRussiaAnna Fali NEW
Nicolas S ButtJapanElwin Sharvill PROPOSAL
David W SaylorsSpainAnna Fali QUALIFIED
Jones P MarrierAustraliaAnna Fali NEGOTIATION
Tony C VenereUnited KingdomElwin Sharvill NEW
Clifford K ShinkoRussiaBernardo Dominic QUALIFIED
Octavia R IturbideItalyIvan Magalhaes RENEWAL
Francesco C GillianGermanyStephen Shaw PROPOSAL
David Q BowleyRussiaAnna Fali QUALIFIED
Aditya K MaletRussiaXuxue Feng PROPOSAL
Morrow G BriddickGermanyIoni Bowcher UNQUALIFIED
Aruna B CaudyFranceAmy Elsner RENEWAL
Tony T RoysterAustraliaStephen Shaw QUALIFIED
Aruna Z KuskoFranceElwin Sharvill QUALIFIED
Tony R SchemmerJapanIvan Magalhaes NEW
Murillo E OldroydGermanyBernardo Dominic PROPOSAL
Maria B ChuiRussiaAsiya Javayant QUALIFIED
Claire R FollerIndiaAsiya Javayant NEGOTIATION
Maria H IturbideJapanAmy Elsner PROPOSAL
Silvio V DarakjyJapanAnna Fali QUALIFIED
Cody L BologniaBrazilElwin Sharvill NEGOTIATION
Jefferson N PerinJapanIvan Magalhaes UNQUALIFIED
Antonio A WieserAustraliaAnna Fali UNQUALIFIED
Stacey X MarrierAustraliaXuxue Feng PROPOSAL
Leon U MaletJapanOnyama Limba QUALIFIED
Salvatore A DilliardUnited KingdomAsiya Javayant PROPOSAL
Clifford B SchemmerUnited KingdomElwin Sharvill PROPOSAL
Ashley B StockhamUnited KingdomXuxue Feng QUALIFIED
Greenwood M OldroydSpainElwin Sharvill RENEWAL
Julie R BologniaJapanElwin Sharvill UNQUALIFIED
Misaki G FlosiJapanElwin Sharvill NEGOTIATION
Rodrigues C WaycottFranceOnyama Limba NEW
Smith W StockhamGermanyBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Sinclair Z MaletAustraliaIvan Magalhaes NEW
Emily R GlickArgentinaAnna Fali QUALIFIED
Misaki T NickaItalyBernardo Dominic RENEWAL
Emily L RutaArgentinaAsiya Javayant NEGOTIATION
Kaitlin I CaldareraJapanBernardo Dominic NEGOTIATION
Maisha Q CampainFranceBernardo Dominic PROPOSAL
Silvio E InouyeCanadaIoni Bowcher QUALIFIED
Jennifer R FerenczCanadaOnyama Limba QUALIFIED
Salvatore N WieserArgentinaIoni Bowcher NEGOTIATION
Antonio D WieserItalyAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna H AmigonItaly2024-04-20Printing Dimensions RENEWAL75Ivan Magalhaes
1001Morrow Y RimFrance2024-04-28Buckley Miller Wright RENEWAL66Xuxue Feng
1002Deepesh F VocelkaIndia2024-04-23King, Christopher A Esq RENEWAL47Asiya Javayant
1003Antonio C SaylorsSpain2024-04-09Benton, John B Jr UNQUALIFIED80Ivan Magalhaes
1004Kadeem L NestleRussia2024-04-01Commercial Press QUALIFIED71Ioni Bowcher
1005Antonio V MaletGermany2024-04-13Rangoni Of Florence PROPOSAL37Elwin Sharvill
1006Jefferson P InouyeFrance2024-04-05Feltz Printing Service NEW45Ivan Magalhaes
1007James J OldroydSpain2024-04-20King, Christopher A Esq UNQUALIFIED38Ivan Magalhaes
1008Chavez N SaylorsIndia2024-04-08King, Christopher A Esq UNQUALIFIED88Onyama Limba
1009Mayumi K PerinCanada2024-04-04Printing Dimensions NEGOTIATION17Xuxue Feng
1010Juan I PoquetteItaly2024-04-09Printing Dimensions NEW7Stephen Shaw
1011Rodrigues R MacleadAustralia2024-04-09Rousseaux, Michael Esq PROPOSAL9Asiya Javayant
1012Izzy T RulapaughBrazil2024-04-27King, Christopher A Esq NEGOTIATION40Asiya Javayant
1013Clifford F KuskoJapan2024-04-26Chanay, Jeffrey A Esq NEGOTIATION84Anna Fali
1014Mayumi E CaudySpain2024-04-29Rangoni Of Florence NEW20Anna Fali
1015Julie T FerenczGermany2024-04-06Commercial Press PROPOSAL17Elwin Sharvill
1016Jefferson J OldroydSpain2024-04-07Benton, John B Jr QUALIFIED66Ivan Magalhaes
1017Jefferson F RutaAustralia2024-04-29Printing Dimensions QUALIFIED2Asiya Javayant
1018Octavia F CampainJapan2024-04-08Printing Dimensions NEW78Onyama Limba
1019Faith N MaletItaly2024-04-09Truhlar And Truhlar Attys RENEWAL30Ioni Bowcher
1020Ivar W OldroydArgentina2024-04-19Buckley Miller Wright PROPOSAL62Ivan Magalhaes
1021Sinclair D StockhamJapan2024-04-03Morlong Associates RENEWAL49Bernardo Dominic
1022Kaitlin W GarufiItaly2024-04-03Feiner Bros NEW72Ioni Bowcher
1023Nicolas U RulapaughSpain2024-04-08Feltz Printing Service PROPOSAL86Ivan Magalhaes
1024Alejandro T DilliardGermany2024-04-14Dorl, James J Esq UNQUALIFIED54Asiya Javayant
1025Aika T SaylorsIndia2024-04-26Truhlar And Truhlar Attys NEGOTIATION85Ioni Bowcher
1026Leon X GarufiAustralia2024-04-16Chanay, Jeffrey A Esq RENEWAL31Elwin Sharvill
1027Ashley N RutaGermany2024-04-13Chanay, Jeffrey A Esq RENEWAL2Xuxue Feng
1028Rodrigues P KolmetzAustralia2024-04-17Morlong Associates QUALIFIED58Xuxue Feng
1029Jones L AlbaresSpain2024-04-11King, Christopher A Esq NEGOTIATION30Bernardo Dominic
1030Julie H PoquetteArgentina2024-04-13Chanay, Jeffrey A Esq QUALIFIED82Stephen Shaw
1031Julie P PaprockiItaly2024-04-17Chemel, James L Cpa RENEWAL39Ioni Bowcher
1032Johnson U VocelkaSpain2024-04-20Rangoni Of Florence RENEWAL38Elwin Sharvill
1033Jones B RimIndia2024-04-08Printing Dimensions QUALIFIED25Asiya Javayant
1034Stacey Q GlickIndia2024-04-13Truhlar And Truhlar Attys PROPOSAL27Onyama Limba
1035Jeanfrancois N OstroskySpain2024-04-19Commercial Press RENEWAL18Ioni Bowcher
1036Ashley M ShinkoJapan2024-04-16Printing Dimensions QUALIFIED11Anna Fali
1037Ricardo N OstroskyUnited Kingdom2024-04-03Chapman, Ross E Esq NEGOTIATION43Ioni Bowcher
1038Kadeem Y FlosiArgentina2024-04-21Printing Dimensions NEW27Bernardo Dominic
1039Izzy S RulapaughFrance2024-04-27Dorl, James J Esq NEGOTIATION98Onyama Limba
1040James C PoquetteFrance2024-04-16Buckley Miller Wright PROPOSAL61Xuxue Feng
1041Ashley O ShinkoAustralia2024-04-23Feiner Bros PROPOSAL78Onyama Limba
1042Misaki G IturbideBrazil2024-04-11Morlong Associates NEW97Ivan Magalhaes
1043Sinclair Y MarrierUnited Kingdom2024-04-11Chemel, James L Cpa UNQUALIFIED75Xuxue Feng
1044Ivar L WieserItaly2024-04-09King, Christopher A Esq NEGOTIATION37Anna Fali
1045Leon P MaletSpain2024-04-12Benton, John B Jr PROPOSAL74Stephen Shaw
1046Adams B StensethItaly2024-04-06Buckley Miller Wright NEW1Bernardo Dominic
1047Sinclair N AlbaresRussia2024-04-23Printing Dimensions NEGOTIATION14Ioni Bowcher
1048Maria J OldroydCanada2024-04-11Printing Dimensions NEGOTIATION79Asiya Javayant
1049Jennifer W CaudyFrance2024-04-12Feltz Printing Service QUALIFIED73Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Murillo A FerenczBrazilAnna Fali PROPOSAL
Adams S IturbideCanadaElwin Sharvill RENEWAL
Mayumi J MorascaBrazilAsiya Javayant RENEWAL
Salvatore Q VocelkaBrazilOnyama Limba RENEWAL
Murillo W CaldareraGermanyBernardo Dominic RENEWAL
Octavia Z KolmetzFranceIvan Magalhaes NEGOTIATION
Ricardo H AlbaresFranceAnna Fali UNQUALIFIED
Jeanfrancois I GillianIndiaAsiya Javayant PROPOSAL
Jennifer P RoysterBrazilAsiya Javayant NEGOTIATION
James L VenereItalyAnna Fali UNQUALIFIED
Ivar L IturbideFranceAsiya Javayant UNQUALIFIED
Nicolas J StockhamFranceOnyama Limba UNQUALIFIED
Aika U GillianJapanAmy Elsner NEW
Francesco S ShinkoJapanAnna Fali NEGOTIATION
Morrow O DilliardBrazilOnyama Limba QUALIFIED
Munro B DarakjySpainIoni Bowcher UNQUALIFIED
Johnson N PaprockiRussiaElwin Sharvill RENEWAL
Ricardo S SchemmerUnited KingdomIvan Magalhaes NEGOTIATION
Leon W OstroskyIndiaAnna Fali NEGOTIATION
Misaki R DarakjyAustraliaXuxue Feng RENEWAL
Maria Q BriddickJapanBernardo Dominic UNQUALIFIED
Leja K StensethIndiaAsiya Javayant NEGOTIATION
Claire Y WieserIndiaOnyama Limba PROPOSAL
Ricardo H AmigonBrazilElwin Sharvill RENEWAL
Cody I ShinkoBrazilAnna Fali RENEWAL
Aditya W VocelkaCanadaIoni Bowcher UNQUALIFIED
Julie D FerenczFranceXuxue Feng PROPOSAL
Misaki J VocelkaJapanBernardo Dominic NEW
James X CaldareraArgentinaIoni Bowcher PROPOSAL
Antonio V DarakjySpainXuxue Feng RENEWAL
Jeanfrancois D WaycottRussiaIoni Bowcher RENEWAL
Wickens K DarakjyAustraliaIvan Magalhaes UNQUALIFIED
Costa P MaletSpainOnyama Limba UNQUALIFIED
Silvio N PoquetteBrazilAsiya Javayant RENEWAL
Jefferson B CaudyGermanyBernardo Dominic RENEWAL
Johnson Z MorascaJapanIvan Magalhaes NEW
Chavez X AmigonGermanyXuxue Feng PROPOSAL
Claire M PoquetteArgentinaElwin Sharvill PROPOSAL
Clifford U PerinJapanStephen Shaw NEW
Johnson A PerinAustraliaBernardo Dominic RENEWAL
Morrow B RoysterFranceStephen Shaw NEW
Munro G MacleadFranceOnyama Limba QUALIFIED
Kaitlin F WhobreyItalyIoni Bowcher QUALIFIED
Smith K GarufiAustraliaAmy Elsner RENEWAL
Julie M GlickAustraliaIvan Magalhaes PROPOSAL
Jefferson K SchemmerArgentinaAsiya Javayant NEW
Johnson C TollnerIndiaXuxue Feng QUALIFIED
Cody R BologniaSpainIvan Magalhaes NEGOTIATION
Greenwood S SchemmerJapanElwin Sharvill QUALIFIED
Claire R RulapaughFranceOnyama Limba NEGOTIATION
Frozen Columns
Name
Adams I Stockham
Deepesh E Rim
Juan W Caudy
Clifford X Malet
Ivar Y Sergi
Izzy P Doe
Maisha W Venere
Kadeem G Briddick
Nicolas S Bolognia
Darci B Perin
Ricardo U Butt
James L Paprocki
Jefferson F Stenseth
Murillo E Glick
Misaki K Vocelka
James E Gaucho
Rodrigues C Slusarski
Mayumi F Gillian
Antonio M Briddick
Morrow Z Saylors
Claire A Slusarski
Isabel Q Nicka
Morrow Y Amigon
Jefferson O Stenseth
Maria O Wieser
Munro W Schemmer
Aditya I Sergi
Maria K Bowley
Rodrigues H Rim
Deepesh K Darakjy
Costa Z Malet
Alejandro P Caldarera
Ivar P Saylors
Misaki D Perin
Adams Q Waycott
Sinclair K Inouye
Aditya A Sergi
Johnson G Rulapaugh
Francesco N Vocelka
Isabel Q Ruta
Costa W Slusarski
Izzy M Glick
Greenwood E Dilliard
Juan Y Schemmer
Tony R Glick
Nicolas Z Rulapaugh
Smith V Ferencz
Claire S Paprocki
Aika G Wieser
Arvin V Malet
IdCountryDate
1000Argentina2024-04-18
1001India2024-04-06
1002Australia2024-04-27
1003Australia2024-04-14
1004Russia2024-04-06
1005India2024-04-02
1006Italy2024-04-05
1007Argentina2024-04-05
1008United Kingdom2024-04-18
1009Germany2024-04-11
1010Japan2024-04-02
1011Argentina2024-04-18
1012Brazil2024-04-27
1013France2024-04-11
1014Germany2024-04-13
1015Canada2024-04-06
1016Spain2024-04-17
1017Argentina2024-04-09
1018Brazil2024-04-13
1019Russia2024-04-01
1020Germany2024-04-27
1021Japan2024-04-26
1022Japan2024-04-08
1023France2024-04-02
1024United Kingdom2024-04-07
1025Canada2024-04-22
1026Japan2024-04-23
1027Germany2024-04-23
1028France2024-04-14
1029Germany2024-04-06
1030Argentina2024-04-13
1031Japan2024-04-26
1032India2024-04-29
1033Japan2024-04-27
1034Canada2024-04-26
1035United Kingdom2024-04-11
1036India2024-04-16
1037Italy2024-04-17
1038Italy2024-04-05
1039Russia2024-04-07
1040Brazil2024-04-03
1041Russia2024-04-24
1042India2024-04-03
1043Argentina2024-03-31
1044Canada2024-04-07
1045Russia2024-04-04
1046Germany2024-04-12
1047Australia2024-04-03
1048Germany2024-03-31
1049United Kingdom2024-04-07

On-Demand Data

NameIdCountryDate
Sinclair C Maclead1000India2024-04-13
Jones G Maclead1001Spain2024-04-25
David N Amigon1002Russia2024-04-11
Jefferson W Ostrosky1003Russia2024-03-31
Salvatore D Garufi1004Russia2024-04-11
Aika Z Perin1005France2024-04-21
Johnson H Wieser1006United Kingdom2024-04-09
Maria W Figeroa1007France2024-04-23
Aruna O Sergi1008Brazil2024-04-20
Francesco N Ostrosky1009Spain2024-04-18
Ashley I Stenseth1010Spain2024-04-06
Costa N Bolognia1011Spain2024-04-02
Kaitlin H Bolognia1012Australia2024-04-05
Emily M Marrier1013United Kingdom2024-04-03
Kadeem V Ferencz1014Japan2024-04-23
Salvatore I Venere1015Spain2024-04-07
Clifford V Ostrosky1016Italy2024-04-14
Mayumi O Briddick1017Japan2024-04-16
Nicolas H Royster1018Australia2024-04-26
Julie A Venere1019Australia2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire J MaletAustraliaStephen Shaw QUALIFIED
Isabel Q WieserCanadaAnna Fali QUALIFIED
Francesco Q FigeroaGermanyAnna Fali PROPOSAL
Antonio Q StensethFranceElwin Sharvill NEGOTIATION
Faith S MorascaUnited KingdomAsiya Javayant RENEWAL
Claire Y RutaItalyBernardo Dominic PROPOSAL
Costa X PaprockiSpainAmy Elsner NEGOTIATION
Clifford G MaletFranceStephen Shaw NEW
Nicolas G NestleBrazilXuxue Feng UNQUALIFIED
Chavez N MaletUnited KingdomIoni Bowcher QUALIFIED
Kaitlin R StensethCanadaStephen Shaw PROPOSAL
Ricardo G MorascaItalyXuxue Feng QUALIFIED
Wickens X OstroskyItalyAsiya Javayant NEGOTIATION
Alejandro N RoysterJapanAmy Elsner NEGOTIATION
Francesco J AmigonCanadaXuxue Feng PROPOSAL
Jennifer F GauchoAustraliaXuxue Feng QUALIFIED
Faith J AmigonCanadaAmy Elsner NEW
Johnson B CampainArgentinaAnna Fali QUALIFIED
Ivar U IturbideArgentinaIoni Bowcher NEGOTIATION
Arvin L BologniaUnited KingdomAnna Fali RENEWAL
Ashley R ShinkoCanadaAnna Fali RENEWAL
Chavez U GlickJapanBernardo Dominic UNQUALIFIED
Aika C ShinkoBrazilBernardo Dominic NEGOTIATION
Kaitlin G SaylorsSpainIoni Bowcher NEGOTIATION
Clifford S AmigonBrazilIoni Bowcher QUALIFIED
Faith S KolmetzSpainAsiya Javayant QUALIFIED
Antonio I FerenczUnited KingdomXuxue Feng RENEWAL
Leon Y KuskoRussiaAnna Fali PROPOSAL
James L ShinkoJapanIvan Magalhaes PROPOSAL
Leja L IturbideUnited KingdomIvan Magalhaes PROPOSAL
Claire Q WhobreyFranceXuxue Feng PROPOSAL
Silvio I AmigonIndiaOnyama Limba QUALIFIED
Misaki N SergiIndiaElwin Sharvill PROPOSAL
Maria G MarrierFranceAnna Fali RENEWAL
Clifford F FerenczRussiaAmy Elsner UNQUALIFIED
Tony C RulapaughUnited KingdomAsiya Javayant RENEWAL
Cody Z CaudySpainElwin Sharvill QUALIFIED
Salvatore G PoquetteIndiaAmy Elsner UNQUALIFIED
Cody J GillianUnited KingdomOnyama Limba PROPOSAL
Clifford B DoeUnited KingdomBernardo Dominic 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>