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
Nicolas A OldroydRussiaOnyama Limba UNQUALIFIED
Stacey E RutaArgentinaIoni Bowcher QUALIFIED
Adams I DarakjyAustraliaElwin Sharvill QUALIFIED
Munro U MarrierCanadaIvan Magalhaes UNQUALIFIED
Arvin F PerinRussiaIoni Bowcher QUALIFIED
Cody M GarufiCanadaAnna Fali QUALIFIED
Jefferson W BologniaBrazilElwin Sharvill QUALIFIED
Johnson Z WhobreyIndiaXuxue Feng QUALIFIED
Stacey R StensethItalyAnna Fali UNQUALIFIED
Deepesh A ChuiUnited KingdomIvan Magalhaes QUALIFIED
Morrow Z DilliardAustraliaStephen Shaw PROPOSAL
Francesco L DilliardIndiaBernardo Dominic QUALIFIED
Mayumi P InouyeUnited KingdomElwin Sharvill UNQUALIFIED
Francesco P SergiBrazilStephen Shaw PROPOSAL
Kadeem R MaletGermanyXuxue Feng UNQUALIFIED
Leja Z NickaCanadaXuxue Feng UNQUALIFIED
Costa V AmigonAustraliaAnna Fali RENEWAL
Chavez R WieserAustraliaOnyama Limba NEGOTIATION
Izzy M RutaGermanyStephen Shaw RENEWAL
Ashley V KolmetzJapanIvan Magalhaes NEGOTIATION
James D IturbideCanadaIvan Magalhaes UNQUALIFIED
Chavez M VenereRussiaAnna Fali UNQUALIFIED
Kaitlin A BowleyCanadaElwin Sharvill NEW
Silvio J KuskoAustraliaAnna Fali UNQUALIFIED
Aditya U NestleRussiaBernardo Dominic NEW
Aruna Y KolmetzAustraliaBernardo Dominic UNQUALIFIED
Salvatore M GauchoIndiaIvan Magalhaes PROPOSAL
Morrow K CaldareraArgentinaXuxue Feng UNQUALIFIED
Ricardo W KolmetzRussiaAnna Fali NEW
Misaki S BologniaCanadaBernardo Dominic PROPOSAL
Wickens D PerinJapanElwin Sharvill NEGOTIATION
Jefferson G SchemmerFranceXuxue Feng QUALIFIED
Morrow K SlusarskiIndiaXuxue Feng QUALIFIED
Jefferson K VocelkaFranceAnna Fali RENEWAL
Isabel O ShinkoUnited KingdomAsiya Javayant PROPOSAL
Tony P BologniaUnited KingdomAsiya Javayant RENEWAL
Leon H MacleadCanadaElwin Sharvill NEW
Aika E WhobreyRussiaXuxue Feng UNQUALIFIED
Deepesh J DilliardArgentinaIvan Magalhaes NEGOTIATION
Julie F MarrierSpainAnna Fali NEGOTIATION
Juan D GauchoRussiaAnna Fali NEW
Salvatore K RutaSpainIvan Magalhaes UNQUALIFIED
Kadeem I MarrierUnited KingdomXuxue Feng NEGOTIATION
Munro E BologniaUnited KingdomAmy Elsner NEGOTIATION
Emily S VocelkaJapanBernardo Dominic UNQUALIFIED
Kaitlin D PaprockiSpainAmy Elsner NEGOTIATION
Deepesh L DarakjyFranceBernardo Dominic NEGOTIATION
Smith M RoysterFranceXuxue Feng RENEWAL
Octavia A CaldareraJapanIvan Magalhaes PROPOSAL
Kaitlin P WaycottGermanyBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Antonio K NickaBrazilIoni Bowcher UNQUALIFIED
Chavez I StensethFranceAnna Fali PROPOSAL
Greenwood U RulapaughUnited KingdomAnna Fali RENEWAL
Alejandro J MaletFranceAnna Fali PROPOSAL
Morrow K StockhamBrazilIvan Magalhaes RENEWAL
Johnson Z MarrierJapanXuxue Feng NEGOTIATION
Emily F DarakjyFranceAnna Fali QUALIFIED
Kadeem V OldroydAustraliaAsiya Javayant NEW
Maria E BriddickBrazilAmy Elsner NEW
Isabel D InouyeItalyOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci V MorascaJapan2024-04-15Chemel, James L Cpa PROPOSAL79Elwin Sharvill
1001Mayumi Z BriddickCanada2024-04-17Commercial Press NEGOTIATION69Ivan Magalhaes
1002Ricardo T CaldareraItaly2024-04-06King, Christopher A Esq NEGOTIATION94Onyama Limba
1003Darci Y DoeIndia2024-04-20Chanay, Jeffrey A Esq UNQUALIFIED93Elwin Sharvill
1004David V AmigonUnited Kingdom2024-04-03Rangoni Of Florence QUALIFIED85Bernardo Dominic
1005Antonio M FollerGermany2024-04-22King, Christopher A Esq QUALIFIED1Amy Elsner
1006Adams B GauchoBrazil2024-04-25Printing Dimensions NEGOTIATION4Asiya Javayant
1007Ashley G SlusarskiBrazil2024-04-01Dorl, James J Esq NEW2Anna Fali
1008Ashley S RutaRussia2024-04-04Buckley Miller Wright PROPOSAL32Onyama Limba
1009Stacey R WieserArgentina2024-04-16Chapman, Ross E Esq NEGOTIATION46Bernardo Dominic
1010Leon R VocelkaAustralia2024-04-19Commercial Press PROPOSAL45Elwin Sharvill
1011Darci M WhobreyItaly2024-04-11Dorl, James J Esq NEW90Amy Elsner
1012Claire Y NestleSpain2024-04-17Printing Dimensions RENEWAL3Elwin Sharvill
1013Emily U OldroydIndia2024-03-30Chapman, Ross E Esq PROPOSAL94Ivan Magalhaes
1014Rodrigues B BriddickSpain2024-03-28Chanay, Jeffrey A Esq UNQUALIFIED65Stephen Shaw
1015Ricardo H GillianIndia2024-04-03Morlong Associates RENEWAL32Elwin Sharvill
1016Francesco B ChuiSpain2024-04-20Truhlar And Truhlar Attys NEGOTIATION17Asiya Javayant
1017Emily G FerenczCanada2024-04-04Buckley Miller Wright UNQUALIFIED86Onyama Limba
1018Morrow W ShinkoSpain2024-04-01Rousseaux, Michael Esq UNQUALIFIED70Bernardo Dominic
1019Stacey O PaprockiItaly2024-04-16Feiner Bros NEGOTIATION92Amy Elsner
1020Sinclair R OldroydSpain2024-04-03Commercial Press QUALIFIED19Stephen Shaw
1021Faith H IturbideBrazil2024-04-09Rousseaux, Michael Esq PROPOSAL64Onyama Limba
1022Juan Z MaletFrance2024-04-22Feiner Bros NEGOTIATION55Xuxue Feng
1023Leon Z DoeItaly2024-04-22Printing Dimensions RENEWAL51Xuxue Feng
1024Emily Y OldroydGermany2024-04-12Chemel, James L Cpa UNQUALIFIED81Bernardo Dominic
1025Jeanfrancois X GillianSpain2024-04-18Morlong Associates UNQUALIFIED30Ivan Magalhaes
1026Leja G PaprockiItaly2024-04-07Truhlar And Truhlar Attys NEGOTIATION55Anna Fali
1027Arvin Z FerenczIndia2024-04-25Rousseaux, Michael Esq QUALIFIED31Onyama Limba
1028Julie W RimIndia2024-04-19Dorl, James J Esq NEW53Ivan Magalhaes
1029Ivar H BologniaJapan2024-04-14Rousseaux, Michael Esq NEW87Elwin Sharvill
1030Leon E PerinRussia2024-03-30Feiner Bros NEGOTIATION89Anna Fali
1031Jeanfrancois D IturbideRussia2024-04-06Rangoni Of Florence PROPOSAL86Anna Fali
1032Aruna T BologniaUnited Kingdom2024-04-18Truhlar And Truhlar Attys QUALIFIED93Anna Fali
1033Maria P AlbaresRussia2024-04-10Dorl, James J Esq UNQUALIFIED73Anna Fali
1034Maria S WieserItaly2024-04-11Dorl, James J Esq RENEWAL74Bernardo Dominic
1035Mujtaba I SaylorsSpain2024-04-01Rousseaux, Michael Esq PROPOSAL96Elwin Sharvill
1036Deepesh E DarakjyUnited Kingdom2024-04-08Dorl, James J Esq NEW94Elwin Sharvill
1037Sinclair N BologniaFrance2024-04-14Chemel, James L Cpa PROPOSAL69Onyama Limba
1038Izzy V SchemmerRussia2024-03-28Chanay, Jeffrey A Esq UNQUALIFIED46Onyama Limba
1039Smith Z GauchoCanada2024-04-04Commercial Press NEW28Stephen Shaw
1040James O NestleRussia2024-04-07Rangoni Of Florence NEW50Bernardo Dominic
1041Julie M StockhamArgentina2024-04-06Printing Dimensions QUALIFIED2Xuxue Feng
1042Costa A VocelkaJapan2024-03-31Chemel, James L Cpa RENEWAL18Onyama Limba
1043David L MaletCanada2024-04-11Rousseaux, Michael Esq QUALIFIED77Ivan Magalhaes
1044Murillo V VenereArgentina2024-04-13Benton, John B Jr QUALIFIED92Xuxue Feng
1045Greenwood A AmigonBrazil2024-04-19Rousseaux, Michael Esq PROPOSAL30Stephen Shaw
1046Aruna Q WhobreyAustralia2024-04-14Chapman, Ross E Esq NEW35Stephen Shaw
1047Ricardo O SchemmerUnited Kingdom2024-04-13Truhlar And Truhlar Attys PROPOSAL91Elwin Sharvill
1048Arvin X MacleadFrance2024-04-04Dorl, James J Esq NEW40Asiya Javayant
1049Silvio C PaprockiArgentina2024-04-03King, Christopher A Esq RENEWAL67Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Johnson V InouyeCanadaXuxue Feng RENEWAL
Smith V ChuiIndiaStephen Shaw QUALIFIED
Smith V FollerGermanyIvan Magalhaes PROPOSAL
Ivar U AlbaresGermanyIoni Bowcher UNQUALIFIED
David Y DoeGermanyAsiya Javayant UNQUALIFIED
Clifford I ButtGermanyElwin Sharvill RENEWAL
Clifford J GauchoGermanyElwin Sharvill RENEWAL
Izzy L RulapaughAustraliaIvan Magalhaes RENEWAL
Nicolas G SchemmerUnited KingdomStephen Shaw UNQUALIFIED
Jones P GauchoIndiaIvan Magalhaes QUALIFIED
Maisha Z VocelkaGermanyAsiya Javayant UNQUALIFIED
Murillo X FigeroaRussiaOnyama Limba PROPOSAL
Aruna E MarrierArgentinaIoni Bowcher PROPOSAL
Salvatore T DilliardGermanyXuxue Feng RENEWAL
Isabel B VocelkaGermanyElwin Sharvill RENEWAL
Chavez H RulapaughRussiaElwin Sharvill NEW
Chavez M FollerArgentinaAnna Fali QUALIFIED
Faith B BologniaIndiaElwin Sharvill RENEWAL
Johnson E KolmetzItalyAmy Elsner QUALIFIED
Izzy U PaprockiCanadaIoni Bowcher QUALIFIED
Jennifer P SchemmerRussiaAnna Fali RENEWAL
Maisha U StockhamBrazilAmy Elsner NEW
Izzy N SlusarskiSpainOnyama Limba QUALIFIED
Chavez R MaletCanadaBernardo Dominic PROPOSAL
Murillo Z CampainGermanyAmy Elsner QUALIFIED
Morrow Q ShinkoUnited KingdomXuxue Feng NEGOTIATION
Clifford X PoquetteIndiaStephen Shaw NEW
Leja T SergiCanadaStephen Shaw RENEWAL
Cody S SergiRussiaAnna Fali NEW
Tony W AmigonUnited KingdomOnyama Limba QUALIFIED
Darci M StockhamCanadaStephen Shaw NEW
Francesco O ChuiGermanyAnna Fali RENEWAL
Adams P WaycottFranceIoni Bowcher NEGOTIATION
Kaitlin H DarakjyIndiaAmy Elsner RENEWAL
Costa K GillianUnited KingdomBernardo Dominic UNQUALIFIED
Chavez J ButtIndiaXuxue Feng PROPOSAL
Maisha T DarakjyItalyAsiya Javayant QUALIFIED
Leon Z ShinkoGermanyStephen Shaw PROPOSAL
Ivar A SlusarskiSpainXuxue Feng PROPOSAL
Nicolas H DilliardBrazilElwin Sharvill NEGOTIATION
Munro J WieserSpainIvan Magalhaes NEW
Greenwood R PaprockiRussiaAnna Fali NEGOTIATION
Alejandro C KuskoIndiaXuxue Feng PROPOSAL
Mujtaba W MarrierFranceBernardo Dominic NEW
Ashley I DoeGermanyAnna Fali NEW
Costa E MarrierItalyAnna Fali NEGOTIATION
Maria R RimArgentinaXuxue Feng QUALIFIED
Adams H FlosiCanadaAnna Fali NEGOTIATION
Francesco F WieserIndiaAsiya Javayant RENEWAL
Mujtaba F ChuiAustraliaAnna Fali PROPOSAL
Frozen Columns
Name
Chavez W Wieser
Maria H Schemmer
Nicolas L Stockham
Francesco M Figeroa
Kaitlin L Kusko
Munro D Darakjy
Jefferson V Amigon
Kaitlin A Butt
Silvio N Stockham
Mayumi R Ruta
Greenwood K Gillian
Rodrigues N Malet
Misaki R Albares
Maisha F Maclead
Ashley W Perin
Munro R Oldroyd
Aruna E Campain
Sinclair D Tollner
Johnson L Malet
Leon V Flosi
Isabel P Tollner
Rodrigues J Kusko
Alejandro E Amigon
Isabel H Waycott
Jefferson C Schemmer
Octavia I Shinko
Julie Q Venere
Jeanfrancois T Wieser
David W Iturbide
Misaki N Morasca
Aruna K Flosi
Alejandro I Glick
Juan L Wieser
Francesco E Tollner
Darci J Dilliard
Munro N Kusko
Greenwood T Sergi
Smith E Whobrey
Leja G Vocelka
Morrow R Royster
Juan Y Caudy
Isabel L Albares
Aika J Inouye
Maisha N Gillian
Ricardo D Iturbide
Ricardo L Perin
Mayumi L Ferencz
Aruna T Marrier
Aruna C Amigon
Julie N Bowley
IdCountryDate
1000India2024-04-22
1001France2024-04-21
1002Argentina2024-03-31
1003Spain2024-04-19
1004France2024-04-13
1005Brazil2024-04-01
1006Japan2024-04-20
1007Italy2024-04-09
1008France2024-04-09
1009Spain2024-04-08
1010Italy2024-04-17
1011France2024-04-03
1012Brazil2024-04-18
1013Italy2024-04-24
1014India2024-04-05
1015Germany2024-04-12
1016Japan2024-03-28
1017United Kingdom2024-04-25
1018Argentina2024-04-05
1019Russia2024-04-11
1020Italy2024-04-12
1021France2024-03-29
1022Argentina2024-04-24
1023France2024-04-07
1024Italy2024-04-05
1025Canada2024-04-02
1026France2024-04-06
1027India2024-04-11
1028Italy2024-04-05
1029Japan2024-04-16
1030Australia2024-04-19
1031Australia2024-04-22
1032Brazil2024-04-05
1033Japan2024-04-05
1034Argentina2024-04-07
1035Germany2024-04-11
1036Argentina2024-04-03
1037India2024-04-06
1038Germany2024-04-09
1039Canada2024-04-13
1040Italy2024-04-26
1041Argentina2024-04-22
1042Australia2024-04-07
1043India2024-04-06
1044United Kingdom2024-04-01
1045Japan2024-04-19
1046Brazil2024-04-22
1047Russia2024-04-10
1048Italy2024-04-12
1049Russia2024-04-05

