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
Mujtaba A WieserJapanBernardo Dominic RENEWAL
Izzy D KolmetzJapanIvan Magalhaes NEGOTIATION
Johnson R DoeItalyAmy Elsner NEGOTIATION
Smith G FerenczGermanyBernardo Dominic QUALIFIED
Juan X SergiBrazilIoni Bowcher RENEWAL
Ricardo E VenereArgentinaIvan Magalhaes RENEWAL
Aruna V ButtItalyAsiya Javayant PROPOSAL
Costa K IturbideUnited KingdomAsiya Javayant RENEWAL
Jennifer W GlickBrazilXuxue Feng NEW
Izzy D MacleadIndiaStephen Shaw NEW
Rodrigues M BowleyGermanyAnna Fali NEW
Costa A FollerIndiaAnna Fali PROPOSAL
Stacey T BriddickUnited KingdomAmy Elsner UNQUALIFIED
Antonio L StensethItalyAnna Fali PROPOSAL
Jeanfrancois I FollerBrazilIvan Magalhaes NEW
Misaki V IturbideBrazilElwin Sharvill NEGOTIATION
Izzy Z DilliardArgentinaAmy Elsner NEW
Costa I PoquetteSpainStephen Shaw NEGOTIATION
Aditya V KolmetzItalyStephen Shaw NEW
Ashley K RulapaughBrazilStephen Shaw PROPOSAL
Darci D PoquetteRussiaStephen Shaw QUALIFIED
Murillo Q MarrierRussiaIvan Magalhaes NEGOTIATION
Maisha H KolmetzGermanyElwin Sharvill QUALIFIED
Arvin T RoysterArgentinaIvan Magalhaes RENEWAL
Leon H MorascaIndiaStephen Shaw QUALIFIED
Maria A DarakjyJapanIoni Bowcher PROPOSAL
Aika E BriddickItalyOnyama Limba RENEWAL
Costa R RulapaughAustraliaIoni Bowcher NEGOTIATION
Isabel X OldroydUnited KingdomIoni Bowcher RENEWAL
Greenwood H PerinGermanyAsiya Javayant NEGOTIATION
Arvin W MacleadGermanyBernardo Dominic RENEWAL
Jennifer P VocelkaGermanyIvan Magalhaes NEW
Costa H OstroskyItalyBernardo Dominic PROPOSAL
Francesco L KolmetzSpainStephen Shaw NEW
Chavez Q ChuiUnited KingdomAsiya Javayant PROPOSAL
Johnson C BowleyAustraliaAnna Fali PROPOSAL
Misaki T DoeUnited KingdomBernardo Dominic NEGOTIATION
Maisha K OstroskyIndiaAsiya Javayant NEW
Misaki X RimJapanAmy Elsner RENEWAL
Rodrigues Q StensethSpainAmy Elsner QUALIFIED
Isabel M StockhamFranceAmy Elsner NEGOTIATION
Stacey W DoeCanadaElwin Sharvill NEW
Ricardo H NickaRussiaOnyama Limba NEW
Jeanfrancois J MacleadIndiaAsiya Javayant PROPOSAL
Adams D KuskoIndiaIvan Magalhaes PROPOSAL
Kadeem M BowleyIndiaAsiya Javayant NEW
Emily V RutaCanadaAmy Elsner NEGOTIATION
Ivar C StensethIndiaIvan Magalhaes QUALIFIED
Jeanfrancois Z KolmetzGermanyAnna Fali NEW
Francesco U CaudyIndiaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Faith H MacleadBrazilStephen Shaw NEW
Aruna W FerenczRussiaAsiya Javayant PROPOSAL
Antonio H RutaBrazilIoni Bowcher PROPOSAL
Morrow V GillianBrazilAnna Fali NEGOTIATION
Claire E KuskoRussiaOnyama Limba RENEWAL
Leon Y FigeroaItalyAnna Fali NEW
Darci I IturbideUnited KingdomIoni Bowcher NEW
Rodrigues P DarakjyCanadaElwin Sharvill PROPOSAL
Clifford Q ButtFranceXuxue Feng RENEWAL
Jennifer Q VocelkaBrazilAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody N GarufiFrance2024-04-18Rangoni Of Florence QUALIFIED10Elwin Sharvill
1001Arvin C AlbaresItaly2024-04-27Benton, John B Jr NEGOTIATION14Ivan Magalhaes
1002Salvatore B FigeroaIndia2024-04-10Truhlar And Truhlar Attys PROPOSAL37Stephen Shaw
1003Misaki A RimUnited Kingdom2024-04-29Printing Dimensions RENEWAL60Amy Elsner
1004Deepesh S DoeItaly2024-04-23Feltz Printing Service PROPOSAL94Ivan Magalhaes
1005Alejandro U ShinkoArgentina2024-04-18King, Christopher A Esq QUALIFIED25Asiya Javayant
1006Mujtaba H IturbideCanada2024-04-23Chanay, Jeffrey A Esq NEGOTIATION94Amy Elsner
1007Julie L FerenczFrance2024-04-27Feiner Bros UNQUALIFIED15Elwin Sharvill
1008Maisha Z MorascaAustralia2024-04-07Benton, John B Jr UNQUALIFIED7Amy Elsner
1009Johnson Y BowleyFrance2024-04-18Morlong Associates NEW71Ivan Magalhaes
1010Deepesh Z MorascaArgentina2024-04-21Feiner Bros UNQUALIFIED72Asiya Javayant
1011Salvatore P MacleadArgentina2024-04-28Benton, John B Jr RENEWAL80Stephen Shaw
1012Jefferson V VenereSpain2024-04-05King, Christopher A Esq NEGOTIATION96Xuxue Feng
1013Isabel F PerinRussia2024-04-04Printing Dimensions PROPOSAL72Anna Fali
1014Misaki C DarakjyArgentina2024-04-15Printing Dimensions UNQUALIFIED39Stephen Shaw
1015Octavia P FollerBrazil2024-04-13Feltz Printing Service RENEWAL72Onyama Limba
1016Sinclair X MaletArgentina2024-04-27King, Christopher A Esq NEW20Bernardo Dominic
1017Rodrigues X FigeroaAustralia2024-04-09Truhlar And Truhlar Attys QUALIFIED59Onyama Limba
1018Costa T BologniaRussia2024-04-16Rangoni Of Florence NEGOTIATION36Xuxue Feng
1019Arvin K RoysterJapan2024-04-04Dorl, James J Esq PROPOSAL80Anna Fali
1020James B DilliardAustralia2024-04-05Benton, John B Jr UNQUALIFIED20Asiya Javayant
1021Mujtaba O CampainArgentina2024-04-30Dorl, James J Esq RENEWAL66Stephen Shaw
1022Clifford D MarrierRussia2024-04-24Chanay, Jeffrey A Esq UNQUALIFIED48Ioni Bowcher
1023Isabel K WhobreyFrance2024-04-26Printing Dimensions NEGOTIATION55Onyama Limba
1024Julie E ButtJapan2024-04-05Buckley Miller Wright QUALIFIED76Anna Fali
1025Costa T RoysterGermany2024-04-28Printing Dimensions NEW27Ioni Bowcher
1026David V ChuiJapan2024-04-11Chanay, Jeffrey A Esq UNQUALIFIED94Bernardo Dominic
1027Leon O BowleyBrazil2024-04-14Buckley Miller Wright QUALIFIED37Elwin Sharvill
1028Ashley I GarufiFrance2024-04-22Chapman, Ross E Esq NEGOTIATION36Ivan Magalhaes
1029Jennifer A RulapaughUnited Kingdom2024-04-28Feiner Bros NEW81Amy Elsner
1030Rodrigues X BriddickFrance2024-04-19Truhlar And Truhlar Attys PROPOSAL25Anna Fali
1031Munro O FlosiUnited Kingdom2024-04-19King, Christopher A Esq NEGOTIATION86Asiya Javayant
1032Kaitlin R PoquetteGermany2024-04-09Morlong Associates RENEWAL76Stephen Shaw
1033Kaitlin U IturbideBrazil2024-04-02Benton, John B Jr QUALIFIED34Stephen Shaw
1034Silvio O IturbideBrazil2024-04-24Printing Dimensions QUALIFIED35Xuxue Feng
1035Wickens V StockhamUnited Kingdom2024-04-28Chemel, James L Cpa NEW5Amy Elsner
1036Kadeem K FerenczGermany2024-05-01Chanay, Jeffrey A Esq UNQUALIFIED72Stephen Shaw
1037Silvio I CaldareraCanada2024-04-13Chapman, Ross E Esq PROPOSAL29Onyama Limba
1038Misaki D WieserFrance2024-04-07Chemel, James L Cpa RENEWAL78Stephen Shaw
1039Arvin H GarufiIndia2024-04-08Truhlar And Truhlar Attys QUALIFIED10Ivan Magalhaes
1040Juan H MarrierBrazil2024-04-11Rousseaux, Michael Esq PROPOSAL57Xuxue Feng
1041Leon Y AlbaresArgentina2024-04-19Rangoni Of Florence UNQUALIFIED13Stephen Shaw
1042Jones Y TollnerItaly2024-04-15Truhlar And Truhlar Attys QUALIFIED46Ioni Bowcher
1043Clifford R RutaFrance2024-04-10Benton, John B Jr QUALIFIED62Onyama Limba
1044Aika N ButtJapan2024-04-24Chanay, Jeffrey A Esq QUALIFIED73Elwin Sharvill
1045Julie M MacleadItaly2024-04-27Chanay, Jeffrey A Esq NEGOTIATION50Ioni Bowcher
1046Aditya B KuskoSpain2024-04-07Commercial Press QUALIFIED8Anna Fali
1047Ivar V OstroskyBrazil2024-04-06Printing Dimensions PROPOSAL22Xuxue Feng
1048Faith G RimAustralia2024-04-30Chapman, Ross E Esq NEW99Asiya Javayant
1049Kaitlin U BriddickSpain2024-04-24Commercial Press NEGOTIATION2Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Jones T WaycottArgentinaElwin Sharvill UNQUALIFIED
Kaitlin D FerenczGermanyAnna Fali PROPOSAL
Wickens V MaletFranceIvan Magalhaes NEW
Faith T CaudyUnited KingdomStephen Shaw NEW
Cody T SaylorsArgentinaStephen Shaw RENEWAL
Octavia N CaldareraItalyAsiya Javayant PROPOSAL
Chavez N RoysterGermanyAmy Elsner NEGOTIATION
Mujtaba G KuskoCanadaElwin Sharvill NEW
Julie D DoeRussiaAnna Fali PROPOSAL
Silvio E OstroskyArgentinaAmy Elsner RENEWAL
Ricardo R CaldareraSpainElwin Sharvill UNQUALIFIED
Aika W NickaFranceOnyama Limba NEGOTIATION
Deepesh D CampainJapanAmy Elsner NEGOTIATION
Octavia G CaldareraGermanyIvan Magalhaes UNQUALIFIED
Chavez V VenereBrazilIoni Bowcher NEW
Silvio H MorascaItalyAsiya Javayant NEGOTIATION
Faith N ChuiUnited KingdomAnna Fali RENEWAL
Ivar E PerinIndiaOnyama Limba PROPOSAL
Jeanfrancois I GauchoGermanyXuxue Feng NEW
James X DoeGermanyStephen Shaw QUALIFIED
Salvatore K StensethItalyElwin Sharvill UNQUALIFIED
Aruna Y GlickArgentinaAmy Elsner NEW
Murillo Y SaylorsUnited KingdomAnna Fali UNQUALIFIED
Jefferson W WieserGermanyAnna Fali QUALIFIED
Deepesh L DoeAustraliaOnyama Limba NEW
Johnson Z FlosiArgentinaElwin Sharvill PROPOSAL
Faith A OstroskyRussiaAmy Elsner PROPOSAL
Sinclair Q PaprockiGermanyStephen Shaw NEGOTIATION
Deepesh E BowleyItalyStephen Shaw QUALIFIED
Francesco R FigeroaIndiaXuxue Feng PROPOSAL
Wickens M NestleFranceElwin Sharvill PROPOSAL
Murillo N AmigonAustraliaIvan Magalhaes NEW
Claire G OstroskyIndiaAmy Elsner PROPOSAL
Chavez X GarufiSpainAsiya Javayant PROPOSAL
Cody R TollnerRussiaIvan Magalhaes RENEWAL
Kadeem J BowleyBrazilAnna Fali NEGOTIATION
Greenwood Z MaletJapanAmy Elsner UNQUALIFIED
Ricardo H PaprockiUnited KingdomElwin Sharvill NEGOTIATION
Clifford V PaprockiCanadaElwin Sharvill NEW
Leon W NickaIndiaStephen Shaw PROPOSAL
Ivar F InouyeRussiaXuxue Feng NEGOTIATION
David Z PaprockiIndiaAsiya Javayant UNQUALIFIED
Isabel W OldroydFranceStephen Shaw QUALIFIED
Tony J BowleyJapanIvan Magalhaes RENEWAL
James D WieserFranceElwin Sharvill PROPOSAL
Jennifer X AlbaresRussiaBernardo Dominic NEGOTIATION
Stacey B StockhamAustraliaOnyama Limba NEGOTIATION
Maisha I BologniaRussiaAnna Fali NEW
Kaitlin Y NickaSpainOnyama Limba RENEWAL
Munro Q GillianGermanyElwin Sharvill RENEWAL
Frozen Columns
Name
Maisha Z Stockham
Mayumi K Nestle
Cody D Foller
Sinclair K Bolognia
Darci S Albares
Kaitlin T Amigon
Wickens W Garufi
Misaki P Briddick
Misaki V Glick
Claire B Campain
Clifford Y Marrier
Mayumi Y Butt
Aruna X Bowley
Maisha E Stenseth
Cody O Ostrosky
Antonio E Rulapaugh
Jennifer S Ruta
David G Maclead
Rodrigues V Maclead
Kaitlin A Schemmer
Mujtaba R Iturbide
Johnson T Nicka
Chavez M Malet
Emily W Waycott
Murillo J Shinko
Jefferson C Gillian
Aditya B Malet
Cody U Bowley
Wickens P Iturbide
Maria K Doe
Leja H Kusko
Chavez B Royster
Aruna K Venere
Salvatore J Rulapaugh
Leon E Malet
Leja Q Darakjy
Mayumi H Briddick
Kaitlin R Morasca
Aditya J Waycott
Maisha I Glick
Ivar G Ruta
Chavez B Rim
Octavia W Maclead
Maisha V Wieser
Ashley W Nicka
Jones X Maclead
Rodrigues O Ostrosky
Sinclair G Bolognia
Leja L Malet
Jeanfrancois R Waycott
IdCountryDate
1000Australia2024-04-15
1001Canada2024-04-18
1002United Kingdom2024-04-18
1003Brazil2024-04-10
1004Germany2024-04-08
1005Germany2024-04-17
1006Italy2024-05-01
1007Argentina2024-04-19
1008Japan2024-04-24
1009Canada2024-04-17
1010France2024-04-20
1011Canada2024-04-06
1012France2024-04-28
1013Australia2024-04-11
1014Brazil2024-04-11
1015Brazil2024-04-09
1016France2024-04-22
1017Japan2024-04-11
1018Italy2024-04-25
1019Canada2024-04-24
1020Australia2024-04-24
1021Brazil2024-04-04
1022United Kingdom2024-04-30
1023Argentina2024-05-01
1024Germany2024-04-17
1025Russia2024-04-25
1026Japan2024-04-30
1027Argentina2024-04-30
1028Russia2024-04-29
1029Spain2024-04-10
1030Brazil2024-04-08
1031Germany2024-04-27
1032Canada2024-04-05
1033Brazil2024-04-16
1034Germany2024-04-04
1035Brazil2024-04-05
1036Spain2024-04-11
1037Russia2024-04-13
1038Russia2024-04-24
1039Canada2024-04-25
1040India2024-04-07
1041India2024-04-12
1042India2024-04-12
1043India2024-04-02
1044Argentina2024-04-12
1045Australia2024-04-04
1046Spain2024-04-27
1047Argentina2024-04-19
1048Russia2024-04-07
1049Russia2024-04-30

