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
Darci I ShinkoItalyStephen Shaw NEGOTIATION
Arvin R AmigonIndiaXuxue Feng NEGOTIATION
Octavia E MarrierGermanyBernardo Dominic PROPOSAL
Tony Q DarakjyRussiaAsiya Javayant PROPOSAL
Jefferson M RoysterSpainAmy Elsner NEGOTIATION
David B GarufiBrazilBernardo Dominic RENEWAL
James Z KolmetzGermanyBernardo Dominic NEGOTIATION
Faith P RulapaughUnited KingdomXuxue Feng RENEWAL
Francesco F InouyeBrazilStephen Shaw NEW
Isabel C InouyeSpainAsiya Javayant PROPOSAL
Jones A BologniaGermanyStephen Shaw NEW
Tony D WaycottFranceAnna Fali PROPOSAL
Leja F OldroydSpainElwin Sharvill UNQUALIFIED
Salvatore U MarrierCanadaXuxue Feng QUALIFIED
Adams J MacleadArgentinaOnyama Limba NEW
Julie S DarakjyJapanAmy Elsner NEGOTIATION
Chavez Z ChuiJapanAsiya Javayant UNQUALIFIED
Leon Q AlbaresBrazilBernardo Dominic QUALIFIED
Maria J OldroydSpainElwin Sharvill QUALIFIED
Munro N SchemmerCanadaBernardo Dominic RENEWAL
Chavez I MaletSpainXuxue Feng QUALIFIED
Munro H PaprockiGermanyIvan Magalhaes NEW
Aditya P SergiJapanStephen Shaw NEGOTIATION
Jeanfrancois B FigeroaItalyOnyama Limba RENEWAL
Smith M NickaBrazilStephen Shaw NEGOTIATION
Isabel K RutaCanadaIvan Magalhaes RENEWAL
Arvin S TollnerIndiaElwin Sharvill UNQUALIFIED
Kaitlin U CaudyAustraliaElwin Sharvill NEGOTIATION
Emily H DarakjyUnited KingdomBernardo Dominic QUALIFIED
Jennifer U CaudyCanadaXuxue Feng PROPOSAL
Munro X FollerItalyAmy Elsner RENEWAL
Ivar C BowleyUnited KingdomOnyama Limba QUALIFIED
Stacey M DilliardIndiaAnna Fali RENEWAL
Leon Q MaletItalyXuxue Feng NEW
Juan G AmigonSpainAsiya Javayant RENEWAL
Smith B MacleadGermanyAnna Fali UNQUALIFIED
Ashley N OstroskyItalyIoni Bowcher RENEWAL
Francesco G CampainJapanElwin Sharvill UNQUALIFIED
Ricardo T RulapaughFranceElwin Sharvill NEW
Claire Z MarrierGermanyAsiya Javayant NEGOTIATION
Mujtaba M DilliardRussiaStephen Shaw RENEWAL
Julie Q RulapaughJapanIvan Magalhaes NEGOTIATION
Murillo L GlickBrazilAsiya Javayant QUALIFIED
James Y MorascaGermanyOnyama Limba PROPOSAL
Ivar L VenereItalyIoni Bowcher QUALIFIED
Munro J WaycottAustraliaAmy Elsner NEW
Leon N ShinkoGermanyIoni Bowcher RENEWAL
Mujtaba H CampainRussiaBernardo Dominic UNQUALIFIED
Kadeem Z FlosiAustraliaAmy Elsner QUALIFIED
David R SlusarskiRussiaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leja M GillianBrazilAnna Fali UNQUALIFIED
Stacey A FollerJapanStephen Shaw NEW
Rodrigues B FlosiIndiaElwin Sharvill RENEWAL
Aruna C RoysterItalyIoni Bowcher NEGOTIATION
Adams V ButtGermanyIvan Magalhaes NEGOTIATION
Morrow T WhobreyAustraliaElwin Sharvill QUALIFIED
Arvin E FerenczUnited KingdomOnyama Limba RENEWAL
Ashley L MaletAustraliaIoni Bowcher PROPOSAL
Aditya P DarakjySpainStephen Shaw UNQUALIFIED
James Y MorascaIndiaAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley V AlbaresCanada2024-04-01Feiner Bros RENEWAL48Asiya Javayant
1001Antonio C WaycottIndia2024-03-31Printing Dimensions PROPOSAL52Stephen Shaw
1002Maisha Q MorascaGermany2024-04-12Rousseaux, Michael Esq RENEWAL10Ivan Magalhaes
1003Salvatore W BriddickItaly2024-04-23Rangoni Of Florence UNQUALIFIED60Stephen Shaw
1004Faith G DilliardFrance2024-04-02Truhlar And Truhlar Attys UNQUALIFIED56Ioni Bowcher
1005Juan T NickaCanada2024-04-23Rangoni Of Florence NEGOTIATION68Xuxue Feng
1006Tony X FollerIndia2024-03-29Commercial Press UNQUALIFIED76Onyama Limba
1007Nicolas D BriddickCanada2024-04-12Rangoni Of Florence PROPOSAL41Ioni Bowcher
1008Arvin U PaprockiIndia2024-03-30Chapman, Ross E Esq RENEWAL89Xuxue Feng
1009Ricardo S SlusarskiRussia2024-04-22Feiner Bros RENEWAL43Amy Elsner
1010Ricardo Z PoquetteArgentina2024-04-07King, Christopher A Esq UNQUALIFIED52Bernardo Dominic
1011Maria K NickaFrance2024-04-08Benton, John B Jr UNQUALIFIED50Onyama Limba
1012Jennifer V MorascaBrazil2024-04-20Dorl, James J Esq QUALIFIED98Ioni Bowcher
1013Kaitlin Z KolmetzFrance2024-04-22Dorl, James J Esq RENEWAL33Stephen Shaw
1014David H FigeroaIndia2024-03-29Benton, John B Jr PROPOSAL80Ivan Magalhaes
1015Jefferson E InouyeBrazil2024-04-09Buckley Miller Wright UNQUALIFIED12Bernardo Dominic
1016Jefferson S FerenczCanada2024-04-17Benton, John B Jr NEGOTIATION48Bernardo Dominic
1017Isabel P SchemmerFrance2024-04-12Dorl, James J Esq RENEWAL62Stephen Shaw
1018Rodrigues H MaletRussia2024-04-11Truhlar And Truhlar Attys UNQUALIFIED10Ioni Bowcher
1019Misaki A PerinGermany2024-04-07Buckley Miller Wright PROPOSAL67Stephen Shaw
1020Adams S BowleyItaly2024-03-29Truhlar And Truhlar Attys RENEWAL33Stephen Shaw
1021Alejandro I MarrierUnited Kingdom2024-04-21King, Christopher A Esq NEGOTIATION33Xuxue Feng
1022Rodrigues E MaletAustralia2024-04-25Benton, John B Jr UNQUALIFIED38Anna Fali
1023Emily E RimCanada2024-04-06Chanay, Jeffrey A Esq QUALIFIED69Xuxue Feng
1024Clifford X PerinAustralia2024-03-30Chanay, Jeffrey A Esq RENEWAL43Elwin Sharvill
1025Juan G ButtIndia2024-04-11Rangoni Of Florence UNQUALIFIED37Amy Elsner
1026Silvio Q DoeAustralia2024-04-22Chanay, Jeffrey A Esq NEGOTIATION75Bernardo Dominic
1027Ricardo X PaprockiItaly2024-04-02Commercial Press UNQUALIFIED87Asiya Javayant
1028James Q ChuiItaly2024-04-02Benton, John B Jr RENEWAL66Elwin Sharvill
1029Jennifer K BriddickBrazil2024-04-25Commercial Press QUALIFIED13Ioni Bowcher
1030Maria V KuskoRussia2024-04-15Morlong Associates UNQUALIFIED38Anna Fali
1031Adams X GarufiAustralia2024-04-02Printing Dimensions NEW53Anna Fali
1032Julie Y DarakjyIndia2024-04-24King, Christopher A Esq RENEWAL63Asiya Javayant
1033Maria J StockhamBrazil2024-04-17Printing Dimensions QUALIFIED76Elwin Sharvill
1034Johnson J KolmetzFrance2024-04-07Rangoni Of Florence NEW34Ivan Magalhaes
1035Jefferson C KolmetzCanada2024-04-17Chapman, Ross E Esq QUALIFIED47Onyama Limba
1036Claire L KolmetzCanada2024-04-01King, Christopher A Esq RENEWAL73Onyama Limba
1037Costa Q ButtBrazil2024-03-29Rangoni Of Florence PROPOSAL41Ivan Magalhaes
1038Salvatore U IturbideSpain2024-04-12Chemel, James L Cpa PROPOSAL17Anna Fali
1039Greenwood J WhobreyIndia2024-04-24Feltz Printing Service RENEWAL48Amy Elsner
1040Salvatore W CampainIndia2024-04-06Benton, John B Jr NEGOTIATION85Amy Elsner
1041Murillo J WaycottAustralia2024-04-10Benton, John B Jr RENEWAL39Stephen Shaw
1042Emily E NestleFrance2024-04-16Truhlar And Truhlar Attys NEGOTIATION13Amy Elsner
1043Juan U NestleUnited Kingdom2024-04-16Commercial Press NEGOTIATION29Anna Fali
1044Leja F PoquetteCanada2024-04-25Dorl, James J Esq RENEWAL30Asiya Javayant
1045Juan G AmigonIndia2024-04-01Chapman, Ross E Esq NEW81Amy Elsner
1046David E RulapaughSpain2024-04-20Benton, John B Jr RENEWAL6Amy Elsner
1047Maisha D WhobreyArgentina2024-04-17Rousseaux, Michael Esq QUALIFIED66Onyama Limba
1048Smith H VocelkaSpain2024-03-31Feltz Printing Service UNQUALIFIED82Stephen Shaw
1049Misaki P SaylorsJapan2024-04-05Morlong Associates RENEWAL11Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues S FigeroaCanadaAnna Fali NEGOTIATION
Antonio E CaldareraGermanyBernardo Dominic RENEWAL
Ashley J NickaItalyAnna Fali NEGOTIATION
Maria K ChuiItalyOnyama Limba NEW
Juan U OldroydRussiaAmy Elsner PROPOSAL
Morrow C StockhamAustraliaAnna Fali PROPOSAL
Clifford H GauchoGermanyXuxue Feng NEGOTIATION
Francesco M RoysterJapanAsiya Javayant QUALIFIED
Kaitlin F FollerJapanOnyama Limba RENEWAL
Chavez Q SchemmerArgentinaAnna Fali UNQUALIFIED
Sinclair C FigeroaJapanElwin Sharvill PROPOSAL
Francesco E WhobreyRussiaAsiya Javayant QUALIFIED
Mujtaba J MaletCanadaXuxue Feng NEW
Ricardo U DilliardItalyAmy Elsner RENEWAL
Ricardo C MacleadIndiaAmy Elsner PROPOSAL
Mayumi M InouyeAustraliaOnyama Limba NEW
Ivar G MacleadArgentinaAmy Elsner QUALIFIED
James E ChuiUnited KingdomBernardo Dominic NEGOTIATION
Misaki R VocelkaIndiaAmy Elsner QUALIFIED
Sinclair M NickaBrazilStephen Shaw NEGOTIATION
Wickens F MarrierSpainAnna Fali UNQUALIFIED
Deepesh N MacleadJapanElwin Sharvill UNQUALIFIED
Darci Y GauchoCanadaBernardo Dominic RENEWAL
Stacey H ChuiArgentinaIoni Bowcher UNQUALIFIED
Jefferson M MorascaUnited KingdomElwin Sharvill NEGOTIATION
Maria U MaletIndiaIoni Bowcher QUALIFIED
Tony W PaprockiJapanAmy Elsner PROPOSAL
Cody O WhobreyUnited KingdomIvan Magalhaes UNQUALIFIED
Claire T ShinkoUnited KingdomAmy Elsner NEGOTIATION
Cody A RimSpainOnyama Limba QUALIFIED
Mayumi Y MaletFranceBernardo Dominic NEGOTIATION
Octavia V PaprockiJapanXuxue Feng NEW
Julie J CampainFranceAmy Elsner QUALIFIED
Emily K DilliardItalyIoni Bowcher QUALIFIED
Faith Z KolmetzRussiaBernardo Dominic NEGOTIATION
Claire H MaletBrazilIvan Magalhaes RENEWAL
Wickens S FerenczJapanAsiya Javayant NEW
Claire Y KolmetzIndiaOnyama Limba NEGOTIATION
Clifford D BriddickSpainOnyama Limba NEGOTIATION
Misaki H BriddickIndiaElwin Sharvill PROPOSAL
Nicolas U CampainFranceStephen Shaw NEW
Kadeem O RoysterIndiaStephen Shaw PROPOSAL
Jones P WhobreyArgentinaOnyama Limba PROPOSAL
Aika F ShinkoGermanyStephen Shaw QUALIFIED
Chavez F RulapaughAustraliaIoni Bowcher UNQUALIFIED
Ricardo V CampainAustraliaBernardo Dominic PROPOSAL
Cody E BologniaAustraliaAmy Elsner PROPOSAL
Isabel X RoysterItalyXuxue Feng NEGOTIATION
Wickens N GillianSpainAnna Fali RENEWAL
Alejandro O SergiFranceAnna Fali RENEWAL
Frozen Columns
Name
Darci S Inouye
Maisha S Ostrosky
Jennifer B Ferencz
Johnson U Oldroyd
Mujtaba F Maclead
Morrow B Wieser
Jeanfrancois Q Caudy
Kadeem P Campain
Rodrigues O Stenseth
Ashley U Dilliard
Johnson H Oldroyd
Aditya A Glick
Mayumi T Malet
Stacey W Rulapaugh
Francesco O Paprocki
Faith Y Inouye
Julie A Chui
Rodrigues M Maclead
Claire F Whobrey
Cody L Malet
Isabel U Schemmer
Leon R Bolognia
Morrow H Butt
Misaki H Royster
Kadeem S Malet
Jefferson F Maclead
Wickens Y Ruta
Adams C Chui
Emily O Inouye
Darci Q Gillian
Maria M Marrier
Octavia C Caudy
Octavia U Malet
Costa N Gaucho
Ashley D Kolmetz
Faith I Dilliard
Emily J Garufi
Juan S Poquette
Salvatore O Ferencz
Kaitlin W Morasca
Tony U Schemmer
Murillo J Waycott
Stacey I Figeroa
Emily M Bowley
Kaitlin I Perin
Deepesh Y Flosi
Sinclair F Slusarski
Morrow W Amigon
Stacey T Sergi
Misaki Z Rulapaugh
IdCountryDate
1000Argentina2024-04-07
1001Spain2024-04-22
1002Canada2024-04-20
1003France2024-04-08
1004Italy2024-04-11
1005Germany2024-04-20
1006Japan2024-03-31
1007Australia2024-03-31
1008France2024-04-12
1009Japan2024-03-28
1010Canada2024-04-06
1011Canada2024-04-13
1012Spain2024-04-23
1013United Kingdom2024-04-09
1014United Kingdom2024-04-22
1015Brazil2024-04-17
1016United Kingdom2024-04-03
1017Australia2024-03-30
1018Australia2024-04-05
1019India2024-04-25
1020Argentina2024-04-16
1021India2024-04-23
1022Canada2024-04-20
1023Canada2024-04-14
1024Canada2024-04-25
1025Argentina2024-04-19
1026Italy2024-04-16
1027Germany2024-04-23
1028France2024-04-26
1029Japan2024-04-10
1030Canada2024-04-05
1031Brazil2024-04-10
1032Australia2024-04-19
1033Argentina2024-04-05
1034Brazil2024-04-25
1035Russia2024-04-20
1036France2024-04-23
1037Russia2024-04-11
1038Brazil2024-04-05
1039Russia2024-04-07
1040Russia2024-04-07
1041Australia2024-04-22
1042Germany2024-04-17
1043Russia2024-03-30
1044Spain2024-04-08
1045Spain2024-04-07
1046Canada2024-03-29
1047Australia2024-04-14
1048United Kingdom2024-04-07
1049Australia2024-04-18

