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
Nicolas A BologniaCanadaElwin Sharvill QUALIFIED
Ricardo U IturbideGermanyIoni Bowcher QUALIFIED
Nicolas U PaprockiFranceStephen Shaw NEGOTIATION
Mayumi W NestleFranceIoni Bowcher PROPOSAL
Morrow Q MorascaCanadaXuxue Feng UNQUALIFIED
Jefferson Y ChuiJapanAmy Elsner NEGOTIATION
Mayumi U MaletAustraliaIoni Bowcher NEGOTIATION
Kadeem M OstroskyFranceIoni Bowcher QUALIFIED
Johnson J RimBrazilIvan Magalhaes NEW
Nicolas I MorascaAustraliaXuxue Feng RENEWAL
Antonio R RoysterSpainAsiya Javayant PROPOSAL
Clifford A SaylorsUnited KingdomBernardo Dominic QUALIFIED
Francesco I MarrierFranceOnyama Limba NEGOTIATION
Ricardo Q CaudyItalyStephen Shaw PROPOSAL
Leja M SchemmerArgentinaAmy Elsner NEW
Isabel Y OldroydCanadaXuxue Feng QUALIFIED
Tony A DarakjyIndiaAmy Elsner PROPOSAL
David M MorascaArgentinaXuxue Feng UNQUALIFIED
Nicolas H WhobreyUnited KingdomXuxue Feng PROPOSAL
Aditya P WhobreyJapanAmy Elsner UNQUALIFIED
Ashley R AmigonFranceElwin Sharvill QUALIFIED
Mayumi Y KolmetzCanadaStephen Shaw PROPOSAL
Jennifer Q CampainCanadaXuxue Feng NEGOTIATION
Jeanfrancois J AlbaresItalyOnyama Limba NEW
Faith K MarrierAustraliaIvan Magalhaes QUALIFIED
Jefferson D VenereRussiaXuxue Feng RENEWAL
Ivar P OldroydSpainIvan Magalhaes NEW
Isabel L InouyeIndiaOnyama Limba PROPOSAL
Isabel M StockhamJapanAsiya Javayant NEGOTIATION
Leja K PaprockiIndiaAmy Elsner NEGOTIATION
Greenwood D PaprockiArgentinaStephen Shaw NEW
Isabel T ButtItalyAmy Elsner NEGOTIATION
Francesco K PaprockiIndiaXuxue Feng RENEWAL
Julie C SlusarskiItalyIoni Bowcher NEGOTIATION
Deepesh Y ShinkoIndiaElwin Sharvill NEGOTIATION
Silvio Q PerinCanadaXuxue Feng NEW
Mujtaba I BowleyAustraliaIoni Bowcher NEGOTIATION
Ricardo B FlosiAustraliaIoni Bowcher NEW
Antonio Y DoeItalyStephen Shaw UNQUALIFIED
Stacey N KuskoAustraliaAmy Elsner QUALIFIED
Clifford L FerenczArgentinaAsiya Javayant PROPOSAL
Antonio F InouyeGermanyBernardo Dominic PROPOSAL
David L TollnerAustraliaElwin Sharvill QUALIFIED
Ashley V DarakjyUnited KingdomStephen Shaw NEGOTIATION
Isabel C TollnerGermanyAmy Elsner PROPOSAL
Tony B CaldareraAustraliaIoni Bowcher RENEWAL
Clifford G KolmetzGermanyBernardo Dominic UNQUALIFIED
Smith G WaycottItalyIvan Magalhaes NEW
James U KolmetzFranceAmy Elsner UNQUALIFIED
Aditya C NickaBrazilOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Smith P AmigonBrazilXuxue Feng PROPOSAL
Wickens Y CaldareraJapanXuxue Feng NEW
Rodrigues X ChuiBrazilStephen Shaw NEW
Ricardo T PerinIndiaXuxue Feng RENEWAL
Kadeem Z VenereSpainIoni Bowcher NEW
Ashley S WaycottGermanyAsiya Javayant QUALIFIED
Morrow L PerinItalyAnna Fali PROPOSAL
Murillo Z MorascaIndiaOnyama Limba NEW
Jennifer R SchemmerArgentinaStephen Shaw NEGOTIATION
Faith U KolmetzItalyElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer X WhobreyIndia2024-04-19Feiner Bros NEGOTIATION83Ivan Magalhaes
1001Emily B SergiSpain2024-04-10Dorl, James J Esq QUALIFIED48Amy Elsner
1002Jefferson R StensethArgentina2024-04-05Chemel, James L Cpa NEGOTIATION13Ivan Magalhaes
1003Arvin E WaycottCanada2024-04-01Morlong Associates NEGOTIATION79Xuxue Feng
1004Maria U StockhamCanada2024-04-01Chemel, James L Cpa UNQUALIFIED97Bernardo Dominic
1005Claire D StockhamJapan2024-04-18Chanay, Jeffrey A Esq NEW45Ioni Bowcher
1006Wickens Z SchemmerAustralia2024-04-11Benton, John B Jr NEGOTIATION69Ivan Magalhaes
1007Rodrigues I PoquetteFrance2024-03-30Dorl, James J Esq NEW74Asiya Javayant
1008Cody H RoysterArgentina2024-04-04Morlong Associates UNQUALIFIED85Amy Elsner
1009Jeanfrancois Y StensethSpain2024-04-16Morlong Associates RENEWAL78Amy Elsner
1010Tony G RulapaughBrazil2024-04-03Commercial Press NEW81Amy Elsner
1011Ivar K CaudyIndia2024-03-29King, Christopher A Esq QUALIFIED22Stephen Shaw
1012Octavia M MaletAustralia2024-04-25Feiner Bros RENEWAL46Elwin Sharvill
1013Arvin H SlusarskiRussia2024-04-01Chapman, Ross E Esq PROPOSAL49Xuxue Feng
1014Jones Y GarufiIndia2024-04-18Morlong Associates NEW82Elwin Sharvill
1015Ashley I RimRussia2024-04-19Buckley Miller Wright NEGOTIATION70Ioni Bowcher
1016Stacey V PaprockiIndia2024-04-13Rousseaux, Michael Esq PROPOSAL90Elwin Sharvill
1017Izzy F DilliardArgentina2024-04-15Commercial Press NEGOTIATION83Amy Elsner
1018Costa D PerinBrazil2024-04-07Buckley Miller Wright UNQUALIFIED10Onyama Limba
1019Leja M SaylorsFrance2024-04-13Rousseaux, Michael Esq QUALIFIED13Bernardo Dominic
1020Aditya J RoysterSpain2024-04-24Benton, John B Jr NEGOTIATION42Stephen Shaw
1021Aruna P PoquetteJapan2024-04-17Rangoni Of Florence NEGOTIATION80Asiya Javayant
1022Nicolas O SaylorsBrazil2024-04-26Feiner Bros QUALIFIED55Xuxue Feng
1023Greenwood V SaylorsCanada2024-04-06Chemel, James L Cpa QUALIFIED36Bernardo Dominic
1024Ivar N PoquetteSpain2024-04-06Printing Dimensions PROPOSAL41Stephen Shaw
1025Misaki S ShinkoJapan2024-04-23Buckley Miller Wright QUALIFIED3Bernardo Dominic
1026Maisha B FigeroaItaly2024-04-24Chemel, James L Cpa UNQUALIFIED39Elwin Sharvill
1027Darci N RulapaughUnited Kingdom2024-04-25Chanay, Jeffrey A Esq PROPOSAL89Onyama Limba
1028Stacey H PerinAustralia2024-04-06Chanay, Jeffrey A Esq NEGOTIATION83Bernardo Dominic
1029Francesco M BowleyBrazil2024-04-20Feiner Bros NEW97Bernardo Dominic
1030Kadeem X BowleyRussia2024-04-10Chemel, James L Cpa QUALIFIED29Ivan Magalhaes
1031Salvatore Q TollnerJapan2024-04-26Buckley Miller Wright QUALIFIED60Bernardo Dominic
1032Salvatore P SaylorsRussia2024-04-02Feltz Printing Service UNQUALIFIED97Xuxue Feng
1033Ricardo N FerenczArgentina2024-04-20Benton, John B Jr PROPOSAL65Elwin Sharvill
1034Smith V AmigonAustralia2024-04-18Rangoni Of Florence QUALIFIED46Bernardo Dominic
1035Juan Q WaycottItaly2024-04-23Truhlar And Truhlar Attys NEW85Onyama Limba
1036Leja S MarrierAustralia2024-04-20Printing Dimensions PROPOSAL89Ioni Bowcher
1037Emily J NickaCanada2024-04-22King, Christopher A Esq QUALIFIED62Anna Fali
1038Sinclair O AmigonRussia2024-04-24King, Christopher A Esq NEW27Ivan Magalhaes
1039Isabel H BologniaAustralia2024-04-04Benton, John B Jr QUALIFIED62Elwin Sharvill
1040Aditya W NickaAustralia2024-04-18Morlong Associates QUALIFIED97Stephen Shaw
1041Kaitlin N NickaSpain2024-04-14Rangoni Of Florence NEGOTIATION47Anna Fali
1042Jeanfrancois D CaldareraJapan2024-04-15Chanay, Jeffrey A Esq NEW16Bernardo Dominic
1043Jennifer G FollerAustralia2024-04-10Chemel, James L Cpa NEGOTIATION78Onyama Limba
1044Izzy Y KolmetzCanada2024-04-22Rousseaux, Michael Esq NEW65Amy Elsner
1045Izzy P MacleadGermany2024-04-04Rousseaux, Michael Esq PROPOSAL6Anna Fali
1046Maria G CampainFrance2024-04-17Dorl, James J Esq NEW52Xuxue Feng
1047Sinclair F MarrierArgentina2024-04-01Buckley Miller Wright NEW63Asiya Javayant
1048Antonio W NickaIndia2024-04-19King, Christopher A Esq NEGOTIATION70Xuxue Feng
1049Misaki K StensethAustralia2024-04-25Truhlar And Truhlar Attys NEGOTIATION81Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Cody B MorascaAustraliaXuxue Feng NEW
Morrow E SlusarskiItalyIoni Bowcher NEGOTIATION
Chavez E VocelkaArgentinaIvan Magalhaes NEGOTIATION
Arvin Z CaldareraUnited KingdomAmy Elsner QUALIFIED
Antonio U FollerRussiaAmy Elsner PROPOSAL
Juan D ChuiJapanXuxue Feng UNQUALIFIED
Octavia Q SlusarskiFranceAmy Elsner NEW
Greenwood Z DilliardFranceIoni Bowcher NEGOTIATION
Jeanfrancois B GauchoAustraliaAnna Fali NEGOTIATION
Faith Q ChuiGermanyAnna Fali NEGOTIATION
Greenwood T VenereJapanOnyama Limba QUALIFIED
Octavia M FerenczSpainXuxue Feng RENEWAL
Chavez T GlickBrazilAmy Elsner NEGOTIATION
Mujtaba O KuskoFranceIoni Bowcher NEGOTIATION
Francesco N MarrierItalyIvan Magalhaes RENEWAL
Sinclair V MaletArgentinaElwin Sharvill NEGOTIATION
Morrow E MarrierAustraliaAmy Elsner PROPOSAL
Octavia F MorascaAustraliaStephen Shaw PROPOSAL
Jones K DarakjyBrazilStephen Shaw QUALIFIED
David C AmigonGermanyOnyama Limba RENEWAL
Maisha M StockhamRussiaStephen Shaw NEGOTIATION
Sinclair P SaylorsRussiaAnna Fali NEGOTIATION
Arvin J CampainJapanAsiya Javayant NEW
Clifford G BriddickJapanOnyama Limba UNQUALIFIED
Juan O SchemmerGermanyStephen Shaw PROPOSAL
Wickens A MaletFranceIoni Bowcher NEW
Alejandro E InouyeJapanXuxue Feng QUALIFIED
Deepesh J FigeroaIndiaElwin Sharvill NEGOTIATION
Mayumi F TollnerArgentinaAnna Fali UNQUALIFIED
Octavia M KuskoIndiaAsiya Javayant NEGOTIATION
Emily A VenereIndiaIvan Magalhaes NEGOTIATION
Salvatore Q PerinCanadaAmy Elsner NEGOTIATION
Maria B WieserRussiaOnyama Limba PROPOSAL
Munro E PaprockiAustraliaAsiya Javayant NEW
Kadeem A RoysterRussiaOnyama Limba UNQUALIFIED
Maria A WieserItalyBernardo Dominic NEGOTIATION
Arvin E CampainIndiaAnna Fali RENEWAL
Johnson T ButtAustraliaIoni Bowcher NEGOTIATION
Isabel R PerinBrazilAnna Fali NEW
Jones M GauchoArgentinaIvan Magalhaes RENEWAL
Munro B MacleadFranceStephen Shaw UNQUALIFIED
Maisha N PoquetteGermanyAmy Elsner NEW
David U MarrierSpainAmy Elsner RENEWAL
Jefferson N VenereGermanyOnyama Limba QUALIFIED
Adams D FlosiIndiaAmy Elsner PROPOSAL
Julie R SergiIndiaOnyama Limba UNQUALIFIED
Arvin G MorascaArgentinaOnyama Limba NEGOTIATION
Mayumi P RimJapanBernardo Dominic PROPOSAL
Jones M RulapaughUnited KingdomAsiya Javayant RENEWAL
Aditya Q StensethSpainIoni Bowcher PROPOSAL
Frozen Columns
Name
James S Briddick
Maisha F Morasca
Ivar N Darakjy
Costa U Dilliard
Julie B Maclead
Alejandro W Saylors
Morrow Q Poquette
Cody Z Ostrosky
David X Vocelka
Tony J Wieser
Maisha I Oldroyd
Darci S Whobrey
Murillo R Butt
Francesco E Venere
Ashley A Sergi
Alejandro O Marrier
Stacey Z Nestle
Misaki C Sergi
Tony Z Rim
Claire V Perin
Ivar L Stockham
Salvatore V Whobrey
Kaitlin I Schemmer
Munro T Whobrey
Arvin U Bowley
Leja W Rim
Munro P Waycott
Octavia C Figeroa
Ricardo W Stenseth
Ricardo U Paprocki
Mayumi F Malet
Ashley E Darakjy
David M Garufi
Arvin O Tollner
Arvin Z Nicka
Maria U Gaucho
Smith M Ostrosky
Antonio N Caudy
Nicolas T Nicka
James V Darakjy
Cody F Ruta
Deepesh O Paprocki
Izzy B Bowley
Wickens C Chui
Murillo E Glick
Octavia W Doe
Claire K Kolmetz
Deepesh C Paprocki
Ashley L Inouye
Wickens D Flosi
IdCountryDate
1000United Kingdom2024-04-07
1001Spain2024-04-26
1002Spain2024-04-02
1003Russia2024-04-15
1004France2024-04-05
1005Brazil2024-04-14
1006India2024-04-11
1007Australia2024-04-09
1008India2024-04-18
1009France2024-04-03
1010France2024-04-14
1011Brazil2024-04-19
1012Italy2024-04-01
1013Japan2024-04-19
1014Russia2024-04-05
1015Italy2024-04-08
1016United Kingdom2024-04-20
1017Spain2024-04-16
1018Brazil2024-04-23
1019Germany2024-04-20
1020Brazil2024-03-31
1021Canada2024-04-21
1022Brazil2024-04-07
1023Australia2024-04-03
1024Australia2024-04-08
1025Australia2024-04-03
1026Russia2024-04-01
1027Canada2024-04-17
1028Germany2024-04-01
1029Canada2024-04-16
1030Spain2024-04-07
1031Australia2024-04-23
1032Brazil2024-04-20
1033Spain2024-04-25
1034Australia2024-04-26
1035Russia2024-04-15
1036United Kingdom2024-04-18
1037Russia2024-04-11
1038Germany2024-04-20
1039Australia2024-04-04
1040Italy2024-04-15
1041India2024-04-25
1042Argentina2024-04-20
1043Australia2024-04-27
1044Argentina2024-04-07
1045Spain2024-04-09
1046Russia2024-04-16
1047United Kingdom2024-04-27
1048Brazil2024-04-20
1049Australia2024-04-08

