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
Ashley G SaylorsGermanyIoni Bowcher UNQUALIFIED
Faith W MarrierCanadaAsiya Javayant UNQUALIFIED
Sinclair D WaycottJapanStephen Shaw RENEWAL
Aditya Q DoeJapanIoni Bowcher PROPOSAL
Greenwood E OldroydArgentinaBernardo Dominic PROPOSAL
Jefferson W MaletSpainBernardo Dominic NEW
Chavez P ChuiItalyIoni Bowcher RENEWAL
Deepesh D SlusarskiArgentinaAnna Fali QUALIFIED
Kaitlin J GarufiFranceIoni Bowcher RENEWAL
Kadeem T SergiFranceAmy Elsner PROPOSAL
Wickens K StockhamItalyAmy Elsner NEGOTIATION
Nicolas H MacleadArgentinaXuxue Feng NEGOTIATION
Maria I MaletIndiaElwin Sharvill UNQUALIFIED
Jones W FerenczGermanyBernardo Dominic QUALIFIED
Leja Q RulapaughRussiaIoni Bowcher RENEWAL
Emily Y CaldareraIndiaOnyama Limba QUALIFIED
Claire D PaprockiArgentinaOnyama Limba RENEWAL
Murillo J RimIndiaXuxue Feng QUALIFIED
Nicolas E FlosiBrazilAsiya Javayant UNQUALIFIED
Sinclair W OstroskyBrazilStephen Shaw RENEWAL
Jones A VenereJapanAnna Fali RENEWAL
Silvio M MaletIndiaAnna Fali NEW
Darci L NickaUnited KingdomIoni Bowcher NEW
Smith U GlickUnited KingdomAnna Fali QUALIFIED
Izzy O NickaSpainAmy Elsner PROPOSAL
Faith U TollnerBrazilAnna Fali NEGOTIATION
Clifford H KolmetzUnited KingdomAmy Elsner UNQUALIFIED
Jennifer K NickaFranceIoni Bowcher PROPOSAL
Ricardo Q RulapaughFranceStephen Shaw PROPOSAL
David X RimFranceElwin Sharvill UNQUALIFIED
Wickens D CaldareraJapanAsiya Javayant UNQUALIFIED
Julie D GauchoFranceBernardo Dominic NEGOTIATION
Maisha A AmigonAustraliaBernardo Dominic QUALIFIED
Chavez A CampainRussiaIvan Magalhaes PROPOSAL
Salvatore L MorascaGermanyAsiya Javayant NEGOTIATION
Aruna V VenereGermanyXuxue Feng UNQUALIFIED
Mujtaba R MorascaJapanStephen Shaw PROPOSAL
Adams J CaldareraCanadaStephen Shaw NEW
David H BologniaArgentinaIoni Bowcher PROPOSAL
Darci A FollerItalyIvan Magalhaes PROPOSAL
Isabel E AlbaresBrazilElwin Sharvill NEW
Greenwood D ChuiRussiaAsiya Javayant QUALIFIED
Maria G VocelkaAustraliaBernardo Dominic NEW
Octavia S BriddickSpainAsiya Javayant NEW
Wickens Z MacleadGermanyOnyama Limba NEW
Jennifer F DarakjyRussiaElwin Sharvill QUALIFIED
Ashley K DilliardCanadaElwin Sharvill NEW
Tony W SchemmerUnited KingdomElwin Sharvill NEGOTIATION
Isabel D AmigonJapanIoni Bowcher QUALIFIED
Morrow Z RoysterBrazilBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Munro M MorascaSpainXuxue Feng QUALIFIED
Mayumi T CaldareraGermanyStephen Shaw NEW
Tony J MaletArgentinaAnna Fali NEGOTIATION
Deepesh B SlusarskiCanadaXuxue Feng NEW
Izzy M GlickJapanAnna Fali UNQUALIFIED
Emily M WaycottItalyAnna Fali UNQUALIFIED
Silvio N GarufiFranceAnna Fali NEGOTIATION
Ivar P SaylorsUnited KingdomAmy Elsner NEGOTIATION
Kaitlin T ShinkoAustraliaElwin Sharvill PROPOSAL
Claire L BologniaJapanStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire R RoysterArgentina2024-04-08Buckley Miller Wright PROPOSAL47Ivan Magalhaes
1001Mujtaba S WhobreyGermany2024-04-23Rangoni Of Florence QUALIFIED97Ioni Bowcher
1002Johnson Z SlusarskiBrazil2024-04-12Chemel, James L Cpa NEGOTIATION52Elwin Sharvill
1003Nicolas G CaldareraBrazil2024-03-31Rousseaux, Michael Esq UNQUALIFIED56Bernardo Dominic
1004Nicolas X FollerUnited Kingdom2024-04-09Rangoni Of Florence NEGOTIATION64Xuxue Feng
1005Isabel J MarrierItaly2024-03-28Morlong Associates NEW84Bernardo Dominic
1006Aditya R PaprockiItaly2024-04-06Chapman, Ross E Esq UNQUALIFIED14Anna Fali
1007Chavez C TollnerIndia2024-04-04Feiner Bros QUALIFIED40Amy Elsner
1008Deepesh P KolmetzItaly2024-04-05Morlong Associates NEGOTIATION59Ioni Bowcher
1009Kadeem D RimCanada2024-04-23Dorl, James J Esq NEW57Onyama Limba
1010Maria H GlickItaly2024-04-13Truhlar And Truhlar Attys UNQUALIFIED67Elwin Sharvill
1011Kadeem H CaldareraCanada2024-04-17Chemel, James L Cpa UNQUALIFIED24Elwin Sharvill
1012Leon T FollerGermany2024-04-24Morlong Associates NEW79Ioni Bowcher
1013Morrow X OldroydSpain2024-04-09Chemel, James L Cpa QUALIFIED93Stephen Shaw
1014Jennifer I FollerItaly2024-04-24Feltz Printing Service NEGOTIATION87Onyama Limba
1015Silvio J SlusarskiJapan2024-04-05Chanay, Jeffrey A Esq PROPOSAL55Stephen Shaw
1016Tony F AlbaresJapan2024-04-03Morlong Associates PROPOSAL21Xuxue Feng
1017Deepesh P ButtCanada2024-04-15Morlong Associates QUALIFIED43Ioni Bowcher
1018Ashley O CaudyGermany2024-04-11King, Christopher A Esq NEW53Xuxue Feng
1019James X AmigonBrazil2024-04-26Dorl, James J Esq PROPOSAL33Bernardo Dominic
1020Aika B IturbideJapan2024-04-19Chanay, Jeffrey A Esq NEW57Amy Elsner
1021Stacey H VocelkaRussia2024-04-24Benton, John B Jr NEW18Ioni Bowcher
1022Cody P BowleyItaly2024-04-18Chanay, Jeffrey A Esq RENEWAL19Asiya Javayant
1023Emily I FerenczCanada2024-03-28Chemel, James L Cpa UNQUALIFIED17Elwin Sharvill
1024Leja D StockhamUnited Kingdom2024-04-07Rangoni Of Florence NEGOTIATION96Elwin Sharvill
1025Aruna N PoquetteAustralia2024-04-10Chapman, Ross E Esq NEGOTIATION64Onyama Limba
1026Aditya P MorascaCanada2024-04-12Chapman, Ross E Esq PROPOSAL87Anna Fali
1027David K TollnerFrance2024-04-17Chapman, Ross E Esq UNQUALIFIED38Onyama Limba
1028Aditya E DarakjyGermany2024-04-18Benton, John B Jr QUALIFIED99Amy Elsner
1029Rodrigues L AlbaresArgentina2024-04-14Chanay, Jeffrey A Esq RENEWAL44Ioni Bowcher
1030Greenwood C BowleyAustralia2024-04-25Feiner Bros RENEWAL17Onyama Limba
1031Mayumi X SlusarskiAustralia2024-04-05King, Christopher A Esq NEW83Xuxue Feng
1032Octavia P MaletUnited Kingdom2024-04-01Chanay, Jeffrey A Esq NEGOTIATION79Xuxue Feng
1033Nicolas R VocelkaCanada2024-04-18Rangoni Of Florence NEW60Ioni Bowcher
1034Deepesh H MaletBrazil2024-04-18Printing Dimensions UNQUALIFIED53Onyama Limba
1035Greenwood B RoysterCanada2024-04-05Rangoni Of Florence PROPOSAL50Asiya Javayant
1036Isabel G CaldareraJapan2024-04-21Printing Dimensions RENEWAL48Anna Fali
1037Cody P MorascaRussia2024-04-12Feiner Bros QUALIFIED96Bernardo Dominic
1038Maisha H MarrierSpain2024-04-12Truhlar And Truhlar Attys QUALIFIED39Elwin Sharvill
1039James J AmigonRussia2024-04-08Dorl, James J Esq NEW5Xuxue Feng
1040Francesco V PaprockiSpain2024-04-11Rangoni Of Florence NEW21Xuxue Feng
1041Maria Z CaudyAustralia2024-04-26Chemel, James L Cpa PROPOSAL52Stephen Shaw
1042Ashley Y WieserUnited Kingdom2024-03-28Rousseaux, Michael Esq PROPOSAL75Onyama Limba
1043Salvatore F OstroskyBrazil2024-04-14Buckley Miller Wright NEGOTIATION40Ivan Magalhaes
1044Ricardo H MorascaCanada2024-04-19Truhlar And Truhlar Attys RENEWAL24Xuxue Feng
1045Julie O WaycottGermany2024-04-11Rousseaux, Michael Esq NEGOTIATION20Ioni Bowcher
1046Deepesh B CampainArgentina2024-04-15Chanay, Jeffrey A Esq NEW11Ivan Magalhaes
1047Arvin S CaldareraRussia2024-04-05Feiner Bros RENEWAL17Asiya Javayant
1048Cody V BriddickRussia2024-04-18Rangoni Of Florence RENEWAL52Anna Fali
1049Antonio U MacleadJapan2024-04-07Rousseaux, Michael Esq NEGOTIATION31Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Mayumi G CaudyBrazilAmy Elsner RENEWAL
Leja D WaycottSpainIoni Bowcher UNQUALIFIED
Costa A DoeArgentinaOnyama Limba NEGOTIATION
Kadeem U AlbaresBrazilOnyama Limba NEGOTIATION
Faith K WaycottSpainXuxue Feng UNQUALIFIED
Jennifer Y RutaBrazilAnna Fali PROPOSAL
Aruna C NestleRussiaBernardo Dominic NEW
Ivar P PoquetteArgentinaAsiya Javayant NEW
Faith Q ShinkoBrazilElwin Sharvill QUALIFIED
Kadeem V InouyeGermanyXuxue Feng PROPOSAL
Aditya Q GarufiSpainAsiya Javayant UNQUALIFIED
Leja P RimArgentinaAnna Fali RENEWAL
Kaitlin H OldroydRussiaIoni Bowcher NEGOTIATION
Jennifer Q OldroydIndiaAmy Elsner NEW
Salvatore D OstroskyGermanyStephen Shaw UNQUALIFIED
Silvio M GarufiUnited KingdomBernardo Dominic PROPOSAL
Maisha O BriddickIndiaXuxue Feng UNQUALIFIED
Alejandro K WaycottIndiaElwin Sharvill UNQUALIFIED
Salvatore Q RulapaughFranceBernardo Dominic QUALIFIED
Darci I OldroydItalyBernardo Dominic QUALIFIED
Costa X RulapaughGermanyAnna Fali PROPOSAL
Johnson O FlosiFranceIoni Bowcher UNQUALIFIED
Smith H FerenczUnited KingdomAnna Fali NEW
Chavez R VenereArgentinaElwin Sharvill PROPOSAL
Aruna Q KuskoAustraliaBernardo Dominic UNQUALIFIED
Deepesh G BowleyArgentinaIvan Magalhaes UNQUALIFIED
James X NestleAustraliaAnna Fali RENEWAL
Alejandro Z AmigonRussiaStephen Shaw UNQUALIFIED
Munro F MarrierAustraliaBernardo Dominic QUALIFIED
Salvatore W ButtSpainAsiya Javayant UNQUALIFIED
Johnson D PerinUnited KingdomOnyama Limba NEW
Maria P ChuiGermanyOnyama Limba NEGOTIATION
Mujtaba O BologniaAustraliaElwin Sharvill QUALIFIED
Isabel B MaletJapanIoni Bowcher RENEWAL
James A CampainIndiaAsiya Javayant NEGOTIATION
Antonio N PoquetteItalyStephen Shaw RENEWAL
Izzy C OstroskyIndiaIvan Magalhaes RENEWAL
Aika U FigeroaSpainElwin Sharvill NEW
Juan D FigeroaFranceAmy Elsner PROPOSAL
Maisha H FollerRussiaAmy Elsner RENEWAL
Izzy S CaldareraArgentinaOnyama Limba RENEWAL
Jones N MaletBrazilIvan Magalhaes UNQUALIFIED
James C DilliardFranceXuxue Feng NEGOTIATION
Antonio N MorascaUnited KingdomElwin Sharvill NEW
Ivar E VocelkaRussiaIvan Magalhaes UNQUALIFIED
Antonio E KolmetzCanadaAsiya Javayant NEGOTIATION
Aruna Q MaletJapanStephen Shaw RENEWAL
Arvin B MacleadBrazilAsiya Javayant PROPOSAL
Jefferson G StensethItalyIvan Magalhaes PROPOSAL
Adams W WieserRussiaIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Clifford N Darakjy
Kadeem B Schemmer
Alejandro N Caudy
Silvio Q Waycott
Julie K Ruta
Salvatore R Wieser
Isabel G Royster
Maria X Kolmetz
Julie X Rulapaugh
Jennifer O Vocelka
David H Perin
Maria L Marrier
Costa S Kusko
Greenwood C Caudy
Jeanfrancois X Oldroyd
Greenwood J Morasca
Tony B Morasca
Julie Q Rim
Izzy G Waycott
Silvio L Figeroa
Ivar E Caldarera
Juan Z Figeroa
Darci G Paprocki
Chavez X Oldroyd
Smith L Nestle
Arvin L Flosi
Greenwood H Oldroyd
Misaki S Campain
Adams C Rim
Chavez E Stenseth
Munro U Garufi
Arvin V Gillian
Juan N Kusko
Adams J Venere
James J Ostrosky
Alejandro L Figeroa
Maria J Chui
Octavia X Shinko
Costa V Bolognia
Johnson B Caudy
Morrow X Maclead
Tony Y Doe
Kadeem A Darakjy
Adams E Butt
Salvatore G Perin
Ashley W Royster
Johnson T Gaucho
Salvatore T Bolognia
Chavez O Whobrey
Izzy S Nicka
IdCountryDate
1000Germany2024-04-04
1001Italy2024-04-05
1002Italy2024-04-18
1003Japan2024-04-06
1004Japan2024-04-02
1005Argentina2024-04-14
1006Canada2024-04-04
1007United Kingdom2024-04-19
1008Australia2024-04-26
1009India2024-04-23
1010Russia2024-03-28
1011Germany2024-04-23
1012Canada2024-04-20
1013Canada2024-04-20
1014Australia2024-04-08
1015Italy2024-04-11
1016India2024-04-09
1017France2024-04-16
1018Argentina2024-04-09
1019United Kingdom2024-03-30
1020Japan2024-04-03
1021Germany2024-04-07
1022Italy2024-04-24
1023Australia2024-04-26
1024Brazil2024-04-19
1025France2024-04-04
1026Brazil2024-04-07
1027France2024-04-11
1028Argentina2024-04-09
1029Russia2024-03-31
1030France2024-04-14
1031Japan2024-04-20
1032Brazil2024-04-09
1033Japan2024-04-12
1034Italy2024-04-23
1035United Kingdom2024-04-07
1036India2024-04-24
1037France2024-03-30
1038Russia2024-04-23
1039United Kingdom2024-04-05
1040Japan2024-04-14
1041France2024-04-01
1042Brazil2024-04-06
1043Australia2024-04-05
1044Brazil2024-04-09
1045Canada2024-03-30
1046Japan2024-04-05
1047Argentina2024-04-15
1048Brazil2024-03-30
1049Spain2024-04-14

