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
Arvin B PaprockiFranceAnna Fali NEW
Cody F MaletJapanStephen Shaw NEW
Ashley L NickaGermanyAsiya Javayant RENEWAL
Juan A IturbideSpainStephen Shaw NEW
Antonio H RulapaughArgentinaAsiya Javayant PROPOSAL
Morrow W WieserArgentinaXuxue Feng UNQUALIFIED
Chavez D MaletItalyBernardo Dominic UNQUALIFIED
Juan W AlbaresIndiaStephen Shaw RENEWAL
Aditya R RoysterSpainXuxue Feng PROPOSAL
Cody L CampainGermanyIvan Magalhaes UNQUALIFIED
Adams S SergiIndiaAnna Fali UNQUALIFIED
Jeanfrancois J MaletJapanAmy Elsner UNQUALIFIED
Sinclair Z SchemmerBrazilOnyama Limba NEGOTIATION
Nicolas O GarufiIndiaXuxue Feng UNQUALIFIED
James Q RoysterCanadaElwin Sharvill UNQUALIFIED
Costa W VocelkaIndiaXuxue Feng QUALIFIED
Darci Q BologniaBrazilIvan Magalhaes QUALIFIED
Izzy M GauchoArgentinaAmy Elsner NEGOTIATION
Morrow S OstroskyGermanyAsiya Javayant UNQUALIFIED
Jones Y GauchoJapanBernardo Dominic UNQUALIFIED
Wickens E OstroskyCanadaAnna Fali NEW
Wickens O MacleadSpainStephen Shaw NEW
Greenwood B WhobreyGermanyXuxue Feng PROPOSAL
Cody E FerenczItalyStephen Shaw NEGOTIATION
Morrow O ButtBrazilXuxue Feng NEGOTIATION
Aika W DoeFranceIvan Magalhaes UNQUALIFIED
Leon H VocelkaFranceAnna Fali RENEWAL
Aditya B BologniaItalyStephen Shaw QUALIFIED
Clifford J KuskoJapanXuxue Feng QUALIFIED
Munro G BologniaArgentinaXuxue Feng PROPOSAL
Munro R SlusarskiFranceIoni Bowcher RENEWAL
Nicolas W RoysterSpainBernardo Dominic PROPOSAL
Ricardo W VenereIndiaAnna Fali NEW
Darci B VocelkaRussiaOnyama Limba QUALIFIED
Nicolas K ChuiBrazilAnna Fali QUALIFIED
Murillo C OstroskyAustraliaXuxue Feng PROPOSAL
Leja J MaletCanadaAnna Fali QUALIFIED
Rodrigues K IturbideAustraliaAnna Fali UNQUALIFIED
Tony Z BriddickUnited KingdomAnna Fali RENEWAL
Octavia A CaudySpainStephen Shaw NEW
Aruna E NestleAustraliaAsiya Javayant UNQUALIFIED
Wickens J MacleadCanadaBernardo Dominic UNQUALIFIED
Clifford M DarakjyIndiaAmy Elsner RENEWAL
Aditya L WaycottAustraliaIoni Bowcher NEW
Morrow N MarrierBrazilIvan Magalhaes NEW
Arvin S NestleFranceOnyama Limba PROPOSAL
Isabel L GlickCanadaOnyama Limba PROPOSAL
Ricardo E InouyeJapanXuxue Feng NEGOTIATION
James V SlusarskiIndiaBernardo Dominic RENEWAL
Jones U GarufiJapanAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Murillo E AlbaresFranceBernardo Dominic UNQUALIFIED
Morrow K VocelkaFranceBernardo Dominic NEW
Mujtaba F PoquetteFranceOnyama Limba NEGOTIATION
Kadeem H DarakjyIndiaAnna Fali RENEWAL
Julie B PaprockiAustraliaOnyama Limba NEW
Jefferson U AmigonRussiaIvan Magalhaes NEW
Murillo V MorascaAustraliaElwin Sharvill NEW
Jones K MorascaSpainAnna Fali UNQUALIFIED
James C SergiGermanyStephen Shaw NEGOTIATION
Aruna Z WaycottItalyStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio T NestleCanada2024-04-20Chanay, Jeffrey A Esq UNQUALIFIED28Ioni Bowcher
1001Alejandro N PerinGermany2024-04-19Dorl, James J Esq NEGOTIATION81Elwin Sharvill
1002Greenwood P RoysterSpain2024-04-17Morlong Associates NEW0Amy Elsner
1003Julie F RutaAustralia2024-05-02Chemel, James L Cpa NEW35Asiya Javayant
1004Salvatore J ShinkoGermany2024-05-06Truhlar And Truhlar Attys NEGOTIATION9Stephen Shaw
1005Murillo B WaycottItaly2024-04-22Feltz Printing Service QUALIFIED77Asiya Javayant
1006Kaitlin L GillianItaly2024-04-27Dorl, James J Esq NEGOTIATION29Ivan Magalhaes
1007Maria W FigeroaArgentina2024-04-20Feltz Printing Service NEGOTIATION48Stephen Shaw
1008Greenwood I CampainSpain2024-04-29Dorl, James J Esq NEGOTIATION93Xuxue Feng
1009Isabel I IturbideRussia2024-05-08Rousseaux, Michael Esq RENEWAL64Amy Elsner
1010Sinclair L BriddickUnited Kingdom2024-04-23King, Christopher A Esq NEGOTIATION78Onyama Limba
1011Jennifer M BriddickBrazil2024-04-22Feltz Printing Service NEW0Elwin Sharvill
1012Stacey Y KuskoArgentina2024-04-26Buckley Miller Wright NEGOTIATION39Xuxue Feng
1013Smith B MaletArgentina2024-04-25Rousseaux, Michael Esq NEGOTIATION7Asiya Javayant
1014Juan Y SchemmerItaly2024-05-09Feltz Printing Service QUALIFIED91Asiya Javayant
1015Murillo D DarakjyAustralia2024-04-30Benton, John B Jr NEGOTIATION85Ioni Bowcher
1016Leja I StockhamIndia2024-05-04Buckley Miller Wright QUALIFIED34Ivan Magalhaes
1017James G PoquetteUnited Kingdom2024-04-11Buckley Miller Wright PROPOSAL35Elwin Sharvill
1018Antonio O PaprockiArgentina2024-04-18Chapman, Ross E Esq NEGOTIATION77Stephen Shaw
1019Jennifer I StockhamUnited Kingdom2024-05-08Printing Dimensions NEW9Bernardo Dominic
1020Arvin A WaycottFrance2024-04-24Chanay, Jeffrey A Esq RENEWAL43Stephen Shaw
1021Costa I RimJapan2024-04-18King, Christopher A Esq PROPOSAL75Stephen Shaw
1022Misaki X SchemmerBrazil2024-05-08Chemel, James L Cpa RENEWAL18Bernardo Dominic
1023Munro A ShinkoAustralia2024-04-18Feltz Printing Service NEW65Stephen Shaw
1024Morrow J ButtFrance2024-04-25Benton, John B Jr RENEWAL88Asiya Javayant
1025Leon J MacleadBrazil2024-04-26Chanay, Jeffrey A Esq RENEWAL81Onyama Limba
1026Wickens Z RulapaughUnited Kingdom2024-04-26Rousseaux, Michael Esq QUALIFIED23Onyama Limba
1027Aika O MarrierItaly2024-04-14Truhlar And Truhlar Attys NEGOTIATION59Xuxue Feng
1028Faith K ShinkoFrance2024-05-06Feiner Bros NEW82Onyama Limba
1029Johnson W FigeroaItaly2024-04-14Dorl, James J Esq UNQUALIFIED52Ivan Magalhaes
1030Juan S CaudyAustralia2024-05-09Chapman, Ross E Esq RENEWAL37Xuxue Feng
1031Octavia N WieserAustralia2024-05-02Rousseaux, Michael Esq NEW89Amy Elsner
1032Octavia C RimUnited Kingdom2024-04-24Chemel, James L Cpa NEGOTIATION57Bernardo Dominic
1033Kaitlin H GlickArgentina2024-04-12Morlong Associates PROPOSAL59Anna Fali
1034Ivar N GauchoBrazil2024-04-25Morlong Associates QUALIFIED57Bernardo Dominic
1035Leon C KolmetzIndia2024-05-03Truhlar And Truhlar Attys QUALIFIED35Bernardo Dominic
1036Silvio Y CaldareraJapan2024-04-29Feiner Bros NEGOTIATION64Anna Fali
1037Francesco A AlbaresFrance2024-04-19Morlong Associates PROPOSAL37Ivan Magalhaes
1038Octavia F BowleyUnited Kingdom2024-05-08Feiner Bros QUALIFIED11Stephen Shaw
1039Ricardo L MaletSpain2024-05-10Dorl, James J Esq UNQUALIFIED96Ioni Bowcher
1040Cody N WieserCanada2024-04-28Truhlar And Truhlar Attys RENEWAL84Asiya Javayant
1041Jones E GillianUnited Kingdom2024-05-08Morlong Associates NEW6Xuxue Feng
1042Jefferson S MarrierBrazil2024-04-27Benton, John B Jr QUALIFIED19Amy Elsner
1043Isabel T WieserIndia2024-04-27Benton, John B Jr NEW46Stephen Shaw
1044Leja Q InouyeCanada2024-04-25Chanay, Jeffrey A Esq NEW79Onyama Limba
1045Jones X SaylorsSpain2024-05-05Printing Dimensions PROPOSAL71Amy Elsner
1046Rodrigues V VenereGermany2024-04-24Truhlar And Truhlar Attys NEW89Elwin Sharvill
1047Antonio L IturbideBrazil2024-05-08Truhlar And Truhlar Attys RENEWAL38Ivan Magalhaes
1048Octavia X TollnerArgentina2024-04-29Chanay, Jeffrey A Esq NEGOTIATION15Ivan Magalhaes
1049Ivar L StockhamArgentina2024-04-30Rangoni Of Florence NEW55Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Murillo S WhobreyGermanyIoni Bowcher UNQUALIFIED
Ricardo P ShinkoFranceXuxue Feng UNQUALIFIED
Kaitlin L RoysterFranceOnyama Limba UNQUALIFIED
David S FerenczArgentinaStephen Shaw QUALIFIED
Adams N MarrierArgentinaBernardo Dominic NEW
Faith B GarufiArgentinaAmy Elsner PROPOSAL
Cody R SlusarskiCanadaIoni Bowcher NEW
Isabel S CaldareraArgentinaBernardo Dominic NEW
Ricardo N AlbaresJapanIoni Bowcher NEW
Nicolas S GauchoIndiaIvan Magalhaes NEW
Juan D IturbideJapanElwin Sharvill UNQUALIFIED
Octavia X ChuiUnited KingdomAmy Elsner RENEWAL
Maria D AmigonFranceIoni Bowcher PROPOSAL
Greenwood Q ButtBrazilIvan Magalhaes UNQUALIFIED
Maria Y GauchoAustraliaOnyama Limba QUALIFIED
Izzy D SlusarskiRussiaXuxue Feng QUALIFIED
David J DilliardAustraliaOnyama Limba PROPOSAL
Darci H MorascaSpainElwin Sharvill NEW
Aditya C GarufiArgentinaStephen Shaw QUALIFIED
Murillo K MaletJapanAnna Fali NEW
Silvio K WhobreyItalyAmy Elsner QUALIFIED
Chavez N GillianCanadaAnna Fali PROPOSAL
Adams Z WieserCanadaElwin Sharvill NEW
Ashley Q WieserUnited KingdomStephen Shaw NEW
Kaitlin M OstroskyGermanyAnna Fali RENEWAL
Kadeem N GarufiCanadaIoni Bowcher NEGOTIATION
Morrow N StockhamItalyOnyama Limba RENEWAL
Faith Z CaudyArgentinaIoni Bowcher QUALIFIED
Murillo N BologniaCanadaAsiya Javayant RENEWAL
Juan Q MaletArgentinaBernardo Dominic PROPOSAL
Leon H PoquetteGermanyAnna Fali RENEWAL
Sinclair G MacleadGermanyIoni Bowcher QUALIFIED
Izzy V AlbaresGermanyAnna Fali UNQUALIFIED
Maisha T FlosiCanadaXuxue Feng PROPOSAL
Isabel F WhobreyBrazilIoni Bowcher RENEWAL
Johnson W RulapaughCanadaStephen Shaw UNQUALIFIED
Arvin M DilliardArgentinaXuxue Feng NEGOTIATION
Aika U KuskoAustraliaXuxue Feng UNQUALIFIED
Rodrigues B FigeroaCanadaAnna Fali UNQUALIFIED
Antonio R NickaFranceAsiya Javayant NEW
Kadeem C DoeFranceAnna Fali RENEWAL
Darci X AmigonRussiaBernardo Dominic PROPOSAL
Jefferson D NickaBrazilIvan Magalhaes QUALIFIED
Munro U ShinkoAustraliaOnyama Limba NEGOTIATION
Leja U MorascaBrazilIvan Magalhaes RENEWAL
Leja B GarufiSpainAmy Elsner NEW
Munro X SlusarskiSpainBernardo Dominic UNQUALIFIED
Aditya F ChuiArgentinaOnyama Limba UNQUALIFIED
Mujtaba N SaylorsGermanyAmy Elsner RENEWAL
David M DoeJapanXuxue Feng UNQUALIFIED
Frozen Columns
Name
James N Ferencz
Arvin C Kolmetz
Chavez Z Inouye
Tony X Briddick
Aika T Shinko
Faith U Marrier
Ivar K Chui
Clifford A Wieser
Faith G Vocelka
Faith G Slusarski
Munro H Schemmer
Murillo T Garufi
Ivar P Malet
Ricardo W Slusarski
Cody V Foller
Aika A Morasca
Jones D Butt
Izzy O Bolognia
Greenwood N Shinko
Octavia O Ostrosky
Claire R Campain
Kaitlin S Amigon
Antonio V Poquette
Adams K Vocelka
Costa H Doe
Johnson F Wieser
Johnson O Paprocki
Antonio W Shinko
Costa L Venere
Salvatore I Gaucho
Maria F Tollner
Darci E Kusko
Morrow R Malet
Aditya G Nicka
James B Figeroa
Izzy I Foller
Kaitlin Z Iturbide
Stacey K Slusarski
Cody Z Bowley
Alejandro B Waycott
Jones S Dilliard
Faith L Wieser
Kadeem W Venere
Leja A Malet
Kadeem X Darakjy
James T Dilliard
Mujtaba T Caldarera
Salvatore P Schemmer
Ashley F Morasca
Jefferson E Rim
IdCountryDate
1000Canada2024-05-03
1001Russia2024-04-27
1002Brazil2024-04-24
1003United Kingdom2024-05-04
1004United Kingdom2024-04-26
1005Germany2024-05-07
1006France2024-04-22
1007Italy2024-05-08
1008Japan2024-05-10
1009France2024-04-20
1010Russia2024-05-06
1011Spain2024-04-23
1012Australia2024-05-09
1013Brazil2024-04-22
1014Brazil2024-05-01
1015Spain2024-04-28
1016Australia2024-04-20
1017Japan2024-05-06
1018Brazil2024-04-16
1019United Kingdom2024-05-01
1020Canada2024-04-19
1021Germany2024-04-28
1022Italy2024-04-12
1023France2024-04-21
1024Canada2024-05-04
1025Spain2024-05-08
1026Spain2024-04-29
1027Canada2024-04-24
1028India2024-04-28
1029Italy2024-05-08
1030Canada2024-05-06
1031Germany2024-04-21
1032Argentina2024-05-10
1033United Kingdom2024-05-01
1034Russia2024-05-09
1035Argentina2024-05-09
1036United Kingdom2024-05-05
1037Japan2024-05-06
1038Spain2024-04-19
1039Argentina2024-04-18
1040Japan2024-04-14
1041Germany2024-05-02
1042Canada2024-04-25
1043Germany2024-05-06
1044France2024-05-10
1045Germany2024-05-04
1046Australia2024-04-23
1047Italy2024-04-15
1048United Kingdom2024-05-06
1049Argentina2024-04-14

