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
Deepesh C FlosiItalyIoni Bowcher NEGOTIATION
Kadeem I BowleyCanadaStephen Shaw PROPOSAL
James S DarakjyIndiaIvan Magalhaes PROPOSAL
Ivar D DoeSpainAnna Fali UNQUALIFIED
Smith R StockhamCanadaXuxue Feng NEW
Mayumi K PoquetteGermanyAmy Elsner PROPOSAL
Sinclair R CaldareraFranceBernardo Dominic RENEWAL
Leon N BowleyGermanyIvan Magalhaes RENEWAL
Faith Z FollerRussiaIoni Bowcher NEW
Ashley Y ButtUnited KingdomAsiya Javayant NEW
Octavia I PerinFranceAmy Elsner RENEWAL
Jeanfrancois S CampainGermanyIvan Magalhaes UNQUALIFIED
Leja E MarrierBrazilAmy Elsner NEGOTIATION
Smith N MaletArgentinaIvan Magalhaes UNQUALIFIED
Octavia J TollnerCanadaAsiya Javayant NEGOTIATION
Maisha T VocelkaBrazilAnna Fali UNQUALIFIED
Antonio W KolmetzRussiaOnyama Limba UNQUALIFIED
Juan Z CaudyItalyBernardo Dominic PROPOSAL
Arvin U RutaSpainIoni Bowcher UNQUALIFIED
Greenwood D RimItalyIoni Bowcher RENEWAL
Octavia D MaletJapanAnna Fali NEGOTIATION
Clifford O GarufiGermanyXuxue Feng NEGOTIATION
Maria I VocelkaAustraliaBernardo Dominic QUALIFIED
Izzy B WieserIndiaAsiya Javayant NEW
Juan Z MarrierBrazilStephen Shaw UNQUALIFIED
Aruna Q PerinSpainStephen Shaw RENEWAL
Johnson M KolmetzBrazilElwin Sharvill QUALIFIED
Jennifer P KuskoCanadaAnna Fali NEGOTIATION
Nicolas O RutaGermanyStephen Shaw NEGOTIATION
Cody E MaletGermanyElwin Sharvill NEGOTIATION
Morrow B GauchoFranceAnna Fali PROPOSAL
Johnson M TollnerAustraliaBernardo Dominic RENEWAL
Murillo G AlbaresJapanOnyama Limba NEW
Maisha K PoquetteUnited KingdomAmy Elsner NEGOTIATION
Murillo M TollnerGermanyXuxue Feng NEW
Adams D GauchoRussiaElwin Sharvill QUALIFIED
Faith R WaycottFranceAmy Elsner QUALIFIED
Arvin Z GillianCanadaIvan Magalhaes PROPOSAL
Aruna S MaletCanadaBernardo Dominic NEGOTIATION
Morrow M RulapaughIndiaElwin Sharvill NEGOTIATION
Stacey Y FollerItalyAnna Fali NEGOTIATION
Sinclair A MaletBrazilOnyama Limba QUALIFIED
Deepesh Q RutaJapanIvan Magalhaes RENEWAL
Aditya V VenereBrazilIoni Bowcher PROPOSAL
Arvin A OldroydItalyAmy Elsner QUALIFIED
Silvio C DoeRussiaAnna Fali UNQUALIFIED
Jeanfrancois Y MaletItalyOnyama Limba UNQUALIFIED
Jeanfrancois F AmigonFranceAsiya Javayant QUALIFIED
Costa O SchemmerItalyIoni Bowcher UNQUALIFIED
Julie O BowleyAustraliaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Munro H OldroydCanadaAsiya Javayant UNQUALIFIED
Octavia A VocelkaJapanAnna Fali QUALIFIED
Tony T FerenczItalyElwin Sharvill QUALIFIED
Smith D RulapaughCanadaElwin Sharvill UNQUALIFIED
Julie T FlosiJapanIoni Bowcher QUALIFIED
Morrow M SchemmerRussiaXuxue Feng NEW
James W CampainBrazilAsiya Javayant UNQUALIFIED
Cody H BriddickRussiaAmy Elsner UNQUALIFIED
Jones T IturbideRussiaStephen Shaw UNQUALIFIED
Kaitlin N NestleUnited KingdomBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford H OldroydJapan2024-02-26Morlong Associates UNQUALIFIED2Bernardo Dominic
1001Emily C RutaArgentina2024-03-06Morlong Associates UNQUALIFIED47Ioni Bowcher
1002Aruna P RulapaughIndia2024-03-11Feiner Bros QUALIFIED9Amy Elsner
1003Juan Y WieserFrance2024-02-21Feiner Bros NEW73Anna Fali
1004Octavia X KolmetzGermany2024-03-09Chemel, James L Cpa RENEWAL15Ivan Magalhaes
1005Maisha K RoysterAustralia2024-03-02Chanay, Jeffrey A Esq UNQUALIFIED97Elwin Sharvill
1006Salvatore C IturbideUnited Kingdom2024-03-05Chemel, James L Cpa NEGOTIATION40Ioni Bowcher
1007Leon W DilliardRussia2024-02-25Chanay, Jeffrey A Esq NEW91Elwin Sharvill
1008Adams D RulapaughUnited Kingdom2024-03-07Chanay, Jeffrey A Esq UNQUALIFIED54Xuxue Feng
1009Juan F ButtCanada2024-03-17Dorl, James J Esq PROPOSAL21Elwin Sharvill
1010Claire E SergiBrazil2024-03-03Chapman, Ross E Esq PROPOSAL10Ivan Magalhaes
1011Aika G CampainSpain2024-03-11Feiner Bros NEW87Bernardo Dominic
1012Clifford B BriddickItaly2024-03-11King, Christopher A Esq UNQUALIFIED30Ioni Bowcher
1013Clifford L TollnerJapan2024-03-15Feiner Bros UNQUALIFIED52Amy Elsner
1014Smith H RulapaughItaly2024-02-27King, Christopher A Esq RENEWAL61Amy Elsner
1015Aika I GlickJapan2024-02-20Truhlar And Truhlar Attys NEGOTIATION23Stephen Shaw
1016Julie U MarrierSpain2024-02-22Feltz Printing Service RENEWAL96Anna Fali
1017David Y TollnerArgentina2024-02-27Rousseaux, Michael Esq PROPOSAL61Anna Fali
1018Leja R RoysterRussia2024-03-13Buckley Miller Wright QUALIFIED73Anna Fali
1019Kadeem C ShinkoItaly2024-02-28King, Christopher A Esq NEGOTIATION76Ioni Bowcher
1020Antonio D MaletUnited Kingdom2024-03-16Chapman, Ross E Esq NEGOTIATION38Ivan Magalhaes
1021Jennifer C PaprockiCanada2024-02-28Chapman, Ross E Esq RENEWAL9Ivan Magalhaes
1022Ricardo S IturbideRussia2024-02-27Rousseaux, Michael Esq QUALIFIED76Amy Elsner
1023Julie L TollnerIndia2024-03-01Rousseaux, Michael Esq NEW67Elwin Sharvill
1024Isabel Y GauchoJapan2024-02-25Rousseaux, Michael Esq PROPOSAL11Stephen Shaw
1025Deepesh A AmigonIndia2024-03-05Morlong Associates NEW8Stephen Shaw
1026Cody A ButtFrance2024-02-21Commercial Press NEW2Amy Elsner
1027Costa V PoquetteFrance2024-02-19Chemel, James L Cpa NEGOTIATION72Onyama Limba
1028Antonio Y RoysterJapan2024-03-18Truhlar And Truhlar Attys QUALIFIED97Amy Elsner
1029Isabel H FlosiJapan2024-03-18King, Christopher A Esq RENEWAL11Ivan Magalhaes
1030Wickens B ButtBrazil2024-02-18Commercial Press PROPOSAL27Anna Fali
1031Adams J NestleCanada2024-03-12Rousseaux, Michael Esq NEW90Onyama Limba
1032Emily W RimArgentina2024-03-13Rousseaux, Michael Esq NEW31Stephen Shaw
1033Silvio E OstroskyUnited Kingdom2024-03-06Chanay, Jeffrey A Esq NEW26Anna Fali
1034David R InouyeItaly2024-03-14King, Christopher A Esq PROPOSAL94Stephen Shaw
1035Cody S FigeroaUnited Kingdom2024-02-18Morlong Associates PROPOSAL78Asiya Javayant
1036Greenwood O ShinkoItaly2024-02-29Commercial Press NEGOTIATION1Amy Elsner
1037Maisha G CampainGermany2024-03-09Commercial Press NEGOTIATION40Onyama Limba
1038Cody K CampainJapan2024-03-11Truhlar And Truhlar Attys NEW70Anna Fali
1039Juan G OldroydArgentina2024-02-21Truhlar And Truhlar Attys PROPOSAL46Ivan Magalhaes
1040Morrow D InouyeUnited Kingdom2024-02-27Chemel, James L Cpa NEGOTIATION87Xuxue Feng
1041Alejandro Q PoquetteFrance2024-03-05Feiner Bros RENEWAL35Ivan Magalhaes
1042Smith N PoquetteRussia2024-02-19Rousseaux, Michael Esq RENEWAL71Amy Elsner
1043Kadeem T FerenczUnited Kingdom2024-03-11Chemel, James L Cpa UNQUALIFIED34Anna Fali
1044Smith J BologniaAustralia2024-02-26Rousseaux, Michael Esq RENEWAL96Anna Fali
1045Emily Q ChuiAustralia2024-02-28Commercial Press RENEWAL38Bernardo Dominic
1046Claire E CaldareraRussia2024-03-06Printing Dimensions PROPOSAL97Asiya Javayant
1047Aika F VenereGermany2024-02-26Feltz Printing Service QUALIFIED9Ivan Magalhaes
1048Ashley X BriddickIndia2024-03-16Rousseaux, Michael Esq NEGOTIATION78Ivan Magalhaes
1049Rodrigues T PoquetteUnited Kingdom2024-02-27Buckley Miller Wright PROPOSAL93Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
James G RutaAustraliaXuxue Feng UNQUALIFIED
Sinclair F SaylorsAustraliaIoni Bowcher PROPOSAL
Octavia A NickaIndiaAnna Fali NEGOTIATION
Stacey R RoysterSpainAmy Elsner QUALIFIED
Ivar M AlbaresFranceAmy Elsner UNQUALIFIED
Mujtaba I IturbideGermanyOnyama Limba RENEWAL
Izzy F GarufiItalyIvan Magalhaes NEGOTIATION
Aika D WaycottBrazilIvan Magalhaes NEW
Ivar B FigeroaItalyOnyama Limba NEW
Sinclair S SlusarskiUnited KingdomOnyama Limba NEW
Clifford B OstroskyBrazilOnyama Limba NEW
Tony A GillianBrazilAnna Fali NEGOTIATION
Leja K SaylorsItalyBernardo Dominic NEGOTIATION
Aditya C SergiRussiaStephen Shaw NEW
Kadeem X PaprockiSpainXuxue Feng UNQUALIFIED
Sinclair J FigeroaUnited KingdomOnyama Limba NEGOTIATION
Stacey Q InouyeAustraliaIvan Magalhaes UNQUALIFIED
Sinclair T PerinIndiaStephen Shaw NEW
Jefferson E NestleRussiaIvan Magalhaes RENEWAL
Maisha A IturbideBrazilBernardo Dominic QUALIFIED
Greenwood U MaletCanadaIoni Bowcher RENEWAL
James Y RimGermanyAmy Elsner QUALIFIED
Smith P DarakjyCanadaOnyama Limba UNQUALIFIED
Ashley Q ChuiAustraliaOnyama Limba PROPOSAL
Chavez J FigeroaUnited KingdomBernardo Dominic RENEWAL
Jefferson P NickaUnited KingdomElwin Sharvill NEGOTIATION
Clifford G ChuiSpainBernardo Dominic RENEWAL
Mayumi Q GillianFranceBernardo Dominic QUALIFIED
Aruna M PerinUnited KingdomIoni Bowcher PROPOSAL
Emily I MarrierBrazilAsiya Javayant RENEWAL
Kaitlin L ButtUnited KingdomXuxue Feng UNQUALIFIED
Ricardo P ButtSpainIoni Bowcher UNQUALIFIED
Kaitlin T CampainRussiaAsiya Javayant NEW
Aditya Y SchemmerGermanyAmy Elsner RENEWAL
Greenwood A KuskoGermanyOnyama Limba RENEWAL
Wickens H ChuiGermanyElwin Sharvill RENEWAL
Alejandro X RoysterGermanyElwin Sharvill NEW
Izzy H VenereGermanyStephen Shaw QUALIFIED
Octavia F BriddickUnited KingdomBernardo Dominic QUALIFIED
Isabel A NickaIndiaAnna Fali NEGOTIATION
Kadeem M StensethSpainXuxue Feng NEW
Claire Y AlbaresBrazilAsiya Javayant RENEWAL
Tony N InouyeGermanyIoni Bowcher NEW
Misaki R VocelkaGermanyAsiya Javayant NEGOTIATION
Ashley M MaletJapanIoni Bowcher NEGOTIATION
Kadeem V BowleyCanadaOnyama Limba NEW
Johnson Z VenereAustraliaAmy Elsner NEGOTIATION
Greenwood L SergiSpainAnna Fali UNQUALIFIED
Juan G PaprockiItalyIvan Magalhaes UNQUALIFIED
David B GlickAustraliaAmy Elsner RENEWAL
Frozen Columns
Name
Deepesh A Bolognia
Jefferson L Bolognia
Silvio J Nicka
Faith Q Gaucho
Alejandro S Chui
James K Wieser
Leja Q Flosi
Maria H Whobrey
Leja I Waycott
Misaki E Oldroyd
Antonio W Foller
Claire J Perin
Misaki E Vocelka
James X Stockham
Silvio F Bolognia
Antonio Y Bowley
Munro N Saylors
Murillo C Dilliard
Juan W Vocelka
Claire K Stenseth
Misaki F Marrier
Wickens U Garufi
Adams F Kusko
Mayumi V Briddick
Johnson Z Chui
Leon V Nicka
Ashley F Malet
Faith J Bowley
Costa G Paprocki
Ivar E Doe
Jennifer J Kusko
Leja T Marrier
Stacey W Poquette
Cody U Inouye
Octavia F Figeroa
Kaitlin A Stenseth
Aruna A Foller
Munro Z Whobrey
Nicolas I Bowley
Alejandro F Doe
Leon L Maclead
Morrow Z Saylors
Deepesh Z Royster
Sinclair J Briddick
Salvatore L Royster
Octavia K Morasca
Claire T Glick
Salvatore N Perin
Aruna U Bolognia
Mujtaba O Schemmer
IdCountryDate
1000Brazil2024-02-26
1001Italy2024-03-04
1002Germany2024-03-13
1003Spain2024-03-15
1004Japan2024-02-25
1005Canada2024-03-16
1006Russia2024-03-02
1007Germany2024-03-15
1008India2024-02-23
1009Japan2024-02-28
1010Brazil2024-02-29
1011Australia2024-03-05
1012Canada2024-03-12
1013Canada2024-03-12
1014Japan2024-02-18
1015Brazil2024-03-09
1016Argentina2024-03-09
1017United Kingdom2024-03-08
1018India2024-02-18
1019Canada2024-02-19
1020Argentina2024-03-05
1021Russia2024-02-24
1022Canada2024-02-27
1023Russia2024-03-13
1024Russia2024-02-20
1025Australia2024-02-19
1026Italy2024-03-11
1027India2024-03-18
1028Germany2024-02-18
1029India2024-02-29
1030Brazil2024-02-27
1031Germany2024-03-15
1032Canada2024-03-08
1033France2024-02-21
1034Germany2024-03-17
1035France2024-03-14
1036Spain2024-03-04
1037Spain2024-03-15
1038Germany2024-03-07
1039Argentina2024-02-27
1040France2024-03-02
1041Argentina2024-03-04
1042Italy2024-03-10
1043United Kingdom2024-03-09
1044Brazil2024-02-18
1045Spain2024-02-25
1046Canada2024-03-15
1047Australia2024-03-03
1048Spain2024-03-10
1049Canada2024-02-21

