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
Aika M GillianJapanAnna Fali QUALIFIED
Octavia D OldroydCanadaElwin Sharvill RENEWAL
Ivar R RutaGermanyAsiya Javayant NEW
Jennifer L FlosiSpainIvan Magalhaes NEGOTIATION
Arvin D WaycottJapanElwin Sharvill PROPOSAL
Isabel Y AlbaresFranceIoni Bowcher RENEWAL
Jones X DilliardGermanyOnyama Limba QUALIFIED
Darci B InouyeCanadaIoni Bowcher UNQUALIFIED
Salvatore H RimItalyStephen Shaw NEW
Tony H WaycottUnited KingdomStephen Shaw UNQUALIFIED
Aika Q OstroskyBrazilXuxue Feng NEGOTIATION
Alejandro A DarakjyAustraliaStephen Shaw RENEWAL
Juan X BriddickBrazilStephen Shaw NEGOTIATION
Leja R PoquetteIndiaElwin Sharvill RENEWAL
Alejandro J AlbaresSpainAmy Elsner RENEWAL
Julie W InouyeJapanOnyama Limba UNQUALIFIED
Francesco I FollerSpainIvan Magalhaes PROPOSAL
James E CaudyArgentinaAsiya Javayant UNQUALIFIED
Kadeem X OldroydItalyIvan Magalhaes UNQUALIFIED
Francesco F StensethSpainOnyama Limba UNQUALIFIED
Kadeem L StensethCanadaStephen Shaw RENEWAL
Emily C MaletGermanyBernardo Dominic UNQUALIFIED
Mayumi B OldroydIndiaAnna Fali PROPOSAL
Ashley K GillianAustraliaOnyama Limba PROPOSAL
Jeanfrancois M IturbideIndiaAnna Fali NEGOTIATION
James Z FerenczSpainBernardo Dominic QUALIFIED
Emily L ButtArgentinaOnyama Limba UNQUALIFIED
Wickens J IturbideSpainAmy Elsner UNQUALIFIED
Maria T DoeSpainOnyama Limba NEGOTIATION
Claire H MorascaBrazilStephen Shaw NEW
Juan V WhobreyAustraliaBernardo Dominic QUALIFIED
Arvin K GarufiSpainXuxue Feng PROPOSAL
Murillo H GauchoFranceStephen Shaw RENEWAL
Munro Z PoquetteSpainAsiya Javayant NEW
Deepesh M SergiIndiaElwin Sharvill UNQUALIFIED
Maria Z OldroydAustraliaAnna Fali RENEWAL
Maria F ShinkoUnited KingdomElwin Sharvill NEW
Costa U SaylorsGermanyElwin Sharvill RENEWAL
Maisha B CampainIndiaIvan Magalhaes QUALIFIED
Kadeem G SergiCanadaAmy Elsner QUALIFIED
Leja K StockhamBrazilAsiya Javayant PROPOSAL
Kadeem Q MaletFranceAnna Fali QUALIFIED
Jeanfrancois B OldroydRussiaXuxue Feng UNQUALIFIED
Izzy D OstroskyBrazilOnyama Limba PROPOSAL
Ricardo E ChuiItalyIvan Magalhaes NEGOTIATION
Antonio P RimRussiaAsiya Javayant NEW
Francesco J StensethSpainAmy Elsner UNQUALIFIED
Antonio Y GlickArgentinaIoni Bowcher UNQUALIFIED
Cody X PoquetteAustraliaIoni Bowcher RENEWAL
Clifford L MorascaItalyAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Francesco I DoeItalyStephen Shaw NEW
Ashley C WaycottRussiaXuxue Feng RENEWAL
Julie C OldroydIndiaBernardo Dominic PROPOSAL
Faith S RutaCanadaBernardo Dominic PROPOSAL
Costa V ShinkoArgentinaStephen Shaw PROPOSAL
Aruna C AlbaresCanadaIvan Magalhaes QUALIFIED
Ricardo A PerinJapanOnyama Limba NEGOTIATION
Maisha F PoquetteArgentinaElwin Sharvill QUALIFIED
Munro L ShinkoRussiaIvan Magalhaes RENEWAL
Sinclair H VocelkaSpainXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco K SlusarskiBrazil2024-04-11Commercial Press UNQUALIFIED47Ivan Magalhaes
1001Francesco H BriddickFrance2024-04-24Buckley Miller Wright NEW97Stephen Shaw
1002Faith J FollerItaly2024-04-10Buckley Miller Wright UNQUALIFIED82Bernardo Dominic
1003Aika L AlbaresGermany2024-04-05Buckley Miller Wright PROPOSAL92Stephen Shaw
1004Salvatore W WieserArgentina2024-04-02Morlong Associates PROPOSAL21Amy Elsner
1005Claire A NestleIndia2024-04-04Chapman, Ross E Esq NEGOTIATION4Amy Elsner
1006Francesco M BologniaCanada2024-04-23Truhlar And Truhlar Attys UNQUALIFIED89Bernardo Dominic
1007Antonio R RulapaughRussia2024-04-08Buckley Miller Wright QUALIFIED9Elwin Sharvill
1008Aruna J MacleadFrance2024-04-09Rousseaux, Michael Esq QUALIFIED65Bernardo Dominic
1009Greenwood B PerinArgentina2024-04-16Dorl, James J Esq PROPOSAL9Xuxue Feng
1010Ivar I VocelkaArgentina2024-04-11Chapman, Ross E Esq RENEWAL45Ioni Bowcher
1011Faith O ChuiFrance2024-04-11Truhlar And Truhlar Attys UNQUALIFIED79Ioni Bowcher
1012Mujtaba X NestleJapan2024-04-17Chemel, James L Cpa QUALIFIED15Ivan Magalhaes
1013Murillo S DoeAustralia2024-04-03Rousseaux, Michael Esq NEW69Bernardo Dominic
1014Costa J MaletIndia2024-04-14Truhlar And Truhlar Attys PROPOSAL24Anna Fali
1015Francesco J FollerCanada2024-04-23Dorl, James J Esq RENEWAL33Asiya Javayant
1016Adams G OldroydItaly2024-04-06Dorl, James J Esq RENEWAL0Bernardo Dominic
1017Julie N StensethBrazil2024-04-09Morlong Associates QUALIFIED59Stephen Shaw
1018Emily M ButtJapan2024-03-28Morlong Associates QUALIFIED10Xuxue Feng
1019Leja Y AmigonRussia2024-04-02Chanay, Jeffrey A Esq UNQUALIFIED97Amy Elsner
1020Silvio M SaylorsGermany2024-04-03King, Christopher A Esq PROPOSAL97Ivan Magalhaes
1021Adams E OldroydIndia2024-04-16King, Christopher A Esq QUALIFIED83Stephen Shaw
1022Emily E AlbaresIndia2024-04-02Rangoni Of Florence UNQUALIFIED63Ivan Magalhaes
1023Aika M MorascaJapan2024-04-12Commercial Press QUALIFIED40Asiya Javayant
1024Leon G VenereItaly2024-04-22Benton, John B Jr RENEWAL4Stephen Shaw
1025Costa Z SlusarskiCanada2024-04-06Truhlar And Truhlar Attys UNQUALIFIED60Asiya Javayant
1026Johnson L CaudyGermany2024-03-31Feiner Bros NEW11Amy Elsner
1027Johnson J FerenczGermany2024-04-06Chapman, Ross E Esq NEGOTIATION96Amy Elsner
1028Wickens G TollnerUnited Kingdom2024-04-17Truhlar And Truhlar Attys PROPOSAL36Bernardo Dominic
1029Mujtaba A MacleadArgentina2024-03-29Dorl, James J Esq NEGOTIATION5Xuxue Feng
1030Costa A DarakjyGermany2024-04-19Chanay, Jeffrey A Esq PROPOSAL71Ioni Bowcher
1031Francesco S InouyeArgentina2024-04-08Rousseaux, Michael Esq RENEWAL17Ioni Bowcher
1032Francesco Y MorascaJapan2024-04-04Commercial Press QUALIFIED92Bernardo Dominic
1033Wickens Z NestleUnited Kingdom2024-04-07Chapman, Ross E Esq QUALIFIED28Bernardo Dominic
1034Costa D StockhamGermany2024-04-17Dorl, James J Esq PROPOSAL79Xuxue Feng
1035James P CaudyGermany2024-03-31Printing Dimensions NEGOTIATION63Ioni Bowcher
1036Maria P CaldareraIndia2024-03-29Benton, John B Jr PROPOSAL62Asiya Javayant
1037Sinclair O PaprockiFrance2024-03-27Chanay, Jeffrey A Esq NEGOTIATION88Ivan Magalhaes
1038Jeanfrancois S NickaIndia2024-04-20Morlong Associates QUALIFIED35Elwin Sharvill
1039Ashley V RoysterIndia2024-03-31Buckley Miller Wright QUALIFIED40Anna Fali
1040Smith A GillianSpain2024-04-01Truhlar And Truhlar Attys NEW72Bernardo Dominic
1041Alejandro Q RoysterRussia2024-03-27Buckley Miller Wright PROPOSAL18Amy Elsner
1042Silvio F BowleyUnited Kingdom2024-04-10Chemel, James L Cpa NEW96Stephen Shaw
1043Salvatore X OstroskyArgentina2024-03-29Chanay, Jeffrey A Esq UNQUALIFIED13Onyama Limba
1044Kaitlin Q DoeSpain2024-04-08Buckley Miller Wright UNQUALIFIED7Elwin Sharvill
1045Tony X SchemmerIndia2024-04-07Commercial Press QUALIFIED54Asiya Javayant
1046Murillo E SlusarskiIndia2024-04-16Rangoni Of Florence RENEWAL98Onyama Limba
1047Ashley A WieserIndia2024-04-16Chapman, Ross E Esq RENEWAL54Ioni Bowcher
1048Jefferson Z ButtUnited Kingdom2024-04-02Morlong Associates RENEWAL62Bernardo Dominic
1049Jeanfrancois U VocelkaBrazil2024-04-04King, Christopher A Esq QUALIFIED68Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba K GarufiBrazilIoni Bowcher PROPOSAL
Mayumi Q RutaBrazilAmy Elsner QUALIFIED
Jennifer B ShinkoGermanyStephen Shaw RENEWAL
Aditya G BologniaAustraliaStephen Shaw QUALIFIED
Aruna Y NickaRussiaAmy Elsner NEW
David O IturbideFranceIoni Bowcher RENEWAL
Darci N DoeIndiaOnyama Limba QUALIFIED
Jones E DarakjyIndiaAmy Elsner PROPOSAL
Aditya M GillianAustraliaBernardo Dominic UNQUALIFIED
Claire M NickaItalyBernardo Dominic PROPOSAL
Izzy P DarakjyArgentinaIoni Bowcher QUALIFIED
Chavez A GarufiGermanyIoni Bowcher PROPOSAL
Aika N AmigonCanadaAsiya Javayant NEW
Arvin H WaycottIndiaAnna Fali NEW
Jefferson R WaycottItalyAsiya Javayant PROPOSAL
Izzy A FerenczRussiaIvan Magalhaes NEGOTIATION
Ricardo S FerenczCanadaBernardo Dominic NEW
Aditya A TollnerCanadaAmy Elsner PROPOSAL
Rodrigues S AmigonGermanyAmy Elsner RENEWAL
Ricardo F FlosiCanadaXuxue Feng NEGOTIATION
Murillo W WaycottSpainStephen Shaw PROPOSAL
Isabel V AlbaresUnited KingdomAmy Elsner QUALIFIED
Maria H VenereUnited KingdomIvan Magalhaes QUALIFIED
Kadeem Z AlbaresArgentinaAmy Elsner QUALIFIED
Maisha Q CaudySpainOnyama Limba UNQUALIFIED
Wickens O WieserSpainAsiya Javayant RENEWAL
Darci S FerenczUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois M VenereCanadaAsiya Javayant NEW
Leon R FigeroaGermanyBernardo Dominic NEW
Silvio M OstroskySpainStephen Shaw NEGOTIATION
Cody S RoysterBrazilAnna Fali PROPOSAL
Francesco P OstroskyJapanXuxue Feng UNQUALIFIED
Arvin U BologniaArgentinaAmy Elsner RENEWAL
Deepesh S InouyeItalyBernardo Dominic RENEWAL
Murillo S VenereItalyAmy Elsner PROPOSAL
Adams H FlosiGermanyIvan Magalhaes UNQUALIFIED
Isabel Y ChuiJapanXuxue Feng RENEWAL
Kaitlin I BowleyGermanyAsiya Javayant UNQUALIFIED
Maisha A SlusarskiGermanyAsiya Javayant PROPOSAL
Claire Z NestleIndiaAmy Elsner RENEWAL
Murillo W PaprockiSpainAnna Fali PROPOSAL
Kaitlin M NickaCanadaXuxue Feng NEW
Costa F BriddickBrazilElwin Sharvill NEGOTIATION
Silvio F RulapaughItalyElwin Sharvill NEGOTIATION
Maria J ButtGermanyOnyama Limba UNQUALIFIED
Tony H TollnerIndiaOnyama Limba UNQUALIFIED
Mayumi X BriddickItalyBernardo Dominic UNQUALIFIED
Leon T KolmetzUnited KingdomOnyama Limba RENEWAL
Wickens C ShinkoCanadaBernardo Dominic NEW
Claire T MaletSpainIvan Magalhaes QUALIFIED
Frozen Columns
Name
Murillo Z Vocelka
Darci L Gillian
Isabel G Caldarera
Costa P Vocelka
Jeanfrancois C Doe
Jeanfrancois R Darakjy
Emily Y Flosi
Wickens W Poquette
Stacey O Venere
Francesco I Foller
Arvin J Gaucho
Munro X Ostrosky
Stacey L Maclead
Kaitlin T Flosi
Cody Y Marrier
Faith C Tollner
Maria X Malet
Jeanfrancois D Iturbide
Juan H Morasca
Wickens G Stenseth
Jeanfrancois V Caudy
Murillo I Maclead
Maria P Ostrosky
Octavia F Paprocki
Costa U Albares
Ashley X Stockham
Ricardo L Ostrosky
Octavia F Briddick
Francesco U Albares
Claire R Morasca
Ricardo I Kusko
Francesco X Inouye
Maria U Bolognia
Munro H Malet
Tony U Waycott
Sinclair S Nestle
Julie S Gaucho
Antonio C Whobrey
James O Royster
Antonio Q Tollner
Octavia U Kolmetz
Ricardo W Iturbide
Mayumi J Saylors
Alejandro Q Butt
Leja B Stenseth
Silvio S Garufi
Johnson C Rulapaugh
Emily M Bowley
Cody E Marrier
Stacey G Royster
IdCountryDate
1000Japan2024-04-05
1001India2024-04-25
1002France2024-03-27
1003Italy2024-04-04
1004Russia2024-04-09
1005France2024-03-27
1006Spain2024-04-14
1007Canada2024-03-29
1008India2024-04-16
1009France2024-04-20
1010Italy2024-04-08
1011France2024-04-08
1012France2024-03-30
1013Japan2024-04-14
1014Brazil2024-04-07
1015United Kingdom2024-03-30
1016Australia2024-04-04
1017Canada2024-04-13
1018Japan2024-04-23
1019Canada2024-04-21
1020United Kingdom2024-04-05
1021United Kingdom2024-04-08
1022Japan2024-04-12
1023United Kingdom2024-04-25
1024Italy2024-04-03
1025France2024-03-28
1026United Kingdom2024-04-10
1027Brazil2024-04-25
1028Australia2024-04-07
1029Russia2024-03-28
1030Argentina2024-04-04
1031India2024-04-15
1032United Kingdom2024-03-31
1033Italy2024-04-23
1034Argentina2024-04-16
1035Australia2024-04-09
1036France2024-03-29
1037Russia2024-03-27
1038Spain2024-04-15
1039United Kingdom2024-04-10
1040Brazil2024-04-03
1041Brazil2024-04-16
1042Spain2024-04-08
1043France2024-04-24
1044United Kingdom2024-04-23
1045Spain2024-04-21
1046Germany2024-03-27
1047United Kingdom2024-04-21
1048United Kingdom2024-04-06
1049France2024-03-31

