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
Chavez Y KuskoFranceAmy Elsner QUALIFIED
Alejandro Y StensethCanadaElwin Sharvill PROPOSAL
Stacey W RutaRussiaOnyama Limba QUALIFIED
Deepesh J NestleArgentinaIvan Magalhaes NEW
Antonio D CaudySpainIoni Bowcher RENEWAL
Greenwood S BowleyCanadaXuxue Feng QUALIFIED
Smith W PerinBrazilElwin Sharvill QUALIFIED
Francesco W MacleadItalyAsiya Javayant RENEWAL
Nicolas B AlbaresRussiaOnyama Limba UNQUALIFIED
Kaitlin J WhobreyCanadaIvan Magalhaes RENEWAL
Izzy X AlbaresRussiaBernardo Dominic RENEWAL
Deepesh V FigeroaSpainAmy Elsner UNQUALIFIED
Nicolas I FollerIndiaIoni Bowcher QUALIFIED
Murillo F WieserJapanAnna Fali UNQUALIFIED
Francesco O MacleadCanadaIoni Bowcher QUALIFIED
David K VenereArgentinaAsiya Javayant NEGOTIATION
Darci L SaylorsBrazilStephen Shaw NEGOTIATION
Izzy C MarrierAustraliaBernardo Dominic NEW
Aika S MaletIndiaAnna Fali UNQUALIFIED
Wickens H DilliardGermanyIvan Magalhaes UNQUALIFIED
Ricardo A WaycottRussiaAsiya Javayant NEGOTIATION
Stacey J RoysterBrazilAsiya Javayant RENEWAL
Misaki N GarufiRussiaBernardo Dominic NEGOTIATION
Leon E RoysterIndiaAmy Elsner UNQUALIFIED
Leon U GauchoRussiaXuxue Feng NEGOTIATION
Nicolas K AmigonCanadaBernardo Dominic QUALIFIED
Jefferson D IturbideUnited KingdomAnna Fali NEGOTIATION
Claire Y PerinBrazilIvan Magalhaes NEW
Octavia E VenereRussiaXuxue Feng UNQUALIFIED
Emily A RutaCanadaBernardo Dominic NEW
Jennifer S PoquetteUnited KingdomElwin Sharvill RENEWAL
Silvio R FerenczAustraliaAnna Fali PROPOSAL
Emily N GlickAustraliaAmy Elsner NEW
Sinclair O GillianItalyIoni Bowcher UNQUALIFIED
Silvio J StockhamRussiaStephen Shaw RENEWAL
Aika Y KolmetzCanadaOnyama Limba PROPOSAL
Maria O KuskoSpainStephen Shaw PROPOSAL
Kaitlin A PoquetteRussiaElwin Sharvill QUALIFIED
Adams P FollerFranceAmy Elsner NEW
Misaki U FigeroaAustraliaIvan Magalhaes PROPOSAL
Smith R TollnerIndiaAnna Fali NEW
Silvio W MaletItalyBernardo Dominic NEGOTIATION
Rodrigues I ChuiJapanAmy Elsner UNQUALIFIED
Clifford W VenereBrazilOnyama Limba QUALIFIED
Johnson I ButtItalyAnna Fali NEW
Jefferson N RoysterArgentinaAnna Fali UNQUALIFIED
Greenwood L MarrierGermanyBernardo Dominic NEGOTIATION
Claire N RulapaughItalyIoni Bowcher NEW
Alejandro K RimItalyIvan Magalhaes NEW
Cody B RoysterIndiaAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jennifer O FlosiBrazilAsiya Javayant NEW
David K CaudyUnited KingdomElwin Sharvill UNQUALIFIED
Sinclair G GillianFranceBernardo Dominic RENEWAL
Adams A BologniaIndiaAmy Elsner QUALIFIED
Aditya M NickaBrazilAnna Fali NEGOTIATION
Maria R WhobreyCanadaXuxue Feng PROPOSAL
Stacey D GillianCanadaIvan Magalhaes NEGOTIATION
Stacey Z GlickCanadaAnna Fali RENEWAL
Aruna H AlbaresSpainAsiya Javayant UNQUALIFIED
Leon V VenereSpainIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford M GarufiCanada2024-04-08Chanay, Jeffrey A Esq NEW87Onyama Limba
1001Izzy J BologniaUnited Kingdom2024-04-11Benton, John B Jr NEW43Bernardo Dominic
1002Deepesh A FollerAustralia2024-04-08Feiner Bros RENEWAL80Asiya Javayant
1003Mujtaba F CaldareraItaly2024-04-08Morlong Associates UNQUALIFIED30Onyama Limba
1004Smith V SergiAustralia2024-04-17Feiner Bros PROPOSAL43Anna Fali
1005Sinclair P FlosiJapan2024-03-21Buckley Miller Wright NEW22Onyama Limba
1006Juan Z BologniaCanada2024-04-17Buckley Miller Wright QUALIFIED77Anna Fali
1007Julie N VocelkaBrazil2024-04-08King, Christopher A Esq UNQUALIFIED92Xuxue Feng
1008Kadeem I RulapaughBrazil2024-04-02Truhlar And Truhlar Attys UNQUALIFIED58Onyama Limba
1009Izzy C ChuiIndia2024-04-16Commercial Press QUALIFIED25Asiya Javayant
1010James U InouyeFrance2024-03-28Chemel, James L Cpa NEGOTIATION33Amy Elsner
1011Tony C VocelkaJapan2024-03-27Feltz Printing Service PROPOSAL97Elwin Sharvill
1012Juan C ShinkoBrazil2024-03-23Printing Dimensions QUALIFIED80Amy Elsner
1013Clifford Y MarrierSpain2024-03-22Feltz Printing Service NEW24Elwin Sharvill
1014Francesco V MarrierAustralia2024-03-20Benton, John B Jr NEW95Xuxue Feng
1015Silvio J OstroskyAustralia2024-04-18Buckley Miller Wright RENEWAL79Asiya Javayant
1016Juan U SchemmerCanada2024-04-07Printing Dimensions QUALIFIED61Xuxue Feng
1017Claire D FerenczUnited Kingdom2024-04-17Buckley Miller Wright QUALIFIED35Stephen Shaw
1018Mujtaba U VenereFrance2024-04-06Rangoni Of Florence RENEWAL0Elwin Sharvill
1019Stacey F TollnerCanada2024-04-08Commercial Press QUALIFIED70Ivan Magalhaes
1020Antonio B SchemmerSpain2024-03-27Chanay, Jeffrey A Esq UNQUALIFIED78Ioni Bowcher
1021Chavez Y StockhamFrance2024-03-30Feiner Bros NEW94Ivan Magalhaes
1022Wickens R PaprockiBrazil2024-04-13Chapman, Ross E Esq QUALIFIED23Onyama Limba
1023Julie W MarrierGermany2024-03-29Buckley Miller Wright QUALIFIED72Stephen Shaw
1024Silvio S FlosiJapan2024-04-10Chemel, James L Cpa QUALIFIED92Anna Fali
1025Tony I StensethArgentina2024-03-24Printing Dimensions UNQUALIFIED40Bernardo Dominic
1026Aika V CaldareraAustralia2024-04-04Feiner Bros PROPOSAL26Ivan Magalhaes
1027Izzy F MarrierJapan2024-03-26Chapman, Ross E Esq UNQUALIFIED38Ivan Magalhaes
1028Claire T SlusarskiIndia2024-04-18Printing Dimensions UNQUALIFIED44Xuxue Feng
1029Silvio X PaprockiUnited Kingdom2024-03-20Morlong Associates RENEWAL78Bernardo Dominic
1030Costa A DarakjySpain2024-03-24Printing Dimensions QUALIFIED21Onyama Limba
1031Emily A OldroydCanada2024-04-07Feltz Printing Service QUALIFIED79Elwin Sharvill
1032Arvin A GarufiGermany2024-04-06Benton, John B Jr NEGOTIATION66Ioni Bowcher
1033Aruna A SergiBrazil2024-03-30Benton, John B Jr PROPOSAL42Asiya Javayant
1034Octavia W MorascaItaly2024-04-06Rousseaux, Michael Esq NEGOTIATION98Ivan Magalhaes
1035Rodrigues S MarrierBrazil2024-04-07Buckley Miller Wright QUALIFIED3Stephen Shaw
1036Deepesh H MarrierArgentina2024-03-30Dorl, James J Esq PROPOSAL40Ioni Bowcher
1037Sinclair Z DilliardJapan2024-04-10Feltz Printing Service UNQUALIFIED61Onyama Limba
1038Octavia K InouyeFrance2024-03-30Commercial Press NEW25Elwin Sharvill
1039Ricardo E TollnerJapan2024-03-27Rousseaux, Michael Esq QUALIFIED34Onyama Limba
1040Darci R WhobreyItaly2024-03-22Chemel, James L Cpa QUALIFIED30Bernardo Dominic
1041Arvin X ButtGermany2024-04-02Rangoni Of Florence UNQUALIFIED95Bernardo Dominic
1042Aruna Y MorascaItaly2024-03-22Printing Dimensions QUALIFIED11Elwin Sharvill
1043Octavia J WaycottBrazil2024-03-30Commercial Press NEGOTIATION76Anna Fali
1044Kaitlin K BologniaJapan2024-03-22Chanay, Jeffrey A Esq UNQUALIFIED37Stephen Shaw
1045David C RimUnited Kingdom2024-04-03Commercial Press PROPOSAL39Stephen Shaw
1046Wickens J ShinkoBrazil2024-04-01Dorl, James J Esq UNQUALIFIED27Stephen Shaw
1047Ashley S CampainGermany2024-04-01Truhlar And Truhlar Attys NEW67Ioni Bowcher
1048Silvio Z MorascaSpain2024-04-08Printing Dimensions PROPOSAL96Xuxue Feng
1049Faith C VenereBrazil2024-04-04Printing Dimensions RENEWAL93Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Octavia B ChuiUnited KingdomOnyama Limba RENEWAL
Juan I DilliardSpainAsiya Javayant NEW
Silvio H ButtItalyAsiya Javayant UNQUALIFIED
Jefferson Y NickaJapanElwin Sharvill PROPOSAL
Johnson U RimArgentinaOnyama Limba NEGOTIATION
Clifford T RoysterCanadaOnyama Limba PROPOSAL
Munro X SergiRussiaElwin Sharvill NEGOTIATION
Antonio E FigeroaIndiaXuxue Feng NEW
Misaki U DarakjyFranceAsiya Javayant PROPOSAL
Jeanfrancois U IturbideUnited KingdomStephen Shaw PROPOSAL
Clifford Y MorascaFranceAnna Fali NEW
Adams U OldroydItalyXuxue Feng RENEWAL
Julie Q SchemmerGermanyXuxue Feng NEGOTIATION
Jennifer I WhobreyFranceIvan Magalhaes UNQUALIFIED
Chavez Z IturbideJapanBernardo Dominic QUALIFIED
Jennifer T FlosiIndiaXuxue Feng UNQUALIFIED
Salvatore V CaudyRussiaXuxue Feng NEGOTIATION
Costa K DarakjyGermanyIvan Magalhaes PROPOSAL
Stacey X VocelkaArgentinaOnyama Limba UNQUALIFIED
Munro L PerinAustraliaElwin Sharvill QUALIFIED
Jennifer Z FerenczItalyElwin Sharvill UNQUALIFIED
James O RutaCanadaAmy Elsner UNQUALIFIED
Cody Q OldroydJapanIvan Magalhaes RENEWAL
Leon P ChuiJapanElwin Sharvill PROPOSAL
Arvin A VocelkaItalyBernardo Dominic RENEWAL
Aika M FlosiCanadaAsiya Javayant QUALIFIED
Cody Z DarakjyIndiaAnna Fali QUALIFIED
Wickens G AmigonGermanyAmy Elsner PROPOSAL
Jennifer M InouyeJapanElwin Sharvill NEGOTIATION
David X InouyeGermanyElwin Sharvill UNQUALIFIED
Izzy E SergiUnited KingdomAmy Elsner QUALIFIED
Jefferson M ButtGermanyElwin Sharvill PROPOSAL
Clifford I FigeroaJapanOnyama Limba NEGOTIATION
Darci W AmigonAustraliaIoni Bowcher NEGOTIATION
Deepesh T SergiCanadaBernardo Dominic UNQUALIFIED
Antonio C SergiItalyBernardo Dominic NEW
Leon O FigeroaAustraliaBernardo Dominic UNQUALIFIED
Aditya C AmigonAustraliaStephen Shaw NEW
Smith R CampainUnited KingdomXuxue Feng RENEWAL
Ivar R KuskoBrazilAsiya Javayant NEW
Maisha U AlbaresBrazilAsiya Javayant QUALIFIED
Deepesh I ShinkoIndiaAnna Fali PROPOSAL
Morrow Q PaprockiBrazilIvan Magalhaes PROPOSAL
Munro F SchemmerGermanyIvan Magalhaes QUALIFIED
Kadeem N KuskoUnited KingdomElwin Sharvill UNQUALIFIED
Aika Y NickaUnited KingdomIvan Magalhaes UNQUALIFIED
Faith C SaylorsFranceAnna Fali RENEWAL
Claire N GillianSpainElwin Sharvill NEGOTIATION
Greenwood F VenereSpainOnyama Limba RENEWAL
Chavez V IturbideCanadaIvan Magalhaes RENEWAL
Frozen Columns
Name
Faith L Flosi
Chavez W Campain
Jennifer D Waycott
Costa N Gaucho
Maisha P Slusarski
James K Foller
Faith H Malet
Costa M Gaucho
Alejandro S Caudy
Rodrigues A Caudy
Aruna Z Figeroa
Greenwood G Campain
Morrow O Wieser
Francesco Z Bowley
Mujtaba M Wieser
Jeanfrancois V Slusarski
Isabel H Stockham
Emily K Whobrey
Ashley V Chui
Kadeem V Inouye
Leon A Darakjy
Claire E Perin
Sinclair A Iturbide
Wickens E Waycott
Jeanfrancois I Garufi
Jennifer T Stenseth
Aruna K Venere
Tony S Kolmetz
Smith O Marrier
Mayumi E Doe
David Q Stenseth
Cody M Vocelka
Smith S Caldarera
Cody L Inouye
Leja T Perin
Morrow F Figeroa
Morrow F Doe
Jones N Perin
Arvin J Rulapaugh
Francesco Q Campain
Rodrigues A Albares
Chavez V Perin
Salvatore T Flosi
Emily K Perin
Jennifer A Maclead
David E Gaucho
Cody J Sergi
Ivar P Tollner
Aruna A Rim
Aruna L Schemmer
IdCountryDate
1000Canada2024-03-29
1001Russia2024-03-24
1002Australia2024-04-06
1003Argentina2024-03-25
1004Brazil2024-04-16
1005Japan2024-04-14
1006Spain2024-03-21
1007Brazil2024-04-18
1008Argentina2024-04-11
1009United Kingdom2024-04-01
1010Spain2024-03-22
1011India2024-04-18
1012Brazil2024-04-18
1013Canada2024-04-04
1014Argentina2024-03-30
1015Australia2024-04-16
1016United Kingdom2024-04-09
1017India2024-04-18
1018Canada2024-03-21
1019Japan2024-03-30
1020Russia2024-04-11
1021Italy2024-04-07
1022India2024-03-22
1023Germany2024-03-29
1024Italy2024-04-12
1025Spain2024-03-31
1026Japan2024-04-05
1027Argentina2024-04-08
1028France2024-04-17
1029Argentina2024-04-13
1030India2024-03-25
1031Japan2024-04-04
1032France2024-04-18
1033Brazil2024-03-29
1034Germany2024-04-15
1035India2024-04-02
1036France2024-04-13
1037Germany2024-04-06
1038France2024-03-27
1039Argentina2024-04-10
1040Brazil2024-04-05
1041Japan2024-03-22
1042Italy2024-03-20
1043Spain2024-04-10
1044Canada2024-04-11
1045India2024-04-18
1046Argentina2024-03-27
1047Russia2024-03-24
1048Russia2024-04-11
1049Japan2024-03-31