On-Demand Data

NameIdCountryDate
Deepesh Z Schemmer1000Italy2024-03-18
Octavia D Venere1001Italy2024-03-07
Murillo A Bowley1002Argentina2024-02-20
Aruna K Venere1003Canada2024-03-16
James R Poquette1004India2024-02-27
Chavez F Gillian1005India2024-03-18
Wickens G Marrier1006India2024-03-12
Ashley N Caudy1007India2024-02-21
Silvio N Schemmer1008Argentina2024-03-11
Murillo G Slusarski1009Australia2024-02-23
David R Bolognia1010Japan2024-03-09
Maria I Gillian1011Japan2024-03-10
Smith L Morasca1012Germany2024-02-29
Darci F Nestle1013Italy2024-02-25
Antonio C Figeroa1014Japan2024-03-18
Sinclair Q Stenseth1015Canada2024-02-21
Leja I Shinko1016Spain2024-03-06
Faith O Bowley1017Brazil2024-03-17
Faith H Nestle1018Canada2024-02-18
Aika A Vocelka1019India2024-03-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily K BologniaRussiaStephen Shaw RENEWAL
Ivar Z GarufiSpainElwin Sharvill UNQUALIFIED
Jones U WieserJapanOnyama Limba RENEWAL
Aruna V RoysterAustraliaAnna Fali UNQUALIFIED
Izzy N PerinIndiaStephen Shaw RENEWAL
Salvatore E RimGermanyStephen Shaw QUALIFIED
Francesco B IturbideFranceAnna Fali UNQUALIFIED
Johnson G AlbaresJapanAsiya Javayant RENEWAL
Chavez S MaletItalyBernardo Dominic NEW
Darci L DoeGermanyXuxue Feng RENEWAL
Munro U WieserIndiaXuxue Feng UNQUALIFIED
Aditya B AlbaresAustraliaAsiya Javayant RENEWAL
Ivar Q FigeroaGermanyOnyama Limba PROPOSAL
Murillo X OldroydBrazilElwin Sharvill RENEWAL
Emily P GillianFranceXuxue Feng NEW
Jennifer Y VocelkaCanadaStephen Shaw NEGOTIATION
Sinclair H SlusarskiFranceIoni Bowcher NEW
Nicolas X OstroskyAustraliaAsiya Javayant NEGOTIATION
Alejandro Y FlosiCanadaAnna Fali PROPOSAL
Leja L OstroskyRussiaStephen Shaw UNQUALIFIED
Tony R OldroydJapanAsiya Javayant UNQUALIFIED
Jeanfrancois E BriddickJapanIoni Bowcher RENEWAL
Munro V MacleadArgentinaAnna Fali QUALIFIED
Aika N BriddickArgentinaBernardo Dominic PROPOSAL
Chavez I RulapaughIndiaAsiya Javayant RENEWAL
Juan K MarrierUnited KingdomOnyama Limba NEGOTIATION
Izzy F AmigonCanadaXuxue Feng NEW
Stacey A WhobreyUnited KingdomIoni Bowcher UNQUALIFIED
Jones T StensethIndiaAnna Fali RENEWAL
Cody J WaycottRussiaStephen Shaw QUALIFIED
Ashley X FerenczJapanStephen Shaw RENEWAL
Julie Y FollerAustraliaElwin Sharvill NEGOTIATION
Jefferson O AmigonArgentinaAmy Elsner PROPOSAL
Izzy N RoysterGermanyXuxue Feng UNQUALIFIED
Leon G PoquetteFranceAmy Elsner RENEWAL
Antonio J CaudyJapanAmy Elsner UNQUALIFIED
Murillo M SergiIndiaXuxue Feng PROPOSAL
Leja O OstroskyArgentinaElwin Sharvill NEGOTIATION
Maisha Y AlbaresBrazilAmy Elsner NEW
Adams I ChuiArgentinaIoni Bowcher 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>