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
Mujtaba F PoquetteBrazilAnna Fali NEW
Alejandro Q FigeroaSpainIoni Bowcher RENEWAL
Sinclair R GarufiArgentinaIoni Bowcher RENEWAL
David E BriddickSpainIvan Magalhaes RENEWAL
Julie N BriddickSpainIvan Magalhaes PROPOSAL
Wickens A StockhamIndiaAnna Fali UNQUALIFIED
Tony O RutaCanadaOnyama Limba NEW
Chavez M GlickRussiaAsiya Javayant NEW
Maria Y RulapaughArgentinaAsiya Javayant QUALIFIED
Francesco R BowleyBrazilOnyama Limba QUALIFIED
Leja A OldroydCanadaAsiya Javayant RENEWAL
Maria Q FigeroaRussiaOnyama Limba RENEWAL
Kadeem Z KuskoBrazilAnna Fali NEGOTIATION
Rodrigues N DoeItalyXuxue Feng NEW
Johnson Y RulapaughCanadaAmy Elsner RENEWAL
Mujtaba K GarufiBrazilAsiya Javayant QUALIFIED
Ricardo H CaldareraItalyBernardo Dominic NEGOTIATION
Antonio A SlusarskiAustraliaStephen Shaw RENEWAL
Jennifer E CaldareraGermanyAnna Fali UNQUALIFIED
Wickens X MaletArgentinaXuxue Feng QUALIFIED
Julie Z IturbideGermanyElwin Sharvill QUALIFIED
Kadeem I BowleyItalyOnyama Limba RENEWAL
Rodrigues J MaletRussiaElwin Sharvill NEGOTIATION
Antonio G SaylorsCanadaXuxue Feng PROPOSAL
Arvin L BowleyCanadaAnna Fali PROPOSAL
Darci G VenereArgentinaIvan Magalhaes PROPOSAL
Stacey G FlosiAustraliaAnna Fali RENEWAL
Juan F PaprockiCanadaIvan Magalhaes QUALIFIED
Clifford K RoysterAustraliaIvan Magalhaes NEGOTIATION
Jefferson B GlickArgentinaStephen Shaw RENEWAL
Deepesh R FollerBrazilIoni Bowcher UNQUALIFIED
Mujtaba V WaycottBrazilAsiya Javayant UNQUALIFIED
Jeanfrancois V CampainBrazilOnyama Limba UNQUALIFIED
Chavez N KuskoFranceStephen Shaw RENEWAL
Julie Z InouyeSpainAnna Fali UNQUALIFIED
Stacey Y InouyeGermanyXuxue Feng PROPOSAL
Faith C GillianRussiaAnna Fali QUALIFIED
Claire Z SaylorsUnited KingdomXuxue Feng PROPOSAL
Jeanfrancois N DarakjyIndiaIoni Bowcher PROPOSAL
Faith N DilliardJapanAmy Elsner UNQUALIFIED
Salvatore F AmigonJapanBernardo Dominic UNQUALIFIED
Salvatore Z DoeUnited KingdomAsiya Javayant PROPOSAL
Francesco M SchemmerGermanyStephen Shaw RENEWAL
James X GauchoUnited KingdomBernardo Dominic PROPOSAL
Murillo P WieserItalyAmy Elsner QUALIFIED
Smith J FigeroaAustraliaElwin Sharvill RENEWAL
Faith K InouyeFranceXuxue Feng RENEWAL
Kadeem S RimJapanBernardo Dominic UNQUALIFIED
Deepesh A SchemmerJapanAmy Elsner UNQUALIFIED
Izzy H GarufiIndiaBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Mujtaba X GarufiItalyOnyama Limba UNQUALIFIED
Claire G MarrierAustraliaAnna Fali QUALIFIED
Jones L CaudyRussiaAnna Fali QUALIFIED
Ashley S SergiItalyIvan Magalhaes UNQUALIFIED
Deepesh P SlusarskiCanadaXuxue Feng NEGOTIATION
Aruna V WaycottIndiaBernardo Dominic PROPOSAL
Julie D FerenczJapanBernardo Dominic NEGOTIATION
Jennifer K TollnerIndiaXuxue Feng UNQUALIFIED
David Y NestleAustraliaElwin Sharvill QUALIFIED
Salvatore T MaletCanadaAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja K FollerItaly2024-04-03Rousseaux, Michael Esq QUALIFIED61Bernardo Dominic
1001Aditya Y AlbaresAustralia2024-04-15Dorl, James J Esq RENEWAL16Anna Fali
1002Cody P TollnerUnited Kingdom2024-04-10Printing Dimensions NEW68Asiya Javayant
1003Claire J WaycottJapan2024-04-02Commercial Press NEGOTIATION13Elwin Sharvill
1004Jones T CampainGermany2024-04-18Morlong Associates UNQUALIFIED51Onyama Limba
1005Greenwood U OldroydArgentina2024-03-31Benton, John B Jr UNQUALIFIED46Ioni Bowcher
1006Emily F KolmetzArgentina2024-04-12Commercial Press RENEWAL9Anna Fali
1007Aditya Z GarufiJapan2024-04-25Buckley Miller Wright NEW53Asiya Javayant
1008Rodrigues Z TollnerAustralia2024-04-20Truhlar And Truhlar Attys NEW0Amy Elsner
1009James X StensethItaly2024-04-05Rousseaux, Michael Esq NEGOTIATION54Onyama Limba
1010Alejandro X StensethUnited Kingdom2024-04-08Chemel, James L Cpa PROPOSAL8Elwin Sharvill
1011Antonio D PoquetteCanada2024-04-29Rousseaux, Michael Esq PROPOSAL40Stephen Shaw
1012Morrow B MaletCanada2024-04-15Truhlar And Truhlar Attys RENEWAL46Asiya Javayant
1013Maisha P DoeBrazil2024-04-25Commercial Press UNQUALIFIED97Ivan Magalhaes
1014Jennifer H FerenczUnited Kingdom2024-04-23Feiner Bros RENEWAL12Bernardo Dominic
1015Leon K GarufiArgentina2024-04-06Commercial Press NEGOTIATION31Ioni Bowcher
1016Izzy T IturbideJapan2024-04-05Feiner Bros NEW49Anna Fali
1017Chavez J CaldareraRussia2024-04-02Chemel, James L Cpa QUALIFIED61Ioni Bowcher
1018Mayumi C MacleadUnited Kingdom2024-04-27Benton, John B Jr UNQUALIFIED25Bernardo Dominic
1019Misaki R WaycottBrazil2024-04-22Printing Dimensions UNQUALIFIED47Xuxue Feng
1020Maria M RoysterSpain2024-04-22Chemel, James L Cpa NEW65Stephen Shaw
1021Maisha U MaletAustralia2024-04-15Morlong Associates UNQUALIFIED85Stephen Shaw
1022Tony Z CampainCanada2024-04-26Buckley Miller Wright UNQUALIFIED9Xuxue Feng
1023David V CaudyItaly2024-04-10Rousseaux, Michael Esq PROPOSAL90Onyama Limba
1024Munro P SlusarskiAustralia2024-04-15Chanay, Jeffrey A Esq NEGOTIATION44Elwin Sharvill
1025Maisha R MaletCanada2024-04-26King, Christopher A Esq QUALIFIED76Elwin Sharvill
1026Salvatore Z SaylorsSpain2024-04-14Dorl, James J Esq PROPOSAL32Stephen Shaw
1027Greenwood L PoquetteUnited Kingdom2024-04-11Rousseaux, Michael Esq NEW10Elwin Sharvill
1028Faith L StockhamBrazil2024-04-12Chapman, Ross E Esq PROPOSAL29Ioni Bowcher
1029Maisha V OldroydRussia2024-04-04Morlong Associates NEGOTIATION52Amy Elsner
1030Munro J CampainGermany2024-04-20Chemel, James L Cpa QUALIFIED44Amy Elsner
1031Tony Y PerinUnited Kingdom2024-04-19Dorl, James J Esq QUALIFIED36Anna Fali
1032Munro T NestleCanada2024-04-15Chanay, Jeffrey A Esq RENEWAL45Onyama Limba
1033James V FollerBrazil2024-04-05Dorl, James J Esq QUALIFIED68Ioni Bowcher
1034Darci F TollnerItaly2024-04-04King, Christopher A Esq UNQUALIFIED32Xuxue Feng
1035James L WieserJapan2024-04-08Benton, John B Jr RENEWAL22Onyama Limba
1036Mujtaba X FollerAustralia2024-04-15Chapman, Ross E Esq NEW54Elwin Sharvill
1037Salvatore S InouyeItaly2024-04-08King, Christopher A Esq RENEWAL43Anna Fali
1038Alejandro X CaldareraItaly2024-04-23Printing Dimensions PROPOSAL21Asiya Javayant
1039Aruna E GlickFrance2024-04-20Morlong Associates NEW61Stephen Shaw
1040Munro S DilliardAustralia2024-04-22King, Christopher A Esq NEGOTIATION92Amy Elsner
1041Ricardo C GlickJapan2024-04-08Truhlar And Truhlar Attys RENEWAL8Bernardo Dominic
1042Darci Q InouyeItaly2024-04-09Buckley Miller Wright PROPOSAL77Elwin Sharvill
1043Isabel B KuskoJapan2024-04-27Chemel, James L Cpa RENEWAL26Amy Elsner
1044Adams A AmigonCanada2024-04-18Rangoni Of Florence QUALIFIED82Amy Elsner
1045Deepesh T FerenczUnited Kingdom2024-04-13Rangoni Of Florence NEW33Ivan Magalhaes
1046Aruna X MacleadIndia2024-04-14Chapman, Ross E Esq UNQUALIFIED56Amy Elsner
1047Stacey U StensethItaly2024-04-09Feltz Printing Service PROPOSAL77Ivan Magalhaes
1048Jeanfrancois C CaudySpain2024-04-08Chemel, James L Cpa PROPOSAL71Asiya Javayant
1049Maria W ShinkoIndia2024-04-15Morlong Associates NEGOTIATION48Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Maisha E CampainItalyAnna Fali RENEWAL
Juan A AlbaresItalyBernardo Dominic PROPOSAL
Johnson L WhobreyBrazilElwin Sharvill RENEWAL
Kadeem W GillianUnited KingdomStephen Shaw NEW
Smith X SchemmerItalyElwin Sharvill RENEWAL
Isabel A MaletItalyAmy Elsner NEW
Francesco J SlusarskiRussiaXuxue Feng PROPOSAL
Octavia L CampainJapanIvan Magalhaes NEGOTIATION
Wickens Y WhobreyUnited KingdomStephen Shaw QUALIFIED
Ashley B PoquetteItalyAnna Fali UNQUALIFIED
Faith Y DoeFranceIvan Magalhaes PROPOSAL
Stacey M PerinFranceAsiya Javayant NEGOTIATION
Kadeem Y SaylorsRussiaOnyama Limba NEGOTIATION
Octavia I DarakjyAustraliaAmy Elsner QUALIFIED
Aruna U OldroydGermanyAsiya Javayant RENEWAL
Kadeem W DarakjyRussiaAmy Elsner PROPOSAL
Jefferson D ChuiAustraliaAsiya Javayant RENEWAL
Murillo X SlusarskiBrazilAnna Fali QUALIFIED
Aika X SergiArgentinaIoni Bowcher RENEWAL
Misaki W SlusarskiFranceStephen Shaw PROPOSAL
Aditya T CaudyUnited KingdomOnyama Limba NEW
Darci Y StockhamSpainAnna Fali QUALIFIED
Munro T StensethJapanStephen Shaw NEGOTIATION
Chavez J FigeroaItalyAnna Fali QUALIFIED
Cody F IturbideAustraliaOnyama Limba UNQUALIFIED
Kadeem Z FlosiFranceAsiya Javayant QUALIFIED
Stacey J PaprockiGermanyAnna Fali UNQUALIFIED
Clifford X CampainArgentinaXuxue Feng UNQUALIFIED
Aditya P MaletArgentinaIoni Bowcher NEGOTIATION
Isabel Q InouyeCanadaXuxue Feng RENEWAL
Aruna L TollnerUnited KingdomOnyama Limba UNQUALIFIED
Stacey T ShinkoSpainAsiya Javayant QUALIFIED
Aditya O PaprockiCanadaOnyama Limba RENEWAL
Kadeem E BowleyArgentinaAmy Elsner QUALIFIED
Kadeem W BriddickFranceAsiya Javayant NEW
Arvin N MacleadBrazilAmy Elsner UNQUALIFIED
Stacey R OldroydUnited KingdomIoni Bowcher PROPOSAL
Ricardo P KolmetzUnited KingdomXuxue Feng QUALIFIED
Tony R PoquetteJapanAnna Fali UNQUALIFIED
Munro P ButtGermanyAnna Fali RENEWAL
Greenwood F GauchoUnited KingdomStephen Shaw RENEWAL
Maisha Y ShinkoFranceAnna Fali NEGOTIATION
Munro W DarakjyGermanyStephen Shaw QUALIFIED
Murillo N PerinArgentinaStephen Shaw QUALIFIED
David E SlusarskiIndiaAnna Fali NEW
Isabel R WaycottFranceBernardo Dominic QUALIFIED
Clifford C CampainCanadaAsiya Javayant RENEWAL
Faith D NestleIndiaXuxue Feng RENEWAL
Jennifer N MaletArgentinaIvan Magalhaes UNQUALIFIED
Wickens F KolmetzSpainAsiya Javayant NEW
Frozen Columns
Name
Adams E Figeroa
Jeanfrancois E Maclead
James J Foller
Rodrigues L Glick
Isabel R Garufi
Morrow Y Wieser
Wickens G Whobrey
Julie C Wieser
Greenwood I Poquette
Wickens D Whobrey
Francesco D Darakjy
Mayumi I Butt
Adams C Briddick
Maria Y Doe
Aika E Ferencz
Ricardo E Paprocki
Clifford M Rim
Munro U Briddick
Murillo A Ruta
Ivar C Saylors
Misaki U Rim
Cody Z Nicka
Izzy G Iturbide
Ashley K Darakjy
Ivar V Venere
Wickens D Flosi
Mujtaba Q Paprocki
Cody H Bowley
Octavia U Campain
Ivar S Glick
Octavia U Darakjy
Rodrigues O Bowley
Greenwood C Ferencz
Greenwood F Morasca
Clifford W Gillian
Ivar S Nicka
Julie H Morasca
Juan A Gaucho
Mujtaba C Nestle
Silvio S Ostrosky
Nicolas U Flosi
Nicolas P Ruta
Jefferson X Gaucho
Emily R Gillian
Clifford H Ferencz
Greenwood Y Albares
Ashley U Gillian
Juan O Albares
Rodrigues V Tollner
Munro S Kolmetz
IdCountryDate
1000Russia2024-04-18
1001Argentina2024-04-14
1002Australia2024-04-26
1003Germany2024-04-07
1004Italy2024-04-27
1005Italy2024-04-19
1006France2024-04-06
1007Russia2024-04-11
1008Spain2024-04-22
1009Germany2024-04-16
1010Australia2024-04-14
1011Japan2024-04-02
1012Italy2024-04-23
1013Argentina2024-04-23
1014Argentina2024-04-08
1015Australia2024-04-06
1016Japan2024-04-06
1017Russia2024-04-24
1018France2024-04-26
1019India2024-04-06
1020Canada2024-04-05
1021India2024-04-19
1022Australia2024-04-28
1023Spain2024-04-27
1024Italy2024-04-19
1025Australia2024-04-16
1026Italy2024-04-07
1027France2024-04-27
1028Canada2024-04-19
1029Russia2024-04-03
1030Brazil2024-04-18
1031Germany2024-04-19
1032Australia2024-04-19
1033Spain2024-04-22
1034Spain2024-03-31
1035Russia2024-04-19
1036Canada2024-04-12
1037Canada2024-04-09
1038Argentina2024-04-22
1039Australia2024-04-20
1040Argentina2024-04-18
1041Canada2024-04-09
1042Canada2024-04-12
1043Brazil2024-04-01
1044Russia2024-04-24
1045Australia2024-04-04
1046India2024-04-04
1047Australia2024-04-22
1048Italy2024-04-14
1049Spain2024-04-02