On-Demand Data

NameIdCountryDate
Ashley Z Wieser1000Spain2024-04-30
Rodrigues B Waycott1001Brazil2024-04-18
Kaitlin H Perin1002Spain2024-04-19
Jennifer V Garufi1003United Kingdom2024-05-05
Isabel L Stockham1004Australia2024-04-14
Francesco G Garufi1005India2024-04-27
Silvio I Campain1006United Kingdom2024-04-27
Stacey J Sergi1007Brazil2024-04-23
Stacey F Malet1008Russia2024-04-19
Misaki F Slusarski1009Spain2024-04-22
Kadeem W Ruta1010Spain2024-04-14
Antonio H Albares1011Argentina2024-04-25
Aika T Rulapaugh1012Russia2024-05-03
Leon Z Bolognia1013Brazil2024-04-19
Greenwood R Royster1014Spain2024-04-16
Juan W Kolmetz1015Australia2024-04-23
Murillo N Ostrosky1016France2024-05-02
Mayumi L Waycott1017France2024-04-24
Clifford Y Maclead1018France2024-04-26
Aditya A Briddick1019Brazil2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey P RimRussiaStephen Shaw NEW
Mujtaba I DilliardIndiaIoni Bowcher RENEWAL
Cody D CampainFranceElwin Sharvill UNQUALIFIED
Adams J DarakjyRussiaStephen Shaw PROPOSAL
Silvio Z PoquetteAustraliaAmy Elsner RENEWAL
Mayumi S ChuiArgentinaIvan Magalhaes QUALIFIED
Tony H InouyeBrazilOnyama Limba RENEWAL
Tony M VocelkaItalyIvan Magalhaes QUALIFIED
Darci S GarufiArgentinaAsiya Javayant NEW
Ricardo D RoysterIndiaOnyama Limba RENEWAL
Ivar E FlosiSpainIoni Bowcher RENEWAL
James X RutaFranceAnna Fali UNQUALIFIED
Leja E RulapaughCanadaAsiya Javayant RENEWAL
Alejandro X ButtItalyAsiya Javayant UNQUALIFIED
Aika I IturbideBrazilAsiya Javayant NEGOTIATION
Rodrigues T RimFranceElwin Sharvill PROPOSAL
Francesco T NickaArgentinaElwin Sharvill NEGOTIATION
Adams V WieserFranceXuxue Feng UNQUALIFIED
James M GarufiJapanIoni Bowcher NEW
Octavia L InouyeGermanyAnna Fali RENEWAL
Jeanfrancois W PerinFranceStephen Shaw PROPOSAL
Kadeem I AlbaresItalyElwin Sharvill PROPOSAL
Ivar P InouyeSpainXuxue Feng NEW
Julie F MaletSpainIoni Bowcher NEGOTIATION
Kaitlin F TollnerIndiaBernardo Dominic RENEWAL
Deepesh Y CaldareraCanadaAnna Fali PROPOSAL
Kadeem X CampainItalyIvan Magalhaes PROPOSAL
Alejandro Q VenereRussiaIoni Bowcher UNQUALIFIED
Aruna Q TollnerUnited KingdomElwin Sharvill UNQUALIFIED
Maisha I FlosiJapanXuxue Feng QUALIFIED
Arvin W RimFranceOnyama Limba QUALIFIED
Ricardo N InouyeBrazilStephen Shaw NEGOTIATION
Ricardo I KuskoBrazilStephen Shaw UNQUALIFIED
Chavez I MorascaGermanyIvan Magalhaes NEGOTIATION
Mayumi L MaletRussiaXuxue Feng PROPOSAL
Octavia V PoquetteArgentinaStephen Shaw NEW
Darci U DoeFranceBernardo Dominic PROPOSAL
Maria I BriddickBrazilBernardo Dominic PROPOSAL
Tony F MarrierSpainXuxue Feng UNQUALIFIED
Aruna Z DarakjyCanadaIvan Magalhaes 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>