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
Smith N RulapaughRussiaOnyama Limba NEGOTIATION
Chavez R GillianFranceIvan Magalhaes QUALIFIED
Leon K FigeroaGermanyStephen Shaw NEGOTIATION
Ricardo C IturbideJapanOnyama Limba NEW
Munro K AmigonUnited KingdomIvan Magalhaes QUALIFIED
Izzy Q SergiBrazilStephen Shaw NEW
Maria Z GillianJapanAnna Fali PROPOSAL
Deepesh M SlusarskiItalyOnyama Limba RENEWAL
Johnson L SchemmerGermanyAmy Elsner PROPOSAL
Mujtaba R AmigonItalyStephen Shaw NEGOTIATION
Mujtaba J IturbideItalyAnna Fali RENEWAL
Jefferson W BriddickArgentinaStephen Shaw QUALIFIED
Kadeem P VocelkaItalyOnyama Limba QUALIFIED
Nicolas Q RulapaughIndiaAmy Elsner RENEWAL
Costa K AmigonJapanAmy Elsner QUALIFIED
David S RoysterAustraliaIvan Magalhaes RENEWAL
Cody T AlbaresCanadaIoni Bowcher RENEWAL
Aika J FlosiIndiaXuxue Feng PROPOSAL
Arvin Q GauchoGermanyBernardo Dominic PROPOSAL
Izzy J MaletBrazilAnna Fali RENEWAL
Tony C ButtUnited KingdomOnyama Limba NEW
Cody F RutaFranceStephen Shaw UNQUALIFIED
Stacey K MaletRussiaAsiya Javayant PROPOSAL
David I BowleyGermanyStephen Shaw NEW
Salvatore H PoquetteUnited KingdomAsiya Javayant NEGOTIATION
Wickens P BriddickAustraliaXuxue Feng QUALIFIED
Isabel L VenereGermanyAmy Elsner UNQUALIFIED
Maria M NestleUnited KingdomXuxue Feng NEW
Johnson S GillianAustraliaAsiya Javayant NEGOTIATION
Ivar U AlbaresItalyIoni Bowcher QUALIFIED
Ivar N BriddickFranceXuxue Feng PROPOSAL
Claire G CaldareraAustraliaElwin Sharvill RENEWAL
Isabel Q SaylorsUnited KingdomAsiya Javayant RENEWAL
Leon K PerinRussiaBernardo Dominic PROPOSAL
Deepesh S SlusarskiFranceElwin Sharvill QUALIFIED
Aika F IturbideGermanyBernardo Dominic RENEWAL
Deepesh A DarakjyUnited KingdomAsiya Javayant UNQUALIFIED
Arvin F KuskoFranceXuxue Feng UNQUALIFIED
Ivar O MaletRussiaAnna Fali UNQUALIFIED
Ashley R AlbaresArgentinaIoni Bowcher RENEWAL
Jeanfrancois Y WieserFranceIvan Magalhaes PROPOSAL
Julie E GlickGermanyElwin Sharvill NEGOTIATION
Alejandro I FlosiUnited KingdomStephen Shaw RENEWAL
David G IturbideJapanIvan Magalhaes NEW
Costa A SlusarskiFranceBernardo Dominic NEW
Leon W NickaIndiaIvan Magalhaes UNQUALIFIED
Faith A FigeroaGermanyBernardo Dominic UNQUALIFIED
Mayumi Z AmigonAustraliaElwin Sharvill NEW
Maisha G FerenczGermanyElwin Sharvill PROPOSAL
James Y FerenczBrazilElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Alejandro K PaprockiItalyIoni Bowcher NEGOTIATION
Leon Q NickaAustraliaAnna Fali RENEWAL
Darci A FerenczAustraliaIvan Magalhaes UNQUALIFIED
Ashley H SergiFranceXuxue Feng NEW
Aditya V MarrierFranceBernardo Dominic PROPOSAL
Aika F SchemmerUnited KingdomStephen Shaw QUALIFIED
Jennifer A BriddickJapanOnyama Limba PROPOSAL
Mujtaba A ShinkoItalyAsiya Javayant NEW
Juan I SchemmerCanadaOnyama Limba UNQUALIFIED
Maria L BriddickBrazilAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem R FlosiCanada2024-03-26Buckley Miller Wright RENEWAL3Onyama Limba
1001Juan L FlosiArgentina2024-03-30Chanay, Jeffrey A Esq NEGOTIATION47Elwin Sharvill
1002Ricardo E KuskoAustralia2024-04-01Truhlar And Truhlar Attys NEGOTIATION36Stephen Shaw
1003Mayumi Q OstroskyBrazil2024-04-16Chapman, Ross E Esq QUALIFIED93Bernardo Dominic
1004Julie A OldroydAustralia2024-04-01Benton, John B Jr RENEWAL69Ioni Bowcher
1005Kaitlin H WieserItaly2024-04-08Morlong Associates UNQUALIFIED13Stephen Shaw
1006Ricardo D StockhamBrazil2024-04-06King, Christopher A Esq NEW34Elwin Sharvill
1007Nicolas P NestleItaly2024-04-20Chanay, Jeffrey A Esq NEW5Onyama Limba
1008Leon B MacleadUnited Kingdom2024-04-23Rangoni Of Florence NEW39Amy Elsner
1009Adams E BologniaGermany2024-03-27Buckley Miller Wright QUALIFIED97Xuxue Feng
1010Aruna V RoysterCanada2024-04-04Morlong Associates QUALIFIED63Bernardo Dominic
1011Emily D DoeCanada2024-04-15Morlong Associates PROPOSAL71Xuxue Feng
1012Tony G SchemmerItaly2024-04-13Morlong Associates RENEWAL97Bernardo Dominic
1013Tony M PoquetteFrance2024-04-22Chanay, Jeffrey A Esq PROPOSAL78Ioni Bowcher
1014Clifford E ChuiCanada2024-04-23King, Christopher A Esq PROPOSAL39Onyama Limba
1015Kadeem K TollnerUnited Kingdom2024-03-31Benton, John B Jr QUALIFIED21Amy Elsner
1016Arvin R AmigonIndia2024-04-09Feltz Printing Service PROPOSAL65Ioni Bowcher
1017Maisha L CaldareraUnited Kingdom2024-04-14Feltz Printing Service NEGOTIATION80Onyama Limba
1018Ivar C PoquetteFrance2024-04-19Truhlar And Truhlar Attys UNQUALIFIED58Xuxue Feng
1019Octavia R MaletUnited Kingdom2024-04-12Benton, John B Jr PROPOSAL71Asiya Javayant
1020James W BowleyFrance2024-04-06Feltz Printing Service NEGOTIATION7Onyama Limba
1021Mayumi O RoysterBrazil2024-04-22Printing Dimensions PROPOSAL50Stephen Shaw
1022Murillo L PaprockiUnited Kingdom2024-04-05Commercial Press UNQUALIFIED77Elwin Sharvill
1023Ashley K MacleadCanada2024-03-28Morlong Associates RENEWAL95Bernardo Dominic
1024Jefferson Z BowleyFrance2024-03-31Buckley Miller Wright RENEWAL98Asiya Javayant
1025Alejandro R StensethGermany2024-04-24Rangoni Of Florence RENEWAL15Ioni Bowcher
1026Smith B MacleadItaly2024-04-12Printing Dimensions NEW10Anna Fali
1027Octavia P OldroydGermany2024-03-31Chapman, Ross E Esq RENEWAL78Elwin Sharvill
1028James E MaletIndia2024-04-20Printing Dimensions RENEWAL72Amy Elsner
1029Isabel S InouyeGermany2024-03-30Rangoni Of Florence RENEWAL24Stephen Shaw
1030Aika W WaycottSpain2024-04-15Rousseaux, Michael Esq UNQUALIFIED79Asiya Javayant
1031Antonio K SchemmerBrazil2024-04-05King, Christopher A Esq NEW64Onyama Limba
1032Leon S KuskoBrazil2024-04-01Chemel, James L Cpa UNQUALIFIED94Asiya Javayant
1033Tony F FerenczJapan2024-04-20Chemel, James L Cpa NEW66Ivan Magalhaes
1034Francesco S DilliardSpain2024-03-26Dorl, James J Esq RENEWAL54Ivan Magalhaes
1035Salvatore J SaylorsFrance2024-03-31Dorl, James J Esq PROPOSAL33Ioni Bowcher
1036Adams I WaycottArgentina2024-03-27Chemel, James L Cpa RENEWAL77Elwin Sharvill
1037David Z DarakjySpain2024-04-13Truhlar And Truhlar Attys QUALIFIED19Bernardo Dominic
1038Arvin Q WhobreyIndia2024-03-29Chapman, Ross E Esq NEW38Onyama Limba
1039Costa G MacleadUnited Kingdom2024-04-12Feiner Bros PROPOSAL93Amy Elsner
1040Alejandro Z GauchoUnited Kingdom2024-04-06Chemel, James L Cpa RENEWAL88Ivan Magalhaes
1041Aruna A PerinAustralia2024-04-07Chemel, James L Cpa RENEWAL74Amy Elsner
1042Leon I NestleCanada2024-04-05Chemel, James L Cpa NEW1Amy Elsner
1043Emily A SergiIndia2024-04-02Chapman, Ross E Esq RENEWAL39Asiya Javayant
1044Tony C RulapaughArgentina2024-04-23Feltz Printing Service RENEWAL97Ivan Magalhaes
1045Nicolas W NickaJapan2024-04-13Feiner Bros PROPOSAL6Elwin Sharvill
1046Jeanfrancois V DoeJapan2024-04-04Chemel, James L Cpa UNQUALIFIED28Bernardo Dominic
1047Jennifer R MarrierIndia2024-04-18Morlong Associates QUALIFIED54Amy Elsner
1048Smith G SergiFrance2024-04-23Morlong Associates QUALIFIED53Ivan Magalhaes
1049Claire V CaldareraSpain2024-04-10Commercial Press PROPOSAL42Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
David G VenereBrazilElwin Sharvill NEW
Aditya U IturbideUnited KingdomElwin Sharvill NEW
Nicolas B NestleUnited KingdomOnyama Limba NEGOTIATION
Faith R ShinkoItalyIvan Magalhaes NEGOTIATION
Ivar R MaletCanadaElwin Sharvill UNQUALIFIED
Silvio E RimBrazilElwin Sharvill RENEWAL
Nicolas S MaletCanadaElwin Sharvill RENEWAL
Tony B CampainSpainStephen Shaw NEGOTIATION
Alejandro W GillianIndiaBernardo Dominic RENEWAL
Leon T WhobreyFranceAmy Elsner UNQUALIFIED
Emily T SaylorsItalyBernardo Dominic RENEWAL
Alejandro T PoquetteBrazilIoni Bowcher QUALIFIED
Jefferson C InouyeCanadaAmy Elsner UNQUALIFIED
Tony U DarakjyUnited KingdomOnyama Limba UNQUALIFIED
Ashley X SchemmerJapanAsiya Javayant PROPOSAL
Leja P ButtFranceAmy Elsner QUALIFIED
Murillo W StensethArgentinaOnyama Limba UNQUALIFIED
Adams B CaudyCanadaIvan Magalhaes QUALIFIED
Maria S SergiGermanyAmy Elsner UNQUALIFIED
Aditya Q WaycottGermanyIvan Magalhaes QUALIFIED
Stacey L NestleFranceIoni Bowcher QUALIFIED
Kadeem S PerinFranceIvan Magalhaes RENEWAL
Murillo G DoeSpainAsiya Javayant NEGOTIATION
Johnson H CaldareraArgentinaIvan Magalhaes QUALIFIED
Kadeem Q MarrierUnited KingdomBernardo Dominic PROPOSAL
Kadeem U NestleAustraliaElwin Sharvill NEGOTIATION
Francesco V DilliardFranceOnyama Limba RENEWAL
Darci F DilliardFranceOnyama Limba RENEWAL
Leon N BriddickRussiaIoni Bowcher QUALIFIED
Greenwood R RoysterUnited KingdomAsiya Javayant UNQUALIFIED
Silvio C CaudyUnited KingdomAsiya Javayant NEW
Munro J WhobreyItalyElwin Sharvill QUALIFIED
Leja J MorascaArgentinaXuxue Feng UNQUALIFIED
Francesco G RoysterFranceElwin Sharvill NEGOTIATION
Izzy K WieserArgentinaBernardo Dominic QUALIFIED
Stacey U MaletCanadaStephen Shaw QUALIFIED
Maisha Q GlickFranceAsiya Javayant UNQUALIFIED
Stacey G WhobreyFranceElwin Sharvill PROPOSAL
Rodrigues Z GlickArgentinaElwin Sharvill RENEWAL
Julie A PaprockiUnited KingdomIvan Magalhaes NEGOTIATION
Juan H ButtGermanyAsiya Javayant NEW
Misaki A CampainSpainStephen Shaw QUALIFIED
Maria Y ChuiAustraliaAnna Fali QUALIFIED
Adams M FlosiCanadaAmy Elsner QUALIFIED
Johnson S AlbaresJapanIoni Bowcher QUALIFIED
Adams O MaletBrazilAnna Fali NEW
Jeanfrancois A PerinItalyStephen Shaw PROPOSAL
Isabel R DarakjyArgentinaXuxue Feng RENEWAL
Chavez B PerinIndiaElwin Sharvill NEW
Leon M BologniaArgentinaBernardo Dominic PROPOSAL
Frozen Columns
Name
Johnson E Slusarski
Morrow S Tollner
David B Kusko
Jones C Kolmetz
Juan W Flosi
Sinclair D Maclead
Chavez Y Ferencz
Clifford W Garufi
Isabel Y Royster
Nicolas P Campain
Chavez K Butt
Aika T Vocelka
Emily X Butt
Misaki F Caldarera
Julie Q Vocelka
Silvio Z Marrier
Chavez J Stenseth
Mayumi D Kolmetz
Darci R Caudy
Clifford H Ferencz
Juan O Whobrey
Cody G Garufi
Wickens R Amigon
Mayumi C Malet
Cody K Amigon
Jones E Darakjy
Leon C Nicka
Aruna W Rim
Munro Q Venere
Chavez H Glick
Cody S Vocelka
Chavez S Iturbide
Francesco V Gillian
Morrow P Kusko
Ashley O Venere
Aika I Dilliard
Aika I Amigon
David F Dilliard
Jeanfrancois F Malet
Maisha D Gaucho
Jennifer M Nicka
Stacey J Amigon
James T Vocelka
Izzy R Kusko
Adams X Rim
Morrow Q Slusarski
Arvin M Paprocki
Faith A Bowley
Adams S Malet
Octavia L Poquette
IdCountryDate
1000Russia2024-04-08
1001Spain2024-04-06
1002Argentina2024-04-03
1003Germany2024-03-29
1004Russia2024-04-12
1005Canada2024-04-05
1006Italy2024-04-12
1007United Kingdom2024-03-26
1008Spain2024-04-09
1009Brazil2024-04-10
1010Japan2024-03-26
1011United Kingdom2024-03-26
1012India2024-03-29
1013Spain2024-04-09
1014Spain2024-04-23
1015Argentina2024-04-01
1016Australia2024-03-26
1017Japan2024-03-26
1018Russia2024-04-12
1019Canada2024-03-30
1020Russia2024-04-11
1021Russia2024-04-07
1022Argentina2024-03-28
1023Argentina2024-03-30
1024Australia2024-04-11
1025Brazil2024-04-22
1026Australia2024-04-04
1027Italy2024-04-13
1028Italy2024-04-15
1029Germany2024-04-05
1030Brazil2024-04-21
1031Japan2024-03-31
1032France2024-04-11
1033Australia2024-03-26
1034France2024-04-09
1035France2024-03-27
1036Japan2024-04-16
1037Italy2024-04-02
1038France2024-04-11
1039France2024-03-26
1040Brazil2024-04-01
1041Russia2024-04-06
1042Brazil2024-04-19
1043Argentina2024-04-23
1044Canada2024-04-11
1045Argentina2024-04-03
1046Russia2024-04-18
1047Italy2024-04-16
1048Japan2024-04-13
1049Spain2024-03-28