On-Demand Data

NameIdCountryDate
Sinclair J Paprocki1000India2024-04-15
Darci E Maclead1001Italy2024-04-24
Alejandro I Kolmetz1002Canada2024-04-25
Adams L Tollner1003Brazil2024-04-06
Stacey Y Saylors1004Argentina2024-04-18
Leon O Morasca1005Argentina2024-04-14
Wickens S Venere1006Canada2024-04-19
Jones O Campain1007Argentina2024-04-15
Ivar O Briddick1008France2024-04-11
Silvio K Oldroyd1009Canada2024-04-25
Arvin H Nestle1010India2024-04-16
Jennifer Y Waycott1011Italy2024-04-26
Jones L Glick1012Canada2024-04-05
Francesco N Campain1013United Kingdom2024-04-21
Alejandro Z Shinko1014India2024-04-28
Jennifer Z Flosi1015Canada2024-04-27
Ricardo C Maclead1016United Kingdom2024-03-31
Aditya K Royster1017Russia2024-04-11
Alejandro P Ostrosky1018Argentina2024-04-11
Johnson P Ferencz1019Canada2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia J PaprockiArgentinaStephen Shaw UNQUALIFIED
Mujtaba Q KolmetzArgentinaBernardo Dominic QUALIFIED
Aditya Z RoysterUnited KingdomAmy Elsner PROPOSAL
Faith V SergiRussiaAnna Fali QUALIFIED
Aditya R GlickFranceIvan Magalhaes UNQUALIFIED
Antonio P FigeroaBrazilAsiya Javayant NEW
Izzy Z SaylorsArgentinaAnna Fali PROPOSAL
Jones G PoquetteItalyAmy Elsner RENEWAL
Isabel W BowleyIndiaStephen Shaw PROPOSAL
Octavia K AlbaresFranceAmy Elsner QUALIFIED
Darci E GarufiItalyAsiya Javayant NEW
Clifford Y ChuiArgentinaIoni Bowcher QUALIFIED
Clifford P GarufiGermanyXuxue Feng UNQUALIFIED
Claire X DoeItalyIoni Bowcher NEGOTIATION
Faith F OldroydUnited KingdomStephen Shaw RENEWAL
Maisha C ChuiIndiaIvan Magalhaes NEW
Jefferson T NestleArgentinaAnna Fali QUALIFIED
Johnson H NickaItalyAnna Fali NEW
Smith J BriddickItalyIvan Magalhaes PROPOSAL
Francesco Z OstroskyIndiaAsiya Javayant PROPOSAL
Ricardo Q FigeroaGermanyIvan Magalhaes RENEWAL
Clifford F GlickAustraliaAmy Elsner PROPOSAL
Jennifer T WieserAustraliaXuxue Feng NEGOTIATION
Cody N ChuiRussiaXuxue Feng QUALIFIED
Morrow D KuskoRussiaBernardo Dominic RENEWAL
Wickens Q NickaArgentinaStephen Shaw RENEWAL
Maisha W VocelkaSpainAnna Fali RENEWAL
Mujtaba N SergiRussiaXuxue Feng UNQUALIFIED
Kaitlin S GlickAustraliaXuxue Feng QUALIFIED
Murillo W RimJapanXuxue Feng NEGOTIATION
Clifford S FollerAustraliaOnyama Limba QUALIFIED
Murillo A CaldareraItalyElwin Sharvill PROPOSAL
Kaitlin D DilliardBrazilOnyama Limba PROPOSAL
Jennifer S RutaItalyAmy Elsner NEGOTIATION
Claire F WieserUnited KingdomBernardo Dominic NEW
Wickens W KolmetzGermanyOnyama Limba NEGOTIATION
Jennifer H ChuiItalyXuxue Feng RENEWAL
Aruna G AmigonIndiaAmy Elsner NEGOTIATION
Maisha G VocelkaSpainAnna Fali NEW
Ricardo Z SchemmerGermanyXuxue Feng 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>