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
Murillo H KolmetzIndiaElwin Sharvill QUALIFIED
Adams Z MacleadAustraliaElwin Sharvill NEGOTIATION
Emily K CampainUnited KingdomBernardo Dominic NEGOTIATION
Silvio L SaylorsArgentinaElwin Sharvill NEGOTIATION
Wickens D StensethSpainStephen Shaw RENEWAL
Francesco V RimArgentinaXuxue Feng RENEWAL
Kadeem R ChuiFranceIoni Bowcher UNQUALIFIED
Sinclair W ChuiFranceAnna Fali PROPOSAL
Aika U OldroydCanadaStephen Shaw NEW
Emily K GlickAustraliaAmy Elsner QUALIFIED
Maisha W IturbideRussiaIvan Magalhaes NEW
Aika O MacleadBrazilElwin Sharvill NEW
Costa T ChuiAustraliaAnna Fali UNQUALIFIED
Jeanfrancois I FlosiUnited KingdomAnna Fali RENEWAL
Aditya V InouyeArgentinaXuxue Feng NEW
Antonio L NickaArgentinaElwin Sharvill RENEWAL
Claire U MaletIndiaAsiya Javayant UNQUALIFIED
Johnson W DoeRussiaBernardo Dominic NEGOTIATION
Smith U BologniaArgentinaOnyama Limba NEW
Maisha C KuskoJapanOnyama Limba PROPOSAL
Greenwood A SlusarskiCanadaStephen Shaw NEW
Kadeem L MaletCanadaIoni Bowcher PROPOSAL
Munro Q GlickCanadaAnna Fali NEW
Ricardo S MacleadArgentinaIoni Bowcher UNQUALIFIED
Octavia U AmigonSpainIoni Bowcher UNQUALIFIED
Faith R PerinArgentinaIvan Magalhaes QUALIFIED
Ricardo L VocelkaIndiaElwin Sharvill QUALIFIED
Salvatore H RoysterSpainAmy Elsner UNQUALIFIED
James H FollerArgentinaAnna Fali PROPOSAL
Julie T MarrierGermanyOnyama Limba NEW
Aditya N WaycottIndiaStephen Shaw RENEWAL
Munro D FerenczUnited KingdomStephen Shaw RENEWAL
Izzy D StockhamAustraliaIoni Bowcher NEGOTIATION
Munro B PerinRussiaIoni Bowcher RENEWAL
Claire J FollerArgentinaIoni Bowcher UNQUALIFIED
Rodrigues B ButtRussiaIoni Bowcher NEGOTIATION
Maisha P SchemmerItalyStephen Shaw NEW
Clifford L ButtRussiaElwin Sharvill NEGOTIATION
Ivar A KuskoUnited KingdomAmy Elsner NEGOTIATION
Clifford X KolmetzCanadaIoni Bowcher UNQUALIFIED
Ivar O FlosiAustraliaBernardo Dominic RENEWAL
Ricardo J MaletFranceXuxue Feng QUALIFIED
Morrow P DoeIndiaAnna Fali NEGOTIATION
Kaitlin M DoeBrazilIvan Magalhaes NEGOTIATION
Salvatore C DoeIndiaStephen Shaw NEW
Claire R GlickArgentinaAnna Fali QUALIFIED
Cody J MaletItalyXuxue Feng RENEWAL
Aruna Y AlbaresRussiaIoni Bowcher NEGOTIATION
Aditya D SaylorsJapanElwin Sharvill UNQUALIFIED
Izzy E ChuiCanadaAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Costa K NestleArgentinaElwin Sharvill NEW
Ricardo W WaycottUnited KingdomIvan Magalhaes NEW
Silvio R StensethIndiaAsiya Javayant UNQUALIFIED
Nicolas Q CampainUnited KingdomAnna Fali NEGOTIATION
Emily Y AmigonAustraliaIvan Magalhaes PROPOSAL
Wickens H FlosiIndiaStephen Shaw RENEWAL
Morrow X ShinkoItalyStephen Shaw UNQUALIFIED
Maisha V GauchoJapanAsiya Javayant NEW
Emily Q RimItalyBernardo Dominic PROPOSAL
Maria J AmigonIndiaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony Z ShinkoCanada2024-04-08Morlong Associates NEW81Ivan Magalhaes
1001Leon C NestleAustralia2024-04-21Printing Dimensions QUALIFIED67Asiya Javayant
1002Juan G FlosiJapan2024-04-04King, Christopher A Esq QUALIFIED27Stephen Shaw
1003Mayumi M IturbideUnited Kingdom2024-04-04Chemel, James L Cpa PROPOSAL32Onyama Limba
1004Murillo A SlusarskiBrazil2024-04-04Benton, John B Jr PROPOSAL87Anna Fali
1005Jefferson A RutaBrazil2024-04-13Commercial Press NEGOTIATION79Asiya Javayant
1006Leon A CampainCanada2024-04-21Dorl, James J Esq PROPOSAL7Onyama Limba
1007Munro S ShinkoAustralia2024-03-31King, Christopher A Esq PROPOSAL61Bernardo Dominic
1008Alejandro T OstroskyRussia2024-04-01Printing Dimensions UNQUALIFIED73Elwin Sharvill
1009Cody Y MorascaUnited Kingdom2024-03-27Truhlar And Truhlar Attys QUALIFIED70Onyama Limba
1010Faith Y ShinkoUnited Kingdom2024-03-26Buckley Miller Wright NEW19Stephen Shaw
1011Mayumi Y GlickIndia2024-03-30Rousseaux, Michael Esq RENEWAL29Xuxue Feng
1012Murillo G GarufiSpain2024-04-11Chanay, Jeffrey A Esq NEGOTIATION17Ivan Magalhaes
1013Arvin M ButtGermany2024-04-09Chemel, James L Cpa RENEWAL45Stephen Shaw
1014Deepesh A WhobreyItaly2024-04-13Feltz Printing Service NEW43Anna Fali
1015Mujtaba D BowleyGermany2024-04-06Feltz Printing Service PROPOSAL8Onyama Limba
1016Aika D NestleGermany2024-04-23Buckley Miller Wright NEGOTIATION25Ioni Bowcher
1017Maisha W FerenczJapan2024-04-07Commercial Press PROPOSAL8Xuxue Feng
1018Leja V BriddickSpain2024-03-26Feltz Printing Service UNQUALIFIED85Bernardo Dominic
1019Octavia L SergiIndia2024-03-27Chemel, James L Cpa QUALIFIED79Ivan Magalhaes
1020Costa Z ButtItaly2024-04-18King, Christopher A Esq NEGOTIATION74Ivan Magalhaes
1021Misaki D KolmetzArgentina2024-04-16Truhlar And Truhlar Attys NEGOTIATION94Onyama Limba
1022Arvin X OldroydUnited Kingdom2024-04-23Truhlar And Truhlar Attys RENEWAL13Amy Elsner
1023Jennifer F PaprockiSpain2024-04-04Chemel, James L Cpa PROPOSAL31Stephen Shaw
1024Jeanfrancois D SchemmerGermany2024-03-30Chapman, Ross E Esq NEGOTIATION6Asiya Javayant
1025Julie V BologniaFrance2024-04-19Rousseaux, Michael Esq UNQUALIFIED37Amy Elsner
1026Aika C GarufiUnited Kingdom2024-03-25Rangoni Of Florence PROPOSAL60Amy Elsner
1027Jennifer F MacleadGermany2024-03-28Chapman, Ross E Esq RENEWAL21Amy Elsner
1028Juan V MaletJapan2024-04-18Benton, John B Jr NEGOTIATION37Amy Elsner
1029Aditya K ChuiBrazil2024-04-12Chemel, James L Cpa PROPOSAL93Bernardo Dominic
1030Ivar S RimIndia2024-04-06Chapman, Ross E Esq QUALIFIED12Ioni Bowcher
1031Wickens H SlusarskiItaly2024-04-20King, Christopher A Esq QUALIFIED17Bernardo Dominic
1032Izzy T BriddickItaly2024-03-31Feiner Bros UNQUALIFIED29Ivan Magalhaes
1033Deepesh T VocelkaCanada2024-04-14Chapman, Ross E Esq NEW37Anna Fali
1034Leja Q MaletCanada2024-04-13Commercial Press NEGOTIATION77Asiya Javayant
1035Mayumi D FlosiRussia2024-03-28Feltz Printing Service PROPOSAL35Anna Fali
1036Smith P MaletCanada2024-04-17Chanay, Jeffrey A Esq NEW1Amy Elsner
1037Salvatore L WieserSpain2024-04-15Chemel, James L Cpa NEW94Amy Elsner
1038Emily Q NestleFrance2024-04-17Rangoni Of Florence QUALIFIED58Elwin Sharvill
1039Octavia V GarufiIndia2024-04-09Morlong Associates NEGOTIATION54Onyama Limba
1040Silvio L IturbideAustralia2024-04-06Benton, John B Jr NEGOTIATION9Ivan Magalhaes
1041Claire X GarufiBrazil2024-04-20Dorl, James J Esq UNQUALIFIED27Stephen Shaw
1042David G RutaJapan2024-04-02King, Christopher A Esq QUALIFIED5Asiya Javayant
1043Clifford M WaycottBrazil2024-03-30Truhlar And Truhlar Attys PROPOSAL79Anna Fali
1044James P WieserItaly2024-04-04Chanay, Jeffrey A Esq RENEWAL8Amy Elsner
1045Leon Q CaldareraBrazil2024-04-15Rangoni Of Florence UNQUALIFIED46Ivan Magalhaes
1046Aditya U TollnerUnited Kingdom2024-03-29Chemel, James L Cpa QUALIFIED54Bernardo Dominic
1047Mayumi L DoeSpain2024-04-07Rousseaux, Michael Esq NEW52Ivan Magalhaes
1048James K VocelkaArgentina2024-04-08Buckley Miller Wright QUALIFIED88Amy Elsner
1049Jefferson N SaylorsSpain2024-04-15Chanay, Jeffrey A Esq RENEWAL80Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Aditya O DoeUnited KingdomXuxue Feng PROPOSAL
Munro K NickaJapanAnna Fali RENEWAL
Emily A MarrierIndiaOnyama Limba PROPOSAL
Jennifer T InouyeJapanIvan Magalhaes QUALIFIED
Smith O CampainAustraliaElwin Sharvill NEGOTIATION
Aditya C StensethAustraliaAnna Fali NEW
Ashley A PoquetteArgentinaElwin Sharvill UNQUALIFIED
Wickens M MarrierFranceStephen Shaw UNQUALIFIED
Greenwood E CaudyItalyAsiya Javayant NEGOTIATION
Rodrigues F KolmetzBrazilAsiya Javayant RENEWAL
Arvin M FigeroaArgentinaOnyama Limba NEGOTIATION
Leon N FollerArgentinaXuxue Feng NEW
Nicolas L SchemmerBrazilStephen Shaw NEGOTIATION
Isabel E SlusarskiJapanXuxue Feng NEW
Smith X StockhamUnited KingdomIvan Magalhaes NEGOTIATION
Costa Y SchemmerFranceIoni Bowcher RENEWAL
Johnson X BowleyAustraliaAmy Elsner NEGOTIATION
Wickens K AmigonFranceStephen Shaw QUALIFIED
Emily L CaudyArgentinaIoni Bowcher QUALIFIED
Alejandro Z KolmetzRussiaElwin Sharvill NEGOTIATION
Francesco V SlusarskiAustraliaAnna Fali NEGOTIATION
Julie L GillianArgentinaOnyama Limba PROPOSAL
Murillo J OldroydRussiaBernardo Dominic PROPOSAL
David K BriddickIndiaIoni Bowcher UNQUALIFIED
Maria C GauchoItalyBernardo Dominic PROPOSAL
Murillo O DoeRussiaIoni Bowcher NEGOTIATION
Jones F CampainUnited KingdomIoni Bowcher NEW
Cody A PaprockiRussiaOnyama Limba NEW
Mayumi U SchemmerJapanAsiya Javayant RENEWAL
Francesco U VocelkaItalyBernardo Dominic NEW
Clifford N RimItalyStephen Shaw RENEWAL
Claire K PoquetteGermanyIvan Magalhaes RENEWAL
Tony F DoeBrazilAmy Elsner QUALIFIED
Silvio P RulapaughGermanyOnyama Limba UNQUALIFIED
Misaki X KuskoUnited KingdomStephen Shaw UNQUALIFIED
Munro A RimUnited KingdomBernardo Dominic RENEWAL
Cody D WhobreyIndiaBernardo Dominic NEGOTIATION
Murillo X RimGermanyIoni Bowcher QUALIFIED
Leon Q FollerRussiaBernardo Dominic NEW
Mujtaba B DarakjyIndiaAnna Fali PROPOSAL
Aruna L RoysterItalyIoni Bowcher NEGOTIATION
Juan K CaldareraAustraliaAsiya Javayant NEW
Aditya X RulapaughCanadaElwin Sharvill QUALIFIED
Clifford Y GauchoAustraliaOnyama Limba PROPOSAL
Leon A FollerAustraliaAnna Fali UNQUALIFIED
Stacey O FlosiJapanAnna Fali RENEWAL
Isabel T PoquetteIndiaBernardo Dominic QUALIFIED
Isabel A WieserArgentinaElwin Sharvill PROPOSAL
Munro Y ChuiSpainElwin Sharvill RENEWAL
Arvin P SlusarskiItalyIvan Magalhaes NEW
Frozen Columns
Name
Sinclair G Darakjy
Wickens J Foller
James V Caudy
Murillo C Malet
Jefferson B Kusko
Kadeem E Ferencz
David X Nicka
Clifford I Tollner
Mayumi C Waycott
Cody L Kolmetz
Salvatore T Stenseth
Jones O Vocelka
Claire G Shinko
Aruna P Vocelka
Rodrigues K Albares
Antonio E Gillian
Sinclair J Ostrosky
Rodrigues G Venere
Mayumi H Chui
Maisha S Gaucho
Emily U Kolmetz
Maria G Amigon
Cody X Doe
Francesco R Poquette
Izzy G Briddick
Ricardo F Maclead
Munro C Marrier
Maisha G Slusarski
Wickens A Rim
Kaitlin I Rim
Mujtaba J Bowley
James U Perin
Alejandro V Poquette
James G Nestle
Nicolas A Nestle
Mayumi W Briddick
Sinclair Z Sergi
James G Caldarera
Tony P Gaucho
Smith G Slusarski
Ricardo S Garufi
David P Paprocki
Sinclair R Dilliard
Salvatore C Maclead
Murillo B Amigon
Jefferson U Glick
Jones N Nestle
Deepesh O Paprocki
Misaki B Saylors
Johnson X Whobrey
IdCountryDate
1000Germany2024-04-05
1001Australia2024-04-18
1002Australia2024-04-01
1003Germany2024-04-20
1004Australia2024-04-06
1005Brazil2024-03-29
1006Japan2024-03-26
1007Spain2024-04-10
1008Japan2024-03-25
1009United Kingdom2024-04-09
1010Brazil2024-04-18
1011Japan2024-04-19
1012Argentina2024-04-12
1013Brazil2024-04-20
1014Italy2024-04-12
1015Argentina2024-04-22
1016Germany2024-04-07
1017Canada2024-03-26
1018Spain2024-03-30
1019Brazil2024-04-15
1020Russia2024-04-14
1021Spain2024-04-05
1022Italy2024-03-30
1023Argentina2024-04-05
1024Germany2024-04-20
1025Canada2024-04-18
1026Canada2024-03-25
1027India2024-04-11
1028United Kingdom2024-03-28
1029India2024-04-19
1030Germany2024-04-03
1031France2024-04-22
1032India2024-04-19
1033France2024-04-07
1034France2024-03-30
1035Russia2024-04-04
1036Germany2024-03-25
1037Brazil2024-04-13
1038United Kingdom2024-03-31
1039Australia2024-03-25
1040Germany2024-04-16
1041Brazil2024-04-01
1042Argentina2024-04-19
1043Russia2024-04-09
1044India2024-04-13
1045Italy2024-04-19
1046Argentina2024-03-25
1047India2024-04-16
1048Germany2024-04-03
1049United Kingdom2024-04-22

