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
Emily C WhobreyRussiaBernardo Dominic NEGOTIATION
Deepesh M RimUnited KingdomXuxue Feng UNQUALIFIED
Rodrigues F FigeroaCanadaAmy Elsner NEGOTIATION
Ricardo J KolmetzAustraliaAsiya Javayant RENEWAL
Aditya X StockhamJapanOnyama Limba NEW
Julie K NestleCanadaOnyama Limba PROPOSAL
Greenwood H AlbaresJapanBernardo Dominic UNQUALIFIED
Cody L PaprockiCanadaBernardo Dominic NEGOTIATION
Jones K SchemmerBrazilElwin Sharvill NEW
Faith V FerenczBrazilOnyama Limba PROPOSAL
Costa L CaudyItalyAsiya Javayant RENEWAL
Jones S WhobreyBrazilAmy Elsner NEW
Emily K MarrierBrazilStephen Shaw RENEWAL
David B KolmetzUnited KingdomIoni Bowcher NEGOTIATION
Antonio K RimUnited KingdomXuxue Feng PROPOSAL
Rodrigues F CaldareraItalyElwin Sharvill UNQUALIFIED
Jones N AlbaresGermanyIvan Magalhaes RENEWAL
Julie C IturbideAustraliaAnna Fali QUALIFIED
Jennifer O GillianRussiaIvan Magalhaes NEW
Smith P StensethRussiaAnna Fali RENEWAL
Tony T VocelkaBrazilElwin Sharvill UNQUALIFIED
Kaitlin M BowleyItalyAsiya Javayant PROPOSAL
Emily G GillianJapanXuxue Feng NEW
Mayumi B MaletUnited KingdomAsiya Javayant NEGOTIATION
Salvatore V CaldareraSpainAnna Fali NEW
Kaitlin J ShinkoIndiaBernardo Dominic RENEWAL
Jennifer K NickaRussiaXuxue Feng NEGOTIATION
Mayumi E RutaRussiaAnna Fali NEW
Nicolas F MarrierBrazilElwin Sharvill NEW
Jones Z KolmetzGermanyElwin Sharvill RENEWAL
Julie W DarakjyArgentinaAsiya Javayant PROPOSAL
Maisha A FigeroaAustraliaXuxue Feng PROPOSAL
Octavia E FlosiSpainAsiya Javayant NEW
Tony O GlickRussiaIoni Bowcher UNQUALIFIED
Mayumi J CaldareraBrazilAnna Fali RENEWAL
Cody D NickaAustraliaStephen Shaw PROPOSAL
Ashley Z VenereGermanyAnna Fali UNQUALIFIED
Arvin I MorascaUnited KingdomIvan Magalhaes NEW
Murillo G ButtSpainIvan Magalhaes PROPOSAL
Deepesh U KuskoCanadaStephen Shaw NEGOTIATION
Murillo C CaldareraCanadaAmy Elsner QUALIFIED
David G InouyeJapanAmy Elsner QUALIFIED
Antonio W NickaJapanIvan Magalhaes NEGOTIATION
Wickens Y ShinkoItalyXuxue Feng RENEWAL
Antonio D NickaFranceAnna Fali PROPOSAL
Antonio S PaprockiFranceAsiya Javayant UNQUALIFIED
Isabel H PaprockiRussiaXuxue Feng RENEWAL
Misaki B SlusarskiFranceAmy Elsner NEW
Antonio X BowleyGermanyIoni Bowcher UNQUALIFIED
Johnson N GillianUnited KingdomElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Adams Y PerinArgentinaStephen Shaw UNQUALIFIED
Chavez U VenereFranceAsiya Javayant NEGOTIATION
Rodrigues Y WaycottIndiaIoni Bowcher PROPOSAL
Antonio B StockhamIndiaAmy Elsner NEW
Deepesh Z WaycottAustraliaIvan Magalhaes NEGOTIATION
David R WaycottItalyIoni Bowcher RENEWAL
Jones T AlbaresGermanyElwin Sharvill NEGOTIATION
Ivar A NickaAustraliaAsiya Javayant RENEWAL
Stacey B DilliardJapanAmy Elsner NEGOTIATION
Arvin P MarrierSpainElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily M CampainGermany2024-04-21Feiner Bros UNQUALIFIED19Ioni Bowcher
1001Chavez K GillianItaly2024-04-06Chapman, Ross E Esq UNQUALIFIED57Stephen Shaw
1002Misaki W PerinItaly2024-04-02Benton, John B Jr NEW89Bernardo Dominic
1003Faith L MarrierFrance2024-04-05Commercial Press RENEWAL89Amy Elsner
1004Jeanfrancois N PaprockiRussia2024-03-31Truhlar And Truhlar Attys NEGOTIATION11Amy Elsner
1005Juan Y PoquetteItaly2024-03-28King, Christopher A Esq NEW90Elwin Sharvill
1006Isabel X BowleyCanada2024-03-29Chapman, Ross E Esq RENEWAL47Xuxue Feng
1007Kaitlin R NestleIndia2024-04-15Chanay, Jeffrey A Esq QUALIFIED14Stephen Shaw
1008Aruna I VenereRussia2024-04-18Rousseaux, Michael Esq UNQUALIFIED9Ioni Bowcher
1009Jeanfrancois C GarufiUnited Kingdom2024-04-10Rangoni Of Florence NEGOTIATION38Xuxue Feng
1010Leja Q FerenczFrance2024-04-02Feltz Printing Service PROPOSAL95Ioni Bowcher
1011Murillo F MarrierUnited Kingdom2024-04-21Buckley Miller Wright NEGOTIATION96Ioni Bowcher
1012Kaitlin P RoysterIndia2024-04-19Truhlar And Truhlar Attys NEW30Xuxue Feng
1013Ricardo A FigeroaJapan2024-04-03Chapman, Ross E Esq QUALIFIED38Stephen Shaw
1014Jefferson N MaletItaly2024-04-23Dorl, James J Esq NEW3Bernardo Dominic
1015Aika N CaudyArgentina2024-04-14Rangoni Of Florence RENEWAL47Ivan Magalhaes
1016Ricardo E FollerCanada2024-04-09Commercial Press UNQUALIFIED70Asiya Javayant
1017Maisha O FerenczItaly2024-04-04King, Christopher A Esq NEW52Onyama Limba
1018Misaki T GlickGermany2024-04-26Buckley Miller Wright RENEWAL37Onyama Limba
1019Johnson O BologniaJapan2024-04-10Feltz Printing Service UNQUALIFIED85Amy Elsner
1020Adams G OstroskyJapan2024-04-18Chanay, Jeffrey A Esq QUALIFIED2Amy Elsner
1021Arvin P CaudyArgentina2024-04-07King, Christopher A Esq NEW24Asiya Javayant
1022Nicolas H ChuiFrance2024-04-19Feiner Bros NEGOTIATION42Stephen Shaw
1023Greenwood R BologniaArgentina2024-04-09Rousseaux, Michael Esq NEGOTIATION32Anna Fali
1024Mujtaba L VocelkaJapan2024-03-28Printing Dimensions RENEWAL76Onyama Limba
1025Ivar A RoysterArgentina2024-04-04Benton, John B Jr PROPOSAL60Stephen Shaw
1026Nicolas O BologniaRussia2024-04-22Commercial Press NEGOTIATION16Elwin Sharvill
1027Leja Z FerenczFrance2024-04-21Truhlar And Truhlar Attys PROPOSAL2Onyama Limba
1028Claire Z RoysterBrazil2024-04-07Feltz Printing Service NEGOTIATION83Amy Elsner
1029Claire F PaprockiGermany2024-03-30Dorl, James J Esq QUALIFIED47Stephen Shaw
1030Faith B GlickFrance2024-04-05Rousseaux, Michael Esq QUALIFIED56Xuxue Feng
1031Ivar M DoeRussia2024-04-20Rangoni Of Florence UNQUALIFIED24Bernardo Dominic
1032Chavez Q OldroydJapan2024-03-31Dorl, James J Esq RENEWAL62Ioni Bowcher
1033Nicolas J RimSpain2024-04-13Feiner Bros NEGOTIATION95Amy Elsner
1034Darci C SergiFrance2024-04-18Printing Dimensions PROPOSAL3Bernardo Dominic
1035Misaki S FollerGermany2024-04-16Chapman, Ross E Esq RENEWAL80Anna Fali
1036Stacey C RulapaughRussia2024-04-26Truhlar And Truhlar Attys PROPOSAL38Bernardo Dominic
1037Tony S MorascaGermany2024-04-07Benton, John B Jr RENEWAL9Anna Fali
1038Smith N RimUnited Kingdom2024-04-14King, Christopher A Esq NEGOTIATION57Elwin Sharvill
1039Smith G FerenczUnited Kingdom2024-04-22Rousseaux, Michael Esq RENEWAL94Ioni Bowcher
1040Izzy V WhobreyBrazil2024-04-12Printing Dimensions QUALIFIED21Bernardo Dominic
1041Nicolas C MaletAustralia2024-04-08Buckley Miller Wright UNQUALIFIED54Asiya Javayant
1042Antonio Z OstroskyAustralia2024-04-21Feiner Bros QUALIFIED94Bernardo Dominic
1043Izzy H AlbaresFrance2024-04-01Rangoni Of Florence NEGOTIATION78Ioni Bowcher
1044Kaitlin U BologniaSpain2024-04-03King, Christopher A Esq RENEWAL68Elwin Sharvill
1045Jeanfrancois L KuskoJapan2024-04-13Truhlar And Truhlar Attys PROPOSAL59Asiya Javayant
1046Greenwood B ShinkoJapan2024-04-05Commercial Press NEW99Elwin Sharvill
1047Darci L DoeSpain2024-04-17King, Christopher A Esq NEW53Bernardo Dominic
1048Stacey D MacleadIndia2024-04-21Printing Dimensions QUALIFIED35Asiya Javayant
1049Claire W OldroydJapan2024-04-25Feltz Printing Service PROPOSAL27Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Greenwood I BriddickCanadaOnyama Limba UNQUALIFIED
Smith G DarakjyBrazilIoni Bowcher PROPOSAL
Juan W MarrierIndiaElwin Sharvill NEGOTIATION
Mujtaba O TollnerArgentinaAsiya Javayant PROPOSAL
Ashley I GlickAustraliaAnna Fali QUALIFIED
Jefferson D IturbideIndiaXuxue Feng NEW
Kadeem M ChuiSpainIvan Magalhaes NEW
Nicolas L WhobreyCanadaAsiya Javayant NEGOTIATION
Juan J ShinkoArgentinaAnna Fali UNQUALIFIED
Maria P SlusarskiIndiaIvan Magalhaes NEW
Deepesh E FerenczAustraliaElwin Sharvill NEGOTIATION
Silvio R MorascaItalyAnna Fali NEW
Costa B WhobreyAustraliaOnyama Limba NEGOTIATION
Adams G MaletFranceElwin Sharvill NEW
Munro L PaprockiItalyBernardo Dominic RENEWAL
Mujtaba B IturbideIndiaStephen Shaw PROPOSAL
Chavez K PaprockiCanadaStephen Shaw QUALIFIED
Maisha T AlbaresJapanBernardo Dominic QUALIFIED
Costa O MacleadFranceOnyama Limba UNQUALIFIED
Clifford F CampainJapanIvan Magalhaes UNQUALIFIED
Wickens U CaudyAustraliaAsiya Javayant RENEWAL
Silvio F NickaRussiaIvan Magalhaes RENEWAL
Cody T DilliardSpainStephen Shaw UNQUALIFIED
Chavez T WhobreyGermanyStephen Shaw QUALIFIED
Smith X GlickUnited KingdomAsiya Javayant NEGOTIATION
Emily A CampainFranceXuxue Feng RENEWAL
Morrow J KolmetzItalyStephen Shaw PROPOSAL
Deepesh E MaletUnited KingdomAnna Fali NEW
Ricardo H GauchoUnited KingdomElwin Sharvill NEGOTIATION
David A MaletFranceIvan Magalhaes NEW
Aika H DoeJapanIoni Bowcher NEGOTIATION
Mujtaba R MarrierArgentinaIvan Magalhaes UNQUALIFIED
Antonio X MarrierJapanElwin Sharvill PROPOSAL
Aruna S BowleyCanadaIoni Bowcher NEGOTIATION
Johnson S PerinUnited KingdomAnna Fali RENEWAL
Mujtaba I VenereFranceAsiya Javayant NEW
James O AlbaresJapanStephen Shaw NEW
Aika K AmigonGermanyAsiya Javayant NEW
Stacey J SergiGermanyIoni Bowcher PROPOSAL
Ashley A SlusarskiRussiaIoni Bowcher QUALIFIED
Cody V OldroydAustraliaStephen Shaw PROPOSAL
Misaki A KolmetzIndiaAmy Elsner PROPOSAL
Adams E KolmetzRussiaAmy Elsner UNQUALIFIED
Wickens M BologniaIndiaElwin Sharvill NEGOTIATION
Claire J BriddickJapanAsiya Javayant RENEWAL
Octavia D NestleArgentinaXuxue Feng UNQUALIFIED
Wickens P KolmetzGermanyOnyama Limba NEGOTIATION
Aditya R BowleyJapanIoni Bowcher QUALIFIED
Misaki W NestleUnited KingdomBernardo Dominic NEW
Arvin U RimArgentinaIvan Magalhaes NEW
Frozen Columns
Name
Ashley R Rim
Rodrigues Z Gillian
Silvio K Tollner
Greenwood L Gaucho
Maria J Bowley
Sinclair L Poquette
Juan G Sergi
Faith Y Rim
Costa C Whobrey
Murillo Z Venere
Claire N Kolmetz
Faith U Waycott
Maisha Q Ruta
Sinclair R Rim
Leon N Ruta
Emily Z Caldarera
Costa L Iturbide
Kadeem K Nestle
Izzy J Bolognia
Nicolas R Malet
James Q Kusko
Kaitlin Q Bolognia
Faith N Stenseth
Nicolas K Flosi
Claire D Ruta
Leon U Iturbide
Clifford S Butt
Cody Y Malet
Jones O Oldroyd
Kaitlin V Figeroa
Ricardo B Nicka
Ricardo P Glick
Jeanfrancois V Gillian
Stacey W Ruta
Mayumi B Figeroa
Nicolas N Garufi
Silvio Z Waycott
Arvin Z Waycott
Kaitlin B Butt
Julie Q Dilliard
Salvatore R Whobrey
Smith J Ferencz
Morrow L Dilliard
Alejandro I Oldroyd
Silvio V Iturbide
Deepesh B Darakjy
Leja L Marrier
Emily U Kolmetz
Munro C Briddick
Aruna T Campain
IdCountryDate
1000United Kingdom2024-04-13
1001France2024-04-16
1002Australia2024-04-09
1003France2024-04-08
1004Russia2024-04-15
1005Canada2024-04-17
1006Spain2024-04-15
1007Germany2024-04-09
1008Australia2024-04-22
1009Japan2024-04-24
1010Australia2024-04-10
1011France2024-04-08
1012India2024-03-31
1013Argentina2024-04-05
1014Germany2024-04-22
1015Australia2024-04-23
1016United Kingdom2024-04-18
1017India2024-04-03
1018Australia2024-04-22
1019Canada2024-04-19
1020France2024-04-14
1021Brazil2024-04-08
1022Russia2024-04-12
1023Japan2024-03-30
1024Germany2024-04-08
1025United Kingdom2024-04-23
1026India2024-04-07
1027Canada2024-04-19
1028Japan2024-04-10
1029Russia2024-04-24
1030Italy2024-03-29
1031Argentina2024-04-26
1032France2024-04-20
1033Russia2024-04-12
1034Canada2024-04-21
1035Brazil2024-04-04
1036Brazil2024-04-19
1037Germany2024-04-26
1038Brazil2024-04-23
1039Canada2024-04-11
1040Italy2024-04-01
1041Russia2024-04-13
1042Germany2024-04-23
1043Italy2024-04-09
1044Italy2024-04-07
1045Argentina2024-04-17
1046France2024-04-11
1047Brazil2024-04-15
1048Italy2024-04-09
1049Japan2024-04-11

