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
Mayumi A DilliardRussiaXuxue Feng UNQUALIFIED
Ricardo L AlbaresJapanIoni Bowcher UNQUALIFIED
Alejandro Z RoysterAustraliaElwin Sharvill NEGOTIATION
Cody Z WieserJapanAsiya Javayant NEGOTIATION
Faith K WhobreyFranceElwin Sharvill QUALIFIED
Aika E CampainArgentinaAnna Fali NEGOTIATION
Aika S DarakjyFranceStephen Shaw NEGOTIATION
Francesco P StensethSpainOnyama Limba UNQUALIFIED
Nicolas K ButtRussiaAmy Elsner NEW
Alejandro V VenereAustraliaAsiya Javayant QUALIFIED
Darci V AmigonArgentinaAmy Elsner PROPOSAL
Greenwood L FigeroaItalyOnyama Limba NEW
Jones C SaylorsAustraliaBernardo Dominic NEW
Leon V PoquetteJapanStephen Shaw NEGOTIATION
Aika X VenereFranceXuxue Feng NEW
James P RutaItalyElwin Sharvill NEW
Octavia D MacleadGermanyAmy Elsner NEW
Jennifer R AmigonItalyAnna Fali NEGOTIATION
Rodrigues O BowleySpainIoni Bowcher QUALIFIED
Jones E AlbaresAustraliaElwin Sharvill UNQUALIFIED
Munro K RimBrazilAnna Fali QUALIFIED
Aruna T CampainUnited KingdomAnna Fali PROPOSAL
Stacey O PoquetteGermanyXuxue Feng PROPOSAL
Murillo V ShinkoIndiaBernardo Dominic NEGOTIATION
Aruna F BologniaAustraliaAmy Elsner PROPOSAL
Arvin I StensethAustraliaXuxue Feng NEW
Alejandro A FollerJapanIoni Bowcher NEGOTIATION
Leon R SlusarskiFranceXuxue Feng UNQUALIFIED
Jeanfrancois C MaletArgentinaIvan Magalhaes NEGOTIATION
Julie G FlosiJapanIvan Magalhaes NEW
Clifford H BowleyBrazilStephen Shaw NEGOTIATION
Chavez L VocelkaRussiaIoni Bowcher UNQUALIFIED
Maisha I DoeCanadaBernardo Dominic UNQUALIFIED
Aika C SlusarskiAustraliaIvan Magalhaes UNQUALIFIED
Jones L CampainFranceAsiya Javayant PROPOSAL
Jennifer A DarakjySpainOnyama Limba QUALIFIED
Jefferson R DilliardItalyBernardo Dominic NEGOTIATION
Isabel U MacleadArgentinaIoni Bowcher NEW
Chavez G BologniaUnited KingdomBernardo Dominic UNQUALIFIED
Emily E MorascaJapanIoni Bowcher UNQUALIFIED
Aika W SlusarskiItalyXuxue Feng NEGOTIATION
Leon A RutaUnited KingdomAmy Elsner PROPOSAL
Ricardo U NickaCanadaAnna Fali UNQUALIFIED
Johnson S CaudyCanadaAnna Fali PROPOSAL
Jefferson A ButtFranceElwin Sharvill RENEWAL
Tony O KolmetzArgentinaXuxue Feng NEW
Arvin E SergiItalyElwin Sharvill NEW
Isabel B StockhamArgentinaElwin Sharvill PROPOSAL
Kadeem C BologniaCanadaAsiya Javayant NEGOTIATION
Arvin G SaylorsFranceIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Clifford H MacleadFranceAmy Elsner NEGOTIATION
Jeanfrancois K BowleyAustraliaAmy Elsner UNQUALIFIED
Kaitlin G RutaGermanyAsiya Javayant QUALIFIED
Misaki X WaycottUnited KingdomAnna Fali RENEWAL
Salvatore D FlosiJapanBernardo Dominic RENEWAL
Salvatore X PaprockiGermanyBernardo Dominic QUALIFIED
Maisha T VenereJapanAsiya Javayant PROPOSAL
Cody C ShinkoBrazilXuxue Feng RENEWAL
Darci C KolmetzItalyElwin Sharvill UNQUALIFIED
Adams S KuskoGermanyIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo Y FlosiItaly2024-04-06Chemel, James L Cpa UNQUALIFIED37Ivan Magalhaes
1001Sinclair T CampainJapan2024-04-15Morlong Associates NEGOTIATION99Anna Fali
1002Arvin K CaudyArgentina2024-03-30Rousseaux, Michael Esq PROPOSAL79Onyama Limba
1003Octavia P RoysterAustralia2024-04-01Feiner Bros UNQUALIFIED22Anna Fali
1004Murillo W CampainFrance2024-04-24Commercial Press UNQUALIFIED7Onyama Limba
1005Kaitlin F ShinkoGermany2024-04-24Feltz Printing Service PROPOSAL34Asiya Javayant
1006Misaki I PaprockiFrance2024-04-18Commercial Press UNQUALIFIED87Ivan Magalhaes
1007Mayumi B WieserRussia2024-04-13Benton, John B Jr NEGOTIATION40Ivan Magalhaes
1008Francesco X ChuiIndia2024-04-19Feltz Printing Service UNQUALIFIED73Stephen Shaw
1009David I NestleFrance2024-04-16Truhlar And Truhlar Attys QUALIFIED10Xuxue Feng
1010Julie S CampainRussia2024-04-20Chemel, James L Cpa NEGOTIATION42Asiya Javayant
1011Nicolas K KuskoJapan2024-04-11Dorl, James J Esq QUALIFIED83Amy Elsner
1012Claire E GarufiFrance2024-03-30King, Christopher A Esq UNQUALIFIED78Stephen Shaw
1013Alejandro T RulapaughAustralia2024-04-18King, Christopher A Esq RENEWAL53Ioni Bowcher
1014Alejandro J TollnerItaly2024-04-14Rousseaux, Michael Esq RENEWAL99Amy Elsner
1015Aika D StockhamItaly2024-03-31Printing Dimensions NEGOTIATION19Ivan Magalhaes
1016Clifford I OstroskyAustralia2024-04-07Buckley Miller Wright UNQUALIFIED57Elwin Sharvill
1017Jones E DarakjyRussia2024-04-09Feiner Bros NEGOTIATION98Asiya Javayant
1018Kaitlin P StensethGermany2024-04-23King, Christopher A Esq NEGOTIATION79Stephen Shaw
1019Isabel S GarufiJapan2024-04-13King, Christopher A Esq RENEWAL63Amy Elsner
1020Adams C RoysterSpain2024-04-20Morlong Associates PROPOSAL56Elwin Sharvill
1021Mayumi H GarufiJapan2024-04-17King, Christopher A Esq NEGOTIATION26Asiya Javayant
1022Aruna M MacleadIndia2024-04-22King, Christopher A Esq NEW91Bernardo Dominic
1023Izzy L AlbaresRussia2024-04-15Feltz Printing Service PROPOSAL89Ivan Magalhaes
1024Deepesh S PoquetteSpain2024-04-20Rousseaux, Michael Esq NEW31Asiya Javayant
1025Johnson G StensethArgentina2024-04-05Commercial Press RENEWAL43Stephen Shaw
1026David M KuskoJapan2024-04-01Feiner Bros NEGOTIATION22Stephen Shaw
1027Jefferson S SlusarskiCanada2024-04-17Chemel, James L Cpa UNQUALIFIED99Asiya Javayant
1028Deepesh B BowleyRussia2024-04-18Rousseaux, Michael Esq RENEWAL89Anna Fali
1029Izzy O DarakjyIndia2024-04-04Chemel, James L Cpa QUALIFIED20Ivan Magalhaes
1030Misaki G TollnerFrance2024-04-07Rangoni Of Florence QUALIFIED36Bernardo Dominic
1031Mujtaba U ButtFrance2024-04-09Rangoni Of Florence NEW94Bernardo Dominic
1032Maria H AlbaresGermany2024-03-31Rousseaux, Michael Esq UNQUALIFIED62Stephen Shaw
1033Ricardo Y InouyeIndia2024-04-16Truhlar And Truhlar Attys UNQUALIFIED16Amy Elsner
1034Aruna A TollnerCanada2024-03-31Rousseaux, Michael Esq RENEWAL26Ivan Magalhaes
1035Costa F KolmetzFrance2024-03-27Rousseaux, Michael Esq RENEWAL34Asiya Javayant
1036Greenwood U DarakjyGermany2024-04-04Printing Dimensions PROPOSAL60Bernardo Dominic
1037David X WhobreyUnited Kingdom2024-04-08Feltz Printing Service QUALIFIED94Asiya Javayant
1038Salvatore K DoeIndia2024-04-16King, Christopher A Esq PROPOSAL40Asiya Javayant
1039James N ChuiItaly2024-04-01Chemel, James L Cpa RENEWAL19Stephen Shaw
1040Ricardo U AlbaresAustralia2024-04-18Chapman, Ross E Esq RENEWAL77Onyama Limba
1041Jefferson H VenereCanada2024-04-24Printing Dimensions QUALIFIED57Amy Elsner
1042Sinclair X KolmetzGermany2024-04-06Printing Dimensions QUALIFIED95Onyama Limba
1043Smith Z MaletGermany2024-04-17Benton, John B Jr QUALIFIED14Ivan Magalhaes
1044Sinclair U RimArgentina2024-03-30Commercial Press RENEWAL50Amy Elsner
1045Morrow P CampainUnited Kingdom2024-03-28Chapman, Ross E Esq RENEWAL35Onyama Limba
1046Jefferson X WieserJapan2024-04-22Chemel, James L Cpa RENEWAL17Anna Fali
1047Isabel J ShinkoBrazil2024-04-15Chemel, James L Cpa RENEWAL42Amy Elsner
1048Emily Q AlbaresCanada2024-04-17Morlong Associates NEGOTIATION55Asiya Javayant
1049Faith N NickaFrance2024-03-30Morlong Associates QUALIFIED60Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Octavia X SergiGermanyElwin Sharvill RENEWAL
Ivar Y StensethJapanAmy Elsner NEGOTIATION
Rodrigues M CaudyGermanyElwin Sharvill RENEWAL
Jeanfrancois W SlusarskiFranceAnna Fali RENEWAL
Clifford L WieserFranceIvan Magalhaes NEW
Maisha M GarufiRussiaAsiya Javayant QUALIFIED
Jeanfrancois O DarakjySpainAmy Elsner PROPOSAL
Claire R BologniaFranceBernardo Dominic NEW
Izzy A MacleadSpainAsiya Javayant NEGOTIATION
Julie R StensethFranceIvan Magalhaes RENEWAL
Adams M DoeItalyStephen Shaw NEW
Kadeem K StensethSpainOnyama Limba NEW
Darci I ChuiItalyAsiya Javayant QUALIFIED
Mujtaba W MarrierSpainAnna Fali UNQUALIFIED
Murillo V WieserSpainOnyama Limba NEW
Munro C PerinItalyStephen Shaw PROPOSAL
Francesco L WaycottArgentinaBernardo Dominic UNQUALIFIED
Misaki J KolmetzIndiaAnna Fali NEW
Juan L MarrierAustraliaAsiya Javayant RENEWAL
Ivar Q FigeroaUnited KingdomXuxue Feng UNQUALIFIED
Murillo Q MaletJapanOnyama Limba QUALIFIED
Jefferson X CampainItalyElwin Sharvill NEW
Chavez D PoquetteSpainBernardo Dominic NEGOTIATION
Leon N VenereUnited KingdomAmy Elsner NEGOTIATION
Octavia E ChuiJapanXuxue Feng NEW
Jefferson U WhobreyItalyAsiya Javayant NEW
Costa D RutaGermanyIoni Bowcher QUALIFIED
David Z MacleadIndiaIoni Bowcher PROPOSAL
Deepesh C RulapaughArgentinaBernardo Dominic NEGOTIATION
David A FigeroaGermanyAsiya Javayant QUALIFIED
Costa M FlosiGermanyAsiya Javayant PROPOSAL
Wickens E GarufiCanadaStephen Shaw QUALIFIED
Jennifer C SaylorsFranceElwin Sharvill UNQUALIFIED
Johnson L StockhamFranceIvan Magalhaes PROPOSAL
Adams W WhobreyAustraliaAsiya Javayant NEGOTIATION
Johnson D SlusarskiRussiaOnyama Limba NEGOTIATION
Arvin G DarakjyBrazilStephen Shaw NEW
Wickens U AmigonCanadaAnna Fali RENEWAL
Ricardo F GarufiUnited KingdomAsiya Javayant UNQUALIFIED
Misaki E SchemmerRussiaOnyama Limba NEW
Izzy L CaldareraArgentinaOnyama Limba RENEWAL
Aditya X KolmetzRussiaIoni Bowcher PROPOSAL
Darci Q GillianCanadaAnna Fali PROPOSAL
Cody R DarakjyJapanXuxue Feng QUALIFIED
Kadeem J GillianAustraliaStephen Shaw NEW
Mayumi J MacleadFranceOnyama Limba RENEWAL
Jennifer F KuskoFranceElwin Sharvill RENEWAL
Salvatore N RutaAustraliaAsiya Javayant UNQUALIFIED
Jeanfrancois Q GlickGermanyAsiya Javayant NEW
Tony E TollnerJapanElwin Sharvill QUALIFIED
Frozen Columns
Name
Jefferson N Foller
Smith Y Wieser
Johnson Y Amigon
Aika M Perin
Jeanfrancois U Briddick
Emily K Nestle
Alejandro W Foller
Antonio O Caldarera
Isabel R Poquette
Ashley P Rulapaugh
Murillo K Albares
Isabel Q Doe
Mayumi G Flosi
Kaitlin G Inouye
Johnson V Ferencz
Antonio I Iturbide
Jeanfrancois Z Doe
Jennifer B Inouye
Julie R Ferencz
Salvatore H Wieser
Aruna L Briddick
Mujtaba W Wieser
Greenwood Q Nestle
Leja T Chui
Aditya O Tollner
Mujtaba X Whobrey
Silvio Y Iturbide
Jones B Wieser
Rodrigues J Ostrosky
Cody K Shinko
Greenwood T Royster
Murillo Z Vocelka
Aruna P Oldroyd
Julie H Malet
Jeanfrancois Z Rim
Jennifer E Malet
Nicolas Y Bolognia
Kadeem J Dilliard
Leon O Dilliard
Silvio L Campain
Chavez U Whobrey
Ashley Y Schemmer
Kaitlin G Malet
Jefferson I Foller
Salvatore T Albares
Ivar J Darakjy
Adams Q Schemmer
Salvatore M Garufi
Aika T Venere
Smith M Venere
IdCountryDate
1000France2024-04-03
1001Brazil2024-04-16
1002Spain2024-04-03
1003Argentina2024-04-11
1004Brazil2024-04-13
1005Japan2024-04-20
1006Australia2024-04-15
1007Argentina2024-04-01
1008Australia2024-04-21
1009Argentina2024-04-19
1010Italy2024-03-31
1011Canada2024-04-08
1012Japan2024-03-31
1013Spain2024-04-15
1014Argentina2024-04-17
1015Canada2024-04-25
1016France2024-04-12
1017United Kingdom2024-04-05
1018France2024-04-16
1019Spain2024-04-14
1020Canada2024-04-24
1021Germany2024-04-17
1022Japan2024-04-08
1023Italy2024-04-25
1024Australia2024-03-31
1025India2024-04-16
1026Japan2024-04-23
1027Spain2024-04-19
1028Japan2024-04-16
1029Spain2024-04-01
1030Brazil2024-04-21
1031Japan2024-04-05
1032Argentina2024-03-28
1033France2024-04-04
1034Italy2024-04-22
1035United Kingdom2024-04-23
1036Argentina2024-04-10
1037Canada2024-04-15
1038Spain2024-04-24
1039Brazil2024-04-15
1040India2024-04-16
1041Canada2024-03-28
1042Brazil2024-04-01
1043Canada2024-04-12
1044United Kingdom2024-04-10
1045Brazil2024-04-19
1046Australia2024-04-03
1047Brazil2024-04-02
1048Argentina2024-03-27
1049Japan2024-04-11