On-Demand Data

NameIdCountryDate
Smith J Bolognia1000Canada2024-03-25
Kadeem K Oldroyd1001Japan2024-04-15
Munro V Bolognia1002Argentina2024-04-19
Jennifer L Ruta1003Germany2024-04-14
Chavez K Ferencz1004Brazil2024-04-12
Misaki X Bowley1005Brazil2024-04-10
Aika O Flosi1006Canada2024-04-13
Juan D Doe1007Japan2024-04-14
Rodrigues U Inouye1008Japan2024-04-14
Julie V Doe1009Argentina2024-04-10
Greenwood M Ruta1010Spain2024-04-15
Francesco A Campain1011Japan2024-03-30
Jeanfrancois A Nicka1012India2024-03-29
Alejandro F Perin1013Australia2024-04-05
Izzy S Albares1014Germany2024-04-05
James F Foller1015Australia2024-04-09
Adams Q Bowley1016Australia2024-04-11
Octavia Z Poquette1017Spain2024-04-16
Isabel D Gaucho1018Italy2024-04-08
Stacey H Chui1019Australia2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja C BowleySpainIoni Bowcher NEGOTIATION
Smith P CaldareraUnited KingdomXuxue Feng QUALIFIED
Mayumi G MacleadSpainXuxue Feng UNQUALIFIED
Munro G PoquetteSpainStephen Shaw UNQUALIFIED
Maria X PoquetteAustraliaOnyama Limba UNQUALIFIED
Ashley Z BriddickItalyXuxue Feng NEGOTIATION
Deepesh A DilliardRussiaBernardo Dominic NEW
Jennifer O FlosiBrazilStephen Shaw QUALIFIED
Tony O StockhamBrazilXuxue Feng QUALIFIED
Ivar U MaletSpainXuxue Feng NEW
Leja J VenereRussiaStephen Shaw NEW
Adams H SergiIndiaStephen Shaw PROPOSAL
Rodrigues Q DoeGermanyXuxue Feng PROPOSAL
Sinclair P KuskoAustraliaXuxue Feng NEW
Morrow Z NickaArgentinaAmy Elsner QUALIFIED
Murillo E StensethJapanElwin Sharvill NEW
Adams B CaldareraAustraliaIoni Bowcher PROPOSAL
Ashley S ButtUnited KingdomAsiya Javayant UNQUALIFIED
Francesco S SaylorsCanadaAnna Fali NEGOTIATION
Costa L FigeroaAustraliaIoni Bowcher RENEWAL
Francesco S AlbaresFranceXuxue Feng RENEWAL
Chavez C MarrierItalyOnyama Limba PROPOSAL
Aruna Y KolmetzRussiaAmy Elsner RENEWAL
Adams H MaletRussiaAsiya Javayant NEW
Deepesh L DoeUnited KingdomIoni Bowcher NEW
Johnson V VocelkaUnited KingdomXuxue Feng QUALIFIED
Clifford W MacleadArgentinaIvan Magalhaes UNQUALIFIED
Wickens E GillianBrazilAnna Fali NEGOTIATION
Emily H CampainItalyAsiya Javayant QUALIFIED
Julie S VenereRussiaAmy Elsner NEGOTIATION
Ashley G RoysterBrazilIoni Bowcher RENEWAL
Emily Q ChuiCanadaAnna Fali RENEWAL
Jennifer C CaudyRussiaIoni Bowcher NEGOTIATION
Murillo E RimSpainAnna Fali RENEWAL
Chavez R OldroydJapanStephen Shaw PROPOSAL
Salvatore S KolmetzJapanIvan Magalhaes RENEWAL
Izzy D GauchoBrazilElwin Sharvill PROPOSAL
Emily M TollnerArgentinaElwin Sharvill PROPOSAL
Kaitlin U MarrierRussiaXuxue Feng RENEWAL
David E InouyeSpainElwin Sharvill 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>