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
Munro T SlusarskiUnited KingdomBernardo Dominic RENEWAL
Arvin Y SaylorsIndiaBernardo Dominic PROPOSAL
Francesco I PaprockiUnited KingdomAnna Fali PROPOSAL
Jennifer G MorascaCanadaStephen Shaw NEGOTIATION
Johnson M SlusarskiCanadaIvan Magalhaes RENEWAL
Mayumi S GillianArgentinaIvan Magalhaes PROPOSAL
Stacey Q GauchoAustraliaAmy Elsner NEW
Claire G ChuiSpainIoni Bowcher RENEWAL
Mayumi R MaletUnited KingdomStephen Shaw NEW
Morrow V GillianUnited KingdomIvan Magalhaes UNQUALIFIED
Silvio K GillianSpainOnyama Limba NEW
Adams I GauchoSpainIoni Bowcher NEGOTIATION
Julie F BologniaCanadaAmy Elsner UNQUALIFIED
Izzy R VenereJapanIvan Magalhaes UNQUALIFIED
Francesco K KuskoFranceAnna Fali PROPOSAL
Maisha J AmigonArgentinaElwin Sharvill UNQUALIFIED
Tony R InouyeJapanXuxue Feng NEW
Arvin J InouyeFranceIoni Bowcher UNQUALIFIED
Rodrigues P SlusarskiIndiaIoni Bowcher RENEWAL
Darci F MorascaRussiaIvan Magalhaes NEGOTIATION
Costa N DoeGermanyIoni Bowcher RENEWAL
Faith H FollerGermanyAmy Elsner QUALIFIED
Jefferson N SergiUnited KingdomAsiya Javayant NEGOTIATION
Aditya F KolmetzGermanyStephen Shaw NEW
Ivar R NickaUnited KingdomElwin Sharvill UNQUALIFIED
Jennifer S StensethItalyIvan Magalhaes NEGOTIATION
Isabel F BowleyGermanyAsiya Javayant NEW
Greenwood T VocelkaArgentinaXuxue Feng PROPOSAL
Adams K RulapaughArgentinaXuxue Feng NEW
Jeanfrancois J OstroskyCanadaBernardo Dominic RENEWAL
Claire O GillianFranceAsiya Javayant PROPOSAL
Rodrigues Z MarrierFranceXuxue Feng NEW
Misaki K CampainUnited KingdomOnyama Limba PROPOSAL
Aditya F DoeItalyAnna Fali QUALIFIED
Sinclair O DarakjyIndiaOnyama Limba NEW
Francesco E MacleadAustraliaOnyama Limba QUALIFIED
Greenwood A SergiCanadaAsiya Javayant QUALIFIED
Kadeem L RimRussiaStephen Shaw PROPOSAL
Silvio C BologniaItalyAsiya Javayant QUALIFIED
Greenwood L PoquetteBrazilElwin Sharvill NEGOTIATION
Greenwood F FigeroaGermanyElwin Sharvill NEGOTIATION
Leja D ChuiItalyAsiya Javayant UNQUALIFIED
Salvatore J ButtBrazilIoni Bowcher QUALIFIED
Darci M NickaUnited KingdomBernardo Dominic RENEWAL
Silvio N NestleGermanyElwin Sharvill PROPOSAL
Salvatore L RimFranceAmy Elsner NEW
Arvin A FigeroaIndiaXuxue Feng UNQUALIFIED
Misaki Q SaylorsSpainElwin Sharvill RENEWAL
Munro F BologniaGermanyXuxue Feng QUALIFIED
Jennifer X ShinkoIndiaAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mayumi S GlickIndiaXuxue Feng PROPOSAL
Jennifer A StockhamFranceIoni Bowcher QUALIFIED
Darci J ButtBrazilIvan Magalhaes UNQUALIFIED
Wickens B RulapaughCanadaXuxue Feng NEGOTIATION
Ivar Y IturbideAustraliaIvan Magalhaes NEW
Munro I GarufiUnited KingdomBernardo Dominic PROPOSAL
Juan T WieserItalyBernardo Dominic QUALIFIED
Izzy U MorascaAustraliaXuxue Feng NEGOTIATION
Julie V AlbaresJapanAnna Fali PROPOSAL
David H GlickGermanyIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore A MacleadUnited Kingdom2024-05-08King, Christopher A Esq RENEWAL79Xuxue Feng
1001Morrow D RoysterItaly2024-05-09Benton, John B Jr NEW94Stephen Shaw
1002Johnson J MacleadBrazil2024-05-19Chapman, Ross E Esq RENEWAL80Ioni Bowcher
1003Kadeem W CaudyItaly2024-05-04Truhlar And Truhlar Attys QUALIFIED85Ioni Bowcher
1004Cody F MarrierUnited Kingdom2024-05-21Buckley Miller Wright PROPOSAL29Xuxue Feng
1005Jeanfrancois C MacleadItaly2024-05-14Morlong Associates NEW51Anna Fali
1006Morrow S RoysterRussia2024-05-14Rangoni Of Florence NEW28Anna Fali
1007Emily Z BologniaFrance2024-05-06Buckley Miller Wright RENEWAL70Anna Fali
1008Sinclair I OstroskyJapan2024-04-26Rangoni Of Florence UNQUALIFIED62Stephen Shaw
1009Alejandro N DoeUnited Kingdom2024-05-07Rangoni Of Florence RENEWAL11Asiya Javayant
1010Clifford E IturbideIndia2024-05-14Rousseaux, Michael Esq NEGOTIATION75Anna Fali
1011Izzy X NickaBrazil2024-05-09Feiner Bros UNQUALIFIED28Onyama Limba
1012Johnson S AlbaresSpain2024-05-07Printing Dimensions NEW28Asiya Javayant
1013Sinclair O ChuiItaly2024-04-25Chapman, Ross E Esq NEW79Elwin Sharvill
1014Faith T MaletCanada2024-05-18Feiner Bros NEGOTIATION63Stephen Shaw
1015Ivar F OstroskyArgentina2024-05-06King, Christopher A Esq UNQUALIFIED3Amy Elsner
1016Darci Q PoquetteIndia2024-04-24Chemel, James L Cpa RENEWAL69Stephen Shaw
1017Mayumi J PaprockiJapan2024-05-08Feltz Printing Service UNQUALIFIED68Bernardo Dominic
1018Mujtaba R DilliardUnited Kingdom2024-04-24Chapman, Ross E Esq NEW58Amy Elsner
1019Adams H SaylorsBrazil2024-04-23Commercial Press UNQUALIFIED47Xuxue Feng
1020Jefferson Z ShinkoGermany2024-04-22Benton, John B Jr QUALIFIED89Elwin Sharvill
1021Mujtaba K WaycottArgentina2024-05-02Printing Dimensions QUALIFIED15Amy Elsner
1022Izzy S VenereBrazil2024-04-28Printing Dimensions UNQUALIFIED5Bernardo Dominic
1023Nicolas R FigeroaSpain2024-05-15Rangoni Of Florence RENEWAL12Stephen Shaw
1024Ivar G VocelkaCanada2024-05-18Commercial Press NEGOTIATION11Onyama Limba
1025Jones J StensethRussia2024-05-04Chanay, Jeffrey A Esq NEGOTIATION13Onyama Limba
1026Rodrigues M BowleyGermany2024-04-25Feiner Bros RENEWAL15Stephen Shaw
1027Alejandro T PaprockiIndia2024-04-26Rangoni Of Florence NEGOTIATION80Stephen Shaw
1028Izzy S SchemmerJapan2024-05-05Truhlar And Truhlar Attys NEGOTIATION62Bernardo Dominic
1029Izzy P IturbideRussia2024-04-24Printing Dimensions NEW25Elwin Sharvill
1030Leon P BologniaGermany2024-05-05Chanay, Jeffrey A Esq QUALIFIED31Stephen Shaw
1031Nicolas W FigeroaJapan2024-05-01Morlong Associates UNQUALIFIED83Bernardo Dominic
1032Antonio U GlickAustralia2024-05-14Feltz Printing Service RENEWAL24Anna Fali
1033Maisha N StockhamJapan2024-05-17Chapman, Ross E Esq NEW28Onyama Limba
1034Deepesh X RimItaly2024-04-30Commercial Press PROPOSAL77Ioni Bowcher
1035Wickens W NestleSpain2024-04-26Chemel, James L Cpa UNQUALIFIED94Ivan Magalhaes
1036Munro I ButtArgentina2024-04-30Chemel, James L Cpa NEW94Anna Fali
1037Arvin A ShinkoAustralia2024-04-22Feltz Printing Service QUALIFIED6Xuxue Feng
1038Tony A StockhamSpain2024-04-29Chanay, Jeffrey A Esq NEW76Elwin Sharvill
1039Nicolas W FollerIndia2024-05-14Benton, John B Jr NEW0Bernardo Dominic
1040Mujtaba S NestleSpain2024-04-26Truhlar And Truhlar Attys NEW43Ivan Magalhaes
1041Claire X DarakjyJapan2024-05-21Feiner Bros QUALIFIED76Stephen Shaw
1042Murillo N KuskoItaly2024-04-22Commercial Press RENEWAL39Amy Elsner
1043Alejandro R BriddickCanada2024-04-30Printing Dimensions PROPOSAL74Asiya Javayant
1044Julie T DoeFrance2024-05-21Benton, John B Jr RENEWAL36Asiya Javayant
1045Clifford P KolmetzSpain2024-05-07Rangoni Of Florence NEW68Asiya Javayant
1046Smith K SaylorsFrance2024-05-12Commercial Press UNQUALIFIED21Xuxue Feng
1047Costa J MacleadSpain2024-05-12Dorl, James J Esq NEW55Asiya Javayant
1048Johnson O DoeCanada2024-04-24Buckley Miller Wright UNQUALIFIED66Xuxue Feng
1049Misaki B SaylorsItaly2024-05-17Feltz Printing Service UNQUALIFIED28Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Faith M BologniaItalyAmy Elsner RENEWAL
Leja Z ChuiFranceAmy Elsner PROPOSAL
Adams O SchemmerIndiaIoni Bowcher QUALIFIED
Aika V VocelkaUnited KingdomStephen Shaw PROPOSAL
Juan O MacleadFranceXuxue Feng QUALIFIED
Morrow C KolmetzBrazilIvan Magalhaes PROPOSAL
Octavia X ChuiAustraliaIvan Magalhaes PROPOSAL
Wickens I CaldareraJapanAsiya Javayant NEGOTIATION
Greenwood V SchemmerRussiaAnna Fali NEW
Mayumi H PoquetteIndiaIoni Bowcher PROPOSAL
Kadeem E PoquetteJapanStephen Shaw RENEWAL
Aruna Q MarrierItalyXuxue Feng PROPOSAL
Aditya K PaprockiArgentinaXuxue Feng PROPOSAL
Alejandro N InouyeIndiaIoni Bowcher NEW
Stacey O BologniaArgentinaOnyama Limba UNQUALIFIED
Leja O DilliardGermanyAsiya Javayant UNQUALIFIED
Leja I RimBrazilIvan Magalhaes NEW
Maria O CampainJapanStephen Shaw NEGOTIATION
Silvio I FigeroaJapanAsiya Javayant NEW
Adams T SaylorsRussiaAnna Fali QUALIFIED
Kadeem J BologniaArgentinaStephen Shaw NEGOTIATION
Aika C DilliardUnited KingdomAnna Fali NEW
Deepesh L FerenczRussiaBernardo Dominic UNQUALIFIED
Leja W MarrierGermanyAsiya Javayant UNQUALIFIED
Ashley E NestleFranceAsiya Javayant QUALIFIED
Aika R GlickItalyBernardo Dominic QUALIFIED
Ivar M CampainGermanyOnyama Limba QUALIFIED
Jones O GlickIndiaElwin Sharvill NEW
Juan I MaletJapanIoni Bowcher PROPOSAL
Murillo N CaudyFranceXuxue Feng RENEWAL
Jennifer F WieserItalyStephen Shaw UNQUALIFIED
Jeanfrancois U CaudyAustraliaIvan Magalhaes UNQUALIFIED
James J VocelkaIndiaElwin Sharvill NEGOTIATION
Rodrigues U RoysterSpainStephen Shaw PROPOSAL
Darci W WhobreyArgentinaOnyama Limba NEGOTIATION
Rodrigues U GillianJapanIvan Magalhaes UNQUALIFIED
Octavia K ChuiAustraliaElwin Sharvill NEW
Mayumi T FollerGermanyAnna Fali NEW
Alejandro N MarrierUnited KingdomIoni Bowcher NEGOTIATION
Octavia U NickaBrazilElwin Sharvill RENEWAL
Murillo N VenereSpainIoni Bowcher PROPOSAL
Sinclair X WhobreyCanadaAmy Elsner NEGOTIATION
Johnson J VocelkaAustraliaElwin Sharvill RENEWAL
Ricardo Z TollnerJapanAsiya Javayant QUALIFIED
Clifford D AmigonRussiaBernardo Dominic NEGOTIATION
Arvin F VenereGermanyAnna Fali RENEWAL
Rodrigues I FollerArgentinaAsiya Javayant NEW
Leon T DilliardRussiaAnna Fali NEGOTIATION
Sinclair Z CaldareraGermanyIoni Bowcher PROPOSAL
Cody I StensethRussiaIvan Magalhaes PROPOSAL
Frozen Columns
Name
Maisha M Oldroyd
Tony E Ferencz
Adams Y Figeroa
David S Nicka
Alejandro H Rim
Jefferson M Gaucho
Wickens F Dilliard
Misaki J Schemmer
Aditya E Royster
Smith M Malet
Smith G Glick
Silvio F Foller
Claire Q Gaucho
Wickens G Whobrey
Francesco U Sergi
Jefferson S Ostrosky
Adams I Stockham
Nicolas M Caudy
Octavia N Royster
Sinclair S Paprocki
Rodrigues L Royster
Aika K Kusko
Julie S Glick
Arvin F Foller
Chavez G Chui
Francesco M Kusko
Chavez F Malet
Clifford Z Garufi
Faith L Caudy
Ashley W Stenseth
Chavez U Shinko
Munro N Malet
Arvin T Sergi
Aditya H Darakjy
Johnson I Doe
Jeanfrancois E Slusarski
Costa B Paprocki
Costa Y Flosi
Kadeem G Whobrey
Tony G Stenseth
Ivar U Shinko
Ricardo J Poquette
Jeanfrancois Q Ferencz
Johnson X Amigon
Jennifer O Dilliard
Mayumi Q Inouye
Greenwood C Ferencz
Mujtaba B Butt
Smith R Oldroyd
Adams P Royster
IdCountryDate
1000United Kingdom2024-04-25
1001Australia2024-05-08
1002Italy2024-05-17
1003Argentina2024-05-13
1004Argentina2024-05-16
1005Brazil2024-04-30
1006Australia2024-05-05
1007Germany2024-05-12
1008Italy2024-05-20
1009Russia2024-05-20
1010Spain2024-05-18
1011India2024-05-02
1012Argentina2024-05-02
1013Italy2024-05-15
1014Australia2024-04-27
1015Canada2024-04-26
1016Italy2024-05-07
1017Germany2024-05-05
1018Japan2024-05-21
1019France2024-05-19
1020Argentina2024-05-15
1021Italy2024-05-06
1022Germany2024-05-15
1023Argentina2024-05-06
1024Canada2024-04-24
1025Japan2024-05-20
1026India2024-05-11
1027India2024-05-08
1028Russia2024-05-08
1029United Kingdom2024-04-22
1030Germany2024-04-25
1031Germany2024-05-20
1032Canada2024-04-25
1033United Kingdom2024-05-11
1034Australia2024-05-18
1035Spain2024-04-28
1036United Kingdom2024-05-07
1037United Kingdom2024-04-30
1038Japan2024-05-21
1039Japan2024-05-19
1040Spain2024-04-28
1041Spain2024-04-27
1042Russia2024-05-02
1043United Kingdom2024-05-10
1044Australia2024-04-27
1045France2024-05-01
1046Italy2024-05-06
1047United Kingdom2024-05-01
1048Australia2024-05-18
1049Italy2024-04-28

