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
Jefferson H MorascaBrazilXuxue Feng PROPOSAL
Julie Y RulapaughRussiaStephen Shaw UNQUALIFIED
Jennifer U StensethBrazilAnna Fali QUALIFIED
Chavez Y DoeItalyAmy Elsner UNQUALIFIED
Faith H BowleyAustraliaXuxue Feng NEW
Ivar I RoysterUnited KingdomStephen Shaw QUALIFIED
Silvio E ShinkoJapanBernardo Dominic NEGOTIATION
Aruna F FollerArgentinaOnyama Limba NEGOTIATION
Octavia V PerinJapanOnyama Limba RENEWAL
Salvatore O NestleIndiaXuxue Feng NEGOTIATION
Kaitlin O MorascaIndiaAsiya Javayant PROPOSAL
Clifford G SchemmerFranceAsiya Javayant NEGOTIATION
Cody V MorascaUnited KingdomOnyama Limba QUALIFIED
Munro O OldroydIndiaBernardo Dominic PROPOSAL
Juan J CampainAustraliaIoni Bowcher PROPOSAL
Costa V WaycottGermanyAmy Elsner NEW
Leja A SaylorsIndiaIvan Magalhaes UNQUALIFIED
Salvatore K GlickJapanIoni Bowcher QUALIFIED
Alejandro G WaycottJapanStephen Shaw NEW
Francesco N MaletCanadaElwin Sharvill PROPOSAL
Chavez C CaudyArgentinaAmy Elsner RENEWAL
Sinclair P SergiAustraliaStephen Shaw PROPOSAL
Aika E AlbaresUnited KingdomIvan Magalhaes NEGOTIATION
Emily A RulapaughSpainIvan Magalhaes NEW
Salvatore Y GillianCanadaStephen Shaw UNQUALIFIED
Greenwood U ChuiRussiaAnna Fali NEGOTIATION
Chavez U OstroskyRussiaIvan Magalhaes NEGOTIATION
Emily K TollnerBrazilBernardo Dominic NEGOTIATION
Claire O TollnerFranceIoni Bowcher NEGOTIATION
Izzy X RutaFranceStephen Shaw NEGOTIATION
Ivar R NestleArgentinaStephen Shaw NEW
Claire K IturbideFranceIvan Magalhaes NEGOTIATION
Aditya D OstroskyCanadaAsiya Javayant NEW
Deepesh R MaletJapanStephen Shaw NEGOTIATION
Murillo E NestleItalyAsiya Javayant RENEWAL
Aika K ShinkoRussiaIoni Bowcher RENEWAL
Leja H FerenczUnited KingdomAmy Elsner RENEWAL
Deepesh T VocelkaGermanyStephen Shaw NEW
Alejandro J BologniaJapanElwin Sharvill PROPOSAL
Costa Q FollerGermanyBernardo Dominic UNQUALIFIED
Leja Z FigeroaBrazilElwin Sharvill PROPOSAL
Adams S GillianIndiaStephen Shaw PROPOSAL
Leja M KolmetzArgentinaXuxue Feng PROPOSAL
Mayumi Q DarakjyRussiaOnyama Limba QUALIFIED
Antonio U ChuiItalyAnna Fali UNQUALIFIED
Ivar G GarufiFranceIoni Bowcher NEGOTIATION
Costa D DarakjyCanadaBernardo Dominic QUALIFIED
Costa Y DilliardItalyElwin Sharvill UNQUALIFIED
Aika K CaudyBrazilIvan Magalhaes QUALIFIED
Jennifer P AmigonGermanyAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Claire B NestleBrazilStephen Shaw PROPOSAL
Octavia G MarrierItalyAsiya Javayant NEGOTIATION
Costa P WaycottBrazilXuxue Feng QUALIFIED
Ashley T RutaAustraliaIoni Bowcher NEW
Smith D OstroskyRussiaElwin Sharvill NEGOTIATION
James U GillianSpainElwin Sharvill NEGOTIATION
Jennifer C SlusarskiFranceAmy Elsner QUALIFIED
Claire S PoquetteUnited KingdomElwin Sharvill PROPOSAL
Ricardo S MorascaJapanStephen Shaw QUALIFIED
Silvio I DilliardItalyOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon L FigeroaCanada2024-04-19Dorl, James J Esq RENEWAL31Amy Elsner
1001Aditya F SergiGermany2024-04-18Chapman, Ross E Esq NEW84Bernardo Dominic
1002Deepesh Z RoysterCanada2024-04-17Feltz Printing Service UNQUALIFIED60Elwin Sharvill
1003Ivar D OldroydCanada2024-04-22Chapman, Ross E Esq NEW98Ivan Magalhaes
1004Aika B PaprockiCanada2024-04-27Rangoni Of Florence NEW13Bernardo Dominic
1005Antonio K PerinAustralia2024-04-22Benton, John B Jr UNQUALIFIED30Stephen Shaw
1006Kaitlin A PaprockiBrazil2024-04-07Feiner Bros NEGOTIATION7Ioni Bowcher
1007Octavia E NestleFrance2024-04-12Feiner Bros QUALIFIED13Asiya Javayant
1008Maisha V NestleAustralia2024-04-15Feiner Bros NEW4Ivan Magalhaes
1009Octavia C MaletBrazil2024-04-21Truhlar And Truhlar Attys QUALIFIED87Stephen Shaw
1010Jones U AmigonUnited Kingdom2024-04-05Chanay, Jeffrey A Esq QUALIFIED63Ioni Bowcher
1011Leja V CaldareraJapan2024-04-13Commercial Press RENEWAL61Xuxue Feng
1012Greenwood U SchemmerBrazil2024-04-06Benton, John B Jr UNQUALIFIED7Asiya Javayant
1013Greenwood L DilliardBrazil2024-04-12King, Christopher A Esq UNQUALIFIED82Ivan Magalhaes
1014Julie X BologniaSpain2024-04-01Chemel, James L Cpa RENEWAL55Elwin Sharvill
1015Cody B FlosiBrazil2024-04-20Rangoni Of Florence NEW64Elwin Sharvill
1016Faith B GlickArgentina2024-04-21Rousseaux, Michael Esq RENEWAL45Ioni Bowcher
1017Jones M SergiSpain2024-04-11Buckley Miller Wright RENEWAL70Ioni Bowcher
1018Kadeem P DoeSpain2024-04-28King, Christopher A Esq NEW56Onyama Limba
1019Alejandro G FigeroaSpain2024-04-21Chapman, Ross E Esq NEGOTIATION20Asiya Javayant
1020Clifford N FigeroaUnited Kingdom2024-04-01Chanay, Jeffrey A Esq NEGOTIATION20Anna Fali
1021Deepesh G FollerJapan2024-04-26Dorl, James J Esq QUALIFIED74Anna Fali
1022Nicolas Q BologniaItaly2024-04-24Truhlar And Truhlar Attys RENEWAL48Asiya Javayant
1023Tony E MaletSpain2024-04-27Rangoni Of Florence QUALIFIED81Xuxue Feng
1024Nicolas E ChuiAustralia2024-04-09Commercial Press NEW68Amy Elsner
1025Leja K GarufiJapan2024-04-10Morlong Associates NEGOTIATION32Bernardo Dominic
1026Leja E VocelkaIndia2024-04-15Dorl, James J Esq QUALIFIED3Xuxue Feng
1027Tony C DilliardCanada2024-04-20King, Christopher A Esq QUALIFIED35Xuxue Feng
1028Adams P WieserAustralia2024-04-09Chanay, Jeffrey A Esq RENEWAL33Elwin Sharvill
1029Arvin I KolmetzUnited Kingdom2024-03-31Truhlar And Truhlar Attys PROPOSAL92Asiya Javayant
1030Darci I OldroydBrazil2024-04-11Chapman, Ross E Esq PROPOSAL4Ioni Bowcher
1031Sinclair Q RimRussia2024-04-01Chemel, James L Cpa RENEWAL79Ivan Magalhaes
1032Faith S InouyeSpain2024-04-17Chanay, Jeffrey A Esq NEGOTIATION79Asiya Javayant
1033Deepesh U FollerBrazil2024-04-09Commercial Press QUALIFIED78Elwin Sharvill
1034Stacey X BriddickItaly2024-04-24Benton, John B Jr RENEWAL54Ioni Bowcher
1035Adams K SaylorsItaly2024-04-13Buckley Miller Wright NEGOTIATION69Ivan Magalhaes
1036Clifford N CaldareraSpain2024-04-16Rousseaux, Michael Esq QUALIFIED72Elwin Sharvill
1037Jeanfrancois K FlosiJapan2024-04-11Chanay, Jeffrey A Esq QUALIFIED1Elwin Sharvill
1038Jennifer O StensethJapan2024-04-09Morlong Associates NEGOTIATION55Asiya Javayant
1039Darci T BologniaBrazil2024-04-01Feiner Bros UNQUALIFIED79Elwin Sharvill
1040Cody F FollerUnited Kingdom2024-04-02Rousseaux, Michael Esq NEGOTIATION8Ivan Magalhaes
1041Nicolas M SlusarskiItaly2024-04-03Rousseaux, Michael Esq NEGOTIATION46Asiya Javayant
1042Munro C CampainGermany2024-04-14Chapman, Ross E Esq UNQUALIFIED84Onyama Limba
1043Arvin V ChuiSpain2024-04-29Printing Dimensions RENEWAL60Ioni Bowcher
1044Chavez C SaylorsUnited Kingdom2024-04-04Chemel, James L Cpa PROPOSAL27Ioni Bowcher
1045Izzy L MacleadRussia2024-04-23Rangoni Of Florence QUALIFIED13Anna Fali
1046Jennifer M RutaCanada2024-04-23Printing Dimensions QUALIFIED64Bernardo Dominic
1047Costa V MaletFrance2024-04-14Chapman, Ross E Esq PROPOSAL8Ioni Bowcher
1048Johnson D FigeroaItaly2024-04-08Rousseaux, Michael Esq UNQUALIFIED52Bernardo Dominic
1049Isabel U WhobreyItaly2024-04-16Buckley Miller Wright NEGOTIATION59Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Misaki X AmigonSpainElwin Sharvill RENEWAL
Salvatore T DilliardItalyStephen Shaw RENEWAL
Leon J CaudyItalyBernardo Dominic NEW
Stacey P MaletAustraliaAmy Elsner RENEWAL
Johnson M MorascaGermanyOnyama Limba NEGOTIATION
Ashley W CampainRussiaStephen Shaw RENEWAL
Clifford V RimUnited KingdomOnyama Limba NEW
Julie G SlusarskiIndiaAsiya Javayant NEGOTIATION
Aika S SaylorsItalyXuxue Feng PROPOSAL
Munro Y NickaCanadaAmy Elsner QUALIFIED
Smith J CaldareraCanadaAsiya Javayant NEW
Smith B CampainAustraliaAmy Elsner RENEWAL
Chavez A CampainCanadaOnyama Limba NEGOTIATION
Arvin T MaletUnited KingdomAmy Elsner UNQUALIFIED
Claire C RimSpainIoni Bowcher PROPOSAL
Tony V CaudyAustraliaAmy Elsner RENEWAL
Clifford Y GarufiJapanAnna Fali PROPOSAL
Jefferson U WaycottUnited KingdomAnna Fali NEGOTIATION
Jennifer Q AlbaresCanadaAmy Elsner NEW
Johnson P InouyeGermanyBernardo Dominic UNQUALIFIED
Silvio S OstroskyJapanStephen Shaw NEW
Aditya I CaldareraSpainBernardo Dominic NEW
Misaki Q CaudyIndiaXuxue Feng NEGOTIATION
Arvin A KuskoAustraliaStephen Shaw PROPOSAL
Maria X StensethGermanyElwin Sharvill RENEWAL
Octavia G IturbideRussiaOnyama Limba PROPOSAL
Arvin G GauchoAustraliaAmy Elsner RENEWAL
Aditya B CaldareraUnited KingdomIoni Bowcher RENEWAL
Cody O GauchoCanadaStephen Shaw NEGOTIATION
Faith O SergiFranceXuxue Feng PROPOSAL
Ivar E GillianBrazilAnna Fali NEW
Jeanfrancois P FollerJapanAmy Elsner RENEWAL
Clifford N WieserSpainStephen Shaw NEGOTIATION
Jefferson T WhobreyItalyXuxue Feng PROPOSAL
Ivar I PoquetteUnited KingdomAmy Elsner NEGOTIATION
Salvatore N VenereItalyIoni Bowcher RENEWAL
Cody P WaycottUnited KingdomAmy Elsner NEW
Jones N KuskoBrazilAmy Elsner UNQUALIFIED
Aika B SlusarskiSpainIvan Magalhaes NEW
Stacey T BowleyIndiaElwin Sharvill PROPOSAL
Jennifer D OldroydCanadaElwin Sharvill NEW
Rodrigues A SergiSpainIoni Bowcher NEW
Aruna F StensethGermanyIoni Bowcher NEGOTIATION
Aditya M PerinFranceXuxue Feng QUALIFIED
Silvio G WhobreyIndiaStephen Shaw RENEWAL
Misaki Z SaylorsFranceIvan Magalhaes PROPOSAL
Maisha L TollnerArgentinaStephen Shaw NEGOTIATION
Deepesh J NickaIndiaIvan Magalhaes RENEWAL
Leja L SergiRussiaElwin Sharvill NEGOTIATION
Mujtaba D GillianUnited KingdomElwin Sharvill NEW
Frozen Columns
Name
Jennifer Y Garufi
Maisha L Iturbide
Jones I Gaucho
Emily I Caldarera
Munro Q Foller
Adams R Vocelka
Aditya Y Figeroa
Leon M Shinko
Maria Z Figeroa
Faith P Dilliard
Salvatore F Venere
Clifford J Iturbide
Sinclair Y Briddick
Greenwood D Briddick
Kadeem M Gaucho
Cody A Malet
Maisha E Ruta
Octavia B Nestle
Kadeem F Caudy
David W Royster
Jennifer F Albares
Murillo G Chui
Tony N Foller
Salvatore O Garufi
Jennifer O Glick
Stacey X Saylors
Kadeem X Waycott
Izzy K Ferencz
Jeanfrancois U Sergi
Aika X Royster
Leon X Figeroa
Faith L Rim
Costa S Campain
Aditya R Kusko
Sinclair T Morasca
Kadeem L Dilliard
Stacey A Royster
Juan Z Malet
Ricardo Z Dilliard
Emily A Sergi
Claire T Venere
Clifford D Maclead
Stacey L Malet
Cody B Bolognia
Claire X Maclead
Emily O Glick
Juan J Rulapaugh
Maria T Foller
Chavez F Waycott
Johnson X Nicka
IdCountryDate
1000Canada2024-04-14
1001Argentina2024-04-27
1002Spain2024-04-20
1003Argentina2024-04-28
1004Australia2024-04-29
1005Canada2024-04-18
1006Brazil2024-04-29
1007Spain2024-04-14
1008Germany2024-04-09
1009India2024-04-28
1010Argentina2024-04-28
1011Spain2024-04-10
1012Italy2024-04-05
1013Russia2024-04-24
1014Argentina2024-04-27
1015Canada2024-04-03
1016Australia2024-04-11
1017Japan2024-04-16
1018Germany2024-04-26
1019France2024-04-11
1020Russia2024-04-14
1021Russia2024-04-10
1022France2024-04-12
1023France2024-04-25
1024France2024-04-17
1025Argentina2024-04-02
1026Japan2024-04-01
1027United Kingdom2024-04-19
1028Japan2024-04-29
1029Spain2024-04-02
1030United Kingdom2024-04-25
1031Russia2024-04-28
1032Argentina2024-04-16
1033Japan2024-04-23
1034Canada2024-04-23
1035Spain2024-04-14
1036Germany2024-04-16
1037India2024-04-21
1038United Kingdom2024-03-31
1039Canada2024-04-22
1040United Kingdom2024-04-17
1041Germany2024-04-26
1042India2024-04-07
1043Argentina2024-04-01
1044Spain2024-04-28
1045Germany2024-04-29
1046Australia2024-04-27
1047Italy2024-04-13
1048Germany2024-04-10
1049Germany2024-04-19