On-Demand Data

NameIdCountryDate
Johnson F Wieser1000Brazil2024-03-31
Julie U Royster1001Argentina2024-04-12
Jeanfrancois I Glick1002Brazil2024-04-24
Mayumi V Amigon1003Russia2024-04-07
Salvatore B Iturbide1004Germany2024-04-15
Izzy S Butt1005France2024-04-11
Jefferson Y Tollner1006India2024-04-14
Maria Y Vocelka1007Argentina2024-04-01
Sinclair H Foller1008India2024-04-06
Cody S Schemmer1009Australia2024-04-07
Aruna K Poquette1010Canada2024-04-09
Julie I Dilliard1011Canada2024-04-16
Stacey Z Stenseth1012Spain2024-04-12
Leja I Caudy1013Germany2024-04-24
Francesco D Nestle1014Spain2024-04-19
Silvio D Flosi1015Japan2024-04-13
Leon B Caudy1016Argentina2024-04-09
Faith H Rim1017Brazil2024-04-10
Kadeem V Campain1018Germany2024-04-16
Deepesh D Gaucho1019India2024-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson A InouyeRussiaAnna Fali RENEWAL
Jennifer X RimJapanAmy Elsner NEW
Silvio K RutaAustraliaXuxue Feng NEW
Maisha A InouyeCanadaIoni Bowcher UNQUALIFIED
Isabel Z SchemmerIndiaElwin Sharvill UNQUALIFIED
Isabel D SergiBrazilAmy Elsner QUALIFIED
Silvio D BologniaSpainOnyama Limba RENEWAL
Kadeem J DilliardArgentinaElwin Sharvill RENEWAL
Chavez N BowleyJapanStephen Shaw NEGOTIATION
Juan A AlbaresItalyIoni Bowcher NEW
Julie G ShinkoJapanIvan Magalhaes UNQUALIFIED
Maria Q ShinkoSpainAnna Fali RENEWAL
Salvatore P GauchoGermanyElwin Sharvill PROPOSAL
Wickens A AmigonBrazilAmy Elsner RENEWAL
Salvatore A SchemmerAustraliaElwin Sharvill QUALIFIED
Antonio J CampainSpainStephen Shaw UNQUALIFIED
Ricardo A AlbaresJapanOnyama Limba UNQUALIFIED
Octavia I MorascaGermanyAsiya Javayant QUALIFIED
Mujtaba F DarakjyItalyIoni Bowcher UNQUALIFIED
Jefferson X MorascaGermanyElwin Sharvill RENEWAL
Leja U TollnerCanadaAmy Elsner NEW
James W AmigonFranceBernardo Dominic PROPOSAL
Juan F MaletIndiaOnyama Limba NEGOTIATION
Emily H GlickUnited KingdomOnyama Limba NEGOTIATION
Munro I SlusarskiCanadaElwin Sharvill RENEWAL
James E GarufiCanadaStephen Shaw NEW
Aditya U IturbideBrazilAmy Elsner RENEWAL
Tony X StensethFranceAsiya Javayant RENEWAL
Kadeem N AmigonFranceAnna Fali PROPOSAL
Kadeem Y WaycottArgentinaElwin Sharvill RENEWAL
Jennifer Y VocelkaFranceElwin Sharvill NEW
Jennifer H MacleadAustraliaIoni Bowcher PROPOSAL
Francesco K PaprockiAustraliaBernardo Dominic UNQUALIFIED
James V GarufiRussiaXuxue Feng NEW
Alejandro X CaudyCanadaIvan Magalhaes NEW
Jeanfrancois P VocelkaItalyIoni Bowcher PROPOSAL
Ricardo J OstroskyItalyElwin Sharvill QUALIFIED
Munro V FollerCanadaAmy Elsner UNQUALIFIED
Mayumi T DoeGermanyOnyama Limba NEW
Jennifer A VocelkaIndiaElwin Sharvill PROPOSAL

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