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
Izzy T RutaBrazilXuxue Feng NEGOTIATION
Greenwood F BriddickCanadaElwin Sharvill UNQUALIFIED
Emily Z TollnerItalyIoni Bowcher QUALIFIED
Kadeem S CampainSpainAsiya Javayant PROPOSAL
Adams H SchemmerJapanXuxue Feng QUALIFIED
Nicolas P VenereSpainIvan Magalhaes UNQUALIFIED
Juan H ChuiFranceOnyama Limba NEW
Aditya R CaudyArgentinaAsiya Javayant PROPOSAL
Leja R GauchoBrazilAmy Elsner PROPOSAL
Jones R FollerUnited KingdomXuxue Feng UNQUALIFIED
Leja Z VenereGermanyAsiya Javayant NEGOTIATION
Salvatore L PaprockiIndiaBernardo Dominic NEGOTIATION
Ivar A SaylorsArgentinaXuxue Feng UNQUALIFIED
Smith M SergiUnited KingdomIvan Magalhaes PROPOSAL
Jefferson O KuskoGermanyXuxue Feng UNQUALIFIED
Adams M DarakjyGermanyBernardo Dominic QUALIFIED
Faith F NestleItalyXuxue Feng NEW
Mayumi P RoysterArgentinaElwin Sharvill UNQUALIFIED
Darci U MaletFranceElwin Sharvill RENEWAL
Ricardo Z VenereGermanyBernardo Dominic NEW
Octavia A BowleyBrazilAsiya Javayant NEGOTIATION
Julie Z WhobreyRussiaIoni Bowcher PROPOSAL
Misaki J PerinArgentinaElwin Sharvill RENEWAL
Aruna A SlusarskiCanadaAmy Elsner NEGOTIATION
Claire R MacleadItalyAmy Elsner RENEWAL
Jones A CampainUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson W DilliardRussiaXuxue Feng NEW
Darci L MaletIndiaXuxue Feng PROPOSAL
Tony I GillianCanadaAmy Elsner RENEWAL
Darci H CampainUnited KingdomIvan Magalhaes UNQUALIFIED
Cody C RimJapanBernardo Dominic NEGOTIATION
Adams D ButtAustraliaAmy Elsner PROPOSAL
Tony T VocelkaRussiaBernardo Dominic NEGOTIATION
Adams V StensethItalyXuxue Feng NEW
Maisha Z IturbideIndiaOnyama Limba RENEWAL
Sinclair V AlbaresFranceElwin Sharvill NEW
Maria Q PoquetteAustraliaBernardo Dominic QUALIFIED
Leon V DilliardBrazilAnna Fali PROPOSAL
Salvatore S SaylorsIndiaOnyama Limba NEW
Maisha O BowleyGermanyOnyama Limba NEGOTIATION
Maria J MarrierJapanStephen Shaw UNQUALIFIED
James H FlosiFranceAnna Fali NEGOTIATION
Antonio X BologniaUnited KingdomAsiya Javayant RENEWAL
Murillo Z GlickIndiaIvan Magalhaes NEGOTIATION
David W ShinkoBrazilIoni Bowcher RENEWAL
Deepesh Q WaycottRussiaOnyama Limba PROPOSAL
Ivar G NickaCanadaStephen Shaw NEGOTIATION
Octavia Y RimIndiaBernardo Dominic RENEWAL
Ashley V SlusarskiGermanyXuxue Feng RENEWAL
Leja S DarakjyBrazilAnna Fali NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Kaitlin L MaletArgentinaIoni Bowcher UNQUALIFIED
Kadeem V WhobreySpainStephen Shaw PROPOSAL
Deepesh X DarakjyRussiaOnyama Limba RENEWAL
Wickens Q MorascaFranceOnyama Limba QUALIFIED
Maria F PerinArgentinaIvan Magalhaes UNQUALIFIED
Mayumi K PaprockiRussiaAmy Elsner RENEWAL
Smith J MaletGermanyXuxue Feng NEGOTIATION
Ashley H ButtItalyXuxue Feng UNQUALIFIED
Jefferson N VocelkaCanadaIoni Bowcher NEW
Adams K PaprockiUnited KingdomAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson Y SaylorsUnited Kingdom2024-05-07Truhlar And Truhlar Attys NEW33Onyama Limba
1001Costa A NestleIndia2024-04-23Commercial Press QUALIFIED13Stephen Shaw
1002Cody A CaldareraAustralia2024-05-20Dorl, James J Esq NEGOTIATION46Xuxue Feng
1003Jeanfrancois J StockhamAustralia2024-05-10Benton, John B Jr NEW25Ivan Magalhaes
1004Darci P ShinkoUnited Kingdom2024-04-25Printing Dimensions QUALIFIED27Ioni Bowcher
1005Alejandro P GillianUnited Kingdom2024-05-03Chemel, James L Cpa NEGOTIATION35Asiya Javayant
1006Adams U NickaAustralia2024-04-24Printing Dimensions RENEWAL59Amy Elsner
1007Mujtaba G SergiItaly2024-05-08Chapman, Ross E Esq UNQUALIFIED79Anna Fali
1008Cody W CaldareraSpain2024-04-30Rangoni Of Florence RENEWAL17Bernardo Dominic
1009Darci V RimUnited Kingdom2024-05-07Feiner Bros QUALIFIED95Anna Fali
1010Rodrigues U StensethGermany2024-05-10King, Christopher A Esq UNQUALIFIED45Xuxue Feng
1011Nicolas P MaletUnited Kingdom2024-04-26Feiner Bros RENEWAL8Bernardo Dominic
1012Jennifer C NickaJapan2024-04-21Dorl, James J Esq NEW0Elwin Sharvill
1013Misaki M InouyeUnited Kingdom2024-04-27Feltz Printing Service PROPOSAL62Bernardo Dominic
1014Stacey T KuskoAustralia2024-05-18Truhlar And Truhlar Attys NEGOTIATION82Ioni Bowcher
1015Mayumi P NickaFrance2024-05-10Dorl, James J Esq UNQUALIFIED32Ivan Magalhaes
1016Julie D PoquetteRussia2024-05-13Chapman, Ross E Esq NEW65Elwin Sharvill
1017Deepesh N InouyeArgentina2024-04-21King, Christopher A Esq NEGOTIATION52Ioni Bowcher
1018Johnson W MorascaCanada2024-05-15Dorl, James J Esq UNQUALIFIED33Ivan Magalhaes
1019Ivar I KuskoArgentina2024-05-09Morlong Associates PROPOSAL94Onyama Limba
1020Greenwood D RutaBrazil2024-05-01Morlong Associates PROPOSAL62Asiya Javayant
1021Ricardo L MarrierJapan2024-04-26Chanay, Jeffrey A Esq NEW67Bernardo Dominic
1022Mayumi F StockhamGermany2024-05-13Dorl, James J Esq QUALIFIED67Ivan Magalhaes
1023Munro J NickaBrazil2024-05-20Buckley Miller Wright PROPOSAL46Elwin Sharvill
1024Leja S WhobreyAustralia2024-04-26Dorl, James J Esq NEW45Onyama Limba
1025Salvatore N MaletJapan2024-04-30Morlong Associates QUALIFIED97Asiya Javayant
1026Emily Y CaudyGermany2024-04-27Morlong Associates NEW6Elwin Sharvill
1027Greenwood V KolmetzItaly2024-05-12Feiner Bros QUALIFIED99Onyama Limba
1028Juan Z FigeroaItaly2024-05-18Rangoni Of Florence RENEWAL8Onyama Limba
1029Ivar R CaudyArgentina2024-05-16Chanay, Jeffrey A Esq NEGOTIATION0Bernardo Dominic
1030Leja T AlbaresCanada2024-05-05Morlong Associates QUALIFIED4Xuxue Feng
1031David J MarrierBrazil2024-05-02Chanay, Jeffrey A Esq UNQUALIFIED46Anna Fali
1032Ivar D DarakjyRussia2024-05-07Printing Dimensions NEGOTIATION70Amy Elsner
1033Mujtaba U SergiJapan2024-05-04Feltz Printing Service QUALIFIED9Anna Fali
1034Emily K CaldareraCanada2024-05-01King, Christopher A Esq NEW98Onyama Limba
1035Ricardo Q BriddickUnited Kingdom2024-05-08Printing Dimensions UNQUALIFIED82Amy Elsner
1036Leon C BologniaFrance2024-05-19Buckley Miller Wright NEW32Elwin Sharvill
1037Sinclair P MorascaFrance2024-05-16Truhlar And Truhlar Attys PROPOSAL54Stephen Shaw
1038Maria P RoysterUnited Kingdom2024-05-15Chemel, James L Cpa NEW48Xuxue Feng
1039Julie R MaletUnited Kingdom2024-05-13King, Christopher A Esq RENEWAL0Anna Fali
1040Clifford W BowleyCanada2024-05-20Printing Dimensions PROPOSAL20Bernardo Dominic
1041James R NickaArgentina2024-04-21Truhlar And Truhlar Attys UNQUALIFIED67Stephen Shaw
1042Salvatore K FlosiBrazil2024-05-01King, Christopher A Esq QUALIFIED55Xuxue Feng
1043Stacey R MaletBrazil2024-05-05Rousseaux, Michael Esq NEW61Bernardo Dominic
1044Julie Q GauchoJapan2024-05-07Chemel, James L Cpa RENEWAL42Elwin Sharvill
1045Arvin H GlickRussia2024-04-22Chanay, Jeffrey A Esq PROPOSAL56Bernardo Dominic
1046Morrow M MacleadRussia2024-05-09Printing Dimensions UNQUALIFIED15Xuxue Feng
1047Salvatore N MarrierJapan2024-04-21Dorl, James J Esq NEW89Ivan Magalhaes
1048Jeanfrancois C ShinkoArgentina2024-05-10Chapman, Ross E Esq PROPOSAL21Asiya Javayant
1049Juan F PerinItaly2024-04-27Rousseaux, Michael Esq UNQUALIFIED36Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Jennifer G BriddickJapanOnyama Limba RENEWAL
Maisha B KuskoArgentinaAnna Fali RENEWAL
Deepesh T NestleRussiaAnna Fali PROPOSAL
Mayumi F NickaBrazilAsiya Javayant NEW
Faith E PoquetteItalyAsiya Javayant RENEWAL
Smith C CaldareraSpainOnyama Limba PROPOSAL
Deepesh S RutaCanadaStephen Shaw NEW
Aditya W WhobreyArgentinaStephen Shaw NEW
Francesco K KolmetzJapanIvan Magalhaes NEGOTIATION
Deepesh Z FigeroaItalyBernardo Dominic PROPOSAL
Cody E FollerAustraliaIvan Magalhaes UNQUALIFIED
Julie A AlbaresAustraliaXuxue Feng QUALIFIED
Juan R DilliardGermanyElwin Sharvill NEW
Ricardo J FerenczAustraliaOnyama Limba RENEWAL
Nicolas W SchemmerJapanAnna Fali QUALIFIED
Kaitlin Z GarufiArgentinaAmy Elsner PROPOSAL
Munro J VocelkaIndiaXuxue Feng PROPOSAL
Darci T VenereGermanyStephen Shaw NEW
Antonio O GauchoJapanBernardo Dominic QUALIFIED
Rodrigues T WieserBrazilAsiya Javayant NEGOTIATION
Misaki A GillianItalyStephen Shaw PROPOSAL
Octavia V DoeArgentinaIoni Bowcher UNQUALIFIED
Adams I RulapaughCanadaXuxue Feng PROPOSAL
Nicolas P RutaUnited KingdomXuxue Feng UNQUALIFIED
Antonio F GlickJapanStephen Shaw UNQUALIFIED
Arvin N WhobreyFranceElwin Sharvill RENEWAL
Chavez F ButtBrazilBernardo Dominic PROPOSAL
Darci H BologniaItalyIoni Bowcher UNQUALIFIED
Julie A MacleadArgentinaIvan Magalhaes NEW
Ivar M PaprockiSpainBernardo Dominic QUALIFIED
Ashley S BowleyRussiaAmy Elsner UNQUALIFIED
Claire Z PaprockiJapanIvan Magalhaes NEGOTIATION
Murillo N OstroskyAustraliaOnyama Limba NEGOTIATION
James Q VocelkaSpainAnna Fali QUALIFIED
Ashley T PoquetteItalyElwin Sharvill NEGOTIATION
Stacey C InouyeJapanOnyama Limba UNQUALIFIED
Leja C MacleadCanadaStephen Shaw RENEWAL
Mujtaba O MaletArgentinaAsiya Javayant RENEWAL
Mayumi O VenereArgentinaElwin Sharvill UNQUALIFIED
Alejandro F VenereItalyStephen Shaw UNQUALIFIED
Salvatore M RoysterArgentinaIvan Magalhaes NEGOTIATION
Aditya K StockhamCanadaAnna Fali PROPOSAL
Costa O WhobreyAustraliaBernardo Dominic PROPOSAL
Clifford Y SaylorsFranceIoni Bowcher RENEWAL
Costa G DarakjyArgentinaXuxue Feng NEW
Julie B StockhamBrazilAsiya Javayant QUALIFIED
Salvatore W PoquetteGermanyXuxue Feng UNQUALIFIED
Ivar W OstroskyUnited KingdomStephen Shaw NEGOTIATION
Costa Q BowleyItalyAmy Elsner NEW
Darci B ButtJapanElwin Sharvill QUALIFIED
Frozen Columns
Name
Ashley D Marrier
Adams K Albares
Clifford G Ferencz
Leon V Foller
Leja U Rim
Costa K Kolmetz
Mayumi B Rulapaugh
Darci L Sergi
Arvin K Whobrey
Nicolas G Gaucho
Ricardo G Stenseth
Ivar V Gillian
Greenwood R Morasca
Julie M Oldroyd
Cody E Stenseth
Ashley C Slusarski
Ivar U Stockham
Jefferson V Darakjy
Wickens O Kolmetz
Nicolas B Saylors
Jones A Poquette
Ivar C Maclead
Jennifer N Shinko
Juan S Sergi
Julie M Marrier
Cody L Waycott
Sinclair B Rulapaugh
Cody E Iturbide
Morrow F Malet
Arvin O Paprocki
Munro U Rim
Aditya R Rulapaugh
Deepesh U Shinko
Arvin F Albares
Misaki L Paprocki
Greenwood A Maclead
Francesco B Gaucho
Aruna S Tollner
Isabel T Sergi
Julie P Royster
Chavez F Malet
Stacey Q Poquette
Octavia E Morasca
Stacey W Sergi
Salvatore E Stockham
Sinclair O Vocelka
Faith L Waycott
Jennifer C Iturbide
Cody K Schemmer
Jennifer G Gillian
IdCountryDate
1000Japan2024-05-09
1001Russia2024-05-13
1002Argentina2024-04-30
1003France2024-05-13
1004Canada2024-05-04
1005France2024-05-15
1006Japan2024-04-21
1007Argentina2024-04-25
1008Brazil2024-04-24
1009Australia2024-05-05
1010United Kingdom2024-05-10
1011Italy2024-05-14
1012Russia2024-04-28
1013United Kingdom2024-05-18
1014Italy2024-05-17
1015India2024-05-09
1016Germany2024-05-16
1017Russia2024-05-14
1018Japan2024-04-21
1019Russia2024-05-10
1020Italy2024-04-27
1021Canada2024-05-20
1022Argentina2024-05-20
1023France2024-05-15
1024Russia2024-05-02
1025Germany2024-05-07
1026Australia2024-05-15
1027Brazil2024-05-20
1028India2024-05-08
1029Spain2024-05-09
1030India2024-05-07
1031Italy2024-05-10
1032Russia2024-04-25
1033Canada2024-05-04
1034Argentina2024-05-15
1035Germany2024-04-22
1036India2024-05-12
1037Argentina2024-04-29
1038Argentina2024-05-07
1039Japan2024-05-17
1040France2024-05-14
1041Russia2024-05-08
1042Australia2024-04-23
1043Canada2024-05-12
1044Canada2024-04-22
1045Germany2024-05-12
1046Japan2024-04-27
1047Italy2024-05-17
1048Germany2024-05-20
1049Brazil2024-05-13