On-Demand Data

NameIdCountryDate
Salvatore G Tollner1000France2024-03-28
Aditya C Waycott1001Italy2024-04-14
David I Bolognia1002Italy2024-04-10
Rodrigues E Perin1003Australia2024-04-13
Tony U Dilliard1004Japan2024-04-23
Kadeem T Rulapaugh1005Australia2024-04-26
Claire G Vocelka1006Brazil2024-03-28
Francesco O Dilliard1007Russia2024-04-07
Emily Q Darakjy1008Brazil2024-04-03
Jones P Campain1009Spain2024-04-25
Octavia L Oldroyd1010Brazil2024-04-08
Johnson U Garufi1011India2024-04-09
Kaitlin N Sergi1012Italy2024-04-07
Mayumi J Paprocki1013Canada2024-04-11
Deepesh U Foller1014France2024-03-29
Aruna G Dilliard1015India2024-04-26
Morrow C Shinko1016Canada2024-03-30
Smith E Flosi1017Germany2024-04-01
Alejandro K Dilliard1018Australia2024-04-24
Costa B Kolmetz1019Russia2024-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody T RulapaughCanadaAnna Fali UNQUALIFIED
Jennifer N MarrierItalyElwin Sharvill NEGOTIATION
Rodrigues L MacleadGermanyElwin Sharvill UNQUALIFIED
Tony J AmigonUnited KingdomAmy Elsner QUALIFIED
Misaki Q WhobreyBrazilXuxue Feng QUALIFIED
Faith E NestleGermanyStephen Shaw NEGOTIATION
Mujtaba Z MaletArgentinaXuxue Feng NEGOTIATION
Murillo V CaldareraUnited KingdomElwin Sharvill UNQUALIFIED
Juan T AlbaresGermanyAnna Fali QUALIFIED
Alejandro T FigeroaCanadaXuxue Feng RENEWAL
Emily W RoysterRussiaIvan Magalhaes RENEWAL
Izzy W AlbaresArgentinaIoni Bowcher PROPOSAL
Jeanfrancois X NestleArgentinaOnyama Limba PROPOSAL
Mujtaba R CampainArgentinaIvan Magalhaes UNQUALIFIED
Ricardo C CaudySpainIoni Bowcher UNQUALIFIED
Leja N PaprockiArgentinaBernardo Dominic RENEWAL
Isabel S FollerGermanyElwin Sharvill PROPOSAL
Jennifer W FlosiAustraliaAmy Elsner NEW
Ivar K ChuiGermanyIoni Bowcher UNQUALIFIED
Costa W WieserRussiaIvan Magalhaes UNQUALIFIED
Faith E NestleCanadaStephen Shaw UNQUALIFIED
Deepesh S BowleyArgentinaBernardo Dominic NEGOTIATION
Sinclair C RoysterSpainIvan Magalhaes UNQUALIFIED
Murillo Z MacleadArgentinaOnyama Limba PROPOSAL
Stacey P AlbaresRussiaAmy Elsner PROPOSAL
Jones V VocelkaArgentinaBernardo Dominic NEGOTIATION
Claire J StockhamSpainAnna Fali NEW
Ashley Q KolmetzItalyXuxue Feng QUALIFIED
Tony S ButtUnited KingdomIvan Magalhaes NEW
Antonio L GarufiIndiaElwin Sharvill NEGOTIATION
Emily M FigeroaFranceElwin Sharvill UNQUALIFIED
Darci I RimUnited KingdomBernardo Dominic PROPOSAL
Murillo U SlusarskiGermanyElwin Sharvill NEW
James N WhobreyItalyStephen Shaw UNQUALIFIED
Izzy B RoysterJapanElwin Sharvill PROPOSAL
Ivar C PoquetteItalyAnna Fali RENEWAL
Emily E OstroskyArgentinaAnna Fali RENEWAL
Juan J WaycottAustraliaStephen Shaw NEGOTIATION
Wickens A StensethBrazilBernardo Dominic RENEWAL
Jefferson Q InouyeFranceXuxue Feng PROPOSAL

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