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
Ivar L BriddickRussiaAnna Fali UNQUALIFIED
Jones E TollnerItalyStephen Shaw NEW
Deepesh B SergiIndiaIoni Bowcher NEW
Aditya N StensethJapanAmy Elsner PROPOSAL
Nicolas O RoysterBrazilElwin Sharvill RENEWAL
Leon B FigeroaArgentinaBernardo Dominic PROPOSAL
Claire M BologniaFranceOnyama Limba PROPOSAL
Jeanfrancois Z RoysterUnited KingdomElwin Sharvill PROPOSAL
Rodrigues S DilliardSpainOnyama Limba PROPOSAL
Jones Q FollerUnited KingdomStephen Shaw UNQUALIFIED
Emily G MarrierRussiaStephen Shaw UNQUALIFIED
Jeanfrancois P GlickJapanIvan Magalhaes NEGOTIATION
Sinclair W MaletBrazilAmy Elsner UNQUALIFIED
Ivar K RoysterBrazilAsiya Javayant NEGOTIATION
Sinclair T GillianBrazilBernardo Dominic QUALIFIED
Johnson Y RimSpainAnna Fali RENEWAL
Ashley L CaldareraRussiaXuxue Feng PROPOSAL
Smith E OstroskyAustraliaAmy Elsner QUALIFIED
Leja M ChuiArgentinaAsiya Javayant PROPOSAL
Murillo W FollerRussiaXuxue Feng UNQUALIFIED
Aditya G RoysterBrazilIoni Bowcher QUALIFIED
Munro E SlusarskiBrazilBernardo Dominic NEW
Silvio P PerinArgentinaElwin Sharvill NEGOTIATION
Isabel T GarufiJapanIvan Magalhaes QUALIFIED
James A CaudyArgentinaIoni Bowcher NEGOTIATION
Clifford I PerinGermanyBernardo Dominic NEGOTIATION
Johnson V MaletGermanyXuxue Feng PROPOSAL
Leon B IturbideBrazilAmy Elsner PROPOSAL
Ivar Z FigeroaJapanAnna Fali NEGOTIATION
Salvatore L StensethJapanStephen Shaw PROPOSAL
Faith W AlbaresItalyStephen Shaw UNQUALIFIED
Silvio C RutaItalyXuxue Feng RENEWAL
Juan Y WhobreyArgentinaBernardo Dominic RENEWAL
Deepesh Q WhobreyIndiaBernardo Dominic RENEWAL
Kadeem Z AlbaresArgentinaOnyama Limba NEGOTIATION
Mayumi K WaycottFranceOnyama Limba PROPOSAL
Leja G OldroydIndiaStephen Shaw NEGOTIATION
Adams R RimGermanyIvan Magalhaes NEGOTIATION
Aika U MorascaSpainStephen Shaw QUALIFIED
Maria K MaletUnited KingdomStephen Shaw UNQUALIFIED
David O DoeRussiaAmy Elsner PROPOSAL
Cody J AmigonRussiaElwin Sharvill RENEWAL
Costa L MarrierIndiaOnyama Limba NEW
Kaitlin J StockhamUnited KingdomAmy Elsner QUALIFIED
Claire C PaprockiRussiaIvan Magalhaes NEGOTIATION
Clifford M CaudyFranceIvan Magalhaes UNQUALIFIED
Misaki Z RutaSpainElwin Sharvill QUALIFIED
Kadeem D NickaGermanyAmy Elsner RENEWAL
Misaki W WhobreyAustraliaOnyama Limba QUALIFIED
Misaki U PerinBrazilStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Alejandro Z StensethUnited KingdomBernardo Dominic RENEWAL
Leon C RimCanadaIvan Magalhaes NEGOTIATION
Murillo X ChuiRussiaAnna Fali PROPOSAL
Aditya W BriddickUnited KingdomBernardo Dominic NEGOTIATION
Clifford O SaylorsJapanAsiya Javayant NEW
Emily M WaycottJapanIvan Magalhaes PROPOSAL
Francesco G FigeroaJapanOnyama Limba NEW
Maria N ShinkoFranceElwin Sharvill UNQUALIFIED
Izzy I StensethJapanAmy Elsner PROPOSAL
Clifford A PoquetteAustraliaIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow I NickaItaly2024-04-15Morlong Associates QUALIFIED16Ivan Magalhaes
1001Leja S WieserSpain2024-04-09King, Christopher A Esq RENEWAL31Stephen Shaw
1002Wickens W CaudyArgentina2024-04-20Rangoni Of Florence RENEWAL89Ioni Bowcher
1003Jefferson J TollnerRussia2024-04-24Rangoni Of Florence UNQUALIFIED17Amy Elsner
1004Deepesh O SergiCanada2024-04-22Printing Dimensions QUALIFIED11Elwin Sharvill
1005Cody E VocelkaArgentina2024-04-20Morlong Associates RENEWAL16Elwin Sharvill
1006Darci M BologniaArgentina2024-03-31Feiner Bros UNQUALIFIED67Elwin Sharvill
1007Jennifer K CaldareraGermany2024-03-26Rangoni Of Florence UNQUALIFIED13Onyama Limba
1008Claire S PerinFrance2024-03-31Feltz Printing Service RENEWAL7Ivan Magalhaes
1009Wickens K SergiArgentina2024-04-20Chapman, Ross E Esq NEGOTIATION68Ivan Magalhaes
1010David H DarakjyRussia2024-04-02Printing Dimensions NEW71Asiya Javayant
1011Ricardo D StockhamGermany2024-03-26Dorl, James J Esq UNQUALIFIED71Amy Elsner
1012Jefferson Y GlickJapan2024-04-09Rangoni Of Florence NEW19Elwin Sharvill
1013Rodrigues P CaudySpain2024-03-27Feltz Printing Service UNQUALIFIED60Amy Elsner
1014Murillo P GlickSpain2024-04-15Chemel, James L Cpa QUALIFIED34Ioni Bowcher
1015Jeanfrancois C KolmetzArgentina2024-04-07King, Christopher A Esq PROPOSAL84Onyama Limba
1016Darci O DilliardUnited Kingdom2024-03-29Chanay, Jeffrey A Esq NEGOTIATION71Elwin Sharvill
1017Stacey C PoquetteGermany2024-03-30Commercial Press NEGOTIATION66Ivan Magalhaes
1018Jefferson E AlbaresSpain2024-04-03Chemel, James L Cpa PROPOSAL68Stephen Shaw
1019Costa X RimCanada2024-04-17Dorl, James J Esq QUALIFIED83Xuxue Feng
1020Aditya K InouyeIndia2024-04-10Commercial Press PROPOSAL64Bernardo Dominic
1021Leon Y InouyeArgentina2024-04-10Commercial Press UNQUALIFIED60Amy Elsner
1022Maisha J BriddickGermany2024-03-27Rangoni Of Florence PROPOSAL99Stephen Shaw
1023Adams X InouyeArgentina2024-04-04Feiner Bros NEGOTIATION61Stephen Shaw
1024Leon C RimJapan2024-04-20Dorl, James J Esq RENEWAL4Stephen Shaw
1025Ashley S KuskoRussia2024-04-01Rousseaux, Michael Esq QUALIFIED31Ivan Magalhaes
1026Ivar S WaycottItaly2024-04-07Chemel, James L Cpa RENEWAL27Amy Elsner
1027Sinclair P AmigonJapan2024-04-24Chemel, James L Cpa RENEWAL95Anna Fali
1028Mujtaba Q OldroydCanada2024-04-05Chemel, James L Cpa UNQUALIFIED7Onyama Limba
1029Greenwood P RulapaughUnited Kingdom2024-04-21Rousseaux, Michael Esq NEGOTIATION6Bernardo Dominic
1030Wickens G MaletGermany2024-03-27Buckley Miller Wright UNQUALIFIED59Bernardo Dominic
1031Stacey W VocelkaSpain2024-04-23Rangoni Of Florence QUALIFIED56Amy Elsner
1032Octavia K TollnerBrazil2024-04-21Chapman, Ross E Esq NEGOTIATION43Xuxue Feng
1033Misaki O RutaJapan2024-04-23Rousseaux, Michael Esq QUALIFIED84Bernardo Dominic
1034Tony L CaldareraIndia2024-04-07King, Christopher A Esq QUALIFIED34Ivan Magalhaes
1035Kadeem U ChuiSpain2024-04-04Rousseaux, Michael Esq PROPOSAL99Onyama Limba
1036Chavez G GillianFrance2024-04-03Truhlar And Truhlar Attys UNQUALIFIED54Onyama Limba
1037Jones K TollnerCanada2024-04-07Chanay, Jeffrey A Esq NEGOTIATION16Asiya Javayant
1038Arvin I MorascaArgentina2024-04-02Chemel, James L Cpa PROPOSAL75Onyama Limba
1039Aika K MaletUnited Kingdom2024-04-13Rousseaux, Michael Esq UNQUALIFIED74Stephen Shaw
1040Silvio O AlbaresRussia2024-03-30Feltz Printing Service PROPOSAL71Ioni Bowcher
1041Costa W GillianRussia2024-04-06Rangoni Of Florence QUALIFIED1Anna Fali
1042Juan L RimCanada2024-04-20King, Christopher A Esq UNQUALIFIED96Onyama Limba
1043James D RoysterCanada2024-04-18Morlong Associates UNQUALIFIED10Ioni Bowcher
1044Adams Z BologniaJapan2024-04-12King, Christopher A Esq NEGOTIATION46Ivan Magalhaes
1045Aruna N VocelkaBrazil2024-04-09Truhlar And Truhlar Attys NEGOTIATION76Stephen Shaw
1046Munro R FigeroaSpain2024-04-14Morlong Associates NEW48Elwin Sharvill
1047Emily B RimSpain2024-04-09Benton, John B Jr NEGOTIATION94Xuxue Feng
1048Leja C OstroskySpain2024-04-24Feltz Printing Service QUALIFIED43Elwin Sharvill
1049Cody T CaldareraGermany2024-04-18Chapman, Ross E Esq PROPOSAL97Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Claire N CaldareraBrazilAmy Elsner RENEWAL
Silvio X NickaRussiaElwin Sharvill NEGOTIATION
Silvio F MaletSpainIoni Bowcher PROPOSAL
Clifford X KuskoAustraliaXuxue Feng QUALIFIED
Costa O AlbaresItalyIoni Bowcher NEGOTIATION
Smith M DarakjyArgentinaBernardo Dominic RENEWAL
Jennifer B RulapaughCanadaIvan Magalhaes UNQUALIFIED
Wickens J ButtAustraliaStephen Shaw NEW
Nicolas E AlbaresSpainStephen Shaw NEW
Ashley D OldroydGermanyAnna Fali RENEWAL
Antonio K BowleyJapanBernardo Dominic NEW
Claire L CaudyFranceElwin Sharvill UNQUALIFIED
Silvio Q IturbideItalyBernardo Dominic PROPOSAL
Rodrigues I BowleyJapanIoni Bowcher NEW
Claire J MaletAustraliaElwin Sharvill PROPOSAL
Costa U VenereUnited KingdomAsiya Javayant NEW
Adams B VenereBrazilBernardo Dominic UNQUALIFIED
Rodrigues Q PaprockiSpainOnyama Limba NEGOTIATION
Leon W BologniaBrazilIvan Magalhaes PROPOSAL
Octavia M PerinGermanyAmy Elsner UNQUALIFIED
Morrow W ShinkoUnited KingdomElwin Sharvill UNQUALIFIED
Jeanfrancois X MaletAustraliaBernardo Dominic NEW
Sinclair Q WaycottRussiaAnna Fali PROPOSAL
Nicolas N MaletRussiaAsiya Javayant RENEWAL
Jeanfrancois X GarufiFranceOnyama Limba NEGOTIATION
Wickens C WhobreyAustraliaAmy Elsner NEW
Smith M PoquetteUnited KingdomXuxue Feng NEW
Mayumi G DarakjyItalyXuxue Feng QUALIFIED
Johnson F RoysterItalyOnyama Limba QUALIFIED
Murillo W SchemmerSpainIoni Bowcher NEW
Juan H GarufiAustraliaIvan Magalhaes UNQUALIFIED
Emily Y StockhamCanadaIoni Bowcher PROPOSAL
James B RutaJapanAmy Elsner NEW
Adams W DilliardAustraliaElwin Sharvill RENEWAL
Mujtaba H SergiSpainAmy Elsner PROPOSAL
Smith Z VenereGermanyOnyama Limba RENEWAL
Wickens E TollnerIndiaBernardo Dominic NEW
Izzy C RutaFranceStephen Shaw PROPOSAL
Nicolas A CaudyJapanAsiya Javayant RENEWAL
Ashley Z SergiGermanyOnyama Limba NEGOTIATION
Aika N IturbideUnited KingdomElwin Sharvill PROPOSAL
Sinclair G PoquetteGermanyStephen Shaw NEGOTIATION
James V DoeGermanyElwin Sharvill QUALIFIED
Faith G WhobreyBrazilBernardo Dominic PROPOSAL
Ashley I GlickSpainAsiya Javayant NEGOTIATION
Salvatore S ChuiCanadaAsiya Javayant UNQUALIFIED
Darci V RimItalyXuxue Feng QUALIFIED
Leja F ButtRussiaAmy Elsner QUALIFIED
Aditya G FlosiRussiaBernardo Dominic PROPOSAL
Aditya U FlosiFranceAmy Elsner RENEWAL
Frozen Columns
Name
Jones I Albares
Juan R Poquette
Adams T Sergi
Kaitlin H Shinko
Morrow D Malet
Ricardo X Morasca
Johnson E Dilliard
Claire N Foller
Stacey Y Ostrosky
Mujtaba L Chui
Aruna J Rim
Aika F Oldroyd
Nicolas A Rulapaugh
Kadeem Y Kusko
Kadeem S Campain
Costa S Sergi
Sinclair V Ferencz
Johnson Q Glick
Jennifer U Ruta
Cody I Flosi
Smith Z Saylors
Aruna R Malet
Salvatore D Gillian
Juan U Sergi
David N Malet
Greenwood Z Malet
Adams U Waycott
Stacey R Vocelka
Misaki S Nicka
Ashley O Schemmer
Mayumi M Flosi
Izzy S Rim
Johnson J Briddick
Juan V Ostrosky
Chavez A Rulapaugh
Smith U Marrier
Maria I Marrier
Maria K Sergi
Deepesh H Schemmer
Wickens A Shinko
Jones A Oldroyd
Julie H Glick
Salvatore O Sergi
Faith X Malet
Nicolas A Gaucho
Tony I Bolognia
Alejandro N Glick
James C Nestle
Alejandro L Ruta
Aika Z Slusarski
IdCountryDate
1000Italy2024-04-23
1001India2024-04-04
1002Brazil2024-03-29
1003Argentina2024-04-24
1004Brazil2024-03-28
1005Brazil2024-04-03
1006France2024-03-26
1007Russia2024-03-26
1008Brazil2024-04-11
1009Germany2024-04-18
1010India2024-03-28
1011India2024-04-04
1012India2024-04-16
1013Italy2024-04-14
1014Spain2024-04-15
1015Australia2024-04-14
1016Japan2024-04-01
1017Australia2024-04-15
1018Canada2024-03-26
1019Australia2024-04-18
1020Argentina2024-04-06
1021Brazil2024-04-14
1022India2024-04-05
1023Japan2024-04-22
1024Australia2024-04-08
1025Japan2024-04-22
1026Brazil2024-04-06
1027Russia2024-04-12
1028Spain2024-03-30
1029Canada2024-04-13
1030Germany2024-03-27
1031Japan2024-04-23
1032Japan2024-04-21
1033Australia2024-04-20
1034Australia2024-04-08
1035France2024-04-14
1036Russia2024-03-30
1037Germany2024-04-07
1038India2024-03-28
1039France2024-04-16
1040Russia2024-04-11
1041Australia2024-03-31
1042Spain2024-03-29
1043Argentina2024-04-08
1044India2024-04-21
1045Argentina2024-04-17
1046Argentina2024-04-22
1047Italy2024-04-10
1048France2024-04-03
1049Spain2024-04-15

