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 Z WieserArgentinaAmy Elsner UNQUALIFIED
Ricardo D VocelkaIndiaBernardo Dominic NEGOTIATION
Clifford V ChuiUnited KingdomBernardo Dominic NEGOTIATION
Izzy M RimFranceAnna Fali NEGOTIATION
Murillo R IturbideItalyXuxue Feng PROPOSAL
Chavez A FigeroaCanadaIvan Magalhaes RENEWAL
Leja S AlbaresAustraliaElwin Sharvill UNQUALIFIED
Faith J VocelkaJapanBernardo Dominic NEGOTIATION
Aruna V BowleyCanadaIvan Magalhaes RENEWAL
Jefferson B TollnerItalyIoni Bowcher QUALIFIED
Ivar F WaycottArgentinaXuxue Feng PROPOSAL
Kadeem N TollnerGermanyStephen Shaw UNQUALIFIED
Clifford B DoeArgentinaElwin Sharvill UNQUALIFIED
Adams K CampainAustraliaBernardo Dominic UNQUALIFIED
Smith X RimJapanAnna Fali NEGOTIATION
Murillo A VenereCanadaAsiya Javayant PROPOSAL
Murillo O KuskoBrazilOnyama Limba NEGOTIATION
Leja L WieserRussiaIoni Bowcher QUALIFIED
Cody U BologniaCanadaAnna Fali RENEWAL
Maria J ShinkoFranceBernardo Dominic PROPOSAL
Octavia Z DarakjyIndiaIvan Magalhaes UNQUALIFIED
Salvatore T OldroydCanadaXuxue Feng RENEWAL
Aika B BriddickIndiaXuxue Feng RENEWAL
Aditya K MaletRussiaAnna Fali UNQUALIFIED
Maisha G AmigonSpainBernardo Dominic PROPOSAL
Greenwood L MaletCanadaIoni Bowcher NEW
Claire X GarufiCanadaStephen Shaw RENEWAL
Deepesh Y IturbideBrazilXuxue Feng PROPOSAL
Ricardo A ShinkoIndiaXuxue Feng UNQUALIFIED
Julie P CaldareraRussiaStephen Shaw NEW
Kadeem R PerinIndiaAnna Fali NEW
Stacey U RimAustraliaAsiya Javayant QUALIFIED
Deepesh P PaprockiGermanyXuxue Feng NEW
Costa K OldroydItalyIvan Magalhaes PROPOSAL
Johnson W ShinkoRussiaAnna Fali NEGOTIATION
Munro R CaudyGermanyXuxue Feng RENEWAL
Francesco W GillianJapanIoni Bowcher NEGOTIATION
Julie G WieserAustraliaAmy Elsner UNQUALIFIED
Smith Z MorascaArgentinaIoni Bowcher UNQUALIFIED
Claire K MaletCanadaElwin Sharvill UNQUALIFIED
Wickens O SchemmerUnited KingdomElwin Sharvill PROPOSAL
Mayumi C DilliardFranceStephen Shaw UNQUALIFIED
Mujtaba B WaycottBrazilBernardo Dominic QUALIFIED
Arvin B FollerSpainOnyama Limba QUALIFIED
Aditya R SchemmerItalyAnna Fali QUALIFIED
Wickens G SchemmerAustraliaElwin Sharvill QUALIFIED
Alejandro J GauchoBrazilBernardo Dominic UNQUALIFIED
Adams H StensethUnited KingdomAsiya Javayant PROPOSAL
Morrow E MaletIndiaXuxue Feng NEGOTIATION
James P StensethItalyOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Leon O RimAustraliaXuxue Feng NEGOTIATION
Kadeem K KuskoSpainIvan Magalhaes QUALIFIED
Ashley U CaudyIndiaBernardo Dominic QUALIFIED
Emily B PaprockiCanadaAsiya Javayant RENEWAL
Kadeem P GillianRussiaOnyama Limba UNQUALIFIED
Chavez Y ShinkoJapanBernardo Dominic NEW
Leon Q WieserRussiaAmy Elsner UNQUALIFIED
Antonio H SaylorsRussiaAsiya Javayant UNQUALIFIED
David P RimArgentinaIoni Bowcher QUALIFIED
Octavia Y SchemmerRussiaAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar V PaprockiArgentina2024-04-15Commercial Press NEW34Bernardo Dominic
1001Leon V ChuiSpain2024-04-13Commercial Press NEGOTIATION35Elwin Sharvill
1002Julie E ChuiBrazil2024-04-20Buckley Miller Wright NEGOTIATION29Anna Fali
1003Ashley Z AlbaresIndia2024-03-29Feltz Printing Service UNQUALIFIED37Amy Elsner
1004Kadeem R FerenczFrance2024-04-13Buckley Miller Wright UNQUALIFIED3Onyama Limba
1005Jones Z DarakjyCanada2024-04-01King, Christopher A Esq NEGOTIATION26Bernardo Dominic
1006Mujtaba T AlbaresJapan2024-04-02Benton, John B Jr PROPOSAL19Bernardo Dominic
1007Antonio D WaycottCanada2024-04-16Truhlar And Truhlar Attys UNQUALIFIED86Bernardo Dominic
1008Ashley G TollnerSpain2024-04-05Dorl, James J Esq NEGOTIATION82Amy Elsner
1009Octavia M RulapaughAustralia2024-04-12Feltz Printing Service NEGOTIATION36Bernardo Dominic
1010Juan F StensethGermany2024-04-08Morlong Associates RENEWAL88Ioni Bowcher
1011Leja Z BriddickGermany2024-04-21Rousseaux, Michael Esq PROPOSAL87Xuxue Feng
1012Mujtaba O CampainCanada2024-04-03Morlong Associates UNQUALIFIED3Ivan Magalhaes
1013Leja K RutaUnited Kingdom2024-03-27Rousseaux, Michael Esq NEGOTIATION43Onyama Limba
1014James I MaletAustralia2024-04-21Buckley Miller Wright QUALIFIED43Onyama Limba
1015Maisha X MacleadSpain2024-04-23Feltz Printing Service RENEWAL48Onyama Limba
1016Mayumi D BowleyUnited Kingdom2024-04-23Truhlar And Truhlar Attys NEW70Bernardo Dominic
1017Alejandro H RulapaughGermany2024-04-05Chapman, Ross E Esq NEGOTIATION75Xuxue Feng
1018Octavia L FollerGermany2024-04-01Buckley Miller Wright PROPOSAL63Elwin Sharvill
1019Nicolas O FerenczRussia2024-04-04Chanay, Jeffrey A Esq RENEWAL85Amy Elsner
1020Greenwood I MaletItaly2024-04-22Printing Dimensions UNQUALIFIED62Bernardo Dominic
1021Kadeem J DoeArgentina2024-04-17Rousseaux, Michael Esq RENEWAL15Ivan Magalhaes
1022Darci J CaudySpain2024-04-10Dorl, James J Esq PROPOSAL85Elwin Sharvill
1023Jennifer G DarakjyGermany2024-04-13Truhlar And Truhlar Attys NEGOTIATION11Asiya Javayant
1024Misaki L DarakjyArgentina2024-04-08Dorl, James J Esq NEW23Bernardo Dominic
1025Jefferson K PerinSpain2024-04-20Morlong Associates QUALIFIED62Ivan Magalhaes
1026Aika F SergiFrance2024-04-22Feltz Printing Service RENEWAL5Onyama Limba
1027Jefferson C GauchoIndia2024-04-05Feiner Bros UNQUALIFIED65Asiya Javayant
1028Francesco T FollerCanada2024-04-01Printing Dimensions NEGOTIATION90Xuxue Feng
1029Aika W InouyeArgentina2024-04-15Feiner Bros PROPOSAL58Bernardo Dominic
1030Izzy P OstroskyIndia2024-04-01Morlong Associates UNQUALIFIED7Elwin Sharvill
1031Julie D StensethIndia2024-03-31Printing Dimensions UNQUALIFIED88Stephen Shaw
1032Aika L StensethSpain2024-04-18Chapman, Ross E Esq NEGOTIATION61Amy Elsner
1033Jennifer W MarrierJapan2024-03-26Chapman, Ross E Esq NEW82Elwin Sharvill
1034Alejandro L InouyeArgentina2024-04-11Benton, John B Jr PROPOSAL19Onyama Limba
1035Chavez P CaudyCanada2024-03-28Chapman, Ross E Esq NEGOTIATION50Ioni Bowcher
1036Clifford X CampainIndia2024-03-31Commercial Press NEW83Ivan Magalhaes
1037Ashley A RimItaly2024-03-26Chapman, Ross E Esq QUALIFIED70Stephen Shaw
1038Smith K MacleadAustralia2024-04-01Buckley Miller Wright PROPOSAL83Bernardo Dominic
1039Faith W NickaGermany2024-03-26King, Christopher A Esq NEGOTIATION29Ioni Bowcher
1040Francesco E NickaAustralia2024-04-11Rousseaux, Michael Esq NEW90Stephen Shaw
1041Jennifer Y WaycottUnited Kingdom2024-03-31Buckley Miller Wright NEGOTIATION38Stephen Shaw
1042Izzy K CaudyUnited Kingdom2024-04-05Chapman, Ross E Esq PROPOSAL38Bernardo Dominic
1043Juan K WieserUnited Kingdom2024-04-09Dorl, James J Esq RENEWAL3Stephen Shaw
1044Jeanfrancois C NickaBrazil2024-04-12Printing Dimensions UNQUALIFIED59Stephen Shaw
1045Munro C KuskoItaly2024-04-06Rousseaux, Michael Esq NEW10Ioni Bowcher
1046Rodrigues Z DilliardRussia2024-04-13Printing Dimensions NEW78Ivan Magalhaes
1047Murillo E WieserGermany2024-04-21Feltz Printing Service RENEWAL77Stephen Shaw
1048Francesco Q FigeroaSpain2024-04-22Chanay, Jeffrey A Esq QUALIFIED22Asiya Javayant
1049Aruna X PaprockiArgentina2024-03-27Chapman, Ross E Esq NEGOTIATION69Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Jones V PerinGermanyBernardo Dominic PROPOSAL
Francesco X AmigonRussiaStephen Shaw UNQUALIFIED
Faith K GlickRussiaXuxue Feng PROPOSAL
Munro P BologniaFranceIoni Bowcher PROPOSAL
Ivar U PaprockiAustraliaXuxue Feng NEW
Jones F GillianAustraliaAnna Fali NEW
Johnson S CaldareraFranceElwin Sharvill QUALIFIED
Sinclair S DoeCanadaElwin Sharvill PROPOSAL
Leja A BriddickBrazilStephen Shaw RENEWAL
Adams B BowleyArgentinaIvan Magalhaes NEW
Sinclair H GillianItalyStephen Shaw NEGOTIATION
Claire U WaycottItalyBernardo Dominic PROPOSAL
James O IturbideItalyOnyama Limba NEW
Mayumi W MaletBrazilIoni Bowcher UNQUALIFIED
Julie U CaudyUnited KingdomAmy Elsner NEGOTIATION
Aruna V MaletCanadaIoni Bowcher RENEWAL
James K RoysterRussiaElwin Sharvill PROPOSAL
Antonio P CaudyCanadaXuxue Feng NEGOTIATION
Francesco W GarufiFranceBernardo Dominic UNQUALIFIED
Aika E CaldareraSpainElwin Sharvill NEGOTIATION
Ricardo T SergiFranceIoni Bowcher NEW
Salvatore T StensethIndiaOnyama Limba RENEWAL
Arvin V FigeroaBrazilStephen Shaw PROPOSAL
Francesco E PerinArgentinaBernardo Dominic UNQUALIFIED
Izzy E KolmetzAustraliaBernardo Dominic QUALIFIED
Emily L FlosiBrazilBernardo Dominic RENEWAL
Jefferson K BologniaRussiaAsiya Javayant NEW
Mayumi M StensethRussiaIoni Bowcher NEGOTIATION
Mayumi Q MaletArgentinaAsiya Javayant PROPOSAL
Maisha Y WhobreyArgentinaBernardo Dominic RENEWAL
Darci H MorascaCanadaAnna Fali UNQUALIFIED
Emily C ButtBrazilElwin Sharvill PROPOSAL
Adams F NickaArgentinaXuxue Feng NEW
Ricardo V BologniaRussiaIvan Magalhaes NEW
Jones N SchemmerIndiaIvan Magalhaes RENEWAL
Costa B WieserGermanyIvan Magalhaes RENEWAL
Ivar Z RutaUnited KingdomStephen Shaw NEGOTIATION
Isabel A RulapaughArgentinaAmy Elsner NEW
Salvatore Z FollerArgentinaBernardo Dominic QUALIFIED
Isabel P AlbaresUnited KingdomAnna Fali RENEWAL
Maisha P MacleadJapanStephen Shaw PROPOSAL
Johnson L KuskoJapanAmy Elsner NEGOTIATION
Claire G PerinBrazilIoni Bowcher UNQUALIFIED
Aruna B ShinkoRussiaIvan Magalhaes NEGOTIATION
Silvio K WhobreyAustraliaOnyama Limba QUALIFIED
Julie J TollnerUnited KingdomBernardo Dominic RENEWAL
Jennifer J RulapaughFranceOnyama Limba RENEWAL
Greenwood A MorascaRussiaIvan Magalhaes PROPOSAL
Alejandro S AmigonArgentinaAmy Elsner NEGOTIATION
Leja A GlickSpainXuxue Feng RENEWAL
Frozen Columns
Name
Nicolas L Albares
Smith B Doe
Stacey B Figeroa
Aruna E Foller
Faith E Waycott
Arvin Y Glick
Ashley L Oldroyd
Kaitlin T Darakjy
Jennifer O Royster
Aruna V Slusarski
Ashley R Kolmetz
Juan N Saylors
Kaitlin M Slusarski
Stacey J Bowley
Munro L Stenseth
Rodrigues H Gillian
Leon H Wieser
Misaki Z Inouye
Chavez G Stockham
Deepesh I Waycott
Jennifer V Morasca
Aika A Inouye
Jefferson C Chui
Deepesh H Doe
Morrow S Stenseth
Alejandro P Perin
Salvatore R Nestle
Maisha N Stenseth
Leon U Malet
Juan V Gillian
Izzy N Ruta
Kadeem F Amigon
Antonio B Kusko
Salvatore P Caudy
Maisha X Ferencz
Izzy K Dilliard
Clifford V Chui
Jennifer Y Wieser
Leja O Kusko
Adams X Figeroa
Leon R Caldarera
Aika H Campain
Deepesh B Gillian
Adams I Nicka
Wickens N Vocelka
David Q Glick
Antonio Y Dilliard
Jennifer C Vocelka
Kaitlin I Paprocki
Darci L Dilliard
IdCountryDate
1000Canada2024-04-17
1001United Kingdom2024-04-09
1002Argentina2024-04-11
1003Spain2024-04-15
1004Japan2024-04-20
1005Argentina2024-03-29
1006Germany2024-04-08
1007Argentina2024-04-20
1008Russia2024-04-18
1009Argentina2024-04-22
1010Australia2024-04-03
1011India2024-03-30
1012Japan2024-04-10
1013Russia2024-04-18
1014France2024-04-19
1015Japan2024-04-13
1016France2024-04-05
1017Italy2024-04-03
1018India2024-04-21
1019Brazil2024-04-18
1020Argentina2024-03-30
1021Japan2024-04-11
1022Spain2024-04-18
1023Canada2024-04-05
1024France2024-04-16
1025Italy2024-04-11
1026France2024-04-05
1027Australia2024-04-19
1028United Kingdom2024-03-28
1029Germany2024-04-03
1030France2024-04-22
1031France2024-04-07
1032Spain2024-04-10
1033Argentina2024-04-18
1034France2024-04-02
1035Australia2024-03-25
1036Brazil2024-04-07
1037Argentina2024-03-28
1038Brazil2024-04-04
1039Argentina2024-04-12
1040United Kingdom2024-04-16
1041United Kingdom2024-04-13
1042Japan2024-04-04
1043United Kingdom2024-04-08
1044Canada2024-04-14
1045Australia2024-04-03
1046Japan2024-04-15
1047United Kingdom2024-03-26
1048India2024-04-03
1049Brazil2024-04-23

