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 G StensethRussiaAnna Fali NEGOTIATION
Jennifer S SergiRussiaBernardo Dominic NEW
Costa Y StensethFranceElwin Sharvill NEW
Aditya T KuskoCanadaIvan Magalhaes PROPOSAL
Clifford K VenereSpainAsiya Javayant QUALIFIED
Deepesh Y FerenczBrazilElwin Sharvill NEGOTIATION
Adams H RulapaughUnited KingdomIoni Bowcher UNQUALIFIED
Maria U PoquetteCanadaElwin Sharvill QUALIFIED
Aruna J GarufiRussiaBernardo Dominic RENEWAL
Jones X PaprockiFranceIoni Bowcher NEGOTIATION
Darci L KuskoFranceStephen Shaw PROPOSAL
Wickens D MorascaArgentinaBernardo Dominic NEGOTIATION
Arvin N BriddickItalyElwin Sharvill RENEWAL
Julie K GauchoFranceIvan Magalhaes NEW
Smith D RulapaughJapanOnyama Limba UNQUALIFIED
Salvatore Q DilliardJapanAnna Fali UNQUALIFIED
Izzy S VenereIndiaIvan Magalhaes QUALIFIED
Darci H FigeroaUnited KingdomXuxue Feng QUALIFIED
Emily M BriddickUnited KingdomIoni Bowcher NEGOTIATION
Kaitlin F BowleyCanadaBernardo Dominic NEW
Aruna K CaldareraIndiaXuxue Feng RENEWAL
Misaki Z PoquetteItalyOnyama Limba RENEWAL
Ashley E CaudyIndiaAmy Elsner PROPOSAL
Mujtaba Q VenereFranceIvan Magalhaes UNQUALIFIED
Stacey I IturbideIndiaOnyama Limba NEGOTIATION
Ashley B SergiCanadaElwin Sharvill RENEWAL
Maisha D DilliardGermanyAnna Fali UNQUALIFIED
Misaki Y PerinFranceAmy Elsner NEGOTIATION
Izzy O RimItalyOnyama Limba UNQUALIFIED
Tony H WaycottRussiaOnyama Limba NEGOTIATION
Jones L SaylorsFranceXuxue Feng RENEWAL
Aika M GarufiItalyElwin Sharvill NEW
Juan Q KolmetzFranceAsiya Javayant NEW
Sinclair U RoysterGermanyBernardo Dominic NEW
Stacey U OstroskyBrazilIvan Magalhaes NEW
Alejandro Z ChuiSpainOnyama Limba UNQUALIFIED
Octavia L MarrierSpainStephen Shaw QUALIFIED
Salvatore E CaldareraFranceAnna Fali RENEWAL
Nicolas B OldroydIndiaOnyama Limba NEW
Alejandro S BriddickUnited KingdomAsiya Javayant PROPOSAL
Antonio G MacleadAustraliaElwin Sharvill RENEWAL
Aika O AlbaresSpainBernardo Dominic QUALIFIED
Murillo X KuskoUnited KingdomIvan Magalhaes RENEWAL
Jones G RulapaughJapanBernardo Dominic NEGOTIATION
Silvio G InouyeItalyIvan Magalhaes NEGOTIATION
Ashley N StensethRussiaXuxue Feng NEW
Misaki Z BriddickItalyElwin Sharvill UNQUALIFIED
Silvio R BologniaItalyIoni Bowcher NEW
Nicolas U NestleItalyIvan Magalhaes PROPOSAL
Francesco M VenereFranceIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Arvin T FlosiIndiaElwin Sharvill QUALIFIED
Munro F SchemmerGermanyXuxue Feng RENEWAL
Johnson W FlosiItalyStephen Shaw RENEWAL
Deepesh A SlusarskiCanadaAsiya Javayant UNQUALIFIED
Sinclair D AlbaresCanadaAsiya Javayant RENEWAL
Kaitlin W BriddickArgentinaOnyama Limba RENEWAL
David R TollnerJapanStephen Shaw QUALIFIED
Jennifer J MarrierBrazilStephen Shaw NEGOTIATION
Johnson O IturbideSpainStephen Shaw RENEWAL
Tony N DarakjySpainAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones G KolmetzIndia2024-04-26Commercial Press UNQUALIFIED49Anna Fali
1001Faith C ButtSpain2024-04-18Buckley Miller Wright PROPOSAL93Ivan Magalhaes
1002Tony A GillianBrazil2024-05-12Commercial Press RENEWAL93Stephen Shaw
1003Maria J TollnerGermany2024-05-03Truhlar And Truhlar Attys RENEWAL17Ioni Bowcher
1004Jones X WaycottRussia2024-05-10Feiner Bros NEGOTIATION44Asiya Javayant
1005Emily T BriddickFrance2024-04-22Rousseaux, Michael Esq NEW82Bernardo Dominic
1006Smith J PaprockiArgentina2024-04-19Buckley Miller Wright QUALIFIED45Anna Fali
1007Leon X GlickBrazil2024-05-06Truhlar And Truhlar Attys QUALIFIED82Ioni Bowcher
1008Silvio K IturbideCanada2024-05-01Benton, John B Jr NEGOTIATION1Asiya Javayant
1009Clifford P TollnerFrance2024-05-10Chapman, Ross E Esq PROPOSAL35Onyama Limba
1010Jones L GlickIndia2024-05-07Feltz Printing Service NEGOTIATION34Ioni Bowcher
1011Jefferson G BologniaItaly2024-04-22Morlong Associates RENEWAL36Amy Elsner
1012Izzy C PaprockiBrazil2024-04-28Feiner Bros PROPOSAL43Onyama Limba
1013Wickens N SlusarskiArgentina2024-04-15Benton, John B Jr QUALIFIED64Xuxue Feng
1014Chavez X RulapaughJapan2024-05-04Chapman, Ross E Esq UNQUALIFIED45Amy Elsner
1015Chavez A GillianArgentina2024-04-26Truhlar And Truhlar Attys RENEWAL25Ioni Bowcher
1016Johnson E RulapaughUnited Kingdom2024-05-04Morlong Associates NEW5Onyama Limba
1017Adams B GlickGermany2024-04-19Chanay, Jeffrey A Esq PROPOSAL72Asiya Javayant
1018Jones T RimCanada2024-04-27Rousseaux, Michael Esq NEW89Anna Fali
1019Munro U FerenczFrance2024-05-10Buckley Miller Wright NEW28Amy Elsner
1020Ashley I BologniaJapan2024-05-11Feiner Bros NEGOTIATION59Asiya Javayant
1021Jeanfrancois E FlosiFrance2024-04-17Chanay, Jeffrey A Esq UNQUALIFIED7Elwin Sharvill
1022Tony Q AlbaresJapan2024-05-14Printing Dimensions RENEWAL88Stephen Shaw
1023Stacey R FollerBrazil2024-04-18Commercial Press UNQUALIFIED33Bernardo Dominic
1024Jones U GillianItaly2024-05-07Chemel, James L Cpa QUALIFIED44Elwin Sharvill
1025Maisha J PaprockiBrazil2024-05-01Buckley Miller Wright QUALIFIED84Onyama Limba
1026Deepesh V FlosiBrazil2024-04-20Commercial Press NEW80Ioni Bowcher
1027Johnson Q CaldareraBrazil2024-04-25Morlong Associates UNQUALIFIED30Xuxue Feng
1028Munro K IturbideFrance2024-05-12Benton, John B Jr PROPOSAL93Anna Fali
1029Leja Y VenereCanada2024-05-05King, Christopher A Esq NEW48Xuxue Feng
1030Costa I CaudyArgentina2024-05-10Rousseaux, Michael Esq QUALIFIED33Ioni Bowcher
1031Kaitlin F FlosiGermany2024-05-12Feiner Bros PROPOSAL97Xuxue Feng
1032Ricardo I IturbideArgentina2024-05-09Dorl, James J Esq NEGOTIATION65Elwin Sharvill
1033Silvio X FerenczItaly2024-05-10Chanay, Jeffrey A Esq NEW48Elwin Sharvill
1034Rodrigues Y WhobreyFrance2024-04-23Chapman, Ross E Esq NEW88Amy Elsner
1035James S KolmetzIndia2024-05-12King, Christopher A Esq QUALIFIED75Asiya Javayant
1036Morrow S GarufiUnited Kingdom2024-04-28Feiner Bros UNQUALIFIED61Xuxue Feng
1037Ricardo H ShinkoArgentina2024-04-15Chemel, James L Cpa UNQUALIFIED67Asiya Javayant
1038Antonio Z FigeroaAustralia2024-05-09Chapman, Ross E Esq UNQUALIFIED31Amy Elsner
1039Ivar R CaudyCanada2024-04-15Feltz Printing Service UNQUALIFIED48Bernardo Dominic
1040Maria O MorascaArgentina2024-04-23Benton, John B Jr UNQUALIFIED10Stephen Shaw
1041Costa H RutaJapan2024-04-15King, Christopher A Esq PROPOSAL51Xuxue Feng
1042Maria X NestleItaly2024-05-01Chemel, James L Cpa QUALIFIED63Stephen Shaw
1043Ricardo T StensethBrazil2024-05-11Chapman, Ross E Esq NEW34Asiya Javayant
1044Isabel Q ShinkoJapan2024-05-09Dorl, James J Esq UNQUALIFIED28Elwin Sharvill
1045Arvin E OstroskyFrance2024-04-15Truhlar And Truhlar Attys UNQUALIFIED46Ivan Magalhaes
1046Aditya K NestleGermany2024-04-27Chemel, James L Cpa NEGOTIATION82Asiya Javayant
1047Munro N MorascaBrazil2024-04-16Printing Dimensions NEGOTIATION19Ivan Magalhaes
1048Smith L MacleadRussia2024-05-07Rousseaux, Michael Esq NEW20Stephen Shaw
1049Arvin T SlusarskiAustralia2024-05-12Feiner Bros RENEWAL35Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Arvin C CampainBrazilAsiya Javayant QUALIFIED
Costa R TollnerAustraliaIoni Bowcher PROPOSAL
Alejandro U BowleyUnited KingdomIoni Bowcher RENEWAL
Izzy M PerinItalyAmy Elsner NEW
Leon B OldroydFranceXuxue Feng PROPOSAL
Aika G DilliardSpainXuxue Feng UNQUALIFIED
Francesco M MarrierAustraliaElwin Sharvill UNQUALIFIED
Mayumi S NickaArgentinaAsiya Javayant NEW
Kadeem X WhobreyIndiaStephen Shaw NEGOTIATION
Isabel Z StockhamRussiaXuxue Feng UNQUALIFIED
Maisha Z StensethBrazilBernardo Dominic UNQUALIFIED
Alejandro H GauchoFranceIoni Bowcher QUALIFIED
Maisha Y WaycottIndiaOnyama Limba RENEWAL
Silvio O CaudySpainElwin Sharvill NEW
Izzy I PoquetteCanadaOnyama Limba UNQUALIFIED
Ricardo L WaycottFranceIvan Magalhaes PROPOSAL
Adams V VocelkaFranceStephen Shaw UNQUALIFIED
Mujtaba U StensethRussiaIoni Bowcher UNQUALIFIED
Stacey F NickaGermanyStephen Shaw UNQUALIFIED
Jeanfrancois T DarakjyUnited KingdomIoni Bowcher NEGOTIATION
Jefferson E RutaJapanAsiya Javayant NEW
Aditya M MaletBrazilIoni Bowcher NEW
Leja V SaylorsItalyOnyama Limba UNQUALIFIED
Isabel E GarufiUnited KingdomElwin Sharvill UNQUALIFIED
Smith O AlbaresGermanyAnna Fali RENEWAL
Nicolas R VenereArgentinaAsiya Javayant UNQUALIFIED
Salvatore Y GlickAustraliaIoni Bowcher QUALIFIED
Ivar P VocelkaGermanyElwin Sharvill PROPOSAL
Wickens A InouyeGermanyAnna Fali RENEWAL
Jones U WieserFranceOnyama Limba NEW
Rodrigues S ShinkoRussiaXuxue Feng PROPOSAL
Chavez C PoquetteItalyIoni Bowcher NEGOTIATION
Mayumi V PerinGermanyElwin Sharvill QUALIFIED
Silvio F InouyeIndiaIvan Magalhaes RENEWAL
Aruna Y ChuiItalyOnyama Limba NEGOTIATION
Maria F BologniaFranceOnyama Limba QUALIFIED
Nicolas H MacleadFranceAsiya Javayant QUALIFIED
Misaki C MarrierUnited KingdomIoni Bowcher QUALIFIED
Ricardo Z NickaIndiaAnna Fali RENEWAL
Johnson R BologniaCanadaAsiya Javayant PROPOSAL
Leon G AmigonItalyAmy Elsner PROPOSAL
Silvio T TollnerAustraliaOnyama Limba QUALIFIED
Antonio H WaycottCanadaAmy Elsner QUALIFIED
Leon D RimRussiaBernardo Dominic NEW
Alejandro E StockhamJapanBernardo Dominic QUALIFIED
Tony H SergiIndiaAnna Fali QUALIFIED
Silvio V PerinGermanyAmy Elsner RENEWAL
Julie Q IturbideRussiaAsiya Javayant NEGOTIATION
Emily M MorascaArgentinaOnyama Limba UNQUALIFIED
Wickens D FigeroaSpainAnna Fali RENEWAL
Frozen Columns
Name
Isabel N Butt
Alejandro R Shinko
Murillo T Butt
Adams V Sergi
Smith R Rulapaugh
Jennifer X Ostrosky
Kadeem E Stenseth
Cody Q Tollner
Kaitlin T Venere
Kaitlin B Albares
Nicolas R Kusko
Leja R Saylors
Costa A Ostrosky
Claire J Paprocki
Tony P Kusko
Clifford R Bowley
Nicolas L Ferencz
Faith F Chui
Salvatore A Royster
Octavia L Vocelka
Silvio S Marrier
Ashley S Sergi
Mayumi B Chui
Kaitlin B Tollner
Emily Z Marrier
Izzy A Rim
Deepesh Q Inouye
Silvio Q Flosi
Salvatore O Nicka
Isabel U Malet
Aditya N Ruta
Darci B Doe
Stacey Y Poquette
Mayumi X Shinko
Morrow X Stenseth
Aika S Poquette
Deepesh G Chui
Munro Z Royster
Stacey U Kolmetz
Kaitlin G Poquette
Tony L Nicka
Kadeem S Waycott
David X Tollner
Misaki A Schemmer
Darci M Ruta
Isabel I Schemmer
Aditya N Schemmer
Stacey D Ostrosky
Claire E Doe
Ricardo B Ostrosky
IdCountryDate
1000Russia2024-04-17
1001France2024-04-20
1002Russia2024-04-25
1003Spain2024-05-13
1004Russia2024-04-18
1005Australia2024-04-28
1006France2024-05-06
1007Japan2024-05-01
1008United Kingdom2024-05-01
1009Australia2024-04-22
1010France2024-04-20
1011Russia2024-04-15
1012Brazil2024-05-05
1013Canada2024-05-14
1014Italy2024-05-09
1015India2024-05-13
1016Italy2024-04-25
1017Germany2024-04-27
1018Canada2024-05-04
1019Spain2024-05-07
1020Russia2024-04-28
1021India2024-05-10
1022Argentina2024-05-13
1023Argentina2024-05-07
1024Brazil2024-05-13
1025France2024-04-27
1026Australia2024-04-20
1027Argentina2024-04-24
1028Argentina2024-04-25
1029France2024-05-13
1030Japan2024-05-01
1031Canada2024-04-17
1032France2024-05-06
1033Spain2024-05-07
1034Germany2024-05-06
1035Japan2024-05-08
1036Brazil2024-05-02
1037United Kingdom2024-04-19
1038Russia2024-05-09
1039Canada2024-05-02
1040Germany2024-04-16
1041Australia2024-04-23
1042Spain2024-05-07
1043Germany2024-04-28
1044United Kingdom2024-05-02
1045Russia2024-05-07
1046Germany2024-05-07
1047Italy2024-04-23
1048Russia2024-05-08
1049Italy2024-04-30

