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 Q MaletSpainAmy Elsner NEGOTIATION
James Y FigeroaCanadaAsiya Javayant UNQUALIFIED
Maisha A PoquetteCanadaElwin Sharvill PROPOSAL
Tony J AlbaresArgentinaAsiya Javayant RENEWAL
Johnson Q StockhamJapanStephen Shaw NEW
Cody D VocelkaJapanXuxue Feng UNQUALIFIED
Ricardo E SaylorsGermanyElwin Sharvill NEGOTIATION
Ivar W MaletUnited KingdomElwin Sharvill RENEWAL
Cody L MarrierRussiaElwin Sharvill RENEWAL
Tony B AlbaresIndiaXuxue Feng NEW
Maisha R WhobreyRussiaAmy Elsner PROPOSAL
Mujtaba S FlosiAustraliaIvan Magalhaes RENEWAL
Jeanfrancois M FerenczArgentinaOnyama Limba PROPOSAL
Leon J FlosiIndiaAnna Fali NEGOTIATION
Julie B OldroydItalyIvan Magalhaes RENEWAL
Leon L WieserIndiaElwin Sharvill NEGOTIATION
Ricardo I MarrierGermanyAmy Elsner QUALIFIED
Darci S GillianSpainAsiya Javayant QUALIFIED
Costa Z PoquetteItalyIoni Bowcher PROPOSAL
Rodrigues L BologniaIndiaAnna Fali NEW
Silvio G PerinCanadaAnna Fali QUALIFIED
Darci Q DarakjyGermanyOnyama Limba QUALIFIED
Maisha Q PerinIndiaBernardo Dominic NEW
Juan J BriddickSpainXuxue Feng NEGOTIATION
Mujtaba P ChuiRussiaAsiya Javayant NEW
Leja C DilliardUnited KingdomStephen Shaw PROPOSAL
Arvin M StockhamCanadaStephen Shaw PROPOSAL
Maria R VocelkaFranceAnna Fali NEW
Izzy N FlosiAustraliaAmy Elsner PROPOSAL
Darci A DarakjyFranceAnna Fali RENEWAL
Kaitlin R RimArgentinaStephen Shaw NEW
Ivar V RoysterBrazilElwin Sharvill UNQUALIFIED
Munro R OstroskyFranceXuxue Feng UNQUALIFIED
Darci X PoquetteGermanyIoni Bowcher PROPOSAL
Murillo M SaylorsUnited KingdomIoni Bowcher QUALIFIED
James P GauchoSpainIvan Magalhaes PROPOSAL
Sinclair J KolmetzSpainElwin Sharvill NEGOTIATION
Salvatore C KuskoIndiaElwin Sharvill RENEWAL
Ivar S ShinkoJapanAsiya Javayant UNQUALIFIED
Juan L NickaAustraliaIoni Bowcher QUALIFIED
Rodrigues R GauchoFranceIoni Bowcher NEGOTIATION
Smith Z CampainFranceOnyama Limba PROPOSAL
Leon M NestleItalyIvan Magalhaes UNQUALIFIED
Johnson J AlbaresItalyStephen Shaw UNQUALIFIED
Kaitlin X OstroskyUnited KingdomStephen Shaw UNQUALIFIED
Maria D OldroydBrazilIvan Magalhaes NEW
Ivar W WieserRussiaOnyama Limba PROPOSAL
Ivar F KuskoBrazilStephen Shaw UNQUALIFIED
Darci S NickaRussiaBernardo Dominic NEGOTIATION
Murillo Q PaprockiUnited KingdomAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Claire K PerinArgentinaAmy Elsner UNQUALIFIED
Jones N NickaRussiaIoni Bowcher PROPOSAL
Julie S GarufiUnited KingdomIvan Magalhaes PROPOSAL
Jefferson C TollnerArgentinaOnyama Limba QUALIFIED
Kadeem W NestleJapanBernardo Dominic NEW
Alejandro D KuskoItalyAmy Elsner UNQUALIFIED
Maria J WieserItalyBernardo Dominic UNQUALIFIED
Stacey H StensethSpainElwin Sharvill PROPOSAL
Rodrigues K VocelkaCanadaAnna Fali NEGOTIATION
Silvio H KolmetzAustraliaBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo I BologniaJapan2024-04-02Morlong Associates QUALIFIED41Elwin Sharvill
1001Mayumi K AlbaresGermany2024-04-08Buckley Miller Wright NEW18Ivan Magalhaes
1002Ricardo D DoeGermany2024-03-31Buckley Miller Wright RENEWAL47Stephen Shaw
1003Jones I GillianGermany2024-04-22Feltz Printing Service NEGOTIATION84Elwin Sharvill
1004Arvin U ButtItaly2024-03-30Feltz Printing Service QUALIFIED82Amy Elsner
1005Aditya J NickaAustralia2024-04-17King, Christopher A Esq QUALIFIED19Xuxue Feng
1006Misaki X GauchoBrazil2024-04-19Morlong Associates QUALIFIED11Asiya Javayant
1007Ashley R CaldareraUnited Kingdom2024-04-10Commercial Press NEW38Ioni Bowcher
1008Deepesh N DarakjySpain2024-04-05Truhlar And Truhlar Attys PROPOSAL9Elwin Sharvill
1009Aruna S PoquetteIndia2024-04-01Chanay, Jeffrey A Esq NEW5Xuxue Feng
1010Tony A CaldareraAustralia2024-04-07Chanay, Jeffrey A Esq UNQUALIFIED65Stephen Shaw
1011Ashley F StensethBrazil2024-04-20Truhlar And Truhlar Attys NEGOTIATION5Elwin Sharvill
1012Nicolas Z GillianGermany2024-04-10Morlong Associates PROPOSAL29Onyama Limba
1013Jones F StockhamGermany2024-04-14Dorl, James J Esq UNQUALIFIED46Onyama Limba
1014Nicolas C CaudyCanada2024-04-03Rousseaux, Michael Esq PROPOSAL5Stephen Shaw
1015Faith F RulapaughItaly2024-04-06Rousseaux, Michael Esq RENEWAL1Amy Elsner
1016Emily U PoquetteCanada2024-04-08Truhlar And Truhlar Attys RENEWAL0Bernardo Dominic
1017Tony G DoeBrazil2024-03-28Chanay, Jeffrey A Esq NEW32Ioni Bowcher
1018Nicolas G GauchoArgentina2024-04-15Dorl, James J Esq QUALIFIED20Asiya Javayant
1019Isabel M StensethItaly2024-04-03Truhlar And Truhlar Attys PROPOSAL48Ivan Magalhaes
1020Aditya T InouyeFrance2024-04-14Morlong Associates NEW47Stephen Shaw
1021Kaitlin P GlickUnited Kingdom2024-04-03Chapman, Ross E Esq NEGOTIATION80Amy Elsner
1022Juan A OldroydArgentina2024-04-26Chanay, Jeffrey A Esq UNQUALIFIED34Bernardo Dominic
1023Leon P InouyeCanada2024-03-29Commercial Press NEGOTIATION37Xuxue Feng
1024Emily F VocelkaRussia2024-04-07Rangoni Of Florence NEW31Amy Elsner
1025Alejandro R NestleUnited Kingdom2024-04-26Chemel, James L Cpa PROPOSAL41Onyama Limba
1026Aika Q ButtJapan2024-03-29Commercial Press QUALIFIED63Onyama Limba
1027Darci H GillianCanada2024-03-30Rousseaux, Michael Esq NEW93Amy Elsner
1028Octavia L NestleFrance2024-03-28Feltz Printing Service NEW95Elwin Sharvill
1029Clifford W SlusarskiAustralia2024-04-02Morlong Associates RENEWAL7Bernardo Dominic
1030Clifford J AmigonCanada2024-03-31Commercial Press NEGOTIATION46Anna Fali
1031Aruna W KuskoArgentina2024-04-12King, Christopher A Esq PROPOSAL82Anna Fali
1032Juan Q CaldareraIndia2024-04-19Feiner Bros PROPOSAL89Ivan Magalhaes
1033Ricardo R WhobreySpain2024-04-18Commercial Press NEGOTIATION48Elwin Sharvill
1034Silvio A SergiBrazil2024-04-18Feiner Bros QUALIFIED65Anna Fali
1035David K NestleBrazil2024-04-10Benton, John B Jr NEGOTIATION69Ivan Magalhaes
1036Chavez G FigeroaFrance2024-04-07Printing Dimensions NEW43Asiya Javayant
1037Claire Q BologniaBrazil2024-04-11Chapman, Ross E Esq UNQUALIFIED78Onyama Limba
1038Izzy M CaldareraItaly2024-04-13Feiner Bros PROPOSAL2Asiya Javayant
1039Morrow X PoquetteItaly2024-04-06Chanay, Jeffrey A Esq RENEWAL65Elwin Sharvill
1040Sinclair M GarufiGermany2024-04-22Rangoni Of Florence UNQUALIFIED79Asiya Javayant
1041Costa S FerenczSpain2024-04-04Truhlar And Truhlar Attys QUALIFIED69Ioni Bowcher
1042Nicolas U RimItaly2024-03-29Rousseaux, Michael Esq NEW5Anna Fali
1043Ivar M ButtRussia2024-04-18Buckley Miller Wright PROPOSAL36Anna Fali
1044Adams T TollnerRussia2024-04-15Feiner Bros PROPOSAL92Asiya Javayant
1045Misaki C NickaAustralia2024-03-30Dorl, James J Esq RENEWAL77Bernardo Dominic
1046Jeanfrancois G WhobreyUnited Kingdom2024-04-06Benton, John B Jr NEGOTIATION73Xuxue Feng
1047Juan A IturbideAustralia2024-04-18Chanay, Jeffrey A Esq NEGOTIATION77Ioni Bowcher
1048Jefferson J RimCanada2024-04-04King, Christopher A Esq QUALIFIED57Stephen Shaw
1049Jennifer I CampainCanada2024-04-11King, Christopher A Esq UNQUALIFIED21Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Francesco P SchemmerSpainOnyama Limba NEW
Alejandro S OldroydJapanXuxue Feng QUALIFIED
Ricardo S GauchoArgentinaIvan Magalhaes RENEWAL
Murillo Z MorascaJapanAsiya Javayant PROPOSAL
Silvio P CaldareraBrazilAmy Elsner NEGOTIATION
Aruna Q GauchoIndiaElwin Sharvill QUALIFIED
Kadeem R CaudyUnited KingdomElwin Sharvill UNQUALIFIED
David Y SaylorsFranceXuxue Feng UNQUALIFIED
Wickens Z MacleadCanadaIvan Magalhaes PROPOSAL
Arvin T FigeroaArgentinaBernardo Dominic UNQUALIFIED
Mayumi P ButtJapanIvan Magalhaes NEGOTIATION
Juan W VenereRussiaIvan Magalhaes PROPOSAL
Morrow H RoysterGermanyAnna Fali RENEWAL
Misaki Q MarrierUnited KingdomOnyama Limba NEGOTIATION
Smith N KuskoCanadaStephen Shaw NEGOTIATION
Clifford Y CaudyJapanElwin Sharvill UNQUALIFIED
Jennifer Q CaldareraCanadaIvan Magalhaes UNQUALIFIED
Tony B GlickFranceIoni Bowcher QUALIFIED
Aditya E RoysterJapanBernardo Dominic UNQUALIFIED
Murillo R RimArgentinaAsiya Javayant RENEWAL
Murillo Z MaletSpainIoni Bowcher QUALIFIED
Faith G OstroskyIndiaAsiya Javayant UNQUALIFIED
Morrow T FlosiAustraliaStephen Shaw QUALIFIED
Costa U AmigonBrazilIoni Bowcher UNQUALIFIED
Silvio S NickaItalyAnna Fali QUALIFIED
David J KuskoAustraliaAnna Fali PROPOSAL
Ricardo C AmigonCanadaBernardo Dominic NEGOTIATION
Rodrigues G SlusarskiCanadaElwin Sharvill NEGOTIATION
Munro U StensethGermanyIvan Magalhaes PROPOSAL
Rodrigues D GillianRussiaXuxue Feng UNQUALIFIED
Clifford I SaylorsRussiaBernardo Dominic UNQUALIFIED
Ricardo C MarrierRussiaIoni Bowcher QUALIFIED
Aika F GauchoAustraliaXuxue Feng NEW
Murillo X SchemmerIndiaStephen Shaw RENEWAL
Murillo X MarrierGermanyAmy Elsner PROPOSAL
Aruna A CaldareraJapanIvan Magalhaes NEW
Maisha P VocelkaArgentinaElwin Sharvill QUALIFIED
Julie D CaldareraRussiaOnyama Limba NEGOTIATION
Costa L GauchoAustraliaStephen Shaw RENEWAL
Sinclair M IturbideFranceAnna Fali QUALIFIED
Kaitlin Y BowleyGermanyOnyama Limba RENEWAL
Costa V CampainCanadaOnyama Limba PROPOSAL
Wickens G RutaBrazilIoni Bowcher NEW
Leja N SergiBrazilAsiya Javayant PROPOSAL
Wickens R DilliardRussiaStephen Shaw NEW
Costa L StockhamJapanIvan Magalhaes RENEWAL
Leon M ButtRussiaBernardo Dominic NEGOTIATION
Maisha J WhobreyArgentinaAnna Fali QUALIFIED
Leon S RimAustraliaAmy Elsner RENEWAL
Maria U VocelkaArgentinaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Maisha S Oldroyd
Aditya B Foller
Maisha V Nestle
Mujtaba E Royster
Maisha K Garufi
Costa Y Stenseth
Mujtaba E Tollner
Smith K Amigon
Sinclair B Butt
Antonio A Gaucho
Claire B Dilliard
Mujtaba U Malet
Silvio I Tollner
Izzy R Stockham
James F Stockham
Kadeem B Morasca
Aruna O Rulapaugh
Kadeem N Perin
Deepesh E Caldarera
Arvin F Bolognia
Faith Q Figeroa
Julie R Rim
Mayumi A Dilliard
Maisha K Stockham
Mayumi I Whobrey
Murillo P Malet
Mayumi J Royster
Mayumi E Rim
Ashley C Chui
Emily R Schemmer
Faith R Iturbide
Ashley X Gillian
Morrow E Rim
Izzy B Paprocki
Rodrigues V Briddick
Maisha Z Vocelka
Alejandro C Chui
Jeanfrancois N Kolmetz
Ricardo Y Tollner
Aika Q Nicka
Isabel B Campain
Octavia W Kolmetz
Leja R Vocelka
Octavia O Slusarski
Aruna S Butt
Munro K Morasca
Chavez G Bowley
Emily L Slusarski
Nicolas Z Schemmer
Kadeem Y Malet
IdCountryDate
1000Brazil2024-04-26
1001Brazil2024-04-01
1002Russia2024-04-09
1003Russia2024-04-21
1004Brazil2024-03-29
1005Australia2024-04-13
1006Japan2024-04-08
1007Brazil2024-04-10
1008Spain2024-03-31
1009Japan2024-04-23
1010United Kingdom2024-03-30
1011Italy2024-04-13
1012Brazil2024-04-08
1013Australia2024-04-03
1014Germany2024-04-18
1015Canada2024-03-31
1016Argentina2024-03-31
1017Australia2024-03-30
1018Italy2024-04-17
1019France2024-04-09
1020France2024-04-01
1021Argentina2024-04-24
1022Canada2024-04-17
1023Italy2024-03-30
1024Brazil2024-04-26
1025Canada2024-04-24
1026Russia2024-04-22
1027Russia2024-04-08
1028Japan2024-04-04
1029France2024-04-08
1030Spain2024-04-12
1031Germany2024-04-06
1032Russia2024-04-14
1033Argentina2024-04-02
1034Spain2024-04-21
1035Brazil2024-03-28
1036France2024-03-29
1037India2024-03-29
1038Argentina2024-04-03
1039France2024-04-04
1040Argentina2024-04-11
1041Japan2024-04-19
1042Germany2024-04-23
1043Japan2024-04-24
1044Canada2024-04-10
1045India2024-04-05
1046Russia2024-04-07
1047India2024-03-28
1048Germany2024-04-10
1049Brazil2024-04-26

