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
Ricardo V FollerSpainBernardo Dominic NEGOTIATION
Jennifer C MaletBrazilXuxue Feng UNQUALIFIED
Jennifer K SaylorsGermanyAnna Fali QUALIFIED
Jeanfrancois P SlusarskiCanadaBernardo Dominic QUALIFIED
Clifford S PerinSpainIoni Bowcher UNQUALIFIED
Jeanfrancois O RoysterCanadaBernardo Dominic UNQUALIFIED
Faith U ShinkoCanadaAmy Elsner UNQUALIFIED
Antonio X PoquetteUnited KingdomAnna Fali NEGOTIATION
Salvatore X DoeGermanyIvan Magalhaes RENEWAL
Aditya M SlusarskiFranceElwin Sharvill NEW
Jeanfrancois R StensethIndiaAsiya Javayant RENEWAL
Ivar J ShinkoBrazilAsiya Javayant UNQUALIFIED
Mayumi C SaylorsCanadaElwin Sharvill QUALIFIED
Jennifer P GlickRussiaAsiya Javayant RENEWAL
Cody V StockhamUnited KingdomIvan Magalhaes PROPOSAL
Izzy I SergiGermanyAmy Elsner RENEWAL
Francesco N OldroydItalyIvan Magalhaes NEGOTIATION
Izzy K SaylorsCanadaOnyama Limba RENEWAL
Aika T GlickUnited KingdomXuxue Feng NEGOTIATION
Jeanfrancois R NestleCanadaStephen Shaw QUALIFIED
Arvin M WieserUnited KingdomElwin Sharvill QUALIFIED
Wickens H KolmetzJapanAmy Elsner UNQUALIFIED
Murillo T GillianItalyAnna Fali UNQUALIFIED
Leja I PoquetteArgentinaStephen Shaw NEGOTIATION
Kadeem D GillianArgentinaAmy Elsner NEW
Kadeem D CaudyIndiaElwin Sharvill PROPOSAL
Leja S DarakjySpainOnyama Limba NEGOTIATION
Tony B WhobreyRussiaXuxue Feng UNQUALIFIED
Salvatore R FollerFranceStephen Shaw NEGOTIATION
Salvatore R WieserFranceElwin Sharvill UNQUALIFIED
Adams V SlusarskiItalyAmy Elsner QUALIFIED
Wickens D GarufiIndiaAnna Fali RENEWAL
Chavez I BowleyRussiaAnna Fali PROPOSAL
Izzy L SergiSpainAsiya Javayant QUALIFIED
Emily Q ButtRussiaAnna Fali RENEWAL
Munro G InouyeBrazilElwin Sharvill NEGOTIATION
Izzy R FigeroaRussiaAnna Fali QUALIFIED
Claire L NestleAustraliaIoni Bowcher NEGOTIATION
Cody X NickaRussiaBernardo Dominic QUALIFIED
Julie F TollnerGermanyElwin Sharvill QUALIFIED
Costa Y NestleUnited KingdomOnyama Limba QUALIFIED
Jefferson D CampainUnited KingdomAsiya Javayant QUALIFIED
Munro M RoysterRussiaOnyama Limba RENEWAL
Julie D WieserUnited KingdomAsiya Javayant UNQUALIFIED
Jennifer J DarakjyBrazilOnyama Limba NEW
Faith T WaycottIndiaAsiya Javayant PROPOSAL
Juan G AlbaresItalyElwin Sharvill UNQUALIFIED
Sinclair O MaletUnited KingdomAsiya Javayant QUALIFIED
Izzy E OldroydSpainAnna Fali PROPOSAL
Jefferson V PoquetteCanadaStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maria R SaylorsArgentinaAmy Elsner UNQUALIFIED
Jefferson D BriddickCanadaAmy Elsner UNQUALIFIED
Munro D GarufiGermanyIoni Bowcher UNQUALIFIED
Mayumi S MaletItalyXuxue Feng QUALIFIED
Aika J OstroskyBrazilElwin Sharvill UNQUALIFIED
Emily J KolmetzRussiaStephen Shaw UNQUALIFIED
Munro M StockhamSpainIvan Magalhaes NEGOTIATION
Tony S SchemmerJapanIvan Magalhaes RENEWAL
Murillo D VenereRussiaXuxue Feng RENEWAL
Leja M RoysterRussiaAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James O GlickAustralia2024-04-18Chanay, Jeffrey A Esq UNQUALIFIED41Amy Elsner
1001Kaitlin Y CampainGermany2024-04-16Chapman, Ross E Esq RENEWAL95Amy Elsner
1002Deepesh S StensethAustralia2024-04-09Morlong Associates NEW90Bernardo Dominic
1003Murillo X ButtArgentina2024-04-19King, Christopher A Esq UNQUALIFIED78Ivan Magalhaes
1004Jefferson C ChuiRussia2024-04-27Rangoni Of Florence NEGOTIATION12Ivan Magalhaes
1005Izzy U CaldareraUnited Kingdom2024-04-02Chapman, Ross E Esq NEW31Onyama Limba
1006Smith E GarufiGermany2024-04-25Feltz Printing Service NEW34Onyama Limba
1007Jeanfrancois H DoeUnited Kingdom2024-04-03Commercial Press RENEWAL49Bernardo Dominic
1008Maisha N PaprockiIndia2024-04-19Feltz Printing Service RENEWAL52Bernardo Dominic
1009Misaki Y FlosiAustralia2024-04-12Feiner Bros QUALIFIED20Anna Fali
1010Maria W GarufiArgentina2024-04-27Buckley Miller Wright UNQUALIFIED85Anna Fali
1011Maria Z BologniaFrance2024-04-20Feltz Printing Service RENEWAL97Asiya Javayant
1012Emily P OldroydUnited Kingdom2024-04-11Chemel, James L Cpa UNQUALIFIED29Asiya Javayant
1013James L FigeroaAustralia2024-04-13Chemel, James L Cpa NEW14Elwin Sharvill
1014Chavez K RoysterBrazil2024-04-23Benton, John B Jr UNQUALIFIED41Ioni Bowcher
1015Morrow Y MaletSpain2024-04-16Feltz Printing Service UNQUALIFIED14Elwin Sharvill
1016Stacey F NestleJapan2024-04-12Rousseaux, Michael Esq RENEWAL41Bernardo Dominic
1017Octavia V ChuiIndia2024-04-22Buckley Miller Wright QUALIFIED22Xuxue Feng
1018Jeanfrancois W BowleyRussia2024-04-17Feltz Printing Service QUALIFIED10Asiya Javayant
1019Smith E KolmetzIndia2024-04-07Dorl, James J Esq UNQUALIFIED18Elwin Sharvill
1020Greenwood A PerinBrazil2024-04-03Commercial Press RENEWAL26Asiya Javayant
1021Julie Q PerinBrazil2024-04-13Rousseaux, Michael Esq RENEWAL66Xuxue Feng
1022Aika P VocelkaArgentina2024-04-24Feiner Bros NEGOTIATION5Ioni Bowcher
1023Ricardo M SergiRussia2024-04-06Feltz Printing Service PROPOSAL94Ioni Bowcher
1024Julie I FigeroaItaly2024-05-01Dorl, James J Esq PROPOSAL58Ivan Magalhaes
1025Mayumi N RutaUnited Kingdom2024-04-16Dorl, James J Esq NEGOTIATION12Onyama Limba
1026Ashley L PaprockiCanada2024-04-18Chapman, Ross E Esq UNQUALIFIED80Ivan Magalhaes
1027Salvatore S ShinkoArgentina2024-04-10Benton, John B Jr NEGOTIATION15Anna Fali
1028Jennifer N RoysterIndia2024-04-13Truhlar And Truhlar Attys NEGOTIATION33Asiya Javayant
1029Munro D MarrierFrance2024-04-06King, Christopher A Esq UNQUALIFIED68Stephen Shaw
1030Rodrigues A AlbaresGermany2024-04-05King, Christopher A Esq UNQUALIFIED28Stephen Shaw
1031Maisha B VenereIndia2024-04-10Feltz Printing Service UNQUALIFIED96Asiya Javayant
1032Emily C PerinAustralia2024-04-29Printing Dimensions RENEWAL1Anna Fali
1033Isabel M MorascaItaly2024-04-08Chanay, Jeffrey A Esq UNQUALIFIED23Ioni Bowcher
1034Chavez O InouyeJapan2024-04-03Benton, John B Jr PROPOSAL9Ivan Magalhaes
1035Juan E DoeRussia2024-04-10Truhlar And Truhlar Attys UNQUALIFIED48Elwin Sharvill
1036Misaki T MaletFrance2024-04-22Dorl, James J Esq PROPOSAL55Bernardo Dominic
1037Greenwood H GillianJapan2024-04-08Buckley Miller Wright QUALIFIED89Asiya Javayant
1038Morrow Y WieserFrance2024-04-22Feltz Printing Service QUALIFIED45Ioni Bowcher
1039David Z FlosiCanada2024-04-11King, Christopher A Esq PROPOSAL69Elwin Sharvill
1040Deepesh H AlbaresCanada2024-04-20Rangoni Of Florence RENEWAL25Anna Fali
1041Emily E SlusarskiBrazil2024-04-15Printing Dimensions NEGOTIATION13Asiya Javayant
1042Juan M GlickAustralia2024-04-02Morlong Associates RENEWAL86Stephen Shaw
1043Salvatore P InouyeGermany2024-04-15Printing Dimensions PROPOSAL42Xuxue Feng
1044Francesco K GauchoArgentina2024-04-30Commercial Press QUALIFIED39Ivan Magalhaes
1045Morrow C RoysterSpain2024-04-14Commercial Press UNQUALIFIED74Amy Elsner
1046Isabel T PaprockiSpain2024-04-22Dorl, James J Esq UNQUALIFIED63Ioni Bowcher
1047Cody Y ChuiItaly2024-04-30Rangoni Of Florence NEW12Anna Fali
1048Morrow N InouyeArgentina2024-04-19Chemel, James L Cpa RENEWAL45Xuxue Feng
1049Jeanfrancois D VenereSpain2024-04-07Benton, John B Jr NEGOTIATION83Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Juan H PerinIndiaBernardo Dominic NEW
Darci F OldroydJapanStephen Shaw QUALIFIED
Sinclair O AmigonJapanOnyama Limba QUALIFIED
Chavez F WaycottBrazilXuxue Feng PROPOSAL
Octavia I SchemmerCanadaElwin Sharvill QUALIFIED
Stacey H FerenczGermanyStephen Shaw NEGOTIATION
Aruna C WieserBrazilIoni Bowcher PROPOSAL
Salvatore C InouyeJapanBernardo Dominic NEGOTIATION
Ivar B SergiCanadaIoni Bowcher QUALIFIED
Nicolas J RutaBrazilAmy Elsner RENEWAL
Darci L DoeGermanyXuxue Feng RENEWAL
Maria Z PaprockiUnited KingdomOnyama Limba UNQUALIFIED
Mujtaba E ChuiBrazilAnna Fali UNQUALIFIED
Faith D OldroydJapanIoni Bowcher PROPOSAL
Kadeem Q PaprockiCanadaIoni Bowcher QUALIFIED
Mujtaba L MaletFranceIvan Magalhaes QUALIFIED
Murillo E PerinFranceBernardo Dominic NEW
Leja D ShinkoSpainStephen Shaw NEGOTIATION
Juan N SlusarskiFranceXuxue Feng RENEWAL
Jennifer J RulapaughSpainAnna Fali UNQUALIFIED
Johnson S GauchoAustraliaOnyama Limba NEW
Francesco K BologniaJapanAnna Fali NEGOTIATION
Maria U DilliardAustraliaIvan Magalhaes RENEWAL
Costa Z RimIndiaOnyama Limba QUALIFIED
Isabel K NickaJapanAmy Elsner QUALIFIED
Jennifer E BowleyItalyOnyama Limba UNQUALIFIED
David B AmigonUnited KingdomAsiya Javayant NEGOTIATION
Emily S RimSpainBernardo Dominic NEGOTIATION
Izzy D SaylorsCanadaIvan Magalhaes UNQUALIFIED
Misaki V MaletIndiaBernardo Dominic RENEWAL
Greenwood X RulapaughBrazilXuxue Feng PROPOSAL
Munro X RulapaughCanadaBernardo Dominic RENEWAL
Clifford G MaletIndiaBernardo Dominic NEW
Ricardo J CampainItalyElwin Sharvill NEGOTIATION
Wickens Y BologniaGermanyStephen Shaw QUALIFIED
Cody M VenereGermanyElwin Sharvill UNQUALIFIED
Smith C MaletIndiaIvan Magalhaes PROPOSAL
Salvatore W MorascaGermanyOnyama Limba QUALIFIED
Wickens A ShinkoArgentinaOnyama Limba NEGOTIATION
Greenwood Q KolmetzBrazilBernardo Dominic NEW
Nicolas U CaldareraFranceAnna Fali UNQUALIFIED
Alejandro M BriddickItalyAnna Fali PROPOSAL
Julie S GlickGermanyIvan Magalhaes UNQUALIFIED
Sinclair M FollerItalyBernardo Dominic RENEWAL
Maria T NestleSpainXuxue Feng PROPOSAL
Julie W DarakjyIndiaAmy Elsner UNQUALIFIED
Cody S SchemmerRussiaXuxue Feng NEW
Salvatore S FollerUnited KingdomOnyama Limba QUALIFIED
Juan W KolmetzBrazilIvan Magalhaes UNQUALIFIED
Sinclair L GlickAustraliaAnna Fali UNQUALIFIED
Frozen Columns
Name
Ivar F Figeroa
Johnson Q Inouye
Kaitlin B Bolognia
Rodrigues N Marrier
Jefferson K Stenseth
David D Oldroyd
James K Venere
Deepesh R Poquette
Munro P Kolmetz
James O Amigon
Tony B Marrier
Rodrigues F Chui
Francesco M Marrier
Ashley Y Malet
Munro J Campain
Greenwood S Dilliard
Mujtaba T Glick
Emily C Malet
Darci X Oldroyd
Johnson P Slusarski
Ricardo E Doe
Darci X Malet
Smith V Gaucho
Aika U Paprocki
James O Kolmetz
Jefferson F Garufi
Sinclair R Inouye
Mujtaba J Albares
Maria P Malet
Juan R Morasca
Ashley A Malet
Morrow K Inouye
James G Malet
Mujtaba Q Marrier
Ricardo A Vocelka
Stacey N Marrier
Rodrigues T Iturbide
Silvio U Shinko
Rodrigues Z Campain
Stacey Z Kolmetz
Stacey Z Caldarera
Faith O Vocelka
Isabel S Morasca
David V Caldarera
Misaki D Wieser
Nicolas V Darakjy
Munro L Doe
Stacey J Malet
James D Butt
Aika P Ferencz
IdCountryDate
1000Italy2024-04-06
1001United Kingdom2024-04-06
1002Russia2024-05-01
1003France2024-04-09
1004France2024-04-20
1005Australia2024-04-22
1006Canada2024-04-30
1007Italy2024-04-30
1008Germany2024-04-02
1009Japan2024-04-20
1010Brazil2024-04-10
1011Brazil2024-04-22
1012United Kingdom2024-04-17
1013Spain2024-04-09
1014Russia2024-04-08
1015United Kingdom2024-04-20
1016Russia2024-04-28
1017India2024-04-10
1018India2024-04-24
1019Italy2024-04-14
1020Canada2024-04-05
1021United Kingdom2024-04-04
1022France2024-04-10
1023Italy2024-04-03
1024Germany2024-04-25
1025Germany2024-04-03
1026Italy2024-04-09
1027Argentina2024-04-20
1028India2024-04-14
1029Russia2024-04-27
1030Germany2024-04-21
1031Brazil2024-04-07
1032Argentina2024-04-07
1033Italy2024-04-12
1034France2024-04-27
1035United Kingdom2024-04-17
1036Argentina2024-04-18
1037Argentina2024-04-18
1038Argentina2024-04-25
1039Brazil2024-04-17
1040Italy2024-04-05
1041France2024-04-13
1042Japan2024-04-24
1043Russia2024-04-11
1044United Kingdom2024-04-21
1045Argentina2024-04-19
1046Spain2024-04-07
1047Russia2024-04-20
1048Italy2024-04-16
1049United Kingdom2024-04-06

