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
Wickens I GarufiIndiaOnyama Limba NEW
Leja G StensethJapanAsiya Javayant QUALIFIED
Darci Z MarrierUnited KingdomStephen Shaw RENEWAL
Aruna T CaudyJapanXuxue Feng QUALIFIED
Sinclair E SchemmerGermanyIvan Magalhaes PROPOSAL
Faith K ChuiGermanyAnna Fali RENEWAL
Aditya F VenereJapanXuxue Feng PROPOSAL
Leon Y PerinArgentinaXuxue Feng NEW
Leon F OstroskyIndiaIvan Magalhaes QUALIFIED
Costa O FollerCanadaAnna Fali NEW
Rodrigues A MaletItalyAsiya Javayant UNQUALIFIED
Tony R RulapaughBrazilAnna Fali UNQUALIFIED
Julie U MacleadRussiaIvan Magalhaes NEW
Juan R VenereGermanyAmy Elsner PROPOSAL
Darci K CaldareraArgentinaIvan Magalhaes RENEWAL
Aruna D AmigonFranceStephen Shaw UNQUALIFIED
Adams O SchemmerSpainBernardo Dominic RENEWAL
James X AlbaresArgentinaIvan Magalhaes NEGOTIATION
Ivar H SchemmerAustraliaOnyama Limba UNQUALIFIED
Costa O CampainBrazilAmy Elsner NEW
Murillo F DarakjyUnited KingdomXuxue Feng NEGOTIATION
Misaki G FollerSpainElwin Sharvill NEGOTIATION
Ivar X ChuiFranceElwin Sharvill NEW
Darci S PaprockiSpainAnna Fali QUALIFIED
Johnson T StensethAustraliaOnyama Limba UNQUALIFIED
Juan Q RulapaughAustraliaXuxue Feng NEGOTIATION
Jefferson B CaldareraRussiaElwin Sharvill UNQUALIFIED
Maria J FigeroaCanadaIvan Magalhaes UNQUALIFIED
Cody Z VocelkaSpainBernardo Dominic QUALIFIED
Kaitlin J MacleadFranceBernardo Dominic QUALIFIED
David Y OstroskyArgentinaAmy Elsner NEW
Kaitlin A FigeroaJapanStephen Shaw NEW
Maisha C ButtRussiaElwin Sharvill QUALIFIED
Faith I OldroydItalyAnna Fali QUALIFIED
Maisha T BologniaUnited KingdomIvan Magalhaes RENEWAL
Jones Z BowleyIndiaAnna Fali RENEWAL
Cody V ChuiUnited KingdomOnyama Limba PROPOSAL
Kaitlin W PerinJapanAmy Elsner PROPOSAL
Aruna J RoysterRussiaAmy Elsner NEGOTIATION
Juan R DarakjyItalyAnna Fali NEGOTIATION
Ricardo F BriddickRussiaElwin Sharvill QUALIFIED
Maria A TollnerRussiaIoni Bowcher UNQUALIFIED
Faith H StockhamUnited KingdomAmy Elsner PROPOSAL
Tony S WaycottGermanyIoni Bowcher NEGOTIATION
Misaki X BowleySpainIoni Bowcher QUALIFIED
Stacey K FigeroaAustraliaAsiya Javayant QUALIFIED
Jones Z MorascaRussiaAsiya Javayant PROPOSAL
Chavez V GillianFranceElwin Sharvill QUALIFIED
Costa W NickaBrazilAnna Fali UNQUALIFIED
Francesco Z TollnerIndiaXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Alejandro H RoysterCanadaBernardo Dominic PROPOSAL
Adams R MaletIndiaAnna Fali PROPOSAL
Cody R WieserRussiaXuxue Feng NEGOTIATION
Jefferson U PerinJapanBernardo Dominic NEW
Kaitlin I KuskoRussiaOnyama Limba NEW
Octavia P StockhamSpainXuxue Feng NEW
Rodrigues K OstroskyUnited KingdomOnyama Limba QUALIFIED
Ivar O GillianBrazilIoni Bowcher NEGOTIATION
Aika C AmigonAustraliaStephen Shaw RENEWAL
Aruna K ButtRussiaXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan C SaylorsUnited Kingdom2024-04-08Feiner Bros NEGOTIATION9Ivan Magalhaes
1001Jennifer G BologniaAustralia2024-04-22Rousseaux, Michael Esq UNQUALIFIED98Bernardo Dominic
1002Ivar J RutaBrazil2024-04-20Dorl, James J Esq UNQUALIFIED53Onyama Limba
1003Leon Y WhobreyBrazil2024-04-06Chanay, Jeffrey A Esq NEGOTIATION7Ioni Bowcher
1004Rodrigues I NestleArgentina2024-04-26Chapman, Ross E Esq NEW77Asiya Javayant
1005Nicolas Z BologniaCanada2024-04-05Rousseaux, Michael Esq UNQUALIFIED72Xuxue Feng
1006Murillo U AmigonFrance2024-04-07Commercial Press RENEWAL47Xuxue Feng
1007Mayumi F NestleAustralia2024-03-31Buckley Miller Wright NEW5Asiya Javayant
1008Arvin Z RutaArgentina2024-04-19Buckley Miller Wright UNQUALIFIED38Amy Elsner
1009Ashley H ButtCanada2024-03-29Commercial Press PROPOSAL32Ivan Magalhaes
1010Julie F ShinkoSpain2024-04-01Chemel, James L Cpa PROPOSAL24Anna Fali
1011Octavia Q WaycottAustralia2024-04-19King, Christopher A Esq PROPOSAL19Stephen Shaw
1012Salvatore Q AmigonArgentina2024-04-27Feltz Printing Service RENEWAL73Ioni Bowcher
1013Ricardo O KolmetzSpain2024-04-14Buckley Miller Wright NEW11Asiya Javayant
1014Jennifer J MaletRussia2024-04-05King, Christopher A Esq NEGOTIATION89Asiya Javayant
1015Sinclair G MacleadCanada2024-03-29Chanay, Jeffrey A Esq NEW2Elwin Sharvill
1016David N CaudyFrance2024-04-06Feiner Bros QUALIFIED38Bernardo Dominic
1017Ivar F FigeroaSpain2024-04-04Truhlar And Truhlar Attys RENEWAL51Bernardo Dominic
1018Clifford R MaletFrance2024-04-11Commercial Press PROPOSAL62Ioni Bowcher
1019Claire L VenereCanada2024-04-26Commercial Press QUALIFIED96Xuxue Feng
1020Sinclair N AlbaresAustralia2024-04-27Feiner Bros NEGOTIATION38Xuxue Feng
1021Tony Z MarrierJapan2024-04-24Rousseaux, Michael Esq NEW80Anna Fali
1022Claire N GarufiItaly2024-04-20Benton, John B Jr PROPOSAL59Xuxue Feng
1023Leja S FigeroaIndia2024-04-07Chemel, James L Cpa NEW69Onyama Limba
1024Alejandro U FlosiItaly2024-04-13Dorl, James J Esq NEGOTIATION43Anna Fali
1025Clifford O FerenczSpain2024-04-13Truhlar And Truhlar Attys QUALIFIED81Ioni Bowcher
1026Mayumi Z TollnerRussia2024-04-02Commercial Press PROPOSAL65Amy Elsner
1027Faith M ChuiCanada2024-04-26Feltz Printing Service NEGOTIATION74Stephen Shaw
1028Jefferson O RutaGermany2024-03-30Printing Dimensions QUALIFIED0Anna Fali
1029Juan N ShinkoSpain2024-04-25King, Christopher A Esq RENEWAL62Stephen Shaw
1030David H FollerUnited Kingdom2024-03-31Rangoni Of Florence QUALIFIED47Ioni Bowcher
1031Aika Q MaletItaly2024-04-15King, Christopher A Esq NEGOTIATION6Elwin Sharvill
1032Clifford Q IturbideSpain2024-04-14Chapman, Ross E Esq UNQUALIFIED19Onyama Limba
1033James I MaletIndia2024-04-27Chemel, James L Cpa PROPOSAL68Bernardo Dominic
1034Ricardo T AmigonUnited Kingdom2024-03-31Chanay, Jeffrey A Esq NEW73Asiya Javayant
1035Antonio E KolmetzBrazil2024-04-18Commercial Press QUALIFIED37Elwin Sharvill
1036Maria T SlusarskiFrance2024-04-22Commercial Press NEGOTIATION94Amy Elsner
1037Nicolas Y TollnerBrazil2024-04-12Feltz Printing Service PROPOSAL60Amy Elsner
1038Darci S FollerBrazil2024-04-27Morlong Associates UNQUALIFIED90Anna Fali
1039Greenwood S DoeArgentina2024-04-17King, Christopher A Esq RENEWAL73Onyama Limba
1040Leja H SaylorsRussia2024-04-10Buckley Miller Wright RENEWAL3Anna Fali
1041Greenwood Q GillianIndia2024-04-12Morlong Associates RENEWAL40Ioni Bowcher
1042Izzy I ShinkoItaly2024-04-25Benton, John B Jr NEGOTIATION1Amy Elsner
1043Costa T CampainUnited Kingdom2024-04-27Rousseaux, Michael Esq QUALIFIED55Asiya Javayant
1044Chavez X BriddickArgentina2024-04-10Chanay, Jeffrey A Esq NEGOTIATION86Ioni Bowcher
1045Deepesh V PaprockiJapan2024-04-04Buckley Miller Wright QUALIFIED41Asiya Javayant
1046Alejandro C InouyeAustralia2024-03-29Buckley Miller Wright RENEWAL16Xuxue Feng
1047Francesco U WieserCanada2024-03-30Printing Dimensions RENEWAL71Ioni Bowcher
1048Jefferson D CampainBrazil2024-04-17Buckley Miller Wright NEGOTIATION16Ioni Bowcher
1049Misaki I ChuiUnited Kingdom2024-04-09Buckley Miller Wright RENEWAL96Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Isabel L StockhamGermanyBernardo Dominic QUALIFIED
Misaki P WhobreyCanadaBernardo Dominic NEW
Jennifer I AmigonFranceAmy Elsner NEW
Adams I StensethSpainIoni Bowcher UNQUALIFIED
Wickens J GarufiUnited KingdomBernardo Dominic PROPOSAL
Arvin N BowleySpainOnyama Limba RENEWAL
Faith Z AlbaresSpainAmy Elsner NEGOTIATION
Ivar H VocelkaCanadaElwin Sharvill NEGOTIATION
Wickens U NickaIndiaStephen Shaw QUALIFIED
Misaki T WieserArgentinaXuxue Feng UNQUALIFIED
Adams J GillianRussiaAsiya Javayant UNQUALIFIED
Jeanfrancois D GillianIndiaBernardo Dominic NEGOTIATION
Adams P BologniaJapanOnyama Limba NEGOTIATION
Alejandro K RoysterSpainAsiya Javayant QUALIFIED
Aruna Y MarrierBrazilIvan Magalhaes UNQUALIFIED
Salvatore Q FerenczUnited KingdomAsiya Javayant RENEWAL
Jennifer Q MorascaJapanBernardo Dominic NEW
Jones I ChuiItalyIvan Magalhaes NEW
Deepesh O MorascaIndiaIvan Magalhaes QUALIFIED
Jones C SchemmerJapanOnyama Limba NEGOTIATION
Chavez O RutaArgentinaAmy Elsner PROPOSAL
Jennifer L StensethAustraliaIvan Magalhaes NEGOTIATION
Antonio Z VenereIndiaOnyama Limba UNQUALIFIED
Morrow P VenereJapanIvan Magalhaes NEGOTIATION
Mayumi U TollnerIndiaBernardo Dominic NEW
Murillo L KuskoCanadaOnyama Limba NEGOTIATION
Nicolas B GauchoRussiaIoni Bowcher NEGOTIATION
Maria Y AmigonSpainStephen Shaw UNQUALIFIED
Mujtaba C GlickUnited KingdomXuxue Feng NEGOTIATION
Alejandro O SchemmerJapanBernardo Dominic QUALIFIED
Ricardo W BologniaSpainElwin Sharvill NEW
Emily Y DilliardSpainOnyama Limba UNQUALIFIED
Isabel I AlbaresRussiaIvan Magalhaes PROPOSAL
Tony V WaycottItalyBernardo Dominic NEGOTIATION
Octavia R SchemmerGermanyStephen Shaw QUALIFIED
Julie F DarakjyBrazilXuxue Feng NEW
Alejandro L WaycottArgentinaStephen Shaw QUALIFIED
Alejandro L SlusarskiArgentinaElwin Sharvill RENEWAL
Jeanfrancois S MaletSpainXuxue Feng RENEWAL
Mujtaba X ChuiSpainAsiya Javayant PROPOSAL
Juan V RulapaughBrazilElwin Sharvill UNQUALIFIED
Aditya F OldroydAustraliaElwin Sharvill RENEWAL
Mayumi X PoquetteArgentinaBernardo Dominic UNQUALIFIED
Smith M BologniaBrazilIoni Bowcher NEGOTIATION
Munro T CaldareraItalyIvan Magalhaes RENEWAL
Cody M SchemmerSpainAsiya Javayant NEGOTIATION
Maria E ButtCanadaStephen Shaw RENEWAL
Cody Z FollerGermanyOnyama Limba RENEWAL
Rodrigues K MarrierJapanAnna Fali PROPOSAL
David I VocelkaUnited KingdomAmy Elsner RENEWAL
Frozen Columns
Name
Jefferson L Poquette
Jefferson G Nicka
Julie W Rulapaugh
Mayumi N Sergi
Johnson R Morasca
Ashley T Doe
Aditya O Chui
Deepesh F Doe
Costa J Glick
Kaitlin H Whobrey
Maisha T Amigon
Antonio S Gaucho
Leja O Marrier
Kaitlin J Stockham
Jennifer H Foller
Rodrigues C Amigon
Leon W Stenseth
David R Caudy
Maisha U Rim
Rodrigues S Vocelka
Kadeem S Gillian
Stacey P Chui
Alejandro M Rulapaugh
James W Rulapaugh
James I Malet
Jones N Doe
Silvio B Oldroyd
Ivar B Darakjy
Arvin U Albares
Julie V Waycott
Mayumi S Chui
James X Glick
Munro H Kusko
Salvatore P Rulapaugh
Mayumi P Rulapaugh
Ricardo E Briddick
Darci X Paprocki
Stacey F Flosi
Leja R Gaucho
Izzy V Morasca
James L Paprocki
Leon N Wieser
Johnson U Waycott
Deepesh Q Ferencz
Rodrigues Y Shinko
Costa Q Albares
Arvin R Shinko
Tony X Poquette
Octavia K Caldarera
Jefferson B Rulapaugh
IdCountryDate
1000Germany2024-04-05
1001Russia2024-03-30
1002India2024-04-26
1003Germany2024-03-30
1004Russia2024-04-18
1005Italy2024-04-16
1006Canada2024-04-26
1007Germany2024-04-17
1008Spain2024-04-27
1009Japan2024-03-31
1010Brazil2024-03-29
1011Canada2024-04-23
1012Russia2024-04-11
1013Japan2024-04-18
1014Germany2024-04-19
1015Japan2024-04-04
1016Italy2024-04-09
1017Australia2024-04-18
1018Japan2024-04-09
1019United Kingdom2024-04-21
1020Argentina2024-03-31
1021Russia2024-04-09
1022United Kingdom2024-04-24
1023Japan2024-04-14
1024Italy2024-04-09
1025India2024-04-16
1026Brazil2024-04-27
1027Argentina2024-04-02
1028United Kingdom2024-04-24
1029Argentina2024-04-06
1030Japan2024-04-25
1031Japan2024-04-15
1032Australia2024-04-23
1033Japan2024-04-06
1034Australia2024-04-13
1035Russia2024-04-21
1036Brazil2024-04-23
1037Spain2024-04-19
1038Brazil2024-04-05
1039Japan2024-04-03
1040Australia2024-04-22
1041Spain2024-04-26
1042Spain2024-03-30
1043India2024-04-13
1044Australia2024-04-17
1045Australia2024-04-12
1046Russia2024-04-21
1047Russia2024-04-23
1048Japan2024-04-18
1049Spain2024-04-19