On-Demand Data

NameIdCountryDate
Jeanfrancois H Caudy1000Spain2024-04-22
Smith J Doe1001Argentina2024-03-31
Jones O Waycott1002Spain2024-04-08
Mujtaba P Ostrosky1003India2024-04-10
Jefferson S Maclead1004Spain2024-04-02
Morrow D Schemmer1005Argentina2024-04-20
Julie R Albares1006Spain2024-04-19
Wickens K Wieser1007Russia2024-04-18
Ashley K Caudy1008Japan2024-04-14
Ivar O Schemmer1009India2024-04-09
Deepesh T Rim1010Japan2024-04-26
Rodrigues C Flosi1011France2024-04-25
Mayumi O Albares1012Japan2024-04-21
Maria G Darakjy1013Spain2024-04-19
Murillo C Malet1014Germany2024-04-27
Aika U Vocelka1015Australia2024-04-26
Juan V Waycott1016Italy2024-04-20
Rodrigues W Figeroa1017France2024-04-10
Jefferson R Bowley1018Germany2024-04-08
Jeanfrancois Q Oldroyd1019Canada2024-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire G ShinkoRussiaIvan Magalhaes RENEWAL
Rodrigues Z MorascaBrazilIvan Magalhaes QUALIFIED
Aditya M RoysterCanadaStephen Shaw UNQUALIFIED
Jeanfrancois P PerinSpainAmy Elsner NEW
Morrow G KuskoCanadaIoni Bowcher PROPOSAL
Jennifer Y WieserGermanyAmy Elsner RENEWAL
Morrow H RoysterAustraliaStephen Shaw NEGOTIATION
David M WaycottGermanyIvan Magalhaes UNQUALIFIED
Jefferson F DilliardGermanyXuxue Feng NEGOTIATION
Kadeem J CampainArgentinaAmy Elsner UNQUALIFIED
David C DilliardGermanyXuxue Feng UNQUALIFIED
Faith R SergiArgentinaAnna Fali QUALIFIED
Claire Y FlosiRussiaOnyama Limba RENEWAL
Kadeem L MacleadIndiaAmy Elsner QUALIFIED
Johnson O DarakjyUnited KingdomAsiya Javayant NEGOTIATION
Mujtaba B AlbaresArgentinaBernardo Dominic PROPOSAL
Johnson P SchemmerJapanXuxue Feng UNQUALIFIED
Kaitlin N GillianJapanAnna Fali PROPOSAL
Morrow A NestleArgentinaAsiya Javayant RENEWAL
Greenwood V SaylorsSpainIoni Bowcher QUALIFIED
Leja I ButtRussiaAsiya Javayant RENEWAL
Deepesh M CaldareraAustraliaStephen Shaw UNQUALIFIED
Nicolas I RulapaughIndiaElwin Sharvill NEGOTIATION
Rodrigues O GauchoUnited KingdomOnyama Limba RENEWAL
Arvin M InouyeGermanyAmy Elsner PROPOSAL
Rodrigues L VocelkaBrazilXuxue Feng NEGOTIATION
Ivar V AmigonFranceAmy Elsner UNQUALIFIED
Misaki W BologniaFranceIoni Bowcher QUALIFIED
Aika I CaudyUnited KingdomIvan Magalhaes PROPOSAL
Adams T BowleyArgentinaBernardo Dominic QUALIFIED
Jeanfrancois P KolmetzArgentinaIvan Magalhaes NEW
Nicolas L DilliardGermanyAsiya Javayant NEGOTIATION
Ricardo H RoysterBrazilXuxue Feng NEGOTIATION
Murillo L GarufiIndiaElwin Sharvill RENEWAL
Emily D InouyeUnited KingdomStephen Shaw NEGOTIATION
Cody H CaldareraAustraliaBernardo Dominic NEW
Munro F MaletItalyIvan Magalhaes RENEWAL
Wickens B MarrierBrazilAsiya Javayant NEGOTIATION
Sinclair P GillianSpainAmy Elsner QUALIFIED
Kaitlin O NickaItalyAsiya Javayant NEGOTIATION

<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>