On-Demand Data

NameIdCountryDate
Ricardo Y Gaucho1000Spain2024-04-27
Aika U Saylors1001India2024-04-23
Murillo S Slusarski1002United Kingdom2024-04-18
Sinclair S Campain1003Australia2024-04-21
Aruna V Royster1004Russia2024-04-13
Maisha Q Caldarera1005India2024-04-12
Stacey A Flosi1006Germany2024-04-16
Mujtaba F Schemmer1007Italy2024-04-23
Nicolas W Tollner1008France2024-04-06
Aika K Nestle1009Japan2024-04-06
Jeanfrancois B Waycott1010Japan2024-04-03
Ricardo B Caudy1011Canada2024-04-24
Johnson Y Kusko1012India2024-04-19
Tony C Maclead1013Russia2024-04-16
Aditya Z Maclead1014Japan2024-04-26
Aditya E Inouye1015Italy2024-04-03
Tony Y Figeroa1016United Kingdom2024-04-09
Octavia C Briddick1017Argentina2024-04-08
Costa P Paprocki1018India2024-04-05
Jeanfrancois P Stenseth1019Italy2024-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci G BowleyArgentinaAmy Elsner QUALIFIED
Clifford X FigeroaArgentinaAsiya Javayant UNQUALIFIED
James V BriddickRussiaElwin Sharvill NEGOTIATION
Deepesh Q GauchoGermanyBernardo Dominic UNQUALIFIED
Cody D KuskoJapanOnyama Limba QUALIFIED
Murillo Q CaudyGermanyBernardo Dominic PROPOSAL
Francesco U FollerAustraliaOnyama Limba UNQUALIFIED
Johnson N BowleyBrazilAsiya Javayant NEGOTIATION
Aruna O OstroskyJapanAsiya Javayant QUALIFIED
Octavia P WaycottBrazilElwin Sharvill RENEWAL
Ivar X WieserSpainAnna Fali QUALIFIED
Rodrigues D GarufiArgentinaAsiya Javayant NEW
Nicolas O DarakjyBrazilStephen Shaw UNQUALIFIED
Aditya L GillianJapanIoni Bowcher QUALIFIED
Juan U NickaSpainStephen Shaw NEW
Leja N FollerJapanAnna Fali QUALIFIED
Mayumi H CampainItalyOnyama Limba QUALIFIED
Juan C GauchoSpainAmy Elsner PROPOSAL
Leja K RimIndiaOnyama Limba PROPOSAL
Ricardo M CaldareraCanadaStephen Shaw QUALIFIED
Wickens S RulapaughFranceElwin Sharvill NEW
Aditya N BowleyFranceElwin Sharvill RENEWAL
Claire H WieserUnited KingdomIoni Bowcher QUALIFIED
Wickens W BologniaArgentinaStephen Shaw RENEWAL
Kadeem W BowleyCanadaIoni Bowcher NEGOTIATION
Izzy I RoysterIndiaAmy Elsner NEGOTIATION
Johnson I OldroydArgentinaStephen Shaw NEW
Leja E FlosiIndiaStephen Shaw PROPOSAL
Smith C AlbaresIndiaOnyama Limba QUALIFIED
Izzy F ButtAustraliaElwin Sharvill PROPOSAL
Silvio D OstroskyBrazilXuxue Feng RENEWAL
Rodrigues U ButtGermanyAsiya Javayant RENEWAL
Jennifer R SergiRussiaAnna Fali NEGOTIATION
Adams C TollnerArgentinaOnyama Limba NEW
Kaitlin G CampainSpainAmy Elsner PROPOSAL
Cody U StockhamBrazilAsiya Javayant NEW
Faith Y BriddickUnited KingdomOnyama Limba RENEWAL
Mayumi O ButtSpainStephen Shaw NEW
Aruna H InouyeUnited KingdomOnyama Limba UNQUALIFIED
Jefferson R BowleyAustraliaIoni Bowcher 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>