On-Demand Data

NameIdCountryDate
Murillo E Stockham1000Canada2024-04-22
Leon M Ruta1001Italy2024-04-07
Isabel J Butt1002Argentina2024-04-10
Maria O Nestle1003Italy2024-04-14
Adams T Briddick1004Germany2024-04-10
Johnson Q Glick1005Italy2024-04-19
Arvin Z Slusarski1006Argentina2024-04-13
Julie J Ostrosky1007Germany2024-03-26
Juan N Ostrosky1008France2024-04-08
Julie F Albares1009United Kingdom2024-04-12
Johnson E Stockham1010Italy2024-04-14
Juan R Kolmetz1011France2024-04-14
David N Butt1012Spain2024-04-03
Cody C Caudy1013Australia2024-04-10
Cody W Caudy1014Japan2024-04-24
Aruna M Flosi1015India2024-03-26
Morrow T Garufi1016Russia2024-03-26
Rodrigues L Caudy1017Japan2024-03-29
Octavia L Glick1018India2024-04-04
Costa Y Iturbide1019Japan2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith E SlusarskiItalyXuxue Feng NEGOTIATION
Leja X NestleItalyAnna Fali UNQUALIFIED
Maria I RoysterSpainAnna Fali RENEWAL
Salvatore A DoeRussiaIvan Magalhaes QUALIFIED
Ricardo H GarufiArgentinaBernardo Dominic QUALIFIED
Alejandro V PoquetteCanadaElwin Sharvill PROPOSAL
Faith H AlbaresFranceAsiya Javayant RENEWAL
Kadeem Y StensethIndiaElwin Sharvill UNQUALIFIED
Murillo F PerinIndiaElwin Sharvill NEGOTIATION
Greenwood K WaycottGermanyAnna Fali NEGOTIATION
Isabel E SergiFranceAsiya Javayant QUALIFIED
Emily X BriddickSpainOnyama Limba PROPOSAL
Silvio T CaldareraUnited KingdomIvan Magalhaes NEGOTIATION
Kaitlin O SaylorsUnited KingdomIvan Magalhaes RENEWAL
Cody D CaudyCanadaAmy Elsner UNQUALIFIED
Munro D FollerSpainElwin Sharvill QUALIFIED
Ricardo K GillianUnited KingdomAnna Fali QUALIFIED
Kaitlin O WieserSpainAnna Fali QUALIFIED
Johnson Z OstroskyCanadaXuxue Feng PROPOSAL
Morrow Q StensethJapanIoni Bowcher QUALIFIED
Antonio F BologniaAustraliaXuxue Feng QUALIFIED
Julie U CaldareraAustraliaAnna Fali NEW
Silvio J RoysterCanadaXuxue Feng QUALIFIED
Salvatore X FigeroaGermanyIvan Magalhaes UNQUALIFIED
Morrow C InouyeGermanyXuxue Feng UNQUALIFIED
Octavia K DarakjyIndiaIvan Magalhaes RENEWAL
Aruna Q RutaAustraliaBernardo Dominic UNQUALIFIED
Aruna K VenereCanadaElwin Sharvill UNQUALIFIED
Arvin U NickaArgentinaIoni Bowcher NEGOTIATION
Salvatore C NestleSpainElwin Sharvill NEW
Jones F BologniaItalyIvan Magalhaes NEGOTIATION
Jefferson D ButtIndiaIvan Magalhaes UNQUALIFIED
Juan I AlbaresCanadaAnna Fali UNQUALIFIED
Isabel Q BriddickFranceBernardo Dominic QUALIFIED
Jeanfrancois R MorascaUnited KingdomStephen Shaw PROPOSAL
Juan E PoquetteArgentinaAnna Fali UNQUALIFIED
Alejandro A WhobreyRussiaIoni Bowcher QUALIFIED
Sinclair O FlosiArgentinaAmy Elsner RENEWAL
Maria O RutaArgentinaOnyama Limba QUALIFIED
Wickens M ShinkoArgentinaAsiya Javayant 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>