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
Leja F NickaArgentinaAmy Elsner QUALIFIED
Antonio S BriddickIndiaIvan Magalhaes UNQUALIFIED
Deepesh H PoquetteFranceAmy Elsner NEGOTIATION
Kaitlin X PerinSpainXuxue Feng NEGOTIATION
Jeanfrancois Z TollnerSpainAsiya Javayant NEW
Deepesh E FigeroaRussiaXuxue Feng PROPOSAL
Jeanfrancois G PoquetteFranceIoni Bowcher PROPOSAL
Mujtaba U WhobreyRussiaAmy Elsner NEW
Leon D GarufiJapanAnna Fali PROPOSAL
Izzy Y FigeroaAustraliaOnyama Limba NEW
Kaitlin J VocelkaBrazilAsiya Javayant RENEWAL
Leja Z IturbideGermanyAnna Fali PROPOSAL
Kadeem M SergiUnited KingdomOnyama Limba NEW
Jones B FollerUnited KingdomOnyama Limba QUALIFIED
Alejandro Y KuskoItalyAnna Fali RENEWAL
Juan M BologniaIndiaAsiya Javayant PROPOSAL
Greenwood O WhobreyAustraliaAmy Elsner NEGOTIATION
Antonio F CaldareraAustraliaOnyama Limba RENEWAL
Rodrigues P RulapaughSpainElwin Sharvill NEGOTIATION
Chavez E SlusarskiArgentinaElwin Sharvill NEW
Nicolas V SaylorsItalyOnyama Limba QUALIFIED
Cody R CaudyUnited KingdomElwin Sharvill UNQUALIFIED
Emily K GillianArgentinaBernardo Dominic QUALIFIED
Munro K KolmetzItalyOnyama Limba NEGOTIATION
Octavia P KuskoIndiaAmy Elsner NEGOTIATION
Octavia Z FollerUnited KingdomIoni Bowcher RENEWAL
Cody O OstroskyJapanElwin Sharvill QUALIFIED
Antonio E WhobreyCanadaIvan Magalhaes RENEWAL
Ivar R StockhamGermanyIvan Magalhaes QUALIFIED
Adams L CaldareraIndiaBernardo Dominic UNQUALIFIED
Morrow V DilliardRussiaBernardo Dominic RENEWAL
Jefferson D GlickSpainOnyama Limba UNQUALIFIED
Faith I KolmetzGermanyAmy Elsner RENEWAL
Chavez C GarufiBrazilIvan Magalhaes RENEWAL
James U MaletItalyXuxue Feng UNQUALIFIED
Kadeem L BowleySpainOnyama Limba NEW
Izzy U FigeroaIndiaXuxue Feng NEGOTIATION
Salvatore Y FigeroaGermanyBernardo Dominic NEW
Nicolas K RulapaughGermanyXuxue Feng UNQUALIFIED
Aika I NestleSpainBernardo Dominic RENEWAL
Stacey Q RulapaughJapanXuxue Feng QUALIFIED
Emily L ButtSpainStephen Shaw NEGOTIATION
Murillo V VocelkaRussiaStephen Shaw NEGOTIATION
Salvatore X StockhamCanadaAnna Fali PROPOSAL
Maria X BriddickJapanAnna Fali UNQUALIFIED
Deepesh L DilliardItalyXuxue Feng RENEWAL
Ricardo M MaletCanadaElwin Sharvill QUALIFIED
Izzy E MorascaRussiaOnyama Limba QUALIFIED
Tony Q StockhamCanadaStephen Shaw RENEWAL
James R SaylorsBrazilElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
James F PerinRussiaAnna Fali PROPOSAL
Antonio X ButtRussiaOnyama Limba UNQUALIFIED
Greenwood A SlusarskiFranceOnyama Limba RENEWAL
Jennifer R SergiAustraliaAsiya Javayant NEW
Julie P VenereBrazilIoni Bowcher RENEWAL
Alejandro O RimRussiaAmy Elsner NEW
Izzy U PoquetteRussiaElwin Sharvill PROPOSAL
Faith K VocelkaBrazilIoni Bowcher QUALIFIED
Misaki L ButtArgentinaAsiya Javayant RENEWAL
Costa A RutaFranceStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia A TollnerJapan2024-04-20Benton, John B Jr NEGOTIATION15Xuxue Feng
1001Misaki Q VenereRussia2024-04-30Truhlar And Truhlar Attys NEGOTIATION52Ioni Bowcher
1002Francesco J MarrierUnited Kingdom2024-04-25Morlong Associates NEGOTIATION40Anna Fali
1003Costa M NickaSpain2024-04-21King, Christopher A Esq QUALIFIED57Xuxue Feng
1004Nicolas F BologniaFrance2024-04-18Feltz Printing Service NEGOTIATION0Anna Fali
1005Leja O StensethBrazil2024-04-14Chapman, Ross E Esq UNQUALIFIED13Amy Elsner
1006James G RutaRussia2024-04-18Rousseaux, Michael Esq RENEWAL46Amy Elsner
1007Misaki L OldroydArgentina2024-04-15King, Christopher A Esq RENEWAL15Ivan Magalhaes
1008Jeanfrancois A FerenczArgentina2024-04-06Printing Dimensions QUALIFIED52Asiya Javayant
1009Clifford H FerenczItaly2024-04-05Benton, John B Jr RENEWAL88Bernardo Dominic
1010Mayumi U GillianIndia2024-04-22Feltz Printing Service RENEWAL93Stephen Shaw
1011James X MacleadSpain2024-04-28Benton, John B Jr UNQUALIFIED54Asiya Javayant
1012Silvio K WaycottRussia2024-04-15Benton, John B Jr PROPOSAL63Asiya Javayant
1013Ashley L DoeItaly2024-04-29Chanay, Jeffrey A Esq QUALIFIED36Ivan Magalhaes
1014Leon M CampainRussia2024-04-19Buckley Miller Wright UNQUALIFIED37Ivan Magalhaes
1015Johnson D RulapaughIndia2024-04-23Chapman, Ross E Esq NEW41Ivan Magalhaes
1016Stacey G FigeroaRussia2024-04-20Printing Dimensions PROPOSAL9Xuxue Feng
1017Greenwood N CaudyRussia2024-04-05Buckley Miller Wright QUALIFIED54Asiya Javayant
1018Smith I SchemmerRussia2024-04-15Chemel, James L Cpa QUALIFIED84Bernardo Dominic
1019James N MorascaGermany2024-04-05Printing Dimensions UNQUALIFIED63Xuxue Feng
1020Cody W CaudyBrazil2024-04-15Feltz Printing Service QUALIFIED57Onyama Limba
1021Maria V DarakjyAustralia2024-04-15Chapman, Ross E Esq NEW35Bernardo Dominic
1022Aruna Y StockhamBrazil2024-04-09Printing Dimensions NEW85Xuxue Feng
1023Cody Q DoeUnited Kingdom2024-04-21Benton, John B Jr RENEWAL0Ivan Magalhaes
1024Aika W FigeroaFrance2024-04-20Feiner Bros QUALIFIED68Bernardo Dominic
1025Cody C ChuiRussia2024-04-04Rangoni Of Florence NEW62Bernardo Dominic
1026Stacey Z IturbideUnited Kingdom2024-04-04Rangoni Of Florence PROPOSAL98Stephen Shaw
1027Izzy K FlosiCanada2024-04-15Morlong Associates NEGOTIATION56Amy Elsner
1028Ivar C FlosiFrance2024-04-25Printing Dimensions RENEWAL79Xuxue Feng
1029Leon P DilliardIndia2024-04-14Chapman, Ross E Esq PROPOSAL27Asiya Javayant
1030Ashley B PoquetteJapan2024-04-04Rousseaux, Michael Esq NEW63Anna Fali
1031Antonio P AmigonCanada2024-04-09Commercial Press PROPOSAL23Ioni Bowcher
1032Leon H RoysterCanada2024-04-15Truhlar And Truhlar Attys QUALIFIED39Elwin Sharvill
1033Silvio K ChuiGermany2024-04-09Morlong Associates QUALIFIED98Ivan Magalhaes
1034Darci V PaprockiUnited Kingdom2024-04-21Feltz Printing Service UNQUALIFIED96Amy Elsner
1035Julie Q SchemmerCanada2024-04-13Morlong Associates UNQUALIFIED13Ivan Magalhaes
1036Chavez X RoysterGermany2024-04-13Morlong Associates UNQUALIFIED73Ivan Magalhaes
1037Smith C OstroskyAustralia2024-04-21Rangoni Of Florence UNQUALIFIED79Anna Fali
1038Isabel A MorascaArgentina2024-04-29Chanay, Jeffrey A Esq UNQUALIFIED58Anna Fali
1039Silvio S MorascaItaly2024-04-10Chapman, Ross E Esq QUALIFIED65Anna Fali
1040Stacey S DoeJapan2024-04-08Chemel, James L Cpa QUALIFIED64Stephen Shaw
1041Emily Q GillianJapan2024-04-29Dorl, James J Esq QUALIFIED51Ioni Bowcher
1042Faith K StockhamFrance2024-04-28Buckley Miller Wright RENEWAL11Stephen Shaw
1043Octavia P MaletRussia2024-04-07Rangoni Of Florence QUALIFIED28Elwin Sharvill
1044Mujtaba U SaylorsSpain2024-04-21Chemel, James L Cpa QUALIFIED31Ivan Magalhaes
1045David L OldroydJapan2024-04-22Chemel, James L Cpa NEW43Ivan Magalhaes
1046Jeanfrancois B MarrierArgentina2024-04-20Rangoni Of Florence NEGOTIATION27Elwin Sharvill
1047David M IturbideFrance2024-04-09Morlong Associates NEGOTIATION44Anna Fali
1048Silvio V MaletIndia2024-04-14Rangoni Of Florence QUALIFIED39Xuxue Feng
1049Jennifer A OstroskyFrance2024-04-13Feltz Printing Service PROPOSAL38Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Chavez A RutaJapanOnyama Limba PROPOSAL
Costa N FlosiItalyIvan Magalhaes NEW
Alejandro V KolmetzRussiaBernardo Dominic QUALIFIED
Emily Z DarakjyUnited KingdomXuxue Feng QUALIFIED
Maria Z ShinkoCanadaIoni Bowcher RENEWAL
Darci U RutaJapanStephen Shaw NEGOTIATION
Ashley J ChuiItalyBernardo Dominic NEW
Sinclair K BriddickUnited KingdomStephen Shaw RENEWAL
Jefferson P RutaRussiaAnna Fali NEW
Jeanfrancois H RimCanadaIvan Magalhaes RENEWAL
Faith G FlosiAustraliaAmy Elsner UNQUALIFIED
Ashley I OstroskyUnited KingdomAnna Fali NEGOTIATION
Ivar X OldroydRussiaElwin Sharvill QUALIFIED
Juan A CampainAustraliaBernardo Dominic UNQUALIFIED
Aika M NestleAustraliaAmy Elsner QUALIFIED
Rodrigues W WieserUnited KingdomAnna Fali PROPOSAL
Leja K GauchoItalyStephen Shaw PROPOSAL
Aditya Z StockhamJapanIoni Bowcher NEW
Julie Z AmigonUnited KingdomElwin Sharvill QUALIFIED
Faith Z RoysterItalyElwin Sharvill RENEWAL
Wickens Z MacleadUnited KingdomOnyama Limba PROPOSAL
Arvin T WhobreyJapanAnna Fali RENEWAL
Munro V NickaItalyIvan Magalhaes QUALIFIED
Leja A CaldareraUnited KingdomIoni Bowcher NEW
Misaki N GlickSpainAsiya Javayant NEW
Salvatore V FerenczAustraliaAmy Elsner UNQUALIFIED
Deepesh S NickaCanadaIoni Bowcher UNQUALIFIED
Cody A VenereIndiaAsiya Javayant UNQUALIFIED
Francesco F BriddickAustraliaAmy Elsner QUALIFIED
Maisha J FollerSpainIvan Magalhaes PROPOSAL
Antonio A MaletAustraliaOnyama Limba NEGOTIATION
Mayumi G PoquetteAustraliaAmy Elsner NEGOTIATION
Aruna E DilliardSpainXuxue Feng UNQUALIFIED
Arvin W InouyeIndiaAnna Fali QUALIFIED
Francesco F NickaItalyAnna Fali UNQUALIFIED
Izzy O InouyeUnited KingdomAmy Elsner UNQUALIFIED
Ivar U CampainBrazilIoni Bowcher UNQUALIFIED
Jennifer T KuskoUnited KingdomBernardo Dominic NEW
Jeanfrancois A TollnerFranceXuxue Feng PROPOSAL
Aruna Q GlickItalyStephen Shaw RENEWAL
Alejandro Q SergiAustraliaBernardo Dominic NEGOTIATION
Stacey O MorascaJapanStephen Shaw QUALIFIED
Mujtaba E WhobreyJapanXuxue Feng NEW
Isabel J PerinCanadaAsiya Javayant NEGOTIATION
Jennifer U WaycottFranceElwin Sharvill NEGOTIATION
Ricardo Y WieserBrazilStephen Shaw QUALIFIED
Sinclair M PaprockiItalyElwin Sharvill RENEWAL
Jefferson E MacleadFranceBernardo Dominic RENEWAL
Antonio U ChuiJapanBernardo Dominic QUALIFIED
James V DoeBrazilIoni Bowcher PROPOSAL
Frozen Columns
Name
Francesco F Inouye
Cody I Maclead
Smith M Glick
Julie L Kusko
Faith N Wieser
Julie G Poquette
Greenwood K Rim
Silvio B Oldroyd
Julie T Rulapaugh
Adams V Briddick
Jeanfrancois I Malet
Kadeem F Garufi
Leon J Briddick
Maria D Albares
Francesco P Chui
David O Slusarski
Morrow K Royster
Mayumi Y Briddick
Johnson Y Nicka
Chavez B Ruta
Faith P Figeroa
Rodrigues C Caudy
Costa O Poquette
Jefferson K Kusko
Ashley R Kolmetz
Kaitlin B Ostrosky
James Y Shinko
Antonio Y Garufi
Ivar W Whobrey
Costa B Nestle
Ivar I Rulapaugh
Kaitlin V Wieser
Wickens Q Venere
Wickens K Butt
James J Rulapaugh
Stacey W Royster
Smith F Oldroyd
Leon S Malet
Leon A Gillian
Stacey M Paprocki
Silvio F Slusarski
Smith A Venere
Emily R Doe
James X Marrier
Julie B Amigon
Ashley U Doe
Aruna Y Stenseth
Adams X Garufi
Leja L Slusarski
Clifford I Maclead
IdCountryDate
1000Japan2024-04-17
1001India2024-04-15
1002Australia2024-04-21
1003Japan2024-04-07
1004Russia2024-04-01
1005Brazil2024-04-06
1006United Kingdom2024-04-02
1007Germany2024-04-16
1008Russia2024-04-04
1009United Kingdom2024-04-06
1010Argentina2024-04-20
1011United Kingdom2024-04-11
1012Italy2024-04-27
1013Argentina2024-04-21
1014Japan2024-04-09
1015Brazil2024-04-17
1016Japan2024-04-06
1017India2024-04-26
1018Australia2024-04-22
1019Australia2024-04-29
1020Argentina2024-04-08
1021France2024-04-16
1022Brazil2024-04-13
1023Canada2024-04-23
1024Brazil2024-04-01
1025Germany2024-04-12
1026United Kingdom2024-04-14
1027Australia2024-04-14
1028Argentina2024-04-28
1029Germany2024-04-16
1030Canada2024-04-14
1031Italy2024-04-13
1032Argentina2024-04-29
1033France2024-04-05
1034India2024-04-25
1035Argentina2024-04-30
1036Spain2024-04-04
1037United Kingdom2024-04-27
1038Russia2024-04-17
1039Australia2024-04-29
1040India2024-04-01
1041Japan2024-04-28
1042Canada2024-04-21
1043France2024-04-06
1044Japan2024-04-19
1045Japan2024-04-14
1046Japan2024-04-07
1047Canada2024-04-03
1048Australia2024-04-12
1049Germany2024-04-05