On-Demand Data

NameIdCountryDate
Rodrigues K Bolognia1000Japan2024-04-05
Emily C Gaucho1001Australia2024-03-30
Adams F Malet1002Russia2024-04-24
Tony G Slusarski1003Brazil2024-04-12
Johnson O Garufi1004Germany2024-04-16
Wickens I Vocelka1005Spain2024-03-31
Jefferson Y Doe1006Russia2024-03-31
Murillo B Rulapaugh1007India2024-04-19
Octavia X Rim1008Russia2024-04-12
Mujtaba Z Waycott1009United Kingdom2024-04-16
Leon H Rulapaugh1010Japan2024-04-24
Wickens N Campain1011Italy2024-04-22
Aruna I Tollner1012United Kingdom2024-04-20
Ivar R Poquette1013Argentina2024-04-07
Aditya V Caldarera1014Russia2024-04-09
Mujtaba V Albares1015Australia2024-04-16
Rodrigues E Gillian1016Brazil2024-04-25
Stacey S Saylors1017United Kingdom2024-04-12
Deepesh D Butt1018Spain2024-03-31
Clifford R Maclead1019Argentina2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford Q MaletUnited KingdomAmy Elsner PROPOSAL
Julie Z VocelkaIndiaStephen Shaw QUALIFIED
Stacey E ShinkoCanadaAmy Elsner PROPOSAL
Alejandro O CaldareraFranceOnyama Limba NEW
Misaki Q VocelkaGermanyElwin Sharvill RENEWAL
Wickens W MacleadCanadaIoni Bowcher PROPOSAL
Julie D MaletCanadaElwin Sharvill UNQUALIFIED
Rodrigues B KuskoItalyXuxue Feng UNQUALIFIED
Izzy R RoysterBrazilAnna Fali NEW
Smith E RutaIndiaElwin Sharvill QUALIFIED
Emily F VenereRussiaAsiya Javayant NEGOTIATION
Aditya L TollnerJapanXuxue Feng NEW
Chavez W GlickRussiaAsiya Javayant PROPOSAL
Kadeem Y AlbaresBrazilBernardo Dominic RENEWAL
Kaitlin N WaycottIndiaAsiya Javayant UNQUALIFIED
Johnson J AmigonRussiaOnyama Limba PROPOSAL
Izzy V IturbideFranceAsiya Javayant QUALIFIED
Johnson P SchemmerJapanAnna Fali NEGOTIATION
Kadeem K MorascaSpainAmy Elsner NEGOTIATION
Mujtaba H MorascaAustraliaAmy Elsner PROPOSAL
Alejandro N DoeJapanIoni Bowcher NEW
Silvio F ShinkoArgentinaAmy Elsner UNQUALIFIED
Chavez M FollerUnited KingdomIoni Bowcher PROPOSAL
Darci W WhobreyCanadaAnna Fali RENEWAL
Mayumi P KuskoArgentinaAnna Fali UNQUALIFIED
Costa V GauchoRussiaAnna Fali UNQUALIFIED
Maisha W ChuiUnited KingdomOnyama Limba QUALIFIED
Munro Q FlosiItalyAnna Fali NEW
Julie U WhobreyItalyBernardo Dominic NEGOTIATION
Adams X FlosiJapanAmy Elsner UNQUALIFIED
Leon K MaletAustraliaXuxue Feng RENEWAL
Wickens E GauchoBrazilIoni Bowcher PROPOSAL
Octavia Z SaylorsIndiaStephen Shaw PROPOSAL
Silvio Z ShinkoGermanyIoni Bowcher PROPOSAL
Ashley Y GillianGermanyAmy Elsner UNQUALIFIED
Kaitlin A ChuiBrazilElwin Sharvill UNQUALIFIED
Maria Q DilliardCanadaOnyama Limba RENEWAL
Ashley Z GauchoUnited KingdomAnna Fali UNQUALIFIED
Leon V GillianUnited KingdomBernardo Dominic UNQUALIFIED
Isabel G MaletArgentinaXuxue Feng 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>