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
David H WieserRussiaAsiya Javayant QUALIFIED
Greenwood F KolmetzSpainAnna Fali NEGOTIATION
Octavia S OstroskyJapanElwin Sharvill RENEWAL
Morrow G DarakjyIndiaIoni Bowcher PROPOSAL
Maisha T SergiAustraliaStephen Shaw QUALIFIED
Leon B MarrierSpainOnyama Limba UNQUALIFIED
Julie K StensethJapanBernardo Dominic PROPOSAL
Isabel T OstroskyArgentinaAmy Elsner RENEWAL
Aditya D WieserGermanyBernardo Dominic NEW
Kadeem L ButtUnited KingdomStephen Shaw NEW
James N SergiJapanXuxue Feng QUALIFIED
Deepesh V SchemmerFranceIoni Bowcher RENEWAL
Kaitlin J MorascaFranceAmy Elsner QUALIFIED
Morrow Q GillianGermanyAsiya Javayant NEGOTIATION
James H GillianCanadaAnna Fali QUALIFIED
Mayumi M RimAustraliaStephen Shaw RENEWAL
Maisha G BriddickSpainIvan Magalhaes QUALIFIED
Murillo H MacleadBrazilAmy Elsner UNQUALIFIED
Ashley H NickaBrazilAsiya Javayant PROPOSAL
Claire E DilliardJapanIoni Bowcher NEW
Kaitlin F PoquetteFranceAsiya Javayant PROPOSAL
Wickens F SaylorsIndiaAnna Fali PROPOSAL
Aditya N ChuiRussiaBernardo Dominic NEGOTIATION
Chavez H MorascaSpainAsiya Javayant RENEWAL
Chavez L RutaRussiaOnyama Limba PROPOSAL
Jones L DilliardUnited KingdomBernardo Dominic PROPOSAL
Ricardo E NickaArgentinaAnna Fali PROPOSAL
David O CampainIndiaIvan Magalhaes NEW
Chavez Q PerinIndiaElwin Sharvill QUALIFIED
Kadeem S OldroydGermanyStephen Shaw NEW
Aditya A SchemmerItalyIvan Magalhaes NEW
Munro Y BologniaUnited KingdomIoni Bowcher PROPOSAL
Silvio Y FlosiFranceBernardo Dominic RENEWAL
Ivar B ButtArgentinaOnyama Limba QUALIFIED
Alejandro W WaycottRussiaBernardo Dominic NEGOTIATION
Deepesh P FerenczBrazilAnna Fali NEGOTIATION
Costa R GauchoArgentinaStephen Shaw PROPOSAL
Julie B RimJapanAsiya Javayant NEGOTIATION
Jefferson K IturbideItalyElwin Sharvill NEGOTIATION
Rodrigues C IturbideItalyOnyama Limba NEGOTIATION
Sinclair M MaletAustraliaOnyama Limba PROPOSAL
Johnson R SergiBrazilBernardo Dominic RENEWAL
Costa T SchemmerFranceOnyama Limba PROPOSAL
Murillo E MacleadGermanyBernardo Dominic NEW
Faith R FlosiItalyStephen Shaw QUALIFIED
Aditya M MacleadSpainOnyama Limba UNQUALIFIED
Ricardo U AlbaresCanadaStephen Shaw RENEWAL
Mayumi G FollerIndiaAsiya Javayant NEW
Costa S KolmetzAustraliaStephen Shaw RENEWAL
Stacey M WhobreyCanadaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Julie C StockhamAustraliaIvan Magalhaes QUALIFIED
Rodrigues B StensethGermanyIoni Bowcher NEGOTIATION
Izzy W PaprockiCanadaIoni Bowcher NEW
Morrow X ButtCanadaXuxue Feng NEW
Jennifer N ButtRussiaElwin Sharvill UNQUALIFIED
Aruna E WaycottRussiaXuxue Feng UNQUALIFIED
Maisha P WaycottUnited KingdomIoni Bowcher PROPOSAL
Jones M VenereUnited KingdomAnna Fali RENEWAL
Aruna Z PoquetteCanadaAnna Fali NEGOTIATION
Rodrigues P MacleadCanadaElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Arvin U DilliardUnited Kingdom2024-04-17Chemel, James L Cpa PROPOSAL73Onyama Limba
1001Jefferson U BriddickArgentina2024-04-19Truhlar And Truhlar Attys QUALIFIED66Anna Fali
1002Emily F ChuiFrance2024-03-31Commercial Press QUALIFIED70Stephen Shaw
1003Isabel F OstroskySpain2024-04-19Buckley Miller Wright NEGOTIATION16Elwin Sharvill
1004Leja I OstroskyBrazil2024-04-18Rangoni Of Florence QUALIFIED16Ivan Magalhaes
1005Johnson Y WieserArgentina2024-04-16King, Christopher A Esq UNQUALIFIED39Elwin Sharvill
1006Nicolas O MarrierSpain2024-04-01Morlong Associates NEGOTIATION33Ivan Magalhaes
1007Octavia I SaylorsCanada2024-04-20Rousseaux, Michael Esq UNQUALIFIED57Anna Fali
1008Smith A VocelkaRussia2024-04-25Morlong Associates PROPOSAL23Onyama Limba
1009Aditya T MarrierJapan2024-04-07King, Christopher A Esq PROPOSAL33Elwin Sharvill
1010Misaki A StockhamGermany2024-04-11Rousseaux, Michael Esq QUALIFIED91Ioni Bowcher
1011Johnson K CaudyRussia2024-04-05Commercial Press NEW37Bernardo Dominic
1012Silvio Y VocelkaItaly2024-04-04Dorl, James J Esq NEGOTIATION85Ivan Magalhaes
1013Jefferson J AmigonFrance2024-04-15Feltz Printing Service PROPOSAL86Amy Elsner
1014Aruna F PaprockiArgentina2024-04-18Buckley Miller Wright QUALIFIED9Amy Elsner
1015Tony S AlbaresFrance2024-04-16Truhlar And Truhlar Attys PROPOSAL88Anna Fali
1016Morrow C KolmetzGermany2024-04-28Feiner Bros PROPOSAL9Anna Fali
1017Leon K SlusarskiBrazil2024-04-25Rousseaux, Michael Esq RENEWAL86Ioni Bowcher
1018Juan U RimRussia2024-04-24Benton, John B Jr NEW25Ioni Bowcher
1019Kaitlin I RutaAustralia2024-04-21Benton, John B Jr NEGOTIATION97Onyama Limba
1020Cody K SergiFrance2024-04-26King, Christopher A Esq PROPOSAL81Anna Fali
1021Kaitlin N MaletAustralia2024-04-22King, Christopher A Esq PROPOSAL5Onyama Limba
1022Ivar M RimRussia2024-04-12Truhlar And Truhlar Attys QUALIFIED51Ioni Bowcher
1023Smith D BriddickSpain2024-04-22Buckley Miller Wright NEW96Onyama Limba
1024Octavia G WhobreySpain2024-04-04Benton, John B Jr RENEWAL99Asiya Javayant
1025Ivar T ButtAustralia2024-04-12Chanay, Jeffrey A Esq RENEWAL35Stephen Shaw
1026Antonio W AlbaresBrazil2024-04-17Truhlar And Truhlar Attys UNQUALIFIED93Bernardo Dominic
1027Mayumi Y BowleyIndia2024-04-25Chanay, Jeffrey A Esq PROPOSAL91Ivan Magalhaes
1028Ivar V OstroskyArgentina2024-04-03Benton, John B Jr NEGOTIATION58Xuxue Feng
1029Octavia F BowleyFrance2024-04-04Rousseaux, Michael Esq RENEWAL71Xuxue Feng
1030Salvatore M GlickSpain2024-04-15Buckley Miller Wright NEGOTIATION80Amy Elsner
1031Alejandro X WaycottCanada2024-04-23Dorl, James J Esq PROPOSAL8Stephen Shaw
1032Silvio S BriddickCanada2024-04-13Feiner Bros PROPOSAL27Ivan Magalhaes
1033Wickens S GillianUnited Kingdom2024-04-13Rousseaux, Michael Esq QUALIFIED36Stephen Shaw
1034Silvio K FollerCanada2024-04-17Chanay, Jeffrey A Esq RENEWAL82Stephen Shaw
1035Aruna N MaletGermany2024-04-02Dorl, James J Esq UNQUALIFIED79Amy Elsner
1036Francesco P MarrierSpain2024-04-02Benton, John B Jr NEW45Ivan Magalhaes
1037Costa E KuskoIndia2024-04-01Chapman, Ross E Esq UNQUALIFIED91Anna Fali
1038Leon N MaletJapan2024-04-26Buckley Miller Wright UNQUALIFIED67Onyama Limba
1039James Y CaldareraBrazil2024-04-08Truhlar And Truhlar Attys PROPOSAL30Ivan Magalhaes
1040Ashley T FlosiArgentina2024-04-25Chanay, Jeffrey A Esq NEGOTIATION84Ioni Bowcher
1041Murillo W StockhamFrance2024-04-01King, Christopher A Esq UNQUALIFIED87Ivan Magalhaes
1042Costa Q MorascaUnited Kingdom2024-04-27Chanay, Jeffrey A Esq NEGOTIATION50Stephen Shaw
1043Sinclair P FigeroaArgentina2024-04-12Dorl, James J Esq QUALIFIED22Onyama Limba
1044Murillo T FigeroaUnited Kingdom2024-04-15Dorl, James J Esq RENEWAL72Bernardo Dominic
1045Aditya H TollnerArgentina2024-04-20Commercial Press QUALIFIED4Bernardo Dominic
1046Antonio V MorascaItaly2024-04-03Chapman, Ross E Esq NEGOTIATION15Amy Elsner
1047Ivar F VocelkaJapan2024-04-23Commercial Press QUALIFIED63Ivan Magalhaes
1048Silvio K SergiGermany2024-04-05Morlong Associates NEW75Onyama Limba
1049Nicolas C DarakjyIndia2024-04-22Chemel, James L Cpa UNQUALIFIED40Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba H RimFranceOnyama Limba RENEWAL
Silvio C StockhamAustraliaIvan Magalhaes PROPOSAL
Misaki K MarrierSpainStephen Shaw PROPOSAL
Francesco G BowleyAustraliaStephen Shaw RENEWAL
Aruna Q CaudyAustraliaAsiya Javayant RENEWAL
Maria I OldroydSpainStephen Shaw QUALIFIED
Arvin H RutaUnited KingdomStephen Shaw UNQUALIFIED
Ivar A FerenczBrazilIvan Magalhaes UNQUALIFIED
Misaki B PoquetteBrazilIvan Magalhaes RENEWAL
Emily M AmigonUnited KingdomAnna Fali PROPOSAL
Octavia J RulapaughArgentinaAsiya Javayant NEGOTIATION
Arvin M SaylorsGermanyAnna Fali NEGOTIATION
Claire H OldroydFranceIoni Bowcher NEGOTIATION
Antonio K ChuiGermanyStephen Shaw QUALIFIED
Faith Z PoquetteItalyAnna Fali NEW
Munro D PerinAustraliaAsiya Javayant PROPOSAL
Stacey C BriddickAustraliaBernardo Dominic QUALIFIED
Rodrigues D WhobreyGermanyElwin Sharvill NEW
Antonio M FollerGermanyAnna Fali UNQUALIFIED
Octavia Q StensethFranceIoni Bowcher NEGOTIATION
Emily M FigeroaFranceStephen Shaw RENEWAL
Isabel E FigeroaAustraliaAmy Elsner NEW
Kadeem T MacleadItalyXuxue Feng NEGOTIATION
Jefferson B MaletAustraliaStephen Shaw NEW
Johnson F PaprockiSpainOnyama Limba UNQUALIFIED
Jones Z BriddickCanadaAnna Fali NEGOTIATION
Munro V AlbaresGermanyBernardo Dominic RENEWAL
Ashley B SergiSpainElwin Sharvill PROPOSAL
Darci J PoquetteJapanIvan Magalhaes PROPOSAL
Kadeem H KuskoJapanAsiya Javayant NEW
Murillo F RutaRussiaIvan Magalhaes NEW
Wickens E MaletCanadaElwin Sharvill PROPOSAL
Munro K RimRussiaAsiya Javayant RENEWAL
Salvatore Q PaprockiItalyAsiya Javayant UNQUALIFIED
Maria G CampainCanadaXuxue Feng PROPOSAL
Kadeem I TollnerUnited KingdomAnna Fali NEGOTIATION
Maria K MorascaBrazilAnna Fali PROPOSAL
Salvatore H CampainSpainBernardo Dominic NEW
Chavez C CaldareraGermanyAnna Fali QUALIFIED
Cody C AmigonBrazilAsiya Javayant PROPOSAL
Johnson I DoeJapanXuxue Feng UNQUALIFIED
Juan K WhobreyJapanAsiya Javayant NEW
Francesco Z TollnerArgentinaElwin Sharvill NEW
Tony F MaletAustraliaBernardo Dominic UNQUALIFIED
Arvin E GarufiIndiaBernardo Dominic RENEWAL
Salvatore B AmigonSpainAnna Fali NEW
Kaitlin T MaletRussiaIoni Bowcher NEW
Francesco L ChuiAustraliaXuxue Feng PROPOSAL
Deepesh M MorascaRussiaIvan Magalhaes UNQUALIFIED
Clifford M WhobreyBrazilIvan Magalhaes QUALIFIED
Frozen Columns
Name
Julie V Foller
Tony Y Inouye
Izzy H Saylors
Murillo V Maclead
Jones Z Slusarski
Leja U Glick
Johnson Z Waycott
Isabel G Marrier
James P Vocelka
Deepesh R Morasca
Jones G Flosi
Clifford A Bowley
Deepesh Z Nicka
Salvatore K Albares
Kadeem G Rulapaugh
Deepesh E Saylors
James N Inouye
Ivar D Oldroyd
David F Rulapaugh
Smith W Shinko
Silvio M Paprocki
Faith X Shinko
Ashley T Gaucho
Mayumi G Rulapaugh
Munro H Stenseth
James Q Bowley
Rodrigues B Chui
Jennifer F Figeroa
Chavez G Flosi
Faith S Shinko
Sinclair U Maclead
Mujtaba C Malet
Darci D Slusarski
Jefferson P Gaucho
Mayumi G Foller
Jefferson O Darakjy
Smith J Inouye
Tony S Rim
Izzy P Gillian
Clifford G Dilliard
Stacey N Kusko
Costa K Rulapaugh
Adams G Tollner
Munro R Kolmetz
Silvio I Campain
Mujtaba B Stockham
Rodrigues P Vocelka
Costa T Venere
Isabel Q Bowley
Costa S Glick
IdCountryDate
1000India2024-04-13
1001Russia2024-04-27
1002Spain2024-04-01
1003Spain2024-04-11
1004Germany2024-04-26
1005Russia2024-04-10
1006Italy2024-04-02
1007Italy2024-04-08
1008India2024-04-25
1009Canada2024-04-20
1010Japan2024-04-04
1011Spain2024-04-12
1012Argentina2024-04-04
1013Japan2024-04-12
1014India2024-04-26
1015Argentina2024-04-27
1016Spain2024-04-07
1017Russia2024-04-17
1018Japan2024-04-12
1019India2024-04-03
1020Brazil2024-04-20
1021Argentina2024-04-01
1022Spain2024-04-22
1023Spain2024-04-26
1024United Kingdom2024-04-22
1025Italy2024-04-18
1026Germany2024-04-13
1027United Kingdom2024-04-03
1028Brazil2024-04-08
1029France2024-04-10
1030Spain2024-04-03
1031Russia2024-04-22
1032Japan2024-04-09
1033Japan2024-04-07
1034United Kingdom2024-03-30
1035Spain2024-04-16
1036Italy2024-04-14
1037France2024-03-31
1038Australia2024-04-27
1039Italy2024-04-24
1040Argentina2024-04-11
1041Argentina2024-04-28
1042Germany2024-04-02
1043Germany2024-04-02
1044Russia2024-04-21
1045Germany2024-04-01
1046Brazil2024-04-17
1047Germany2024-04-28
1048Italy2024-04-07
1049Japan2024-04-11

