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
Chavez L RimArgentinaAmy Elsner NEGOTIATION
Mayumi X MorascaUnited KingdomAmy Elsner NEGOTIATION
Francesco V CaldareraArgentinaAsiya Javayant NEW
Chavez D MacleadCanadaIvan Magalhaes NEGOTIATION
Leon F KuskoSpainOnyama Limba NEGOTIATION
Francesco L WhobreyGermanyElwin Sharvill RENEWAL
Claire E RoysterSpainIoni Bowcher PROPOSAL
Darci P OstroskyUnited KingdomIvan Magalhaes NEGOTIATION
Deepesh O BriddickRussiaAsiya Javayant UNQUALIFIED
Francesco A MaletIndiaStephen Shaw NEW
Misaki X PerinRussiaOnyama Limba NEW
Deepesh K SlusarskiSpainBernardo Dominic NEGOTIATION
Clifford G KolmetzUnited KingdomAsiya Javayant NEGOTIATION
Mayumi S SlusarskiRussiaOnyama Limba NEGOTIATION
Smith G GarufiSpainBernardo Dominic RENEWAL
Isabel F NestleBrazilAsiya Javayant PROPOSAL
Rodrigues H BriddickFranceElwin Sharvill NEW
Isabel R VenereAustraliaAsiya Javayant RENEWAL
Morrow P FlosiBrazilXuxue Feng UNQUALIFIED
Darci U CampainAustraliaAnna Fali UNQUALIFIED
Nicolas V BologniaSpainAmy Elsner QUALIFIED
Arvin N CaudyGermanyBernardo Dominic NEW
Rodrigues V BriddickItalyStephen Shaw RENEWAL
Alejandro Y DilliardItalyStephen Shaw QUALIFIED
Emily R PaprockiFranceIoni Bowcher QUALIFIED
Deepesh G CaudyFranceOnyama Limba NEW
David H RimJapanAsiya Javayant UNQUALIFIED
Smith G BologniaUnited KingdomAsiya Javayant RENEWAL
Aika Z MarrierSpainXuxue Feng PROPOSAL
Arvin N AmigonSpainAnna Fali RENEWAL
Leon T SchemmerSpainStephen Shaw RENEWAL
David H VenereGermanyOnyama Limba RENEWAL
Darci X BowleyCanadaAnna Fali UNQUALIFIED
Nicolas H GarufiGermanyBernardo Dominic NEGOTIATION
Kaitlin H MacleadCanadaAmy Elsner NEW
Mujtaba B IturbideJapanIvan Magalhaes QUALIFIED
Chavez E RulapaughRussiaOnyama Limba NEW
Emily W DarakjyJapanAmy Elsner PROPOSAL
Jefferson P WhobreyArgentinaAsiya Javayant PROPOSAL
Costa H DoeRussiaAnna Fali PROPOSAL
Aika U KuskoRussiaAsiya Javayant NEW
Claire A MacleadBrazilElwin Sharvill RENEWAL
Julie D CaldareraIndiaStephen Shaw PROPOSAL
Chavez K SchemmerUnited KingdomIvan Magalhaes NEW
Jefferson A AmigonRussiaOnyama Limba NEGOTIATION
Kadeem K OldroydCanadaXuxue Feng NEW
Salvatore C AmigonBrazilXuxue Feng NEW
Octavia H RimArgentinaStephen Shaw QUALIFIED
Aditya D NestleRussiaAmy Elsner RENEWAL
Aditya K FollerJapanAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aika F ButtIndiaIoni Bowcher NEW
Misaki I BriddickItalyStephen Shaw UNQUALIFIED
Nicolas H RimIndiaIoni Bowcher NEGOTIATION
Darci L KuskoItalyAsiya Javayant PROPOSAL
Adams C DoeFranceIoni Bowcher PROPOSAL
Chavez D CaudyJapanStephen Shaw RENEWAL
Ricardo A TollnerCanadaAnna Fali PROPOSAL
David N FollerArgentinaStephen Shaw UNQUALIFIED
Julie E SlusarskiSpainBernardo Dominic NEW
Ricardo M RoysterJapanAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones V StockhamBrazil2024-04-25Dorl, James J Esq UNQUALIFIED74Elwin Sharvill
1001Silvio W CaudyItaly2024-04-29Printing Dimensions PROPOSAL82Ivan Magalhaes
1002Clifford N RimItaly2024-04-29Feiner Bros UNQUALIFIED56Elwin Sharvill
1003Nicolas Y MorascaArgentina2024-04-10Dorl, James J Esq RENEWAL91Ioni Bowcher
1004Claire P KolmetzAustralia2024-04-09King, Christopher A Esq NEW52Asiya Javayant
1005Leon F OldroydJapan2024-04-12Feltz Printing Service UNQUALIFIED13Elwin Sharvill
1006Cody W OldroydJapan2024-04-21Feltz Printing Service QUALIFIED6Onyama Limba
1007Ricardo Z BowleyJapan2024-05-03Commercial Press RENEWAL97Bernardo Dominic
1008Izzy W StockhamJapan2024-04-07Morlong Associates QUALIFIED20Anna Fali
1009James C SlusarskiFrance2024-04-11Feltz Printing Service NEGOTIATION35Stephen Shaw
1010Smith U MaletJapan2024-04-12Morlong Associates NEGOTIATION37Bernardo Dominic
1011Maria X FlosiBrazil2024-04-18Rousseaux, Michael Esq NEGOTIATION20Xuxue Feng
1012Maria B ChuiBrazil2024-04-16Rousseaux, Michael Esq NEGOTIATION77Onyama Limba
1013Aditya H ButtAustralia2024-04-10King, Christopher A Esq NEW25Stephen Shaw
1014Aruna V ShinkoUnited Kingdom2024-04-27Dorl, James J Esq PROPOSAL79Ioni Bowcher
1015Maisha X SlusarskiBrazil2024-05-01Commercial Press NEW81Asiya Javayant
1016Isabel F ButtUnited Kingdom2024-04-28Morlong Associates NEW38Ivan Magalhaes
1017Clifford I PerinSpain2024-05-05Buckley Miller Wright NEW67Onyama Limba
1018Ivar Y SlusarskiIndia2024-04-26Benton, John B Jr UNQUALIFIED76Bernardo Dominic
1019Rodrigues N FollerUnited Kingdom2024-04-15Commercial Press NEGOTIATION65Elwin Sharvill
1020Maisha Z CaudyFrance2024-04-18Benton, John B Jr QUALIFIED15Stephen Shaw
1021Stacey Q ButtSpain2024-05-04King, Christopher A Esq NEW71Amy Elsner
1022Ashley G ChuiFrance2024-04-14Buckley Miller Wright PROPOSAL7Ioni Bowcher
1023Ricardo R SchemmerSpain2024-04-09Feiner Bros QUALIFIED44Stephen Shaw
1024Tony W TollnerCanada2024-04-14Buckley Miller Wright RENEWAL85Anna Fali
1025Chavez A RoysterArgentina2024-05-03Feltz Printing Service PROPOSAL67Amy Elsner
1026Julie U CaldareraSpain2024-04-19Chanay, Jeffrey A Esq NEW72Bernardo Dominic
1027Antonio L PaprockiIndia2024-05-02Commercial Press RENEWAL81Ivan Magalhaes
1028Clifford F ChuiRussia2024-04-28Morlong Associates PROPOSAL58Stephen Shaw
1029Morrow K MaletArgentina2024-04-16Rousseaux, Michael Esq UNQUALIFIED87Anna Fali
1030Misaki S FollerCanada2024-04-30Dorl, James J Esq QUALIFIED3Anna Fali
1031Aruna K SchemmerSpain2024-04-14Benton, John B Jr QUALIFIED17Ioni Bowcher
1032Tony K OstroskyGermany2024-04-10Morlong Associates QUALIFIED16Bernardo Dominic
1033Arvin U StensethCanada2024-04-21Chapman, Ross E Esq QUALIFIED94Elwin Sharvill
1034Isabel N OldroydUnited Kingdom2024-05-03Feiner Bros NEW49Asiya Javayant
1035Izzy O PaprockiItaly2024-04-18Chemel, James L Cpa QUALIFIED29Stephen Shaw
1036Jefferson A SaylorsUnited Kingdom2024-04-23Printing Dimensions NEGOTIATION37Amy Elsner
1037Juan Z DilliardArgentina2024-05-01Chapman, Ross E Esq RENEWAL91Stephen Shaw
1038Jefferson B AlbaresCanada2024-04-25Chapman, Ross E Esq NEW69Amy Elsner
1039Julie K TollnerBrazil2024-04-23Rousseaux, Michael Esq UNQUALIFIED8Onyama Limba
1040Clifford S BologniaCanada2024-04-08Printing Dimensions UNQUALIFIED54Amy Elsner
1041Kadeem U VenereJapan2024-04-08Rousseaux, Michael Esq NEGOTIATION99Asiya Javayant
1042Wickens N MorascaCanada2024-04-24Truhlar And Truhlar Attys NEGOTIATION16Elwin Sharvill
1043Murillo T WhobreyGermany2024-04-24Truhlar And Truhlar Attys UNQUALIFIED62Ioni Bowcher
1044Aika F ChuiGermany2024-05-01Benton, John B Jr PROPOSAL78Elwin Sharvill
1045Leon G OstroskyIndia2024-04-08King, Christopher A Esq NEGOTIATION40Asiya Javayant
1046Leja G MorascaAustralia2024-05-03Feltz Printing Service NEW58Ivan Magalhaes
1047Johnson H ButtIndia2024-04-27Truhlar And Truhlar Attys UNQUALIFIED93Elwin Sharvill
1048Adams Z MarrierUnited Kingdom2024-04-22Commercial Press NEGOTIATION92Ioni Bowcher
1049Maisha V MaletRussia2024-04-08Morlong Associates PROPOSAL35Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Isabel P MarrierItalyStephen Shaw NEGOTIATION
Faith F MarrierRussiaIoni Bowcher RENEWAL
Silvio H DoeJapanElwin Sharvill UNQUALIFIED
Salvatore Q SlusarskiSpainIvan Magalhaes RENEWAL
Jennifer Q RulapaughJapanOnyama Limba NEGOTIATION
Octavia W FlosiBrazilOnyama Limba NEGOTIATION
Ivar O FerenczBrazilStephen Shaw NEW
Darci W DilliardJapanIvan Magalhaes PROPOSAL
David Z RimRussiaAmy Elsner PROPOSAL
Kadeem K MorascaFranceIoni Bowcher UNQUALIFIED
Chavez G BriddickIndiaStephen Shaw QUALIFIED
Alejandro U PerinBrazilOnyama Limba RENEWAL
Aruna O RulapaughIndiaAmy Elsner UNQUALIFIED
Costa C DoeRussiaXuxue Feng NEW
Leja C ButtRussiaAsiya Javayant PROPOSAL
Adams Y KolmetzBrazilAnna Fali NEGOTIATION
Nicolas V BowleyGermanyElwin Sharvill QUALIFIED
Rodrigues K RoysterUnited KingdomBernardo Dominic PROPOSAL
Octavia N VocelkaUnited KingdomIvan Magalhaes UNQUALIFIED
Jefferson U RulapaughJapanOnyama Limba RENEWAL
Aika M SchemmerGermanyElwin Sharvill QUALIFIED
Misaki E OldroydAustraliaAmy Elsner QUALIFIED
Antonio A FigeroaArgentinaOnyama Limba NEGOTIATION
David M DoeJapanAnna Fali NEW
Johnson M MorascaIndiaAmy Elsner NEGOTIATION
Adams U MaletFranceStephen Shaw RENEWAL
Jefferson B KolmetzArgentinaOnyama Limba NEGOTIATION
Darci P WaycottFranceAsiya Javayant PROPOSAL
Mayumi U NickaCanadaBernardo Dominic RENEWAL
Antonio X SaylorsArgentinaBernardo Dominic RENEWAL
Deepesh R BologniaBrazilBernardo Dominic UNQUALIFIED
Maisha R FlosiUnited KingdomAsiya Javayant NEW
Chavez Y OstroskyBrazilIoni Bowcher QUALIFIED
Claire R FlosiGermanyOnyama Limba NEGOTIATION
Munro M AmigonItalyIoni Bowcher NEW
Greenwood V AlbaresAustraliaBernardo Dominic RENEWAL
Deepesh C CaldareraGermanyXuxue Feng NEGOTIATION
Smith M CaudyJapanIvan Magalhaes NEW
Murillo F PerinFranceAmy Elsner PROPOSAL
Deepesh A WieserBrazilIoni Bowcher RENEWAL
Stacey Z WhobreyArgentinaStephen Shaw QUALIFIED
Jennifer L PerinJapanAmy Elsner RENEWAL
Wickens Q RoysterFranceOnyama Limba QUALIFIED
Isabel B CampainRussiaBernardo Dominic PROPOSAL
Rodrigues H SlusarskiRussiaOnyama Limba NEW
Sinclair J NickaRussiaAsiya Javayant QUALIFIED
Aditya Z PerinAustraliaXuxue Feng UNQUALIFIED
Aika J NickaCanadaStephen Shaw NEW
Kaitlin T GarufiIndiaStephen Shaw NEGOTIATION
Adams C ButtIndiaStephen Shaw NEW
Frozen Columns
Name
Ivar D Kusko
Kadeem X Royster
Greenwood V Caldarera
Leon D Oldroyd
Leon I Malet
David U Slusarski
Octavia N Rulapaugh
Clifford E Saylors
Mujtaba V Albares
Clifford M Whobrey
Sinclair U Vocelka
Stacey Y Briddick
Johnson P Morasca
Greenwood F Figeroa
Murillo T Nicka
Munro Y Marrier
Darci J Schemmer
Maisha K Dilliard
Faith I Stockham
Smith Z Flosi
Isabel F Perin
Mujtaba I Morasca
Misaki M Chui
Morrow J Caldarera
Tony E Ostrosky
Sinclair S Briddick
Mujtaba S Campain
Silvio Z Waycott
David X Bowley
Nicolas A Nestle
Kadeem S Ruta
Isabel C Rulapaugh
Alejandro V Ostrosky
Smith H Morasca
Jeanfrancois Q Venere
Rodrigues X Maclead
David X Kusko
Tony M Foller
James Y Bowley
Aditya J Briddick
Darci X Caudy
Clifford Q Schemmer
Claire R Rim
Aruna V Maclead
Antonio C Malet
Darci D Poquette
Francesco E Schemmer
Sinclair K Sergi
Wickens J Perin
Kaitlin U Slusarski
IdCountryDate
1000India2024-04-23
1001Italy2024-04-14
1002India2024-04-29
1003Spain2024-04-16
1004Argentina2024-05-05
1005Argentina2024-05-04
1006Japan2024-04-09
1007Canada2024-04-24
1008Italy2024-04-06
1009Italy2024-04-22
1010Russia2024-04-28
1011Italy2024-04-17
1012Argentina2024-04-25
1013India2024-05-02
1014Canada2024-04-06
1015Argentina2024-04-15
1016Spain2024-04-19
1017France2024-04-23
1018France2024-05-03
1019France2024-04-08
1020Japan2024-04-23
1021Germany2024-04-23
1022France2024-04-26
1023Japan2024-04-22
1024Brazil2024-05-01
1025Australia2024-05-03
1026India2024-04-14
1027Brazil2024-04-29
1028Canada2024-04-28
1029Italy2024-04-23
1030Brazil2024-04-09
1031Russia2024-04-24
1032Italy2024-04-25
1033France2024-04-11
1034Russia2024-05-03
1035Italy2024-05-02
1036Canada2024-04-29
1037Germany2024-04-07
1038Japan2024-04-30
1039France2024-04-12
1040Canada2024-04-07
1041Russia2024-04-26
1042Canada2024-04-28
1043Russia2024-04-30
1044Canada2024-04-29
1045Argentina2024-04-26
1046Japan2024-04-22
1047Canada2024-04-28
1048Brazil2024-04-13
1049India2024-04-07