On-Demand Data

NameIdCountryDate
Leja R Kusko1000Russia2024-04-12
Mujtaba X Foller1001Italy2024-04-14
Mayumi V Nestle1002Argentina2024-04-27
Jefferson L Sergi1003Brazil2024-04-26
Antonio J Chui1004Italy2024-04-25
Julie M Albares1005India2024-04-16
James B Campain1006Russia2024-04-13
Arvin M Figeroa1007Australia2024-04-02
Jefferson H Tollner1008France2024-04-03
Juan H Wieser1009India2024-04-30
Sinclair Y Kolmetz1010Spain2024-04-12
Rodrigues Q Venere1011Canada2024-04-28
Jennifer F Stockham1012India2024-04-26
Jeanfrancois T Briddick1013Italy2024-04-08
Juan M Kolmetz1014Canada2024-04-03
David P Waycott1015United Kingdom2024-04-23
Faith F Paprocki1016Spain2024-04-03
Ashley Z Royster1017India2024-04-04
Jefferson R Figeroa1018Australia2024-04-21
Kaitlin I Foller1019France2024-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan L MorascaRussiaAmy Elsner RENEWAL
Leja S RulapaughJapanStephen Shaw QUALIFIED
Adams G AmigonArgentinaOnyama Limba NEGOTIATION
James W WieserBrazilBernardo Dominic PROPOSAL
Adams M SlusarskiAustraliaIoni Bowcher QUALIFIED
Juan O CampainArgentinaIoni Bowcher PROPOSAL
Maisha T KolmetzIndiaIoni Bowcher NEW
Chavez G RutaCanadaElwin Sharvill RENEWAL
Stacey S SchemmerRussiaBernardo Dominic QUALIFIED
Tony W NickaCanadaOnyama Limba NEW
Darci J ChuiRussiaXuxue Feng UNQUALIFIED
Costa V WieserAustraliaIoni Bowcher QUALIFIED
Misaki O SergiArgentinaBernardo Dominic PROPOSAL
Aruna A WieserAustraliaAmy Elsner QUALIFIED
Salvatore Q MorascaBrazilAmy Elsner QUALIFIED
David A SaylorsFranceXuxue Feng PROPOSAL
Smith C AlbaresJapanAsiya Javayant RENEWAL
Adams U IturbideJapanAsiya Javayant QUALIFIED
Ivar M ChuiArgentinaXuxue Feng NEW
Misaki F StockhamFranceElwin Sharvill PROPOSAL
Chavez O AmigonIndiaStephen Shaw NEGOTIATION
Leon N PerinGermanyStephen Shaw UNQUALIFIED
Smith P CampainGermanyXuxue Feng NEW
Claire I MaletAustraliaAnna Fali QUALIFIED
Kaitlin H BowleyJapanElwin Sharvill PROPOSAL
Isabel C CampainUnited KingdomIvan Magalhaes NEW
Octavia K WhobreySpainBernardo Dominic RENEWAL
Jeanfrancois C SergiItalyOnyama Limba NEGOTIATION
Stacey L FollerGermanyIoni Bowcher PROPOSAL
Chavez V GillianBrazilIvan Magalhaes UNQUALIFIED
Rodrigues M OstroskyBrazilStephen Shaw NEW
Emily F DoeSpainBernardo Dominic QUALIFIED
Clifford M SchemmerRussiaAmy Elsner RENEWAL
Ivar E WaycottFranceStephen Shaw UNQUALIFIED
Cody P IturbideArgentinaXuxue Feng UNQUALIFIED
Maria L CampainJapanOnyama Limba NEGOTIATION
Rodrigues T ButtFranceAmy Elsner NEW
Maria W InouyeSpainAsiya Javayant NEW
Faith C SlusarskiItalyAsiya Javayant NEGOTIATION
Izzy M CaldareraFranceStephen Shaw 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>