On-Demand Data

NameIdCountryDate
Smith L Rim1000Spain2024-04-21
Kaitlin M Poquette1001Russia2024-04-06
Rodrigues B Morasca1002Canada2024-04-05
Kadeem Y Ferencz1003Canada2024-04-05
David M Bolognia1004Brazil2024-04-20
Alejandro M Kusko1005Argentina2024-04-15
Tony C Kolmetz1006Italy2024-04-26
Morrow H Figeroa1007Canada2024-03-28
Arvin W Bolognia1008Italy2024-03-28
Nicolas T Caudy1009Italy2024-04-15
Francesco Y Glick1010Germany2024-04-05
Rodrigues K Paprocki1011Argentina2024-04-10
Arvin J Doe1012Australia2024-04-11
Sinclair O Kusko1013India2024-04-11
Izzy L Stenseth1014Brazil2024-04-03
Jefferson X Vocelka1015Spain2024-04-09
James Q Oldroyd1016Argentina2024-04-07
Cody H Gaucho1017Spain2024-04-12
Mayumi A Flosi1018France2024-04-02
Ivar H Dilliard1019Russia2024-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba B NickaJapanAnna Fali QUALIFIED
Misaki D MaletSpainOnyama Limba QUALIFIED
Greenwood F SchemmerAustraliaAsiya Javayant NEW
Clifford J FigeroaSpainOnyama Limba PROPOSAL
Aika C VocelkaItalyAnna Fali NEGOTIATION
Octavia G FollerSpainStephen Shaw NEW
Aditya Y WaycottFranceXuxue Feng NEW
Nicolas U RimFranceAmy Elsner NEGOTIATION
Silvio V GlickUnited KingdomIoni Bowcher NEGOTIATION
Octavia D GauchoGermanyOnyama Limba PROPOSAL
Francesco S WaycottUnited KingdomStephen Shaw PROPOSAL
Jones D OldroydIndiaAmy Elsner QUALIFIED
Aditya N RulapaughUnited KingdomXuxue Feng RENEWAL
Jeanfrancois H RutaItalyAmy Elsner PROPOSAL
Ricardo W PoquetteCanadaIvan Magalhaes NEGOTIATION
Clifford T SlusarskiCanadaBernardo Dominic PROPOSAL
Johnson G GarufiCanadaAmy Elsner NEW
Octavia P VenereRussiaXuxue Feng NEW
Smith Z RimBrazilAnna Fali NEGOTIATION
Munro T InouyeJapanAmy Elsner UNQUALIFIED
Claire B ButtIndiaStephen Shaw UNQUALIFIED
Mujtaba B ChuiUnited KingdomElwin Sharvill UNQUALIFIED
Maisha A SaylorsSpainAnna Fali UNQUALIFIED
Adams P WaycottIndiaIvan Magalhaes RENEWAL
James K VocelkaSpainAsiya Javayant QUALIFIED
Ivar C CampainGermanyAsiya Javayant NEGOTIATION
Juan G WaycottItalyIvan Magalhaes PROPOSAL
Jefferson V VocelkaGermanyAnna Fali UNQUALIFIED
Mujtaba B TollnerUnited KingdomAnna Fali PROPOSAL
Mayumi S BologniaArgentinaBernardo Dominic RENEWAL
Stacey T MaletRussiaOnyama Limba NEGOTIATION
Chavez N RimAustraliaIoni Bowcher UNQUALIFIED
Aika V MaletUnited KingdomAmy Elsner RENEWAL
Juan H CaldareraGermanyAsiya Javayant NEGOTIATION
Deepesh V BowleyGermanyOnyama Limba NEGOTIATION
Darci H ButtIndiaElwin Sharvill NEW
Sinclair L PaprockiUnited KingdomElwin Sharvill UNQUALIFIED
Leon G InouyeBrazilAsiya Javayant PROPOSAL
Jennifer A TollnerAustraliaIoni Bowcher PROPOSAL
Morrow E BologniaFranceOnyama Limba NEGOTIATION

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