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
Stacey W MaletGermanyXuxue Feng NEW
Francesco K TollnerGermanyStephen Shaw QUALIFIED
Mayumi A RoysterRussiaAnna Fali QUALIFIED
Nicolas H AlbaresUnited KingdomAmy Elsner NEGOTIATION
Darci R MaletIndiaBernardo Dominic NEGOTIATION
Isabel E GarufiItalyOnyama Limba PROPOSAL
Ashley L ChuiFranceAnna Fali NEGOTIATION
Munro P SchemmerAustraliaIoni Bowcher NEW
Faith O StensethGermanyAnna Fali QUALIFIED
Jefferson Y VenereAustraliaAsiya Javayant QUALIFIED
Mayumi S MaletGermanyStephen Shaw NEW
Jeanfrancois R GlickFranceXuxue Feng NEW
Adams D MorascaCanadaOnyama Limba QUALIFIED
Salvatore P GarufiJapanElwin Sharvill QUALIFIED
Sinclair W FerenczArgentinaStephen Shaw UNQUALIFIED
Chavez J PerinItalyIvan Magalhaes PROPOSAL
Octavia D ShinkoSpainElwin Sharvill PROPOSAL
Faith V VenereGermanyIoni Bowcher NEW
Deepesh L CaldareraJapanXuxue Feng QUALIFIED
Julie V GillianItalyAnna Fali RENEWAL
Jefferson H BriddickUnited KingdomAsiya Javayant NEGOTIATION
Jeanfrancois F ChuiItalyElwin Sharvill PROPOSAL
Silvio X GarufiArgentinaIvan Magalhaes PROPOSAL
Deepesh T MaletItalyXuxue Feng PROPOSAL
Antonio Q SchemmerFranceXuxue Feng NEW
Smith L VocelkaIndiaIvan Magalhaes UNQUALIFIED
Costa H PaprockiAustraliaIoni Bowcher PROPOSAL
Clifford Y RulapaughSpainIoni Bowcher NEW
Leon R GauchoArgentinaStephen Shaw PROPOSAL
Nicolas L StockhamIndiaXuxue Feng NEGOTIATION
Chavez M PoquetteArgentinaElwin Sharvill QUALIFIED
Jeanfrancois H GlickArgentinaElwin Sharvill QUALIFIED
Adams A StensethJapanAnna Fali NEW
Ashley X FigeroaArgentinaIvan Magalhaes PROPOSAL
Leja D TollnerGermanyStephen Shaw NEW
Francesco P VocelkaBrazilStephen Shaw NEW
Kadeem E RulapaughCanadaIoni Bowcher UNQUALIFIED
Aika M VenereArgentinaStephen Shaw NEW
Nicolas A PaprockiRussiaBernardo Dominic QUALIFIED
Maisha P OldroydFranceIvan Magalhaes NEW
Francesco F ButtUnited KingdomIoni Bowcher QUALIFIED
Murillo H PoquetteFranceXuxue Feng NEW
Silvio F ButtUnited KingdomBernardo Dominic NEGOTIATION
Ricardo Y FerenczAustraliaOnyama Limba NEW
Juan I MaletRussiaIvan Magalhaes PROPOSAL
Ashley M MarrierRussiaElwin Sharvill UNQUALIFIED
Ashley G GauchoAustraliaElwin Sharvill NEW
Kadeem G VenereRussiaStephen Shaw RENEWAL
Wickens W RulapaughItalyAmy Elsner QUALIFIED
Jones D GauchoArgentinaOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Arvin H PaprockiSpainXuxue Feng NEGOTIATION
Wickens Z WaycottAustraliaBernardo Dominic NEGOTIATION
Ivar Y BologniaBrazilAnna Fali QUALIFIED
Ivar F PoquetteItalyXuxue Feng RENEWAL
Antonio O WaycottUnited KingdomAsiya Javayant RENEWAL
Mujtaba U RoysterBrazilAnna Fali RENEWAL
Smith L OldroydIndiaIoni Bowcher UNQUALIFIED
Maria F TollnerUnited KingdomBernardo Dominic QUALIFIED
Smith D DilliardFranceXuxue Feng PROPOSAL
Jennifer Y BriddickBrazilBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja O MorascaBrazil2024-04-14Chapman, Ross E Esq QUALIFIED65Anna Fali
1001Jefferson B MarrierRussia2024-04-22Chemel, James L Cpa NEGOTIATION57Asiya Javayant
1002Antonio N DarakjyGermany2024-04-06Feltz Printing Service UNQUALIFIED95Bernardo Dominic
1003Deepesh N OldroydBrazil2024-04-13Chanay, Jeffrey A Esq NEW53Ioni Bowcher
1004Adams M IturbideBrazil2024-04-13Chemel, James L Cpa NEGOTIATION92Xuxue Feng
1005Emily E SchemmerSpain2024-04-20Feltz Printing Service RENEWAL36Asiya Javayant
1006Julie Z StensethBrazil2024-04-20Chemel, James L Cpa RENEWAL15Anna Fali
1007Jeanfrancois A RulapaughJapan2024-03-30Buckley Miller Wright RENEWAL21Stephen Shaw
1008Kadeem J WhobreyGermany2024-04-20Rangoni Of Florence QUALIFIED19Ivan Magalhaes
1009Ashley E DarakjyJapan2024-04-05Feltz Printing Service QUALIFIED52Amy Elsner
1010Munro G AmigonGermany2024-04-06Chanay, Jeffrey A Esq PROPOSAL50Ivan Magalhaes
1011Ivar Z DilliardCanada2024-04-15Rangoni Of Florence NEGOTIATION97Bernardo Dominic
1012Izzy Z CampainItaly2024-04-15Chemel, James L Cpa PROPOSAL81Ivan Magalhaes
1013Kaitlin R IturbideAustralia2024-03-31Morlong Associates NEW16Asiya Javayant
1014Wickens L KuskoArgentina2024-04-03Truhlar And Truhlar Attys QUALIFIED86Elwin Sharvill
1015Maisha F ButtFrance2024-04-18Rangoni Of Florence PROPOSAL81Onyama Limba
1016Juan R SchemmerUnited Kingdom2024-04-07King, Christopher A Esq PROPOSAL14Onyama Limba
1017Izzy Z DilliardAustralia2024-04-24Chemel, James L Cpa PROPOSAL40Stephen Shaw
1018Chavez P VenereItaly2024-04-10Rousseaux, Michael Esq NEW55Asiya Javayant
1019Misaki W MacleadItaly2024-04-25Feiner Bros QUALIFIED94Anna Fali
1020Sinclair T GauchoIndia2024-04-04Buckley Miller Wright UNQUALIFIED79Ivan Magalhaes
1021Francesco U KuskoBrazil2024-04-08Truhlar And Truhlar Attys NEW36Anna Fali
1022Kaitlin I StensethSpain2024-04-02Commercial Press NEGOTIATION25Stephen Shaw
1023Wickens T SaylorsAustralia2024-04-23Rousseaux, Michael Esq RENEWAL9Stephen Shaw
1024Isabel R OstroskyRussia2024-04-05Printing Dimensions QUALIFIED41Bernardo Dominic
1025Kadeem X IturbideItaly2024-04-02Commercial Press NEW44Ivan Magalhaes
1026Aika K GauchoUnited Kingdom2024-04-01Truhlar And Truhlar Attys PROPOSAL61Elwin Sharvill
1027Francesco P SergiCanada2024-04-04Feiner Bros QUALIFIED9Elwin Sharvill
1028Maria R FigeroaRussia2024-04-24Benton, John B Jr NEGOTIATION13Ivan Magalhaes
1029Nicolas E MaletItaly2024-04-24Feltz Printing Service PROPOSAL22Onyama Limba
1030Octavia O SlusarskiBrazil2024-04-25Rousseaux, Michael Esq NEW91Ivan Magalhaes
1031David O TollnerItaly2024-04-23Chanay, Jeffrey A Esq QUALIFIED43Ivan Magalhaes
1032Kaitlin W OldroydSpain2024-04-27Chapman, Ross E Esq NEGOTIATION77Ioni Bowcher
1033Alejandro J KolmetzItaly2024-04-22Benton, John B Jr QUALIFIED8Elwin Sharvill
1034Chavez A KuskoUnited Kingdom2024-04-26Truhlar And Truhlar Attys NEGOTIATION35Stephen Shaw
1035Chavez E NestleJapan2024-04-08King, Christopher A Esq UNQUALIFIED40Elwin Sharvill
1036Antonio D CaldareraSpain2024-04-24Chemel, James L Cpa UNQUALIFIED2Bernardo Dominic
1037Maria L CaldareraRussia2024-04-21Chanay, Jeffrey A Esq RENEWAL20Anna Fali
1038Aika L WaycottIndia2024-04-21Morlong Associates PROPOSAL82Elwin Sharvill
1039Mayumi O WaycottAustralia2024-04-02Chemel, James L Cpa UNQUALIFIED44Bernardo Dominic
1040Ivar F RutaIndia2024-04-09Rousseaux, Michael Esq UNQUALIFIED56Xuxue Feng
1041Clifford D MorascaJapan2024-04-20Buckley Miller Wright RENEWAL15Elwin Sharvill
1042Jones T NickaItaly2024-04-10Rangoni Of Florence RENEWAL86Ivan Magalhaes
1043Mayumi G DilliardGermany2024-04-03Benton, John B Jr NEGOTIATION39Onyama Limba
1044Leon A GlickArgentina2024-04-16Chemel, James L Cpa RENEWAL73Bernardo Dominic
1045Ivar I StockhamArgentina2024-04-04Morlong Associates RENEWAL81Elwin Sharvill
1046Misaki I KolmetzRussia2024-04-23Rangoni Of Florence NEGOTIATION53Asiya Javayant
1047Jones H StensethIndia2024-04-13Chapman, Ross E Esq UNQUALIFIED29Amy Elsner
1048Isabel W SaylorsRussia2024-03-31Rangoni Of Florence PROPOSAL69Onyama Limba
1049Emily Q PoquetteSpain2024-04-03Rousseaux, Michael Esq UNQUALIFIED88Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Adams B MaletBrazilIvan Magalhaes QUALIFIED
Julie O RulapaughRussiaElwin Sharvill NEGOTIATION
Sinclair D DoeBrazilAsiya Javayant QUALIFIED
Claire S GauchoFranceAnna Fali UNQUALIFIED
Salvatore O RulapaughCanadaAsiya Javayant NEGOTIATION
Alejandro Q PoquetteArgentinaXuxue Feng QUALIFIED
Greenwood D CaudyRussiaStephen Shaw QUALIFIED
Jeanfrancois G MaletSpainAnna Fali QUALIFIED
Mayumi C DoeGermanyXuxue Feng PROPOSAL
Juan G GillianGermanyOnyama Limba QUALIFIED
Misaki W MorascaRussiaOnyama Limba UNQUALIFIED
Jeanfrancois L OldroydUnited KingdomXuxue Feng PROPOSAL
Octavia X DarakjyRussiaAmy Elsner NEW
Aditya R WaycottFranceBernardo Dominic PROPOSAL
Isabel R RimCanadaIvan Magalhaes UNQUALIFIED
Wickens U VenereItalyIoni Bowcher RENEWAL
Ricardo I FerenczAustraliaBernardo Dominic RENEWAL
Jones V GarufiBrazilOnyama Limba PROPOSAL
Ricardo Q WhobreyItalyAmy Elsner NEGOTIATION
Arvin J VenereSpainBernardo Dominic RENEWAL
Isabel V MorascaUnited KingdomStephen Shaw NEW
Chavez W AmigonAustraliaAsiya Javayant NEGOTIATION
Darci N CaudyCanadaXuxue Feng QUALIFIED
Ashley F StensethJapanStephen Shaw NEGOTIATION
Munro P FollerSpainBernardo Dominic NEW
Maisha H CampainJapanBernardo Dominic PROPOSAL
Stacey B StockhamBrazilElwin Sharvill NEW
Sinclair B DoeAustraliaElwin Sharvill NEW
Emily A SaylorsAustraliaIvan Magalhaes RENEWAL
Jennifer X MaletCanadaXuxue Feng NEW
Costa W RutaArgentinaOnyama Limba RENEWAL
Chavez C AmigonAustraliaOnyama Limba PROPOSAL
Jones I AmigonJapanAnna Fali RENEWAL
Wickens T OstroskyFranceBernardo Dominic PROPOSAL
David U PerinIndiaXuxue Feng QUALIFIED
Julie Z ChuiFranceAnna Fali UNQUALIFIED
Chavez G AlbaresJapanIoni Bowcher QUALIFIED
Aditya R GauchoGermanyOnyama Limba UNQUALIFIED
Aruna Y OldroydCanadaAsiya Javayant NEW
Jefferson E KuskoIndiaAsiya Javayant UNQUALIFIED
Murillo U PoquetteJapanIvan Magalhaes RENEWAL
Ricardo G MorascaAustraliaIoni Bowcher UNQUALIFIED
Costa Q IturbideRussiaAmy Elsner RENEWAL
Munro K TollnerBrazilXuxue Feng RENEWAL
Tony X MarrierRussiaStephen Shaw PROPOSAL
Murillo Z StensethArgentinaStephen Shaw UNQUALIFIED
Alejandro Z PerinBrazilIvan Magalhaes UNQUALIFIED
Mayumi M DoeUnited KingdomIvan Magalhaes NEGOTIATION
Arvin R KolmetzJapanBernardo Dominic QUALIFIED
Aditya U OldroydAustraliaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Chavez G Stenseth
Ricardo J Foller
Misaki V Glick
Jones E Wieser
Clifford P Malet
Clifford H Albares
Smith V Royster
Maria T Iturbide
Kadeem J Chui
Maisha F Kolmetz
Mujtaba D Perin
Adams Z Caldarera
Clifford X Sergi
Aika S Albares
Adams M Darakjy
Silvio H Kolmetz
Julie M Nicka
Morrow S Bowley
James Q Briddick
Maisha U Dilliard
Octavia E Tollner
Octavia M Stenseth
Octavia G Wieser
David F Malet
Claire H Waycott
Cody D Sergi
Mujtaba Q Glick
Darci Z Waycott
Francesco N Inouye
Greenwood J Caudy
Mayumi O Slusarski
Leja S Caudy
David I Ferencz
Salvatore G Caldarera
Kadeem D Kusko
Salvatore K Venere
Clifford N Marrier
David T Morasca
Aruna S Glick
Morrow T Shinko
Kaitlin V Kusko
Jennifer R Rim
Misaki G Kusko
Greenwood I Whobrey
Juan X Nestle
Aditya E Ferencz
Smith A Foller
Mayumi U Nestle
Kadeem N Bowley
Nicolas H Tollner
IdCountryDate
1000Argentina2024-04-25
1001United Kingdom2024-04-26
1002Russia2024-04-13
1003Canada2024-03-30
1004India2024-03-30
1005France2024-04-16
1006Russia2024-04-01
1007France2024-04-10
1008Canada2024-04-01
1009Canada2024-04-16
1010Japan2024-04-12
1011United Kingdom2024-04-16
1012Germany2024-04-15
1013Japan2024-04-14
1014India2024-04-09
1015Canada2024-04-01
1016Brazil2024-04-08
1017United Kingdom2024-04-12
1018Australia2024-04-01
1019Argentina2024-04-05
1020Spain2024-04-25
1021Canada2024-04-01
1022Japan2024-04-15
1023Germany2024-04-03
1024Brazil2024-04-26
1025Japan2024-04-26
1026Russia2024-04-11
1027Italy2024-04-12
1028United Kingdom2024-04-01
1029Germany2024-04-19
1030Australia2024-04-26
1031Argentina2024-04-17
1032Brazil2024-04-09
1033Brazil2024-04-06
1034Brazil2024-04-14
1035France2024-04-09
1036Russia2024-04-06
1037Russia2024-04-18
1038Brazil2024-04-17
1039Australia2024-04-01
1040Germany2024-04-23
1041India2024-04-17
1042Australia2024-04-03
1043Argentina2024-04-17
1044Russia2024-04-17
1045United Kingdom2024-04-17
1046United Kingdom2024-04-13
1047Argentina2024-03-30
1048Spain2024-04-05
1049Japan2024-04-23