On-Demand Data

NameIdCountryDate
Leja K Gillian1000India2024-04-11
Maria H Chui1001United Kingdom2024-04-20
Silvio B Gillian1002Canada2024-03-28
Morrow H Kolmetz1003Japan2024-04-07
Misaki V Bolognia1004Spain2024-04-25
Julie I Stockham1005Japan2024-04-15
Aruna G Royster1006Argentina2024-04-18
Sinclair Q Malet1007France2024-03-27
Misaki J Slusarski1008Italy2024-03-30
Aditya M Stockham1009Canada2024-04-03
Faith A Darakjy1010France2024-04-14
Stacey U Ruta1011Australia2024-04-06
Tony H Butt1012Russia2024-04-23
Leja A Maclead1013Japan2024-04-16
Aditya T Malet1014Spain2024-04-11
Deepesh U Flosi1015Brazil2024-03-31
Adams O Wieser1016Australia2024-04-17
Maisha Y Perin1017Canada2024-03-27
Costa N Schemmer1018Canada2024-04-13
Darci S Paprocki1019Russia2024-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia D BriddickCanadaIvan Magalhaes UNQUALIFIED
Mayumi G ButtItalyAnna Fali QUALIFIED
Munro A StensethIndiaAmy Elsner UNQUALIFIED
Julie J KuskoUnited KingdomIoni Bowcher RENEWAL
Julie Q OstroskyJapanAmy Elsner PROPOSAL
Antonio Z VocelkaCanadaXuxue Feng NEGOTIATION
Arvin N DoeSpainAsiya Javayant PROPOSAL
Smith P FerenczFranceAsiya Javayant NEGOTIATION
Silvio S ButtSpainOnyama Limba RENEWAL
Antonio B SchemmerGermanyAmy Elsner QUALIFIED
Jennifer U TollnerGermanyAsiya Javayant QUALIFIED
Jones R GlickFranceIoni Bowcher QUALIFIED
Jennifer H SchemmerAustraliaAsiya Javayant NEW
Antonio B WieserCanadaXuxue Feng NEGOTIATION
Claire D BologniaItalyIoni Bowcher NEGOTIATION
Salvatore N MarrierArgentinaXuxue Feng NEW
Johnson K GarufiFranceIoni Bowcher NEGOTIATION
Francesco U WaycottAustraliaIoni Bowcher QUALIFIED
Smith U RoysterJapanAsiya Javayant RENEWAL
Ivar I StensethJapanXuxue Feng RENEWAL
Munro S KuskoRussiaAmy Elsner PROPOSAL
Aika T WhobreyArgentinaAsiya Javayant RENEWAL
Wickens P SchemmerFranceAnna Fali QUALIFIED
Francesco R MacleadSpainAsiya Javayant QUALIFIED
Aditya A MacleadUnited KingdomAsiya Javayant QUALIFIED
Mujtaba A ButtGermanyStephen Shaw NEW
James T VocelkaAustraliaAsiya Javayant NEGOTIATION
Deepesh C CaudyBrazilBernardo Dominic RENEWAL
Aruna A FollerJapanBernardo Dominic RENEWAL
Chavez Z DilliardJapanBernardo Dominic NEW
Jefferson D DoeGermanyStephen Shaw NEGOTIATION
Rodrigues B FlosiUnited KingdomAmy Elsner UNQUALIFIED
Leon Y ChuiArgentinaAsiya Javayant NEGOTIATION
Smith R OstroskyIndiaStephen Shaw RENEWAL
Jones K MarrierJapanOnyama Limba NEGOTIATION
Cody W CampainSpainStephen Shaw NEW
Kadeem Y OstroskyBrazilAnna Fali NEGOTIATION
Cody R NickaSpainOnyama Limba NEGOTIATION
Izzy A ButtUnited KingdomElwin Sharvill PROPOSAL
Wickens F GarufiFranceAmy Elsner QUALIFIED

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