On-Demand Data

NameIdCountryDate
Ricardo H Caudy1000Argentina2024-05-12
Jennifer S Briddick1001Spain2024-05-11
Leon P Bolognia1002Germany2024-05-13
Juan B Ostrosky1003Spain2024-05-10
Antonio E Royster1004Canada2024-05-15
Jeanfrancois U Garufi1005Brazil2024-05-12
Nicolas T Foller1006Italy2024-05-02
Ashley J Malet1007Spain2024-05-03
James P Schemmer1008Japan2024-05-03
Rodrigues G Vocelka1009Brazil2024-05-20
Wickens Y Sergi1010Canada2024-05-18
David W Amigon1011Russia2024-05-20
Jones N Wieser1012Australia2024-05-09
Maria E Morasca1013Brazil2024-05-14
Ricardo Z Briddick1014Italy2024-04-22
Jefferson N Royster1015United Kingdom2024-04-28
Rodrigues Y Waycott1016Italy2024-04-26
Chavez P Malet1017United Kingdom2024-05-20
Smith F Doe1018United Kingdom2024-05-14
Costa R Schemmer1019Spain2024-05-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria W RutaCanadaAmy Elsner RENEWAL
Deepesh T BowleyRussiaIvan Magalhaes NEGOTIATION
Isabel F BriddickUnited KingdomAnna Fali PROPOSAL
Salvatore U RutaAustraliaAsiya Javayant QUALIFIED
Salvatore H IturbideItalyAsiya Javayant QUALIFIED
Jennifer Y StensethArgentinaOnyama Limba PROPOSAL
Adams A RimFranceXuxue Feng QUALIFIED
Ashley X FigeroaAustraliaStephen Shaw RENEWAL
Leon I IturbideJapanIvan Magalhaes NEGOTIATION
Ricardo H RimBrazilAmy Elsner NEGOTIATION
Smith E SaylorsArgentinaAsiya Javayant NEGOTIATION
Jefferson I RoysterItalyOnyama Limba UNQUALIFIED
Smith W ChuiCanadaBernardo Dominic QUALIFIED
Chavez M WaycottItalyAmy Elsner RENEWAL
Tony L VocelkaBrazilAmy Elsner PROPOSAL
Jefferson D WaycottRussiaStephen Shaw UNQUALIFIED
Mayumi D StockhamGermanyAnna Fali PROPOSAL
Adams O CaldareraUnited KingdomAsiya Javayant NEW
Aika E AlbaresFranceAmy Elsner RENEWAL
Morrow S KolmetzGermanyAmy Elsner UNQUALIFIED
Morrow N RutaRussiaIvan Magalhaes PROPOSAL
Kaitlin D IturbideArgentinaIvan Magalhaes UNQUALIFIED
Jeanfrancois W ShinkoFranceXuxue Feng NEW
Jeanfrancois F MacleadIndiaIvan Magalhaes PROPOSAL
Rodrigues C WaycottGermanyElwin Sharvill QUALIFIED
Clifford D ButtCanadaStephen Shaw NEW
Salvatore P CaldareraUnited KingdomAsiya Javayant RENEWAL
Darci Z CaudySpainAmy Elsner QUALIFIED
Chavez R FerenczGermanyAmy Elsner UNQUALIFIED
Johnson K MacleadCanadaAmy Elsner NEGOTIATION
Silvio N AlbaresCanadaXuxue Feng UNQUALIFIED
Izzy C MaletJapanAnna Fali NEGOTIATION
Salvatore Q StockhamBrazilXuxue Feng QUALIFIED
Adams A StockhamAustraliaAsiya Javayant NEGOTIATION
Salvatore T RimSpainBernardo Dominic PROPOSAL
Johnson M DoeArgentinaAsiya Javayant NEW
Jeanfrancois B RulapaughAustraliaAnna Fali QUALIFIED
Julie U PaprockiFranceAnna Fali RENEWAL
Mayumi R WieserArgentinaElwin Sharvill NEW
Jones K NickaBrazilIvan Magalhaes 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>