On-Demand Data

NameIdCountryDate
Leja X Albares1000India2024-04-01
David H Perin1001Brazil2024-04-08
Misaki C Perin1002Canada2024-04-13
Kadeem D Shinko1003Argentina2024-04-25
Kaitlin M Ostrosky1004France2024-03-29
Johnson G Rim1005United Kingdom2024-04-20
Kadeem K Bolognia1006India2024-04-18
Munro U Malet1007Germany2024-03-29
Aditya G Wieser1008France2024-04-25
Ashley D Amigon1009Germany2024-04-21
Kaitlin O Rulapaugh1010Russia2024-04-17
Arvin V Ferencz1011Australia2024-04-14
Johnson I Amigon1012United Kingdom2024-04-17
Munro W Stenseth1013Canada2024-04-10
Ivar S Vocelka1014Spain2024-03-30
Sinclair T Nicka1015Japan2024-04-08
Jefferson M Butt1016Australia2024-04-16
Jones G Albares1017Japan2024-04-21
Aika P Doe1018France2024-04-22
Ashley N Vocelka1019India2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja A FlosiArgentinaElwin Sharvill NEGOTIATION
Aditya A VocelkaSpainBernardo Dominic QUALIFIED
Sinclair P IturbideIndiaOnyama Limba NEGOTIATION
Antonio K PaprockiItalyStephen Shaw NEW
Deepesh H MaletArgentinaIvan Magalhaes QUALIFIED
Kadeem W RoysterArgentinaElwin Sharvill RENEWAL
Claire O RimSpainBernardo Dominic QUALIFIED
Alejandro N CaldareraFranceElwin Sharvill PROPOSAL
Johnson U BologniaBrazilElwin Sharvill RENEWAL
Darci G PoquetteCanadaBernardo Dominic NEGOTIATION
Misaki T BologniaIndiaOnyama Limba RENEWAL
Jennifer H FerenczFranceAnna Fali PROPOSAL
Silvio I FigeroaSpainAsiya Javayant NEW
Julie I DarakjyJapanAmy Elsner QUALIFIED
Murillo V VenereBrazilStephen Shaw UNQUALIFIED
Rodrigues I OldroydRussiaIvan Magalhaes QUALIFIED
Silvio U GlickRussiaElwin Sharvill QUALIFIED
Adams O BowleyIndiaStephen Shaw UNQUALIFIED
Jennifer G PoquetteUnited KingdomOnyama Limba NEW
Antonio D CaudySpainIvan Magalhaes RENEWAL
Greenwood G MaletItalyAmy Elsner NEGOTIATION
Francesco B NickaIndiaIoni Bowcher QUALIFIED
Cody S StockhamGermanyIvan Magalhaes UNQUALIFIED
Jefferson M StockhamItalyElwin Sharvill PROPOSAL
Aditya R WaycottItalyOnyama Limba RENEWAL
Mayumi H PaprockiRussiaBernardo Dominic UNQUALIFIED
Ivar K MaletCanadaStephen Shaw UNQUALIFIED
Aika P RulapaughUnited KingdomElwin Sharvill UNQUALIFIED
Mayumi Y ChuiBrazilAnna Fali NEW
Ricardo O NestleIndiaIvan Magalhaes PROPOSAL
Morrow D RimGermanyAnna Fali QUALIFIED
Cody E RimGermanyIoni Bowcher UNQUALIFIED
Francesco U RimUnited KingdomElwin Sharvill PROPOSAL
Munro F AlbaresAustraliaAsiya Javayant UNQUALIFIED
Cody D GarufiUnited KingdomIvan Magalhaes UNQUALIFIED
Sinclair T RoysterIndiaStephen Shaw NEW
Leja B KolmetzCanadaAnna Fali UNQUALIFIED
Leja M SlusarskiJapanIoni Bowcher RENEWAL
Chavez W PerinItalyIvan Magalhaes QUALIFIED
Juan E RimItalyAmy 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>