On-Demand Data

NameIdCountryDate
Costa W Briddick1000Canada2024-04-18
Aruna R Flosi1001Russia2024-04-16
Tony I Ferencz1002United Kingdom2024-04-26
Nicolas G Schemmer1003Brazil2024-04-19
Kadeem K Butt1004Canada2024-04-18
Octavia K Malet1005Germany2024-04-19
Cody A Paprocki1006Spain2024-05-10
Cody D Gillian1007Germany2024-05-03
Mujtaba M Amigon1008France2024-05-12
Darci V Stockham1009France2024-05-11
Jeanfrancois R Butt1010India2024-04-25
Darci G Kolmetz1011Brazil2024-04-26
Johnson S Saylors1012Germany2024-05-10
Antonio L Malet1013Argentina2024-05-05
Kaitlin L Paprocki1014Japan2024-05-13
Julie O Maclead1015Canada2024-05-05
Jeanfrancois N Paprocki1016Japan2024-05-11
Costa V Morasca1017Japan2024-04-19
Rodrigues J Tollner1018United Kingdom2024-04-23
David F Whobrey1019France2024-05-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith T KuskoBrazilElwin Sharvill RENEWAL
Greenwood C DilliardAustraliaXuxue Feng NEGOTIATION
Greenwood I RulapaughGermanyAmy Elsner RENEWAL
Jennifer L TollnerRussiaAnna Fali NEGOTIATION
Adams Z ButtSpainAmy Elsner NEW
Ricardo M FlosiCanadaStephen Shaw PROPOSAL
Mayumi J TollnerArgentinaIvan Magalhaes PROPOSAL
Greenwood W WhobreyRussiaAsiya Javayant QUALIFIED
Munro Q VocelkaGermanyXuxue Feng UNQUALIFIED
Costa B MorascaAustraliaElwin Sharvill UNQUALIFIED
Rodrigues J CampainJapanAmy Elsner RENEWAL
Francesco P SchemmerArgentinaAsiya Javayant UNQUALIFIED
Johnson P GillianCanadaStephen Shaw RENEWAL
David V OldroydGermanyBernardo Dominic PROPOSAL
Darci V OldroydArgentinaIoni Bowcher NEGOTIATION
Jefferson D DarakjyGermanyElwin Sharvill NEW
Greenwood N GarufiSpainElwin Sharvill PROPOSAL
Maisha L MaletIndiaAnna Fali NEW
Leon O TollnerArgentinaXuxue Feng PROPOSAL
Costa L SlusarskiIndiaOnyama Limba UNQUALIFIED
Greenwood G VenereBrazilAnna Fali UNQUALIFIED
Ricardo Q DilliardItalyAsiya Javayant QUALIFIED
Aika L PaprockiCanadaIvan Magalhaes NEGOTIATION
Arvin P CaudyCanadaAsiya Javayant NEW
Julie R RoysterJapanAsiya Javayant NEGOTIATION
Aika B AmigonSpainAmy Elsner UNQUALIFIED
Stacey C BriddickItalyAmy Elsner PROPOSAL
Izzy V ShinkoCanadaStephen Shaw NEW
Darci A BowleyItalyElwin Sharvill NEW
Antonio D DilliardUnited KingdomOnyama Limba NEGOTIATION
Tony K AmigonArgentinaElwin Sharvill RENEWAL
Silvio N PoquetteUnited KingdomBernardo Dominic RENEWAL
David E ChuiSpainXuxue Feng NEGOTIATION
Jeanfrancois I MorascaJapanAnna Fali RENEWAL
Juan L PerinJapanAnna Fali RENEWAL
David H MaletGermanyStephen Shaw RENEWAL
James P KolmetzArgentinaBernardo Dominic PROPOSAL
Adams G GarufiRussiaStephen Shaw NEGOTIATION
Murillo A WieserSpainElwin Sharvill NEGOTIATION
Julie H AmigonAustraliaStephen Shaw 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>