On-Demand Data

NameIdCountryDate
Jeanfrancois G Bowley1000Argentina2024-05-02
Aditya L Flosi1001Japan2024-04-20
Greenwood E Bowley1002Russia2024-04-20
James B Glick1003India2024-04-27
David I Garufi1004United Kingdom2024-04-06
Jefferson F Gillian1005Argentina2024-04-23
Greenwood K Gaucho1006France2024-04-19
Francesco B Foller1007Spain2024-04-06
Maisha S Caudy1008India2024-05-02
Leja N Slusarski1009India2024-05-02
David J Sergi1010Canada2024-04-15
Aditya W Malet1011Argentina2024-04-30
Morrow T Kusko1012India2024-04-07
Ivar C Wieser1013Canada2024-04-26
Silvio C Caldarera1014India2024-04-08
Stacey O Whobrey1015Russia2024-04-23
Mujtaba A Saylors1016Spain2024-04-10
Maria B Venere1017United Kingdom2024-05-04
Jefferson H Gillian1018India2024-04-29
Deepesh O Figeroa1019Japan2024-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Izzy H CaldareraGermanyAsiya Javayant NEGOTIATION
Nicolas U GauchoJapanXuxue Feng RENEWAL
Kadeem V PerinArgentinaIoni Bowcher NEGOTIATION
David Q VocelkaJapanElwin Sharvill PROPOSAL
Faith F FigeroaArgentinaIoni Bowcher UNQUALIFIED
Kadeem T BriddickArgentinaStephen Shaw RENEWAL
Murillo M MarrierGermanyOnyama Limba PROPOSAL
Jennifer Z FlosiIndiaAsiya Javayant PROPOSAL
Jones B SchemmerItalyStephen Shaw NEW
Mujtaba P PerinSpainIoni Bowcher UNQUALIFIED
Jones V SergiBrazilAsiya Javayant PROPOSAL
Ivar M StensethAustraliaAmy Elsner NEGOTIATION
Greenwood Y MaletRussiaXuxue Feng NEW
Johnson Q StockhamRussiaXuxue Feng NEW
Faith Z FlosiIndiaAnna Fali QUALIFIED
Chavez Z FerenczSpainStephen Shaw QUALIFIED
Arvin C GauchoUnited KingdomIvan Magalhaes NEW
Jones P SchemmerArgentinaStephen Shaw PROPOSAL
Clifford F NickaBrazilXuxue Feng NEW
Leja F NickaItalyElwin Sharvill NEW
Stacey J KolmetzItalyElwin Sharvill RENEWAL
Maisha P SaylorsJapanStephen Shaw QUALIFIED
Nicolas Z PerinBrazilElwin Sharvill NEGOTIATION
Octavia K InouyeGermanyBernardo Dominic NEW
Aruna O TollnerCanadaOnyama Limba QUALIFIED
Maria C GillianSpainAmy Elsner QUALIFIED
Aditya U SaylorsAustraliaIvan Magalhaes NEW
Aruna T RulapaughFranceAsiya Javayant UNQUALIFIED
Murillo N AlbaresFranceBernardo Dominic PROPOSAL
Munro W SchemmerFranceXuxue Feng PROPOSAL
Emily G FigeroaCanadaXuxue Feng UNQUALIFIED
Kaitlin F OstroskyGermanyIoni Bowcher PROPOSAL
Mayumi F GarufiUnited KingdomIoni Bowcher NEW
Ivar O FollerGermanyIvan Magalhaes NEGOTIATION
Darci I DilliardCanadaIoni Bowcher QUALIFIED
Kaitlin S PaprockiFranceBernardo Dominic QUALIFIED
Chavez Z GarufiArgentinaAmy Elsner QUALIFIED
Smith W FigeroaJapanAsiya Javayant PROPOSAL
Jennifer T SergiJapanBernardo Dominic PROPOSAL
Munro Q VocelkaRussiaIoni Bowcher QUALIFIED

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