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 Q ChuiBrazilIoni Bowcher PROPOSAL
Arvin X VenereJapanAnna Fali RENEWAL
Nicolas F KolmetzSpainXuxue Feng QUALIFIED
Alejandro R MaletGermanyAnna Fali PROPOSAL
Leon J MarrierUnited KingdomBernardo Dominic PROPOSAL
Arvin T FigeroaUnited KingdomIvan Magalhaes NEW
Wickens J CampainCanadaAnna Fali NEW
Kadeem O MorascaUnited KingdomOnyama Limba QUALIFIED
Octavia O BriddickBrazilXuxue Feng PROPOSAL
Smith S ButtCanadaIvan Magalhaes QUALIFIED
Francesco W CaudyBrazilAsiya Javayant QUALIFIED
Stacey I TollnerIndiaAnna Fali NEW
Jefferson P MorascaFranceBernardo Dominic RENEWAL
Maria D SergiGermanyAmy Elsner UNQUALIFIED
Stacey E RoysterItalyStephen Shaw UNQUALIFIED
Deepesh P DarakjyFranceBernardo Dominic RENEWAL
Adams Z ButtCanadaElwin Sharvill NEGOTIATION
Arvin G WhobreyUnited KingdomStephen Shaw PROPOSAL
Tony G FlosiSpainIvan Magalhaes PROPOSAL
Aditya G GlickArgentinaBernardo Dominic QUALIFIED
Kaitlin H ShinkoItalyIvan Magalhaes PROPOSAL
Jeanfrancois J SlusarskiArgentinaBernardo Dominic RENEWAL
Leon M GauchoJapanBernardo Dominic QUALIFIED
Izzy B VenereArgentinaAnna Fali RENEWAL
Jeanfrancois V CampainGermanyAmy Elsner QUALIFIED
Arvin C InouyeFranceAnna Fali NEW
Costa E MacleadSpainElwin Sharvill NEW
Aruna D IturbideSpainStephen Shaw QUALIFIED
Morrow B GauchoIndiaAsiya Javayant NEGOTIATION
Johnson F IturbideCanadaIvan Magalhaes UNQUALIFIED
Murillo F SergiUnited KingdomStephen Shaw UNQUALIFIED
Chavez E PaprockiCanadaAsiya Javayant NEW
Cody T CampainRussiaIoni Bowcher PROPOSAL
Sinclair X GarufiJapanAnna Fali NEGOTIATION
Deepesh D GarufiUnited KingdomElwin Sharvill PROPOSAL
Maria Q WhobreyRussiaAmy Elsner NEW
Jeanfrancois E FerenczArgentinaOnyama Limba NEGOTIATION
Murillo L DoeJapanIvan Magalhaes PROPOSAL
Jones J IturbideRussiaIoni Bowcher RENEWAL
Wickens A AlbaresArgentinaAmy Elsner PROPOSAL
Mujtaba M PaprockiFranceIoni Bowcher NEW
Arvin Z StockhamArgentinaIoni Bowcher RENEWAL
Isabel N WieserJapanIoni Bowcher RENEWAL
Smith F ChuiFranceAnna Fali NEW
Jefferson B CaudyRussiaOnyama Limba UNQUALIFIED
Leon J CaldareraSpainIvan Magalhaes RENEWAL
Ivar F KuskoJapanIvan Magalhaes NEGOTIATION
Emily K TollnerUnited KingdomStephen Shaw UNQUALIFIED
Clifford G GauchoCanadaAnna Fali NEGOTIATION
Greenwood K SchemmerArgentinaXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Emily M IturbideAustraliaAsiya Javayant NEW
Ricardo X DoeGermanyBernardo Dominic NEGOTIATION
Ashley Z MarrierItalyBernardo Dominic NEW
Morrow C BowleySpainStephen Shaw UNQUALIFIED
Salvatore U BowleyRussiaXuxue Feng NEGOTIATION
Silvio B SaylorsRussiaIoni Bowcher RENEWAL
Costa V StensethJapanOnyama Limba NEW
Alejandro I BriddickCanadaIvan Magalhaes RENEWAL
Rodrigues K FigeroaRussiaOnyama Limba UNQUALIFIED
Rodrigues A BriddickItalyOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia H BowleyIndia2024-04-16Chemel, James L Cpa PROPOSAL11Asiya Javayant
1001Claire S TollnerRussia2024-04-02Truhlar And Truhlar Attys RENEWAL91Anna Fali
1002Mayumi H ButtArgentina2024-03-31Printing Dimensions NEW12Amy Elsner
1003Murillo S DilliardBrazil2024-04-12Truhlar And Truhlar Attys QUALIFIED21Bernardo Dominic
1004Julie P BriddickUnited Kingdom2024-04-11Chanay, Jeffrey A Esq PROPOSAL91Stephen Shaw
1005Adams O MacleadSpain2024-04-17Benton, John B Jr UNQUALIFIED5Elwin Sharvill
1006Jefferson C ShinkoUnited Kingdom2024-04-18Chemel, James L Cpa RENEWAL73Xuxue Feng
1007James P MaletAustralia2024-04-02Morlong Associates NEGOTIATION39Ioni Bowcher
1008Costa E InouyeAustralia2024-04-20Rousseaux, Michael Esq QUALIFIED41Ivan Magalhaes
1009Ivar L OstroskyRussia2024-04-16Commercial Press QUALIFIED35Elwin Sharvill
1010Munro T FlosiGermany2024-04-28Chapman, Ross E Esq NEW12Anna Fali
1011Maria T TollnerArgentina2024-04-01Chemel, James L Cpa NEGOTIATION37Amy Elsner
1012Clifford V SergiCanada2024-04-07Dorl, James J Esq PROPOSAL38Asiya Javayant
1013Chavez H FigeroaIndia2024-04-10Morlong Associates NEW58Stephen Shaw
1014Misaki Z KolmetzGermany2024-04-17Printing Dimensions UNQUALIFIED95Ivan Magalhaes
1015Salvatore K FlosiUnited Kingdom2024-04-24Dorl, James J Esq QUALIFIED91Xuxue Feng
1016Mayumi K AlbaresRussia2024-04-08Morlong Associates RENEWAL55Anna Fali
1017Antonio G MorascaItaly2024-04-14Rangoni Of Florence QUALIFIED55Amy Elsner
1018Murillo G IturbideFrance2024-04-12Chemel, James L Cpa RENEWAL51Asiya Javayant
1019Wickens O ShinkoItaly2024-04-06Feltz Printing Service UNQUALIFIED27Xuxue Feng
1020Nicolas H GlickFrance2024-04-21Chemel, James L Cpa PROPOSAL54Stephen Shaw
1021Arvin N DoeArgentina2024-04-14Feiner Bros NEGOTIATION37Ivan Magalhaes
1022Cody H FollerJapan2024-04-13Morlong Associates NEGOTIATION68Asiya Javayant
1023Adams B ButtJapan2024-04-01Benton, John B Jr NEGOTIATION72Anna Fali
1024Kaitlin R OldroydCanada2024-04-22Feiner Bros PROPOSAL64Ioni Bowcher
1025Misaki O StensethFrance2024-04-15Rousseaux, Michael Esq NEGOTIATION31Xuxue Feng
1026Tony J NestleFrance2024-04-11Morlong Associates NEGOTIATION70Asiya Javayant
1027Adams P KolmetzRussia2024-04-26Truhlar And Truhlar Attys QUALIFIED96Stephen Shaw
1028Darci F NickaCanada2024-04-17Dorl, James J Esq RENEWAL14Xuxue Feng
1029Nicolas F ButtSpain2024-04-28Dorl, James J Esq RENEWAL43Elwin Sharvill
1030Stacey F TollnerIndia2024-04-10Rangoni Of Florence QUALIFIED67Elwin Sharvill
1031James M SlusarskiUnited Kingdom2024-04-13King, Christopher A Esq NEW37Onyama Limba
1032Claire I CampainCanada2024-04-21Chanay, Jeffrey A Esq UNQUALIFIED38Xuxue Feng
1033Isabel B GlickArgentina2024-04-28Feiner Bros PROPOSAL42Onyama Limba
1034Clifford D SergiCanada2024-04-20Feiner Bros QUALIFIED2Ivan Magalhaes
1035Nicolas B NickaRussia2024-04-16Rousseaux, Michael Esq UNQUALIFIED54Stephen Shaw
1036Salvatore H FollerArgentina2024-04-01Dorl, James J Esq RENEWAL42Asiya Javayant
1037Isabel J SlusarskiItaly2024-04-25Feltz Printing Service NEW59Asiya Javayant
1038Adams A InouyeJapan2024-04-06Rousseaux, Michael Esq NEGOTIATION63Anna Fali
1039Aditya A GlickRussia2024-04-07Rousseaux, Michael Esq PROPOSAL55Anna Fali
1040Salvatore L OstroskyAustralia2024-04-07Printing Dimensions UNQUALIFIED86Asiya Javayant
1041Misaki P PaprockiUnited Kingdom2024-04-20Chemel, James L Cpa RENEWAL44Anna Fali
1042Adams A MorascaSpain2024-04-17Morlong Associates RENEWAL92Stephen Shaw
1043Alejandro L GarufiBrazil2024-04-12Truhlar And Truhlar Attys QUALIFIED18Ioni Bowcher
1044Octavia N PoquetteAustralia2024-04-11Truhlar And Truhlar Attys UNQUALIFIED60Xuxue Feng
1045Ivar K CaudyFrance2024-04-25Feltz Printing Service PROPOSAL93Onyama Limba
1046Antonio Y StockhamBrazil2024-04-21Rousseaux, Michael Esq QUALIFIED59Anna Fali
1047Adams I FerenczCanada2024-04-25Chanay, Jeffrey A Esq NEGOTIATION59Onyama Limba
1048Maisha Q RulapaughItaly2024-04-21Commercial Press NEW3Ivan Magalhaes
1049Munro Q ButtRussia2024-04-22Feiner Bros PROPOSAL27Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Sinclair K TollnerRussiaStephen Shaw PROPOSAL
Sinclair I FerenczRussiaIvan Magalhaes QUALIFIED
Antonio Z VocelkaGermanyAsiya Javayant UNQUALIFIED
Juan F DilliardUnited KingdomAnna Fali UNQUALIFIED
Arvin F BologniaJapanElwin Sharvill UNQUALIFIED
Aika I OstroskySpainAmy Elsner NEGOTIATION
Deepesh O FollerUnited KingdomElwin Sharvill UNQUALIFIED
Juan O OldroydCanadaAmy Elsner UNQUALIFIED
Adams Z InouyeGermanyElwin Sharvill UNQUALIFIED
Aditya R KuskoRussiaAmy Elsner NEGOTIATION
Rodrigues S BowleySpainStephen Shaw NEW
Francesco O FollerAustraliaAnna Fali QUALIFIED
Stacey R FigeroaCanadaAmy Elsner QUALIFIED
Mayumi Z AlbaresUnited KingdomIoni Bowcher QUALIFIED
Misaki F DarakjyBrazilAmy Elsner UNQUALIFIED
Tony R NestleItalyAnna Fali NEW
Silvio N FollerJapanIoni Bowcher NEW
Arvin S WieserRussiaIoni Bowcher PROPOSAL
David C NickaUnited KingdomStephen Shaw NEW
Tony H ChuiSpainXuxue Feng NEW
Adams X GauchoAustraliaBernardo Dominic UNQUALIFIED
Greenwood R FlosiJapanAsiya Javayant RENEWAL
Arvin W GlickUnited KingdomAsiya Javayant NEGOTIATION
Johnson Z RoysterAustraliaAsiya Javayant NEW
Izzy T VenereFranceElwin Sharvill UNQUALIFIED
Stacey S AlbaresFranceBernardo Dominic UNQUALIFIED
Maria B WieserCanadaIoni Bowcher QUALIFIED
Kaitlin G ChuiSpainBernardo Dominic NEW
Juan O WaycottFranceAsiya Javayant NEW
Ivar G FerenczUnited KingdomBernardo Dominic NEW
David W RutaCanadaAsiya Javayant PROPOSAL
Arvin H PoquetteRussiaIvan Magalhaes NEGOTIATION
Francesco X RulapaughArgentinaAsiya Javayant NEGOTIATION
Emily T MaletArgentinaAsiya Javayant NEW
Mayumi F GauchoRussiaAsiya Javayant UNQUALIFIED
Octavia S WaycottGermanyBernardo Dominic UNQUALIFIED
Claire X RulapaughGermanyOnyama Limba NEW
Jones A DoeItalyAmy Elsner UNQUALIFIED
Rodrigues X PoquetteRussiaBernardo Dominic UNQUALIFIED
Adams F VenereBrazilAsiya Javayant RENEWAL
Maria U GarufiRussiaStephen Shaw QUALIFIED
Octavia X BowleyArgentinaStephen Shaw UNQUALIFIED
Stacey J ButtCanadaAnna Fali UNQUALIFIED
Arvin T RoysterFranceOnyama Limba QUALIFIED
Ricardo L WieserGermanyAsiya Javayant RENEWAL
Chavez W NestleRussiaIoni Bowcher NEW
Aruna K GarufiJapanBernardo Dominic QUALIFIED
Silvio Y AmigonIndiaStephen Shaw NEW
Leon Z MorascaIndiaStephen Shaw NEGOTIATION
Kadeem R CampainFranceElwin Sharvill PROPOSAL
Frozen Columns
Name
Misaki S Rulapaugh
Greenwood B Inouye
Clifford G Malet
Jefferson D Perin
Julie H Flosi
Emily Z Maclead
Antonio H Waycott
Juan J Marrier
Maisha P Nestle
Aika N Ostrosky
Clifford N Caldarera
Francesco Y Caudy
Leon K Maclead
Antonio M Darakjy
David S Dilliard
Maisha N Vocelka
Antonio E Maclead
Jefferson J Marrier
Jones Q Schemmer
Darci J Butt
Silvio C Maclead
Deepesh Y Gillian
Johnson O Ostrosky
Greenwood Y Rim
Mujtaba P Waycott
Francesco L Poquette
Faith E Albares
Julie A Butt
Leja K Darakjy
Francesco X Whobrey
Deepesh I Nicka
Julie Z Sergi
Aika B Foller
Adams M Nicka
Jefferson Z Inouye
Octavia X Doe
Faith U Slusarski
Misaki R Maclead
Sinclair O Malet
Deepesh G Briddick
Leon R Briddick
Nicolas G Gaucho
Julie B Inouye
Wickens F Oldroyd
Murillo L Figeroa
Adams Y Nicka
Smith R Paprocki
Ivar V Gillian
Antonio E Maclead
Jefferson T Albares
IdCountryDate
1000Germany2024-04-06
1001United Kingdom2024-04-03
1002Japan2024-04-12
1003Canada2024-04-08
1004Australia2024-04-25
1005Brazil2024-04-08
1006Japan2024-04-19
1007France2024-04-14
1008Italy2024-04-13
1009France2024-04-08
1010Spain2024-04-06
1011Spain2024-04-27
1012Germany2024-04-06
1013Spain2024-03-31
1014India2024-04-04
1015Canada2024-04-18
1016Germany2024-04-24
1017Canada2024-04-04
1018Russia2024-04-12
1019Brazil2024-04-04
1020Russia2024-04-05
1021Spain2024-04-19
1022Germany2024-04-09
1023United Kingdom2024-04-03
1024Germany2024-03-30
1025Spain2024-04-26
1026Italy2024-04-04
1027Russia2024-04-03
1028Japan2024-04-09
1029Italy2024-04-11
1030Canada2024-04-07
1031United Kingdom2024-04-14
1032United Kingdom2024-03-31
1033Brazil2024-04-08
1034Argentina2024-04-08
1035Argentina2024-04-09
1036Japan2024-04-06
1037Australia2024-04-18
1038Italy2024-04-23
1039United Kingdom2024-04-07
1040India2024-04-23
1041Brazil2024-04-05
1042Brazil2024-04-20
1043Japan2024-04-23
1044Brazil2024-04-14
1045Italy2024-04-18
1046United Kingdom2024-04-10
1047India2024-03-31
1048Canada2024-04-11
1049Japan2024-04-28