On-Demand Data

NameIdCountryDate
Greenwood G Darakjy1000Argentina2024-04-10
Mujtaba W Paprocki1001United Kingdom2024-04-24
Tony Q Nicka1002United Kingdom2024-04-05
Clifford K Royster1003Japan2024-04-18
Cody A Bowley1004Argentina2024-04-01
Faith N Sergi1005Australia2024-04-07
Costa T Poquette1006Germany2024-04-06
Aruna Y Ferencz1007France2024-04-03
Alejandro Q Ferencz1008United Kingdom2024-04-11
David R Ostrosky1009United Kingdom2024-04-04
Faith D Chui1010Canada2024-04-22
Misaki E Vocelka1011United Kingdom2024-04-23
Arvin R Marrier1012Japan2024-04-07
Leon O Albares1013Brazil2024-03-31
Leja U Stockham1014India2024-03-29
Chavez Q Whobrey1015Italy2024-04-22
Ivar V Kusko1016Japan2024-04-14
Faith G Kolmetz1017Italy2024-04-23
Maisha A Vocelka1018Italy2024-04-25
James L Royster1019United Kingdom2024-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson B WieserIndiaStephen Shaw NEW
James B KuskoSpainAsiya Javayant QUALIFIED
Antonio E SchemmerRussiaAsiya Javayant NEGOTIATION
Izzy P OldroydUnited KingdomBernardo Dominic NEGOTIATION
Aruna C SergiFranceIvan Magalhaes RENEWAL
Cody H NickaGermanyBernardo Dominic NEGOTIATION
Claire J OstroskyAustraliaElwin Sharvill PROPOSAL
Emily C NestleRussiaIvan Magalhaes PROPOSAL
Francesco F GauchoArgentinaIoni Bowcher PROPOSAL
Claire J MaletArgentinaAsiya Javayant NEW
Izzy P GlickFranceOnyama Limba UNQUALIFIED
Ivar V NestleSpainXuxue Feng NEW
Nicolas B BowleySpainOnyama Limba PROPOSAL
Antonio S IturbideAustraliaIoni Bowcher RENEWAL
Kaitlin L FerenczSpainAsiya Javayant RENEWAL
Faith T VocelkaJapanAmy Elsner PROPOSAL
Leja C FigeroaRussiaAmy Elsner UNQUALIFIED
Munro N VocelkaIndiaAsiya Javayant UNQUALIFIED
Antonio P FlosiUnited KingdomAnna Fali QUALIFIED
Greenwood V SaylorsGermanyElwin Sharvill QUALIFIED
Francesco G AlbaresJapanBernardo Dominic PROPOSAL
Alejandro R FigeroaFranceXuxue Feng UNQUALIFIED
Costa A PoquetteGermanyAnna Fali PROPOSAL
Alejandro C FlosiArgentinaAsiya Javayant RENEWAL
Maisha L OldroydItalyIvan Magalhaes RENEWAL
Isabel O OldroydJapanIoni Bowcher NEGOTIATION
Aika T StensethArgentinaAsiya Javayant RENEWAL
Kaitlin C MaletRussiaOnyama Limba PROPOSAL
Munro E FerenczGermanyIoni Bowcher PROPOSAL
Maisha Q CaldareraIndiaAnna Fali RENEWAL
Antonio K DarakjyAustraliaStephen Shaw PROPOSAL
Misaki J KolmetzAustraliaXuxue Feng QUALIFIED
Antonio E WaycottIndiaBernardo Dominic NEGOTIATION
Wickens P FerenczItalyAsiya Javayant RENEWAL
Rodrigues N RulapaughCanadaAsiya Javayant PROPOSAL
Aika F RoysterGermanyIvan Magalhaes UNQUALIFIED
Darci X StockhamCanadaElwin Sharvill PROPOSAL
Nicolas C GarufiAustraliaAmy Elsner NEW
Adams S DarakjyCanadaAsiya Javayant NEGOTIATION
Julie H BriddickGermanyAnna Fali 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>