On-Demand Data

NameIdCountryDate
Arvin G Doe1000Russia2024-04-06
Julie G Foller1001France2024-04-08
Juan C Stockham1002Spain2024-04-15
Tony H Nicka1003Japan2024-04-24
James M Saylors1004Russia2024-04-27
Costa G Perin1005France2024-04-25
Mujtaba A Flosi1006France2024-04-07
Tony R Chui1007France2024-04-07
Octavia U Campain1008Russia2024-04-06
Emily K Bolognia1009Spain2024-03-30
Octavia Q Morasca1010Russia2024-04-21
Clifford Z Dilliard1011Germany2024-04-16
Deepesh D Inouye1012Italy2024-04-04
Greenwood P Vocelka1013Japan2024-04-17
Claire O Whobrey1014United Kingdom2024-04-18
Chavez Y Poquette1015Spain2024-04-21
Aruna G Poquette1016France2024-04-21
Ricardo X Morasca1017Russia2024-04-03
Maria I Albares1018Japan2024-03-30
Julie C Darakjy1019India2024-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan P ButtJapanBernardo Dominic UNQUALIFIED
Jennifer U WaycottFranceOnyama Limba RENEWAL
Jeanfrancois U IturbideItalyAsiya Javayant PROPOSAL
Kadeem E StockhamArgentinaStephen Shaw UNQUALIFIED
Claire J WieserFranceAsiya Javayant PROPOSAL
James X RutaAustraliaIvan Magalhaes NEGOTIATION
Morrow D PaprockiIndiaIoni Bowcher NEW
Faith P RutaItalyAnna Fali UNQUALIFIED
Silvio T SaylorsIndiaXuxue Feng UNQUALIFIED
Emily P GlickJapanElwin Sharvill NEW
Clifford O GlickBrazilStephen Shaw UNQUALIFIED
Francesco H RimRussiaAmy Elsner QUALIFIED
Costa N WaycottSpainStephen Shaw NEW
Misaki Q KolmetzIndiaBernardo Dominic QUALIFIED
Salvatore E BowleyCanadaElwin Sharvill NEGOTIATION
Maria V PaprockiFranceStephen Shaw UNQUALIFIED
Maisha B ChuiFranceAmy Elsner RENEWAL
Sinclair X InouyeCanadaElwin Sharvill RENEWAL
Deepesh D CaudyAustraliaIoni Bowcher QUALIFIED
Sinclair K KuskoGermanyIoni Bowcher RENEWAL
Maisha D RimFranceAsiya Javayant PROPOSAL
Sinclair A RoysterBrazilStephen Shaw NEW
Sinclair U PerinFranceStephen Shaw NEW
Jones B SergiGermanyAmy Elsner QUALIFIED
Izzy J SergiRussiaIoni Bowcher QUALIFIED
David H RoysterIndiaAsiya Javayant NEW
Munro K RoysterGermanyAsiya Javayant NEGOTIATION
Maria O FerenczBrazilIvan Magalhaes NEGOTIATION
Antonio U VenereFranceBernardo Dominic NEGOTIATION
James A FollerArgentinaIvan Magalhaes PROPOSAL
Wickens Y WaycottRussiaBernardo Dominic QUALIFIED
Kaitlin S ButtUnited KingdomBernardo Dominic RENEWAL
Leja V MorascaUnited KingdomIoni Bowcher PROPOSAL
Adams Y SchemmerCanadaStephen Shaw NEGOTIATION
Misaki I GlickBrazilElwin Sharvill UNQUALIFIED
Stacey D NickaGermanyBernardo Dominic RENEWAL
Mayumi G BologniaJapanAsiya Javayant QUALIFIED
Silvio K NestleUnited KingdomAsiya Javayant RENEWAL
Chavez N RimBrazilAmy Elsner NEW
Francesco Z NickaFranceIoni Bowcher RENEWAL

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