On-Demand Data

NameIdCountryDate
Aditya U Marrier1000France2024-04-08
Antonio V Nestle1001Italy2024-03-30
Costa I Ostrosky1002Canada2024-04-05
Murillo S Ruta1003United Kingdom2024-04-05
Jefferson Y Nestle1004France2024-04-13
Kaitlin V Saylors1005Spain2024-04-13
Jefferson M Kolmetz1006Canada2024-04-08
Mayumi O Bolognia1007Argentina2024-04-18
Mujtaba Z Wieser1008Spain2024-04-26
Ricardo B Nicka1009Japan2024-03-31
Kaitlin Z Schemmer1010Canada2024-04-10
Octavia E Stenseth1011France2024-04-20
Morrow P Doe1012United Kingdom2024-04-21
Octavia B Iturbide1013Germany2024-04-12
Arvin O Iturbide1014India2024-04-14
Jennifer R Iturbide1015Spain2024-04-11
Murillo S Schemmer1016Russia2024-04-18
David Y Bolognia1017Canada2024-04-22
Isabel V Darakjy1018Germany2024-04-05
Silvio F Kusko1019Italy2024-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily R VocelkaItalyOnyama Limba UNQUALIFIED
Mujtaba N CaldareraItalyElwin Sharvill RENEWAL
David Q DilliardAustraliaBernardo Dominic QUALIFIED
Francesco Y OldroydUnited KingdomElwin Sharvill UNQUALIFIED
Octavia F SergiArgentinaOnyama Limba NEGOTIATION
Smith A SchemmerFranceStephen Shaw NEGOTIATION
Aditya O GillianCanadaOnyama Limba NEW
Clifford J SaylorsFranceAnna Fali NEW
Isabel C CaldareraAustraliaIoni Bowcher RENEWAL
Aika K AmigonAustraliaBernardo Dominic NEW
Costa N OldroydCanadaAnna Fali RENEWAL
Misaki G SchemmerAustraliaXuxue Feng UNQUALIFIED
Deepesh E AlbaresRussiaIoni Bowcher NEW
Cody E TollnerArgentinaIoni Bowcher RENEWAL
Jones M ShinkoCanadaXuxue Feng NEW
Aruna H BriddickCanadaXuxue Feng NEGOTIATION
Kadeem Z StensethFranceIoni Bowcher NEGOTIATION
Wickens Q InouyeAustraliaAsiya Javayant RENEWAL
Aika W BowleyRussiaXuxue Feng QUALIFIED
Isabel Q RutaBrazilIvan Magalhaes QUALIFIED
Maria W GlickJapanElwin Sharvill NEW
Emily N WieserBrazilAmy Elsner RENEWAL
Cody F PaprockiUnited KingdomBernardo Dominic NEW
Morrow E RimJapanOnyama Limba RENEWAL
Francesco K RimGermanyBernardo Dominic RENEWAL
Aruna Q MaletIndiaAmy Elsner UNQUALIFIED
Greenwood U SergiIndiaBernardo Dominic NEW
Francesco D DoeAustraliaXuxue Feng RENEWAL
Misaki L BriddickFranceAsiya Javayant NEGOTIATION
Mujtaba M RutaJapanBernardo Dominic NEW
Tony B FlosiUnited KingdomXuxue Feng QUALIFIED
Claire D MorascaBrazilAnna Fali NEGOTIATION
Adams W ChuiSpainAsiya Javayant QUALIFIED
Jeanfrancois G ShinkoFranceXuxue Feng NEGOTIATION
Leja P OstroskyJapanAnna Fali UNQUALIFIED
Kadeem L RimItalyIvan Magalhaes NEGOTIATION
Jones E PaprockiUnited KingdomOnyama Limba PROPOSAL
Julie O MarrierRussiaBernardo Dominic NEW
Stacey X KuskoJapanStephen Shaw NEW
Izzy Y GarufiFranceIoni Bowcher RENEWAL

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