On-Demand Data

NameIdCountryDate
Alejandro Z Ruta1000Japan2024-04-15
Misaki P Kolmetz1001France2024-04-06
Emily I Royster1002Argentina2024-04-15
Johnson M Caldarera1003Japan2024-04-29
Misaki U Gaucho1004Argentina2024-04-07
Misaki L Wieser1005Argentina2024-04-16
Misaki X Poquette1006France2024-04-15
Murillo F Gaucho1007Italy2024-04-17
Chavez Q Nestle1008Brazil2024-04-16
Faith T Darakjy1009Argentina2024-04-05
Cody G Gillian1010Canada2024-04-24
Kadeem G Malet1011Brazil2024-04-08
Clifford V Venere1012Russia2024-04-29
Jeanfrancois U Garufi1013Spain2024-04-18
James X Amigon1014Italy2024-04-28
Maria O Rulapaugh1015Japan2024-04-22
Cody Q Kusko1016Canada2024-04-22
Octavia Y Inouye1017Japan2024-04-20
Aditya M Tollner1018United Kingdom2024-04-16
Alejandro I Wieser1019Australia2024-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody W GarufiRussiaAsiya Javayant NEW
Ivar R AlbaresCanadaIoni Bowcher QUALIFIED
Stacey U DoeIndiaElwin Sharvill NEW
Jones L PerinUnited KingdomElwin Sharvill RENEWAL
Jennifer T VenereBrazilElwin Sharvill RENEWAL
Silvio W SaylorsCanadaAnna Fali RENEWAL
Arvin Q DilliardRussiaElwin Sharvill QUALIFIED
Claire W DilliardIndiaXuxue Feng QUALIFIED
Nicolas U MacleadGermanyAnna Fali NEGOTIATION
Antonio B WieserItalyElwin Sharvill QUALIFIED
Morrow G ChuiUnited KingdomBernardo Dominic UNQUALIFIED
Wickens X TollnerArgentinaBernardo Dominic NEGOTIATION
Stacey I NestleArgentinaElwin Sharvill NEW
Aika F ShinkoFranceBernardo Dominic RENEWAL
Greenwood B WieserBrazilElwin Sharvill NEW
Salvatore G InouyeSpainBernardo Dominic NEGOTIATION
Adams H GillianCanadaIoni Bowcher RENEWAL
Francesco C FlosiBrazilIoni Bowcher NEGOTIATION
Costa S NestleGermanyOnyama Limba NEGOTIATION
Leon Q MaletBrazilIoni Bowcher RENEWAL
Claire P BowleyCanadaElwin Sharvill NEW
Morrow I VenereJapanOnyama Limba PROPOSAL
Leja U TollnerIndiaAsiya Javayant NEW
Maisha R MaletIndiaIoni Bowcher RENEWAL
Juan S ChuiBrazilStephen Shaw UNQUALIFIED
Wickens Q FollerUnited KingdomAnna Fali RENEWAL
Jones E WieserJapanElwin Sharvill NEGOTIATION
Izzy B MaletBrazilBernardo Dominic NEW
Adams U BologniaCanadaBernardo Dominic PROPOSAL
Izzy Z KuskoArgentinaAmy Elsner NEGOTIATION
Chavez X RoysterJapanXuxue Feng NEW
Munro Y CampainAustraliaAnna Fali QUALIFIED
Aruna D DarakjyBrazilAmy Elsner RENEWAL
Leja X RoysterRussiaAnna Fali NEW
Arvin P NickaArgentinaAmy Elsner PROPOSAL
Smith I MaletGermanyIvan Magalhaes RENEWAL
Nicolas H DarakjyFranceStephen Shaw NEGOTIATION
Silvio Y CampainBrazilAnna Fali UNQUALIFIED
Adams H RutaCanadaIoni Bowcher NEGOTIATION
Jones E DoeArgentinaStephen Shaw 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>