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
Mayumi L AlbaresAustraliaBernardo Dominic NEGOTIATION
Kadeem L OldroydBrazilAnna Fali UNQUALIFIED
Jones N AmigonAustraliaAsiya Javayant NEW
Leja B CampainItalyIoni Bowcher QUALIFIED
Chavez T BowleyItalyIvan Magalhaes PROPOSAL
Aika X ChuiFranceStephen Shaw NEGOTIATION
Mujtaba A GauchoCanadaOnyama Limba NEGOTIATION
Ashley R NickaBrazilIoni Bowcher PROPOSAL
Claire Q MarrierCanadaAsiya Javayant NEW
Greenwood K StensethGermanyIoni Bowcher RENEWAL
Kaitlin R MarrierArgentinaAmy Elsner NEGOTIATION
Greenwood D IturbideIndiaElwin Sharvill RENEWAL
Aika F TollnerUnited KingdomOnyama Limba UNQUALIFIED
Isabel S InouyeFranceIvan Magalhaes QUALIFIED
Silvio S KolmetzAustraliaXuxue Feng NEW
Kaitlin Z NestleUnited KingdomBernardo Dominic QUALIFIED
Greenwood O ButtIndiaIvan Magalhaes RENEWAL
Rodrigues A GlickRussiaAmy Elsner RENEWAL
Claire Y PoquetteCanadaXuxue Feng RENEWAL
Darci K RoysterIndiaAsiya Javayant PROPOSAL
Rodrigues S GlickItalyIoni Bowcher NEGOTIATION
Claire A CaudyUnited KingdomAmy Elsner RENEWAL
Cody Q RulapaughUnited KingdomStephen Shaw RENEWAL
Julie L AlbaresGermanyAnna Fali PROPOSAL
Isabel D PoquetteCanadaXuxue Feng PROPOSAL
Stacey Z MorascaCanadaIvan Magalhaes RENEWAL
Izzy D FerenczAustraliaIvan Magalhaes NEGOTIATION
Jeanfrancois Y OldroydFranceAmy Elsner NEGOTIATION
Izzy E IturbideCanadaIvan Magalhaes PROPOSAL
Smith N RulapaughGermanyXuxue Feng PROPOSAL
Costa Z CaudyRussiaBernardo Dominic PROPOSAL
Darci W WhobreyGermanyXuxue Feng NEGOTIATION
Aruna R BowleyArgentinaAsiya Javayant NEW
Darci E RutaBrazilXuxue Feng QUALIFIED
Claire A StockhamBrazilIvan Magalhaes NEGOTIATION
Sinclair H MarrierIndiaIoni Bowcher PROPOSAL
Murillo V WieserFranceXuxue Feng PROPOSAL
Aika I MorascaItalyIvan Magalhaes NEGOTIATION
David S DilliardIndiaOnyama Limba NEW
Faith E RimBrazilXuxue Feng NEGOTIATION
Antonio P SergiBrazilXuxue Feng QUALIFIED
Silvio U OstroskyFranceAsiya Javayant RENEWAL
Munro B ButtBrazilAsiya Javayant NEW
Jennifer J AmigonIndiaAnna Fali NEGOTIATION
Wickens G WaycottSpainStephen Shaw QUALIFIED
Smith G FollerGermanyAmy Elsner PROPOSAL
Francesco V GauchoJapanBernardo Dominic NEW
Wickens J ChuiArgentinaXuxue Feng RENEWAL
Isabel E RutaCanadaIvan Magalhaes UNQUALIFIED
Izzy S RimAustraliaAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Rodrigues C PerinGermanyStephen Shaw NEW
Clifford O RoysterAustraliaOnyama Limba PROPOSAL
Aditya S RulapaughUnited KingdomElwin Sharvill QUALIFIED
Johnson S CaudyRussiaIoni Bowcher NEGOTIATION
Chavez O NestleItalyAsiya Javayant RENEWAL
Chavez A RoysterArgentinaStephen Shaw NEW
Ricardo A GauchoUnited KingdomAnna Fali NEGOTIATION
Salvatore B InouyeUnited KingdomAsiya Javayant NEW
Chavez R GlickRussiaAmy Elsner UNQUALIFIED
Salvatore W FollerSpainXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio S AmigonRussia2024-04-18Dorl, James J Esq NEGOTIATION83Bernardo Dominic
1001Sinclair E FerenczIndia2024-04-10Chapman, Ross E Esq PROPOSAL55Bernardo Dominic
1002Clifford W GauchoBrazil2024-03-24Morlong Associates QUALIFIED97Ivan Magalhaes
1003Alejandro K AlbaresGermany2024-04-13Printing Dimensions RENEWAL26Xuxue Feng
1004Johnson I AlbaresItaly2024-04-14Printing Dimensions RENEWAL92Elwin Sharvill
1005Clifford W CaldareraJapan2024-04-07Chemel, James L Cpa UNQUALIFIED29Xuxue Feng
1006Antonio C BologniaAustralia2024-03-28Chemel, James L Cpa NEGOTIATION98Xuxue Feng
1007Arvin Z RimJapan2024-03-27Rangoni Of Florence NEW25Onyama Limba
1008Cody W StensethItaly2024-03-23Chemel, James L Cpa PROPOSAL34Elwin Sharvill
1009Misaki V AlbaresSpain2024-04-08Truhlar And Truhlar Attys PROPOSAL54Asiya Javayant
1010Murillo X FollerAustralia2024-04-13Rousseaux, Michael Esq UNQUALIFIED43Bernardo Dominic
1011Silvio O SchemmerFrance2024-04-18Benton, John B Jr UNQUALIFIED67Anna Fali
1012Morrow D StensethIndia2024-04-12Chanay, Jeffrey A Esq PROPOSAL0Elwin Sharvill
1013Izzy Y PaprockiCanada2024-03-27Dorl, James J Esq QUALIFIED44Asiya Javayant
1014Jennifer P MaletArgentina2024-03-30Chapman, Ross E Esq PROPOSAL13Asiya Javayant
1015Emily W MacleadRussia2024-04-14Chapman, Ross E Esq NEW95Onyama Limba
1016Alejandro D FerenczItaly2024-04-02Dorl, James J Esq NEW15Ioni Bowcher
1017Aruna Z NestleJapan2024-03-31Rangoni Of Florence NEW24Amy Elsner
1018Jones P WieserBrazil2024-04-04Rousseaux, Michael Esq NEW50Ivan Magalhaes
1019Arvin T ChuiAustralia2024-04-11Printing Dimensions PROPOSAL62Xuxue Feng
1020Munro Z PoquetteCanada2024-04-10Chemel, James L Cpa NEW71Stephen Shaw
1021David Y MaletArgentina2024-04-18Chemel, James L Cpa QUALIFIED94Stephen Shaw
1022Maisha S CaldareraSpain2024-03-23Benton, John B Jr RENEWAL95Ivan Magalhaes
1023Cody J VenereBrazil2024-04-02Chanay, Jeffrey A Esq NEW58Amy Elsner
1024Kadeem W ShinkoGermany2024-04-09Rousseaux, Michael Esq QUALIFIED6Bernardo Dominic
1025Sinclair C GauchoGermany2024-04-04Truhlar And Truhlar Attys NEGOTIATION78Stephen Shaw
1026Maria H GauchoFrance2024-04-14Chanay, Jeffrey A Esq UNQUALIFIED5Anna Fali
1027Octavia O MorascaBrazil2024-04-13Feltz Printing Service NEW29Asiya Javayant
1028Julie D RimSpain2024-04-10Feltz Printing Service PROPOSAL22Onyama Limba
1029Jefferson O PoquetteFrance2024-04-07Morlong Associates PROPOSAL25Amy Elsner
1030Clifford X IturbideJapan2024-04-06Commercial Press RENEWAL20Elwin Sharvill
1031Sinclair P WieserIndia2024-04-06Feltz Printing Service RENEWAL79Ivan Magalhaes
1032Sinclair C RulapaughBrazil2024-03-22Chapman, Ross E Esq NEW55Onyama Limba
1033Jefferson Y FlosiCanada2024-04-04Morlong Associates RENEWAL39Anna Fali
1034Maisha P DoeAustralia2024-03-30Rousseaux, Michael Esq NEW29Amy Elsner
1035Nicolas V SaylorsJapan2024-04-09Dorl, James J Esq PROPOSAL32Bernardo Dominic
1036Claire P SaylorsBrazil2024-04-04Commercial Press UNQUALIFIED99Onyama Limba
1037Octavia U CaudyFrance2024-04-02Dorl, James J Esq PROPOSAL98Asiya Javayant
1038Jones R MaletJapan2024-04-17Rangoni Of Florence UNQUALIFIED48Ioni Bowcher
1039Tony Z MaletJapan2024-03-27Buckley Miller Wright NEGOTIATION0Ivan Magalhaes
1040Tony D VenereItaly2024-04-07Morlong Associates NEW22Bernardo Dominic
1041Aditya R MarrierFrance2024-03-30Morlong Associates RENEWAL16Xuxue Feng
1042Murillo B ShinkoFrance2024-04-06Buckley Miller Wright UNQUALIFIED78Asiya Javayant
1043Octavia E CampainCanada2024-04-06Truhlar And Truhlar Attys RENEWAL37Anna Fali
1044Juan O CampainIndia2024-04-02Commercial Press RENEWAL93Onyama Limba
1045Salvatore K RoysterIndia2024-04-17Commercial Press PROPOSAL76Anna Fali
1046Francesco R SergiSpain2024-04-05Chemel, James L Cpa PROPOSAL99Anna Fali
1047Octavia Y DoeJapan2024-04-11Buckley Miller Wright RENEWAL47Onyama Limba
1048Kadeem G KolmetzGermany2024-03-22Dorl, James J Esq NEGOTIATION54Stephen Shaw
1049Alejandro U BologniaGermany2024-04-12Morlong Associates NEGOTIATION84Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Maisha C DarakjyRussiaElwin Sharvill QUALIFIED
Octavia H GillianUnited KingdomAsiya Javayant NEW
Tony B BriddickJapanElwin Sharvill NEW
Costa H MarrierRussiaOnyama Limba NEW
Leja Y SergiSpainElwin Sharvill RENEWAL
Leon B NickaUnited KingdomAnna Fali PROPOSAL
Antonio O GlickFranceElwin Sharvill NEW
Adams B FollerUnited KingdomAmy Elsner RENEWAL
Kaitlin J ButtJapanStephen Shaw PROPOSAL
Nicolas F WhobreyIndiaXuxue Feng RENEWAL
Stacey D MacleadSpainIvan Magalhaes NEGOTIATION
Cody B FigeroaArgentinaStephen Shaw NEW
Ricardo L AmigonFranceXuxue Feng PROPOSAL
Jeanfrancois M BologniaAustraliaAmy Elsner NEW
Nicolas A PaprockiRussiaStephen Shaw QUALIFIED
Julie S RoysterIndiaIvan Magalhaes PROPOSAL
Greenwood U PoquetteSpainAmy Elsner RENEWAL
Adams S StockhamSpainIoni Bowcher RENEWAL
Greenwood C VocelkaItalyXuxue Feng RENEWAL
Mujtaba C MacleadGermanyIvan Magalhaes PROPOSAL
James G AmigonItalyAsiya Javayant RENEWAL
Claire A StensethItalyIvan Magalhaes PROPOSAL
Maria Y WieserSpainXuxue Feng NEGOTIATION
Jennifer E SlusarskiAustraliaAmy Elsner NEGOTIATION
Maisha S VenereArgentinaAnna Fali PROPOSAL
Mujtaba R GauchoItalyOnyama Limba RENEWAL
Ashley Q WhobreyAustraliaOnyama Limba NEGOTIATION
Misaki D RulapaughUnited KingdomAsiya Javayant RENEWAL
Smith P VenereGermanyIoni Bowcher PROPOSAL
Ivar T SchemmerSpainXuxue Feng NEW
Antonio Q RoysterCanadaAnna Fali NEGOTIATION
Sinclair Q ButtSpainIvan Magalhaes UNQUALIFIED
Ashley S RoysterUnited KingdomIvan Magalhaes PROPOSAL
Stacey I NickaGermanyAsiya Javayant NEGOTIATION
Deepesh J MaletArgentinaElwin Sharvill PROPOSAL
Adams J FerenczBrazilXuxue Feng NEGOTIATION
Mayumi W PerinRussiaAmy Elsner RENEWAL
Salvatore F SchemmerAustraliaAsiya Javayant NEGOTIATION
Nicolas S ShinkoAustraliaBernardo Dominic RENEWAL
Octavia Z CaudySpainOnyama Limba NEGOTIATION
Wickens R OstroskyGermanyXuxue Feng RENEWAL
Izzy Q VocelkaCanadaIvan Magalhaes UNQUALIFIED
Rodrigues E MarrierArgentinaXuxue Feng NEGOTIATION
Aruna K RulapaughItalyAnna Fali UNQUALIFIED
Alejandro Z SchemmerArgentinaStephen Shaw QUALIFIED
Morrow Q MorascaAustraliaAmy Elsner NEGOTIATION
Johnson P ShinkoBrazilXuxue Feng UNQUALIFIED
Wickens G SaylorsAustraliaAsiya Javayant NEW
Ivar U SergiJapanOnyama Limba UNQUALIFIED
Ivar L MaletCanadaAsiya Javayant RENEWAL
Frozen Columns
Name
Octavia S Bolognia
Kaitlin U Whobrey
Salvatore G Stockham
Maisha D Flosi
Jefferson F Ruta
Smith M Bowley
Morrow A Stockham
Wickens C Stenseth
Clifford F Kusko
Claire V Kolmetz
Silvio G Figeroa
Jones H Ruta
Isabel R Maclead
Ricardo R Venere
Salvatore E Bowley
Isabel A Flosi
Francesco F Caldarera
Deepesh Q Dilliard
Munro C Nicka
Morrow O Whobrey
Ashley P Schemmer
Juan A Chui
Ashley Y Doe
Chavez O Marrier
Johnson T Malet
Greenwood N Foller
Jennifer A Shinko
Mayumi H Nicka
Aruna R Bolognia
Ricardo B Campain
Julie F Ferencz
Wickens A Dilliard
Aditya I Stenseth
Arvin A Perin
Maisha J Kusko
Aditya Q Perin
James V Flosi
Emily J Iturbide
Kadeem E Royster
Salvatore X Caudy
Jennifer D Malet
Ricardo F Venere
David V Gillian
Ashley E Venere
Jones Z Ferencz
Darci C Garufi
Leja X Shinko
Greenwood A Kolmetz
Adams M Inouye
Francesco C Doe
IdCountryDate
1000Canada2024-04-03
1001Spain2024-04-04
1002Russia2024-04-17
1003Brazil2024-04-16
1004Japan2024-04-17
1005Canada2024-04-10
1006Argentina2024-04-15
1007Canada2024-03-25
1008France2024-04-19
1009Australia2024-04-02
1010Argentina2024-03-21
1011Germany2024-04-01
1012Canada2024-03-24
1013Spain2024-04-12
1014Japan2024-03-22
1015Australia2024-04-04
1016Australia2024-04-16
1017France2024-03-26
1018Argentina2024-04-17
1019United Kingdom2024-03-27
1020Italy2024-04-15
1021Russia2024-03-24
1022Spain2024-04-14
1023Australia2024-03-22
1024India2024-04-15
1025Argentina2024-03-31
1026Italy2024-03-31
1027Japan2024-03-30
1028India2024-04-10
1029Russia2024-04-05
1030Russia2024-04-04
1031France2024-04-13
1032Argentina2024-03-22
1033Canada2024-04-17
1034Argentina2024-04-05
1035Spain2024-04-15
1036Japan2024-04-15
1037Russia2024-03-24
1038India2024-04-03
1039Italy2024-04-08
1040Australia2024-04-10
1041India2024-04-11
1042Spain2024-03-25
1043Germany2024-04-16
1044Argentina2024-04-18
1045Brazil2024-03-22
1046United Kingdom2024-03-29
1047Spain2024-04-17
1048Germany2024-04-03
1049Spain2024-03-27

