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
Nicolas K SaylorsFranceElwin Sharvill NEW
Clifford Y ButtArgentinaAmy Elsner UNQUALIFIED
Jennifer A SchemmerCanadaIoni Bowcher QUALIFIED
Smith R SaylorsSpainAsiya Javayant PROPOSAL
Aika O CaldareraIndiaStephen Shaw QUALIFIED
Rodrigues A NickaItalyAmy Elsner QUALIFIED
Mujtaba M OldroydFranceAnna Fali PROPOSAL
Ricardo P GillianUnited KingdomElwin Sharvill UNQUALIFIED
Jones A GillianIndiaOnyama Limba NEGOTIATION
Izzy G BriddickAustraliaIoni Bowcher NEGOTIATION
Leja W OstroskySpainBernardo Dominic QUALIFIED
Aditya W KuskoArgentinaXuxue Feng PROPOSAL
Aditya V BologniaItalyXuxue Feng NEGOTIATION
Murillo P KolmetzJapanAmy Elsner NEGOTIATION
Kadeem L RutaArgentinaOnyama Limba NEW
James B VocelkaIndiaIoni Bowcher NEW
Stacey D PerinCanadaStephen Shaw NEW
Mayumi A NestleSpainAnna Fali QUALIFIED
Leja U CampainUnited KingdomElwin Sharvill UNQUALIFIED
Salvatore B GlickRussiaAmy Elsner UNQUALIFIED
Darci S TollnerBrazilAmy Elsner NEW
Jeanfrancois T MacleadSpainAsiya Javayant NEW
Ashley L CampainBrazilStephen Shaw NEW
Nicolas O BowleyBrazilIoni Bowcher RENEWAL
Misaki W RulapaughGermanyOnyama Limba NEW
Costa D AlbaresItalyOnyama Limba NEW
Arvin Z StockhamArgentinaBernardo Dominic UNQUALIFIED
Stacey Y KolmetzArgentinaBernardo Dominic NEGOTIATION
Murillo K ChuiUnited KingdomStephen Shaw RENEWAL
Jones B FollerFranceBernardo Dominic NEW
David J BowleyBrazilAsiya Javayant UNQUALIFIED
Mujtaba B ChuiJapanIoni Bowcher QUALIFIED
Izzy H ChuiGermanyIvan Magalhaes RENEWAL
Tony G GauchoArgentinaAmy Elsner NEGOTIATION
Alejandro E SergiRussiaOnyama Limba UNQUALIFIED
Silvio S FollerSpainAmy Elsner RENEWAL
Chavez P GillianItalyIoni Bowcher QUALIFIED
Tony B WaycottBrazilBernardo Dominic NEGOTIATION
Chavez G FigeroaUnited KingdomBernardo Dominic QUALIFIED
Mayumi K CaudyAustraliaStephen Shaw NEW
Francesco O MorascaCanadaAnna Fali NEW
Jeanfrancois X ChuiCanadaAnna Fali NEGOTIATION
Costa B GillianUnited KingdomAmy Elsner QUALIFIED
Alejandro T InouyeItalyBernardo Dominic NEGOTIATION
Sinclair K MacleadBrazilAmy Elsner NEW
Chavez R RoysterJapanElwin Sharvill RENEWAL
Tony G FlosiFranceIvan Magalhaes PROPOSAL
Stacey L TollnerRussiaIvan Magalhaes UNQUALIFIED
Jennifer T OstroskyAustraliaBernardo Dominic UNQUALIFIED
Deepesh Z BriddickArgentinaIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Johnson K MaletSpainStephen Shaw RENEWAL
Adams L BriddickRussiaIoni Bowcher QUALIFIED
Emily I KolmetzCanadaIvan Magalhaes UNQUALIFIED
Claire I SaylorsSpainElwin Sharvill PROPOSAL
Ricardo E SergiIndiaIoni Bowcher NEGOTIATION
Ashley Q WieserRussiaAmy Elsner UNQUALIFIED
Juan O DoeJapanElwin Sharvill PROPOSAL
Ashley Z ShinkoRussiaAmy Elsner QUALIFIED
Octavia H KuskoCanadaIoni Bowcher NEW
Murillo E GauchoBrazilBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony A StensethItaly2024-04-15Printing Dimensions RENEWAL81Ivan Magalhaes
1001David W PaprockiUnited Kingdom2024-04-09Printing Dimensions PROPOSAL29Amy Elsner
1002Kaitlin D RoysterItaly2024-04-16Buckley Miller Wright NEGOTIATION42Stephen Shaw
1003Salvatore E AlbaresAustralia2024-04-17King, Christopher A Esq NEGOTIATION36Amy Elsner
1004Leon S BologniaRussia2024-04-12Buckley Miller Wright PROPOSAL38Elwin Sharvill
1005James Q ChuiSpain2024-03-31Rangoni Of Florence QUALIFIED41Anna Fali
1006Johnson D MaletJapan2024-04-12Truhlar And Truhlar Attys NEGOTIATION81Bernardo Dominic
1007Munro Z ChuiArgentina2024-03-28King, Christopher A Esq UNQUALIFIED48Elwin Sharvill
1008Juan D WieserAustralia2024-04-11Rousseaux, Michael Esq QUALIFIED71Anna Fali
1009Ashley D DoeFrance2024-04-14Printing Dimensions NEW45Ioni Bowcher
1010Johnson G PerinSpain2024-04-05Feiner Bros PROPOSAL40Ioni Bowcher
1011Maria L ButtRussia2024-03-27King, Christopher A Esq NEW48Onyama Limba
1012Kadeem A GarufiGermany2024-04-08Feiner Bros PROPOSAL58Xuxue Feng
1013Alejandro G BologniaGermany2024-04-18Rangoni Of Florence NEW47Onyama Limba
1014Aruna Y RoysterGermany2024-03-28Dorl, James J Esq QUALIFIED72Ivan Magalhaes
1015Chavez B AmigonRussia2024-03-29Printing Dimensions UNQUALIFIED52Stephen Shaw
1016Alejandro L FlosiAustralia2024-04-18Dorl, James J Esq UNQUALIFIED84Bernardo Dominic
1017James N KolmetzFrance2024-03-30Rousseaux, Michael Esq NEW95Asiya Javayant
1018Arvin L MacleadGermany2024-03-20Rangoni Of Florence RENEWAL66Bernardo Dominic
1019Kaitlin I GauchoGermany2024-04-07Chanay, Jeffrey A Esq PROPOSAL32Onyama Limba
1020Murillo N SergiCanada2024-04-18King, Christopher A Esq PROPOSAL38Elwin Sharvill
1021Mujtaba N GarufiFrance2024-03-31Feiner Bros PROPOSAL11Ivan Magalhaes
1022Ivar P SaylorsGermany2024-03-25Rousseaux, Michael Esq NEGOTIATION18Ivan Magalhaes
1023Adams G FollerGermany2024-04-18Morlong Associates UNQUALIFIED39Ivan Magalhaes
1024Izzy E MaletUnited Kingdom2024-04-03Feiner Bros NEW32Xuxue Feng
1025Clifford W WaycottRussia2024-04-01Rousseaux, Michael Esq PROPOSAL77Elwin Sharvill
1026Julie D AmigonArgentina2024-04-01Feiner Bros NEGOTIATION11Ioni Bowcher
1027Kadeem I GlickAustralia2024-04-02Commercial Press UNQUALIFIED11Ioni Bowcher
1028Nicolas I SaylorsArgentina2024-04-09Rangoni Of Florence RENEWAL68Anna Fali
1029Salvatore N GauchoUnited Kingdom2024-04-04Rangoni Of Florence NEW91Xuxue Feng
1030Ricardo G DilliardJapan2024-03-30Printing Dimensions PROPOSAL73Elwin Sharvill
1031Francesco N BriddickFrance2024-04-04King, Christopher A Esq UNQUALIFIED49Ivan Magalhaes
1032Ricardo I MacleadArgentina2024-04-12Dorl, James J Esq RENEWAL31Bernardo Dominic
1033Mayumi B GillianAustralia2024-04-18Dorl, James J Esq QUALIFIED86Amy Elsner
1034James M FollerAustralia2024-03-20Chanay, Jeffrey A Esq PROPOSAL14Bernardo Dominic
1035Sinclair X OldroydBrazil2024-03-25Chapman, Ross E Esq PROPOSAL12Anna Fali
1036Claire E KuskoRussia2024-04-12Printing Dimensions RENEWAL67Amy Elsner
1037Wickens V CampainCanada2024-03-24Rousseaux, Michael Esq PROPOSAL40Onyama Limba
1038Stacey L RutaCanada2024-04-15Buckley Miller Wright UNQUALIFIED22Ioni Bowcher
1039Ricardo X SaylorsSpain2024-03-31Chemel, James L Cpa NEGOTIATION95Xuxue Feng
1040Kaitlin T FlosiBrazil2024-04-10Buckley Miller Wright NEW6Xuxue Feng
1041Cody V MorascaItaly2024-03-27Benton, John B Jr RENEWAL89Elwin Sharvill
1042Wickens A DilliardJapan2024-04-13Buckley Miller Wright UNQUALIFIED4Bernardo Dominic
1043Johnson Z MarrierGermany2024-03-23Commercial Press NEGOTIATION89Anna Fali
1044Jeanfrancois L OstroskyIndia2024-04-16Feiner Bros NEW99Bernardo Dominic
1045Isabel W CaldareraSpain2024-04-14Commercial Press PROPOSAL26Ivan Magalhaes
1046Clifford D MacleadGermany2024-04-18Morlong Associates NEW4Xuxue Feng
1047Leon O BologniaFrance2024-03-22Chanay, Jeffrey A Esq UNQUALIFIED33Xuxue Feng
1048James Q DoeCanada2024-04-01Feiner Bros PROPOSAL39Asiya Javayant
1049Cody S MarrierAustralia2024-03-23Morlong Associates UNQUALIFIED34Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Stacey G RulapaughCanadaBernardo Dominic UNQUALIFIED
Izzy I CaldareraIndiaBernardo Dominic NEW
Darci J ButtIndiaAmy Elsner UNQUALIFIED
Julie D DoeSpainXuxue Feng NEW
Adams L MarrierJapanXuxue Feng RENEWAL
Arvin L AlbaresJapanAnna Fali UNQUALIFIED
Sinclair F InouyeItalyXuxue Feng NEW
Juan T ButtCanadaAmy Elsner NEW
Misaki A WhobreyJapanBernardo Dominic PROPOSAL
Misaki Q CaldareraGermanyOnyama Limba NEGOTIATION
Leon N ButtUnited KingdomAnna Fali UNQUALIFIED
Munro F VenereSpainAsiya Javayant NEGOTIATION
Murillo V DilliardArgentinaStephen Shaw NEGOTIATION
Antonio V DilliardRussiaIvan Magalhaes RENEWAL
Silvio N SergiBrazilBernardo Dominic NEGOTIATION
Cody S MacleadRussiaAsiya Javayant QUALIFIED
Aika E AmigonCanadaAmy Elsner RENEWAL
Mayumi E MaletAustraliaBernardo Dominic RENEWAL
Julie O WieserJapanBernardo Dominic PROPOSAL
Smith B BologniaSpainAmy Elsner NEGOTIATION
Darci A KuskoCanadaIvan Magalhaes NEW
Costa B BowleyIndiaIoni Bowcher QUALIFIED
Octavia U RimRussiaElwin Sharvill PROPOSAL
Wickens R BowleyUnited KingdomAsiya Javayant UNQUALIFIED
David J OstroskyUnited KingdomAnna Fali RENEWAL
James V VenereFranceOnyama Limba NEW
Leon W StensethGermanyOnyama Limba RENEWAL
Leja Q StockhamGermanyAmy Elsner QUALIFIED
Mayumi D GillianItalyBernardo Dominic RENEWAL
Salvatore Q KuskoUnited KingdomIvan Magalhaes PROPOSAL
Jennifer K NickaCanadaAnna Fali NEW
Jefferson G MaletArgentinaXuxue Feng NEW
Johnson E KuskoAustraliaIoni Bowcher NEW
Munro N MarrierJapanElwin Sharvill UNQUALIFIED
Leon T ButtArgentinaXuxue Feng NEGOTIATION
Leja N DarakjyJapanIoni Bowcher PROPOSAL
Stacey P ChuiItalyOnyama Limba UNQUALIFIED
Aditya R RulapaughUnited KingdomElwin Sharvill PROPOSAL
Claire C RutaJapanIoni Bowcher UNQUALIFIED
David V IturbideFranceOnyama Limba RENEWAL
Kadeem K MarrierCanadaIvan Magalhaes PROPOSAL
Aditya K CampainItalyStephen Shaw NEW
Misaki Y MaletItalyIvan Magalhaes RENEWAL
Chavez U MarrierGermanyIvan Magalhaes QUALIFIED
Silvio Q OstroskyIndiaOnyama Limba NEW
Johnson F ShinkoJapanBernardo Dominic QUALIFIED
Cody Z KuskoFranceElwin Sharvill RENEWAL
Octavia K BologniaRussiaIoni Bowcher NEW
Sinclair J WaycottCanadaAnna Fali NEW
Smith L DoeItalyAmy Elsner PROPOSAL
Frozen Columns
Name
Jeanfrancois T Rim
Emily H Briddick
Chavez N Royster
Ricardo H Malet
Silvio P Venere
Ivar M Gaucho
Faith N Ferencz
Stacey I Foller
Cody D Royster
Ivar D Stockham
Darci T Nicka
Aditya W Rim
Silvio S Stockham
Alejandro R Rim
Juan O Bowley
Greenwood U Kusko
Emily H Vocelka
Morrow M Paprocki
Maisha H Saylors
Claire L Inouye
Darci D Whobrey
Julie I Ostrosky
Aditya G Royster
Izzy W Whobrey
Claire S Albares
Francesco K Morasca
Adams I Poquette
Ivar M Flosi
Ashley N Royster
Stacey Y Royster
Jones U Inouye
Kaitlin C Shinko
Ricardo P Paprocki
Chavez W Caldarera
Misaki K Inouye
Misaki S Foller
Mayumi O Briddick
Greenwood F Doe
Darci R Royster
Tony Y Nestle
Stacey U Perin
Mujtaba F Ruta
Arvin Y Morasca
Clifford L Glick
Stacey J Flosi
Aika Z Sergi
Wickens V Slusarski
Mayumi T Malet
Isabel D Waycott
Jones P Saylors
IdCountryDate
1000Japan2024-04-07
1001Brazil2024-03-29
1002Argentina2024-03-28
1003Spain2024-03-25
1004Germany2024-04-17
1005Canada2024-03-26
1006Russia2024-04-11
1007United Kingdom2024-03-21
1008Italy2024-04-06
1009India2024-04-05
1010Russia2024-04-10
1011Germany2024-03-29
1012United Kingdom2024-03-23
1013Australia2024-04-06
1014Australia2024-04-11
1015United Kingdom2024-04-08
1016India2024-04-17
1017Germany2024-03-22
1018Spain2024-04-17
1019France2024-03-31
1020United Kingdom2024-03-20
1021Japan2024-03-29
1022Spain2024-04-09
1023Canada2024-04-18
1024Argentina2024-03-30
1025Australia2024-04-07
1026Argentina2024-03-29
1027Russia2024-04-13
1028Canada2024-03-24
1029Spain2024-03-27
1030Canada2024-04-08
1031Brazil2024-04-06
1032Australia2024-04-11
1033Argentina2024-03-23
1034Australia2024-04-11
1035Brazil2024-04-02
1036India2024-03-26
1037Canada2024-03-20
1038India2024-04-17
1039United Kingdom2024-03-29
1040France2024-04-15
1041Brazil2024-04-17
1042India2024-04-09
1043Argentina2024-03-26
1044Japan2024-03-21
1045Spain2024-04-18
1046Canada2024-04-14
1047India2024-04-18
1048France2024-03-23
1049United Kingdom2024-04-01