On-Demand Data

NameIdCountryDate
Kaitlin G Malet1000Japan2024-04-19
Wickens Q Bolognia1001Argentina2024-03-28
Kadeem R Glick1002Argentina2024-04-05
Jennifer P Inouye1003Germany2024-04-18
Jefferson L Butt1004Italy2024-04-19
Tony J Vocelka1005Argentina2024-04-14
Stacey U Whobrey1006Argentina2024-04-13
Costa W Tollner1007Italy2024-04-16
Faith A Ruta1008Russia2024-04-07
Murillo C Gaucho1009Australia2024-04-22
Smith K Stockham1010Japan2024-04-26
Clifford Y Saylors1011Spain2024-04-18
Wickens B Glick1012Canada2024-04-13
Aruna N Flosi1013Spain2024-04-01
Izzy L Campain1014Italy2024-04-10
Ashley I Venere1015Germany2024-04-26
Ivar I Rulapaugh1016Australia2024-03-30
Maisha Z Royster1017Canada2024-04-09
Stacey X Albares1018Russia2024-04-05
Faith Y Stockham1019Canada2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues B FerenczItalyAsiya Javayant PROPOSAL
Costa W FerenczIndiaAnna Fali PROPOSAL
Costa M PaprockiRussiaStephen Shaw NEGOTIATION
Claire T MaletSpainAsiya Javayant NEW
Tony G ShinkoItalyAmy Elsner QUALIFIED
Stacey F MaletRussiaElwin Sharvill RENEWAL
Morrow P MaletSpainAmy Elsner UNQUALIFIED
Arvin V MarrierItalyAmy Elsner UNQUALIFIED
Chavez X FerenczItalyAnna Fali QUALIFIED
Maria V VocelkaFranceBernardo Dominic PROPOSAL
Ricardo F VenereSpainStephen Shaw NEGOTIATION
Mayumi B TollnerUnited KingdomBernardo Dominic NEW
Ivar L BowleyCanadaStephen Shaw QUALIFIED
Kaitlin K FigeroaSpainIoni Bowcher NEGOTIATION
Alejandro T GarufiFranceIoni Bowcher QUALIFIED
Ivar P AmigonCanadaAsiya Javayant NEW
Leon Z NickaIndiaOnyama Limba NEGOTIATION
Clifford A NestleArgentinaIoni Bowcher RENEWAL
Maria S MarrierCanadaAsiya Javayant NEW
Maria R AlbaresCanadaIvan Magalhaes NEW
Leon G VenereSpainXuxue Feng UNQUALIFIED
Ricardo S KolmetzIndiaAmy Elsner QUALIFIED
Munro K TollnerCanadaElwin Sharvill UNQUALIFIED
Wickens A MarrierSpainOnyama Limba PROPOSAL
Arvin Z GarufiFranceOnyama Limba NEW
Emily A FerenczCanadaAnna Fali QUALIFIED
Ricardo U FlosiUnited KingdomAnna Fali RENEWAL
Wickens Y GarufiSpainIoni Bowcher RENEWAL
Tony C SergiGermanyXuxue Feng PROPOSAL
Mayumi G CaldareraUnited KingdomOnyama Limba NEGOTIATION
Costa G KuskoItalyAnna Fali RENEWAL
Arvin W GauchoSpainAmy Elsner NEGOTIATION
Mujtaba F PoquetteSpainAmy Elsner NEW
Munro M VenereIndiaIoni Bowcher NEGOTIATION
David T KolmetzFranceElwin Sharvill NEW
Juan E InouyeJapanIoni Bowcher NEGOTIATION
Juan G PoquetteBrazilStephen Shaw UNQUALIFIED
Cody C VenereAustraliaIvan Magalhaes QUALIFIED
Kadeem V FollerSpainAsiya Javayant RENEWAL
Rodrigues N BologniaItalyIvan Magalhaes 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>