On-Demand Data

NameIdCountryDate
Adams N Shinko1000France2024-03-20
Salvatore K Ostrosky1001France2024-04-16
Jeanfrancois B Sergi1002Spain2024-03-24
Nicolas O Poquette1003Brazil2024-04-14
Costa H Shinko1004Japan2024-03-26
Aruna Q Briddick1005Russia2024-04-04
Smith A Maclead1006Russia2024-04-05
Leon H Vocelka1007United Kingdom2024-04-04
Wickens F Stockham1008Russia2024-04-03
Maisha N Inouye1009Brazil2024-04-12
Isabel W Dilliard1010Canada2024-04-02
Munro L Venere1011Japan2024-03-21
Sinclair G Iturbide1012India2024-03-27
Leon L Figeroa1013Argentina2024-03-26
Jeanfrancois R Bolognia1014Australia2024-03-20
Salvatore B Wieser1015Brazil2024-04-07
Arvin O Foller1016Argentina2024-03-22
Faith X Waycott1017Australia2024-04-04
Mujtaba D Albares1018Russia2024-03-27
Octavia Z Caudy1019Argentina2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh K MacleadArgentinaOnyama Limba RENEWAL
Ivar R FlosiBrazilAsiya Javayant NEGOTIATION
Costa X IturbideJapanXuxue Feng NEGOTIATION
Rodrigues O GlickItalyAsiya Javayant UNQUALIFIED
Jennifer M AlbaresGermanyElwin Sharvill NEW
Costa F DoeBrazilAnna Fali UNQUALIFIED
Murillo E TollnerSpainIoni Bowcher PROPOSAL
Mujtaba V ButtIndiaOnyama Limba PROPOSAL
Octavia A RutaRussiaElwin Sharvill RENEWAL
Leja F RulapaughArgentinaStephen Shaw NEW
Francesco Q RimIndiaAnna Fali NEGOTIATION
Mayumi G FigeroaItalyStephen Shaw UNQUALIFIED
Jennifer W StockhamUnited KingdomStephen Shaw UNQUALIFIED
Misaki P MarrierUnited KingdomIvan Magalhaes PROPOSAL
Murillo N CampainJapanAmy Elsner PROPOSAL
Morrow Z CaldareraItalyIoni Bowcher NEW
Chavez F RutaArgentinaAsiya Javayant NEGOTIATION
Smith T VenereRussiaAsiya Javayant QUALIFIED
Johnson L KolmetzCanadaAnna Fali NEW
Maria D StensethGermanyIvan Magalhaes UNQUALIFIED
Maria W GillianItalyAmy Elsner QUALIFIED
Costa S CaldareraAustraliaStephen Shaw UNQUALIFIED
James V ButtCanadaIoni Bowcher QUALIFIED
Chavez O BriddickBrazilElwin Sharvill NEGOTIATION
Kaitlin H NestleFranceIoni Bowcher UNQUALIFIED
Salvatore C MaletCanadaIoni Bowcher UNQUALIFIED
Kadeem E DilliardSpainAnna Fali RENEWAL
Leja B GarufiArgentinaIvan Magalhaes NEGOTIATION
Ricardo S PerinGermanyAmy Elsner QUALIFIED
Francesco L VenereRussiaAsiya Javayant RENEWAL
Silvio D ButtUnited KingdomStephen Shaw PROPOSAL
Claire G OldroydBrazilIoni Bowcher PROPOSAL
Faith X DilliardArgentinaIoni Bowcher NEW
Kaitlin X DarakjyBrazilXuxue Feng UNQUALIFIED
Munro G MacleadSpainIoni Bowcher PROPOSAL
Kaitlin L StensethFranceAmy Elsner NEGOTIATION
Julie M PaprockiCanadaStephen Shaw PROPOSAL
James Z PerinBrazilXuxue Feng RENEWAL
Aika W MacleadUnited KingdomIvan Magalhaes RENEWAL
James U DoeBrazilAsiya Javayant QUALIFIED

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