On-Demand Data

NameIdCountryDate
Octavia P Rim1000Australia2024-04-05
Ricardo O Stenseth1001Italy2024-04-07
James L Rim1002Japan2024-04-17
Antonio A Marrier1003Italy2024-04-10
Leon Y Stockham1004Canada2024-03-28
Izzy P Maclead1005United Kingdom2024-04-16
Faith S Kolmetz1006Canada2024-03-25
Stacey Z Wieser1007Canada2024-04-15
Smith Q Caldarera1008Australia2024-04-09
Emily U Figeroa1009Russia2024-04-10
Greenwood Z Amigon1010Brazil2024-04-13
Maisha A Albares1011Argentina2024-04-06
Costa X Amigon1012Argentina2024-04-06
Emily B Flosi1013Russia2024-04-16
Jones P Poquette1014Germany2024-03-21
Aditya U Rulapaugh1015Germany2024-04-17
Leon K Malet1016Australia2024-04-15
Clifford E Sergi1017India2024-04-15
Murillo Z Nicka1018Italy2024-03-27
Maria C Kolmetz1019Argentina2024-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez H MaletArgentinaAnna Fali RENEWAL
Aditya D ChuiRussiaElwin Sharvill NEGOTIATION
Misaki W FlosiUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson K RoysterIndiaIoni Bowcher NEGOTIATION
Morrow D MaletIndiaAsiya Javayant UNQUALIFIED
Jefferson T PaprockiAustraliaOnyama Limba RENEWAL
Kaitlin L KolmetzSpainStephen Shaw RENEWAL
Mujtaba Z CampainUnited KingdomAmy Elsner PROPOSAL
Maisha X DoeArgentinaAsiya Javayant NEW
Nicolas K CaldareraBrazilOnyama Limba NEGOTIATION
Sinclair T NestleAustraliaElwin Sharvill NEGOTIATION
Ivar V CaudyArgentinaIvan Magalhaes UNQUALIFIED
Nicolas V SchemmerCanadaIoni Bowcher RENEWAL
Stacey F BowleyIndiaBernardo Dominic RENEWAL
Sinclair V BriddickRussiaAsiya Javayant QUALIFIED
Francesco P CaldareraBrazilXuxue Feng NEW
Mujtaba L CampainSpainAmy Elsner UNQUALIFIED
Rodrigues L IturbideFranceAmy Elsner QUALIFIED
Octavia L BowleyJapanAsiya Javayant NEW
Alejandro B PoquetteCanadaAsiya Javayant UNQUALIFIED
Julie V StensethItalyAmy Elsner NEGOTIATION
Johnson C IturbideBrazilOnyama Limba QUALIFIED
Emily P NestleSpainAsiya Javayant NEGOTIATION
Claire T RimFranceIoni Bowcher QUALIFIED
Aika J FerenczUnited KingdomIvan Magalhaes NEGOTIATION
Smith K CaldareraRussiaBernardo Dominic PROPOSAL
Stacey L FlosiCanadaStephen Shaw NEGOTIATION
Octavia F CaldareraSpainXuxue Feng NEGOTIATION
Julie C OldroydGermanyAsiya Javayant UNQUALIFIED
Kaitlin S OstroskyGermanyStephen Shaw QUALIFIED
Antonio S AmigonArgentinaAsiya Javayant QUALIFIED
Kadeem X StockhamBrazilOnyama Limba RENEWAL
Kadeem H NestleJapanOnyama Limba NEGOTIATION
Rodrigues Y CampainAustraliaIvan Magalhaes UNQUALIFIED
Murillo J DilliardFranceAmy Elsner UNQUALIFIED
Leja N MorascaRussiaStephen Shaw NEGOTIATION
Smith V CaldareraIndiaOnyama Limba NEW
Mujtaba A DarakjyJapanBernardo Dominic RENEWAL
Julie N FigeroaIndiaAmy Elsner UNQUALIFIED
Darci P FigeroaArgentinaAnna Fali 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>