On-Demand Data

NameIdCountryDate
Munro D Figeroa1000Canada2024-04-27
Kadeem B Wieser1001India2024-04-17
Stacey S Perin1002United Kingdom2024-04-21
Chavez A Nicka1003India2024-04-27
Jennifer W Briddick1004Russia2024-04-26
Maria D Ruta1005Brazil2024-04-01
Isabel C Iturbide1006Brazil2024-04-15
Arvin P Rulapaugh1007United Kingdom2024-04-04
Kaitlin V Bowley1008Argentina2024-04-02
Clifford C Amigon1009Brazil2024-04-04
Ricardo M Oldroyd1010Italy2024-04-07
Izzy S Schemmer1011India2024-03-31
Salvatore R Venere1012Australia2024-04-10
Tony V Doe1013India2024-04-02
Morrow F Waycott1014Australia2024-04-18
Octavia C Ferencz1015India2024-03-31
Antonio Y Bolognia1016Italy2024-04-24
Silvio J Tollner1017Japan2024-04-15
Antonio H Maclead1018Canada2024-04-19
Jefferson K Kusko1019Russia2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba N GlickItalyAmy Elsner RENEWAL
Mayumi A RimJapanAsiya Javayant RENEWAL
Adams G PaprockiIndiaStephen Shaw QUALIFIED
Juan W GarufiUnited KingdomAsiya Javayant PROPOSAL
Juan N StensethItalyStephen Shaw QUALIFIED
Sinclair C MaletIndiaBernardo Dominic NEGOTIATION
Maisha M RimAustraliaBernardo Dominic PROPOSAL
Aruna U SaylorsJapanAnna Fali NEW
Stacey M DarakjyItalyIoni Bowcher NEGOTIATION
Munro O WhobreyGermanyOnyama Limba NEW
Juan O RulapaughFranceIoni Bowcher RENEWAL
Murillo G DarakjyAustraliaStephen Shaw QUALIFIED
Darci X GlickJapanXuxue Feng NEW
Rodrigues H SaylorsUnited KingdomBernardo Dominic NEGOTIATION
Murillo M WhobreySpainAsiya Javayant PROPOSAL
Ricardo X RulapaughJapanAnna Fali NEW
Leja E MaletCanadaIoni Bowcher RENEWAL
Darci T ButtGermanyXuxue Feng NEW
Rodrigues J RoysterJapanAmy Elsner RENEWAL
Cody E WieserBrazilXuxue Feng NEW
Wickens Y RutaBrazilBernardo Dominic PROPOSAL
Aika J WhobreyIndiaIvan Magalhaes QUALIFIED
Ivar J MarrierArgentinaOnyama Limba UNQUALIFIED
Aruna F BriddickRussiaAnna Fali PROPOSAL
Cody A SlusarskiSpainElwin Sharvill UNQUALIFIED
Alejandro R RutaGermanyElwin Sharvill RENEWAL
Morrow M MarrierRussiaXuxue Feng UNQUALIFIED
Leon T CampainCanadaAnna Fali PROPOSAL
Nicolas Y AlbaresItalyBernardo Dominic PROPOSAL
Greenwood O FollerArgentinaOnyama Limba NEW
Maisha F ShinkoFranceIoni Bowcher UNQUALIFIED
Clifford Y RoysterIndiaAsiya Javayant PROPOSAL
Greenwood Y NickaIndiaIvan Magalhaes NEW
Jeanfrancois L RimArgentinaAmy Elsner NEW
Leon Y SlusarskiGermanyBernardo Dominic NEW
Julie T AlbaresIndiaOnyama Limba RENEWAL
Claire I MarrierItalyElwin Sharvill NEGOTIATION
Jones E NickaCanadaStephen Shaw RENEWAL
James E GauchoGermanyAmy Elsner NEW
Isabel I MaletFranceElwin 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>