On-Demand Data

NameIdCountryDate
Smith T Kolmetz1000Japan2024-04-13
Darci E Paprocki1001Italy2024-04-01
Stacey N Kusko1002Spain2024-03-29
Ivar R Kolmetz1003Japan2024-04-01
Costa I Dilliard1004United Kingdom2024-04-05
Julie P Saylors1005United Kingdom2024-04-13
Rodrigues Y Rulapaugh1006Spain2024-04-13
David Y Rulapaugh1007Germany2024-04-22
Darci U Poquette1008Germany2024-03-31
Clifford L Bowley1009Argentina2024-04-23
Darci R Campain1010Australia2024-04-15
Johnson Q Inouye1011Canada2024-04-04
Rodrigues F Maclead1012Canada2024-04-01
Rodrigues N Ruta1013Argentina2024-04-03
Kaitlin C Marrier1014Russia2024-04-18
Rodrigues M Nicka1015Italy2024-04-08
Juan J Shinko1016Australia2024-04-06
Alejandro Y Sergi1017Russia2024-04-11
Salvatore I Shinko1018Russia2024-03-30
Jeanfrancois C Albares1019India2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika P AmigonIndiaAmy Elsner RENEWAL
Silvio R AmigonArgentinaIvan Magalhaes QUALIFIED
Ricardo W VocelkaArgentinaElwin Sharvill RENEWAL
Salvatore P RoysterBrazilAmy Elsner NEGOTIATION
Stacey J GarufiRussiaElwin Sharvill QUALIFIED
Costa G SchemmerIndiaOnyama Limba NEGOTIATION
Sinclair T SlusarskiSpainStephen Shaw RENEWAL
Silvio X StensethGermanyBernardo Dominic UNQUALIFIED
Jones E PaprockiIndiaXuxue Feng RENEWAL
Aruna J AlbaresFranceAmy Elsner UNQUALIFIED
James J MorascaBrazilAsiya Javayant NEGOTIATION
Deepesh R GarufiItalyOnyama Limba RENEWAL
Octavia X StockhamCanadaAsiya Javayant UNQUALIFIED
Cody I CaudyBrazilIvan Magalhaes QUALIFIED
Costa E SchemmerIndiaElwin Sharvill NEW
Claire L StensethArgentinaAnna Fali RENEWAL
Kaitlin L MorascaArgentinaBernardo Dominic RENEWAL
Ricardo L PaprockiRussiaOnyama Limba UNQUALIFIED
Maisha T VenereGermanyOnyama Limba NEW
Ashley H KolmetzCanadaIoni Bowcher QUALIFIED
Izzy M RimBrazilXuxue Feng NEW
Rodrigues B DilliardFranceStephen Shaw RENEWAL
Maria Z CaudyJapanElwin Sharvill NEGOTIATION
Emily T CaudyBrazilStephen Shaw NEW
Leon I SergiBrazilElwin Sharvill QUALIFIED
Jennifer I WhobreyGermanyIvan Magalhaes PROPOSAL
Darci M SaylorsArgentinaElwin Sharvill QUALIFIED
Greenwood X NickaCanadaIvan Magalhaes PROPOSAL
Aruna G KolmetzAustraliaElwin Sharvill UNQUALIFIED
Tony D AlbaresAustraliaAmy Elsner UNQUALIFIED
Mujtaba D PerinBrazilAmy Elsner QUALIFIED
Darci G PaprockiSpainStephen Shaw NEW
Mayumi F SergiIndiaBernardo Dominic NEGOTIATION
Greenwood I DarakjyCanadaIvan Magalhaes NEGOTIATION
Wickens O PaprockiBrazilIvan Magalhaes UNQUALIFIED
Leja O RimUnited KingdomAmy Elsner QUALIFIED
Johnson O GarufiSpainBernardo Dominic PROPOSAL
Smith F ShinkoAustraliaAmy Elsner UNQUALIFIED
Nicolas N MarrierFranceXuxue Feng PROPOSAL
Leon Y MaletFranceOnyama Limba 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>