On-Demand Data

NameIdCountryDate
Maria R Amigon1000Canada2024-03-30
Ricardo V Kusko1001Japan2024-04-10
Mujtaba C Morasca1002Brazil2024-04-03
Cody V Schemmer1003Brazil2024-04-19
Julie E Albares1004United Kingdom2024-04-18
Murillo Y Nicka1005Russia2024-04-09
Jones M Sergi1006Brazil2024-04-19
Jones M Chui1007Germany2024-04-07
Antonio B Bowley1008Japan2024-04-06
Jennifer I Malet1009United Kingdom2024-04-07
Jefferson N Kolmetz1010Germany2024-04-09
Murillo H Bowley1011Brazil2024-03-25
Antonio D Whobrey1012Japan2024-04-07
Octavia W Stenseth1013Canada2024-04-19
Isabel O Kolmetz1014Spain2024-04-13
Murillo Q Wieser1015Russia2024-04-09
Aditya E Dilliard1016France2024-03-23
Emily L Glick1017Brazil2024-04-02
Antonio W Iturbide1018Italy2024-04-10
Antonio X Briddick1019India2024-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar X CampainArgentinaAnna Fali RENEWAL
Stacey I RimSpainAnna Fali UNQUALIFIED
Adams D MaletGermanyOnyama Limba RENEWAL
Cody A KolmetzGermanyAmy Elsner UNQUALIFIED
Munro J MarrierJapanElwin Sharvill NEGOTIATION
Rodrigues V ShinkoBrazilAsiya Javayant PROPOSAL
Wickens D GauchoSpainXuxue Feng PROPOSAL
Maisha D TollnerIndiaAsiya Javayant UNQUALIFIED
Alejandro K VenereSpainOnyama Limba PROPOSAL
Juan J TollnerArgentinaAnna Fali NEGOTIATION
Julie E RutaBrazilAsiya Javayant RENEWAL
Jennifer Q DarakjyGermanyAnna Fali NEW
David V KuskoRussiaStephen Shaw NEW
Clifford Q StensethAustraliaIvan Magalhaes PROPOSAL
Jefferson S VocelkaArgentinaIoni Bowcher NEGOTIATION
Munro O RoysterJapanBernardo Dominic NEGOTIATION
Francesco J AlbaresAustraliaXuxue Feng RENEWAL
Leon I DilliardUnited KingdomIoni Bowcher NEGOTIATION
Aruna K MaletArgentinaIvan Magalhaes UNQUALIFIED
Aruna C SlusarskiSpainBernardo Dominic NEGOTIATION
Arvin T BriddickItalyOnyama Limba QUALIFIED
David L MorascaJapanIoni Bowcher RENEWAL
Chavez S VocelkaGermanyIoni Bowcher NEW
Misaki E MaletUnited KingdomElwin Sharvill NEW
Johnson V AlbaresBrazilAnna Fali PROPOSAL
Ricardo B SchemmerSpainElwin Sharvill PROPOSAL
Juan Y StensethAustraliaAsiya Javayant QUALIFIED
James N FollerAustraliaBernardo Dominic RENEWAL
Johnson T MarrierCanadaElwin Sharvill NEGOTIATION
Ivar U StensethSpainIvan Magalhaes PROPOSAL
Salvatore C MarrierAustraliaAmy Elsner NEGOTIATION
Isabel D FlosiAustraliaOnyama Limba QUALIFIED
Jeanfrancois Q RimGermanyOnyama Limba NEW
Maria I BriddickArgentinaAmy Elsner UNQUALIFIED
Julie Z ChuiBrazilIvan Magalhaes PROPOSAL
Maria D MorascaBrazilStephen Shaw QUALIFIED
Munro R WhobreyBrazilOnyama Limba PROPOSAL
Clifford W AlbaresGermanyIvan Magalhaes UNQUALIFIED
Aika N InouyeJapanOnyama Limba NEW
Murillo H VenereGermanyIvan Magalhaes UNQUALIFIED

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