On-Demand Data

NameIdCountryDate
Aditya G Stockham1000France2024-05-04
Tony X Royster1001Canada2024-04-27
Murillo T Sergi1002Australia2024-04-30
Maisha O Inouye1003Germany2024-05-06
Antonio H Campain1004Canada2024-05-04
Arvin I Schemmer1005Germany2024-05-18
Mayumi Z Maclead1006India2024-05-21
Salvatore T Kolmetz1007Italy2024-05-10
Costa P Malet1008France2024-05-11
Julie V Waycott1009Italy2024-05-19
Adams I Perin1010Italy2024-05-21
Aditya H Whobrey1011Germany2024-04-27
Izzy U Nestle1012Canada2024-05-17
Cody J Iturbide1013United Kingdom2024-04-25
Aika P Dilliard1014Argentina2024-04-28
Maria Q Sergi1015France2024-05-12
Faith J Morasca1016Italy2024-04-27
Juan V Poquette1017Germany2024-05-16
Aika E Ruta1018Australia2024-05-04
Sinclair M Kolmetz1019Germany2024-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna X WieserUnited KingdomElwin Sharvill NEW
Adams T InouyeUnited KingdomAmy Elsner UNQUALIFIED
Costa Q TollnerArgentinaIoni Bowcher QUALIFIED
Aruna V GarufiCanadaElwin Sharvill QUALIFIED
Jennifer O ShinkoCanadaIoni Bowcher NEW
Julie G PoquetteBrazilElwin Sharvill QUALIFIED
Chavez Z ButtIndiaBernardo Dominic PROPOSAL
Cody K AlbaresGermanyAsiya Javayant NEW
Costa W VocelkaBrazilElwin Sharvill NEGOTIATION
Ricardo D StockhamRussiaIoni Bowcher NEGOTIATION
Arvin W InouyeAustraliaAsiya Javayant UNQUALIFIED
Mayumi G RoysterJapanAsiya Javayant PROPOSAL
Rodrigues P ButtUnited KingdomElwin Sharvill QUALIFIED
Ashley X SchemmerJapanIoni Bowcher NEGOTIATION
Darci H NestleGermanyIoni Bowcher NEW
Morrow B PaprockiCanadaAsiya Javayant NEW
Chavez T BologniaIndiaAnna Fali NEGOTIATION
Mayumi D RoysterItalyIvan Magalhaes NEGOTIATION
Adams N ChuiCanadaAnna Fali NEW
Francesco W PerinUnited KingdomIvan Magalhaes NEW
Morrow Q ChuiJapanXuxue Feng NEW
Rodrigues W VocelkaCanadaBernardo Dominic NEW
Francesco L NickaSpainIvan Magalhaes UNQUALIFIED
Julie F VocelkaRussiaOnyama Limba NEW
Deepesh D GlickItalyIvan Magalhaes UNQUALIFIED
Mayumi Y MaletIndiaOnyama Limba NEW
Deepesh Y ShinkoAustraliaStephen Shaw QUALIFIED
Nicolas K BriddickArgentinaAmy Elsner QUALIFIED
Francesco G MaletBrazilOnyama Limba NEW
Mujtaba F MaletCanadaIvan Magalhaes QUALIFIED
Leja X WaycottCanadaStephen Shaw UNQUALIFIED
Antonio U DilliardRussiaXuxue Feng PROPOSAL
Ricardo M KolmetzFranceStephen Shaw NEGOTIATION
Murillo L SergiRussiaAnna Fali RENEWAL
Salvatore C RulapaughGermanyAsiya Javayant NEGOTIATION
Salvatore B KuskoGermanyStephen Shaw RENEWAL
Silvio D WhobreyRussiaOnyama Limba RENEWAL
Morrow S VocelkaJapanIoni Bowcher RENEWAL
Claire K NickaItalyAmy Elsner RENEWAL
Kadeem G SlusarskiAustraliaAsiya 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>