On-Demand Data

NameIdCountryDate
Ivar Y Sergi1000United Kingdom2024-04-08
David T Garufi1001India2024-04-04
Jefferson C Bowley1002Australia2024-04-15
Juan O Vocelka1003United Kingdom2024-04-21
Alejandro E Rulapaugh1004United Kingdom2024-03-31
Cody M Paprocki1005Spain2024-04-10
Octavia D Shinko1006India2024-04-04
Rodrigues X Malet1007France2024-04-17
Jefferson E Ferencz1008Russia2024-04-06
Ashley E Rulapaugh1009Argentina2024-04-22
Darci W Garufi1010Spain2024-03-27
Julie H Kusko1011Japan2024-03-29
James X Tollner1012Spain2024-03-29
Ashley Z Iturbide1013India2024-04-21
Misaki Z Inouye1014Italy2024-04-20
Sinclair X Amigon1015Japan2024-04-10
Sinclair Q Malet1016Brazil2024-04-02
David X Perin1017Russia2024-04-15
Antonio O Waycott1018Japan2024-04-05
Aika Y Amigon1019France2024-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo R MacleadSpainAsiya Javayant NEGOTIATION
Faith H PerinGermanyXuxue Feng PROPOSAL
Arvin W MacleadSpainIvan Magalhaes QUALIFIED
Chavez O MarrierAustraliaAmy Elsner UNQUALIFIED
Julie D RutaArgentinaOnyama Limba PROPOSAL
Aika J BriddickUnited KingdomIvan Magalhaes RENEWAL
Isabel M MacleadCanadaIoni Bowcher RENEWAL
Jones I MorascaGermanyAnna Fali UNQUALIFIED
Salvatore T VenereIndiaXuxue Feng RENEWAL
Jefferson F CaudyGermanyXuxue Feng UNQUALIFIED
Aditya V MaletBrazilStephen Shaw PROPOSAL
Francesco V NestleFranceElwin Sharvill UNQUALIFIED
Silvio Z CampainGermanyIvan Magalhaes NEW
Claire X DoeItalyAmy Elsner UNQUALIFIED
Darci B BriddickFranceAmy Elsner NEW
Silvio G VenereArgentinaOnyama Limba RENEWAL
Ivar V RoysterGermanyAmy Elsner RENEWAL
Tony O GarufiAustraliaAmy Elsner NEW
Costa Z FigeroaCanadaAsiya Javayant NEGOTIATION
Chavez M KolmetzJapanAsiya Javayant PROPOSAL
Johnson C CampainIndiaAnna Fali NEW
Chavez A RutaAustraliaIoni Bowcher NEGOTIATION
Jeanfrancois T SaylorsArgentinaBernardo Dominic NEW
Leon Q RimJapanAmy Elsner PROPOSAL
Octavia T SergiSpainBernardo Dominic NEGOTIATION
Munro N PerinBrazilXuxue Feng UNQUALIFIED
Johnson K FerenczBrazilIvan Magalhaes UNQUALIFIED
Octavia S StockhamSpainBernardo Dominic NEGOTIATION
Chavez Z PaprockiRussiaAsiya Javayant NEGOTIATION
Tony L GillianJapanXuxue Feng UNQUALIFIED
Mujtaba P OstroskySpainXuxue Feng PROPOSAL
Smith R AlbaresSpainOnyama Limba NEGOTIATION
Claire D PaprockiIndiaAnna Fali NEW
Aditya B WieserItalyIvan Magalhaes PROPOSAL
Aruna O FigeroaCanadaIoni Bowcher UNQUALIFIED
Leja R FigeroaItalyAmy Elsner NEGOTIATION
Kaitlin M WieserIndiaAsiya Javayant PROPOSAL
Ashley E MarrierBrazilOnyama Limba RENEWAL
Maria O NickaAustraliaAsiya Javayant NEW
Kaitlin X RoysterJapanElwin Sharvill NEW

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