On-Demand Data

NameIdCountryDate
David M Royster1000France2024-04-03
Deepesh A Albares1001Spain2024-04-18
Claire Y Bowley1002Brazil2024-04-04
Faith K Glick1003India2024-03-29
Ricardo C Darakjy1004Canada2024-04-22
Faith H Nicka1005Spain2024-04-10
Greenwood U Flosi1006Russia2024-04-04
Ricardo T Briddick1007Japan2024-04-19
Johnson T Inouye1008France2024-04-17
Rodrigues Q Perin1009Italy2024-04-15
Isabel X Poquette1010United Kingdom2024-04-18
Jones A Malet1011Argentina2024-04-04
Aruna A Albares1012United Kingdom2024-04-14
Morrow G Foller1013Italy2024-03-29
Nicolas N Figeroa1014India2024-04-15
Rodrigues H Kolmetz1015Canada2024-04-18
Deepesh L Caudy1016Brazil2024-03-28
Maisha M Nicka1017Argentina2024-03-25
Alejandro Z Stockham1018Canada2024-04-14
Costa R Ostrosky1019Russia2024-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily Q MarrierBrazilAmy Elsner RENEWAL
Clifford E InouyeUnited KingdomOnyama Limba PROPOSAL
Chavez K DarakjyIndiaXuxue Feng UNQUALIFIED
Silvio E BowleyIndiaIvan Magalhaes NEW
James N RutaRussiaAnna Fali PROPOSAL
Murillo X OstroskyCanadaAnna Fali RENEWAL
Nicolas G InouyeJapanIoni Bowcher UNQUALIFIED
David K BriddickJapanOnyama Limba RENEWAL
Greenwood K GillianCanadaIoni Bowcher QUALIFIED
Smith Q BologniaAustraliaElwin Sharvill NEGOTIATION
Leja T DilliardFranceOnyama Limba NEW
Ivar S PoquetteFranceAsiya Javayant UNQUALIFIED
Aika N MacleadItalyIoni Bowcher UNQUALIFIED
Kadeem R CaudySpainAsiya Javayant NEGOTIATION
Ashley H FollerItalyBernardo Dominic RENEWAL
Octavia I SaylorsJapanXuxue Feng NEGOTIATION
Antonio M BowleyCanadaAmy Elsner PROPOSAL
Jeanfrancois B WhobreyUnited KingdomAnna Fali NEW
Rodrigues F SchemmerBrazilIoni Bowcher RENEWAL
Costa P KuskoRussiaAmy Elsner QUALIFIED
Jennifer A ShinkoAustraliaIoni Bowcher QUALIFIED
Antonio T GillianBrazilAsiya Javayant PROPOSAL
Julie P PoquetteJapanAnna Fali NEW
Juan W PaprockiRussiaStephen Shaw QUALIFIED
Izzy N AmigonItalyXuxue Feng UNQUALIFIED
Ashley I FigeroaCanadaIoni Bowcher NEGOTIATION
Darci V BowleyCanadaIvan Magalhaes QUALIFIED
Cody H MaletRussiaAmy Elsner RENEWAL
Maisha L BowleyArgentinaElwin Sharvill UNQUALIFIED
Chavez J MaletFranceAnna Fali QUALIFIED
Faith C BriddickSpainOnyama Limba UNQUALIFIED
Mayumi D PaprockiAustraliaElwin Sharvill QUALIFIED
Jefferson I RulapaughArgentinaAmy Elsner QUALIFIED
Stacey V BologniaItalyIvan Magalhaes NEW
Tony F SchemmerBrazilXuxue Feng QUALIFIED
Costa V WieserRussiaOnyama Limba UNQUALIFIED
Tony C MacleadAustraliaAnna Fali NEGOTIATION
Octavia G PaprockiArgentinaAmy Elsner NEGOTIATION
Claire A DilliardCanadaOnyama Limba NEGOTIATION
Jennifer P FlosiIndiaIvan Magalhaes UNQUALIFIED

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