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
Maria B MarrierBrazilXuxue Feng UNQUALIFIED
Darci M NickaGermanyXuxue Feng RENEWAL
Aika G CaudyGermanyAsiya Javayant RENEWAL
Morrow Z PerinAustraliaOnyama Limba UNQUALIFIED
Ivar M MaletArgentinaIoni Bowcher QUALIFIED
David J CaldareraArgentinaXuxue Feng PROPOSAL
Misaki N RoysterSpainAnna Fali UNQUALIFIED
Tony Q MacleadUnited KingdomElwin Sharvill RENEWAL
James W PaprockiBrazilIoni Bowcher NEGOTIATION
Izzy G RulapaughSpainAmy Elsner NEGOTIATION
Silvio R VocelkaSpainElwin Sharvill NEW
Stacey E DoeJapanStephen Shaw UNQUALIFIED
Adams R GillianIndiaAsiya Javayant NEW
Emily Q RimArgentinaStephen Shaw NEGOTIATION
Izzy Q KuskoUnited KingdomStephen Shaw RENEWAL
Nicolas Z DarakjyIndiaAsiya Javayant UNQUALIFIED
Murillo O BriddickBrazilAmy Elsner QUALIFIED
Misaki A CaldareraGermanyOnyama Limba NEW
Arvin J MacleadSpainIvan Magalhaes RENEWAL
Maria A BowleyBrazilElwin Sharvill RENEWAL
Leja F VenereSpainStephen Shaw RENEWAL
Ashley M BowleyCanadaXuxue Feng QUALIFIED
Jeanfrancois K MorascaItalyOnyama Limba QUALIFIED
Kaitlin S SergiItalyBernardo Dominic RENEWAL
Aditya R DarakjyItalyIoni Bowcher NEGOTIATION
Izzy C PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Octavia D MaletGermanyIoni Bowcher UNQUALIFIED
Maria Y VocelkaUnited KingdomOnyama Limba NEGOTIATION
Darci T PerinBrazilStephen Shaw NEW
Stacey N IturbideSpainElwin Sharvill PROPOSAL
Munro Z MacleadFranceStephen Shaw RENEWAL
Morrow R CaldareraRussiaBernardo Dominic NEW
Stacey D SlusarskiAustraliaAmy Elsner PROPOSAL
Jennifer H OstroskyFranceAnna Fali UNQUALIFIED
Chavez G DilliardUnited KingdomElwin Sharvill UNQUALIFIED
Adams M PerinRussiaBernardo Dominic NEGOTIATION
Morrow W KolmetzFranceIvan Magalhaes NEW
Mayumi Y RoysterIndiaAsiya Javayant UNQUALIFIED
Ivar Q SlusarskiCanadaAmy Elsner RENEWAL
Clifford Y SergiFranceBernardo Dominic QUALIFIED
Faith E AmigonIndiaAnna Fali RENEWAL
Smith H CampainAustraliaAmy Elsner RENEWAL
Antonio J MacleadRussiaAnna Fali PROPOSAL
Ricardo R CampainJapanBernardo Dominic PROPOSAL
Morrow K KolmetzJapanIoni Bowcher NEW
Ricardo J FigeroaCanadaBernardo Dominic RENEWAL
Chavez A GillianFranceAsiya Javayant NEGOTIATION
James F OldroydIndiaOnyama Limba QUALIFIED
James J InouyeRussiaOnyama Limba RENEWAL
Darci S ChuiRussiaIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leon K VenereItalyIvan Magalhaes QUALIFIED
Emily C MarrierJapanStephen Shaw RENEWAL
Emily M NickaCanadaAnna Fali UNQUALIFIED
Sinclair L BriddickAustraliaAnna Fali NEW
Maria R BowleyCanadaElwin Sharvill PROPOSAL
Deepesh P WhobreySpainStephen Shaw NEW
Maria R OstroskyFranceIvan Magalhaes QUALIFIED
Aika A SaylorsAustraliaIvan Magalhaes NEGOTIATION
Costa N SergiIndiaAsiya Javayant NEW
Deepesh E GauchoAustraliaBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro C KolmetzJapan2024-04-09Chemel, James L Cpa UNQUALIFIED15Ivan Magalhaes
1001Kaitlin E AlbaresSpain2024-04-09Chapman, Ross E Esq QUALIFIED78Bernardo Dominic
1002Claire N PerinArgentina2024-04-01Truhlar And Truhlar Attys PROPOSAL33Ioni Bowcher
1003Deepesh Y WieserGermany2024-04-26Buckley Miller Wright PROPOSAL15Onyama Limba
1004Adams O KuskoJapan2024-04-18Printing Dimensions NEW88Ioni Bowcher
1005Aditya X NestleIndia2024-04-23Truhlar And Truhlar Attys UNQUALIFIED52Asiya Javayant
1006Kadeem I TollnerBrazil2024-04-01Rangoni Of Florence QUALIFIED5Xuxue Feng
1007David M CaudyArgentina2024-04-13Chapman, Ross E Esq NEGOTIATION32Ivan Magalhaes
1008Julie T FigeroaBrazil2024-04-29Morlong Associates NEGOTIATION63Onyama Limba
1009Costa H VenereCanada2024-04-26Buckley Miller Wright UNQUALIFIED90Elwin Sharvill
1010Johnson T BriddickJapan2024-04-01Truhlar And Truhlar Attys NEGOTIATION93Bernardo Dominic
1011Faith U VocelkaBrazil2024-04-05Feltz Printing Service UNQUALIFIED83Xuxue Feng
1012Arvin S NestleRussia2024-04-03Chemel, James L Cpa QUALIFIED17Anna Fali
1013Smith C NestleAustralia2024-04-10Commercial Press NEW25Xuxue Feng
1014Isabel H BriddickGermany2024-04-03Benton, John B Jr PROPOSAL44Anna Fali
1015Isabel J MaletArgentina2024-04-14Chemel, James L Cpa UNQUALIFIED27Ioni Bowcher
1016Silvio C RoysterArgentina2024-04-18Benton, John B Jr RENEWAL57Ivan Magalhaes
1017Alejandro Y PoquetteAustralia2024-04-28Feiner Bros QUALIFIED29Elwin Sharvill
1018Morrow U OldroydIndia2024-04-25Feltz Printing Service NEW36Ivan Magalhaes
1019Ivar V ShinkoRussia2024-04-15Commercial Press NEW45Stephen Shaw
1020Octavia U CampainUnited Kingdom2024-04-27Chanay, Jeffrey A Esq NEW4Xuxue Feng
1021Faith T DoeGermany2024-04-19King, Christopher A Esq PROPOSAL87Stephen Shaw
1022Cody S DarakjyJapan2024-04-28Dorl, James J Esq NEW3Ioni Bowcher
1023Kaitlin A CaudyUnited Kingdom2024-04-03Feltz Printing Service NEGOTIATION17Xuxue Feng
1024Adams X FollerIndia2024-04-29Morlong Associates UNQUALIFIED2Asiya Javayant
1025David Y CampainUnited Kingdom2024-04-15Dorl, James J Esq NEW40Ivan Magalhaes
1026Jeanfrancois N CampainSpain2024-04-02Chapman, Ross E Esq UNQUALIFIED38Asiya Javayant
1027Izzy J VenereIndia2024-04-22Morlong Associates NEGOTIATION72Ioni Bowcher
1028Ivar N DarakjySpain2024-04-13Chemel, James L Cpa QUALIFIED10Ivan Magalhaes
1029Deepesh M SaylorsIndia2024-04-03Chapman, Ross E Esq NEW28Ivan Magalhaes
1030Clifford F TollnerFrance2024-04-12Rangoni Of Florence UNQUALIFIED3Ivan Magalhaes
1031Wickens O GillianBrazil2024-03-31Feltz Printing Service RENEWAL33Amy Elsner
1032Darci E CaudyFrance2024-04-17Truhlar And Truhlar Attys RENEWAL25Ioni Bowcher
1033Greenwood I OldroydSpain2024-04-02Rousseaux, Michael Esq QUALIFIED9Amy Elsner
1034Emily C GarufiRussia2024-04-28Rangoni Of Florence UNQUALIFIED55Asiya Javayant
1035Maria G VocelkaSpain2024-04-22Dorl, James J Esq PROPOSAL91Bernardo Dominic
1036Ivar Y VenereItaly2024-04-04Morlong Associates QUALIFIED99Onyama Limba
1037Chavez Y SlusarskiFrance2024-04-06Feiner Bros RENEWAL34Elwin Sharvill
1038Wickens L GlickCanada2024-04-10Rangoni Of Florence UNQUALIFIED55Amy Elsner
1039Jefferson Y CaldareraUnited Kingdom2024-04-03Rousseaux, Michael Esq UNQUALIFIED33Amy Elsner
1040Mayumi E ChuiFrance2024-04-10Chapman, Ross E Esq RENEWAL26Ivan Magalhaes
1041Tony I BologniaGermany2024-04-20Commercial Press NEGOTIATION75Amy Elsner
1042Ashley Z IturbideUnited Kingdom2024-04-25Buckley Miller Wright PROPOSAL33Stephen Shaw
1043Claire F SaylorsSpain2024-03-31Benton, John B Jr UNQUALIFIED28Stephen Shaw
1044Costa G AmigonArgentina2024-04-29Chanay, Jeffrey A Esq QUALIFIED8Asiya Javayant
1045Arvin W StensethGermany2024-04-22Dorl, James J Esq NEGOTIATION34Ioni Bowcher
1046Munro N DilliardAustralia2024-04-18Feiner Bros QUALIFIED77Onyama Limba
1047Julie W VenereGermany2024-04-16King, Christopher A Esq QUALIFIED89Asiya Javayant
1048Aika X ButtJapan2024-04-22Chemel, James L Cpa NEW91Xuxue Feng
1049Smith B FlosiBrazil2024-04-13Chanay, Jeffrey A Esq NEW15Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Izzy H SlusarskiFranceBernardo Dominic NEW
Aditya D StensethArgentinaAsiya Javayant NEW
James K DilliardSpainStephen Shaw QUALIFIED
Darci B SlusarskiSpainAnna Fali QUALIFIED
Wickens J ChuiIndiaIvan Magalhaes RENEWAL
Jeanfrancois U BriddickSpainElwin Sharvill PROPOSAL
Salvatore J NickaIndiaIvan Magalhaes NEW
Juan K AlbaresRussiaXuxue Feng NEGOTIATION
Izzy W InouyeFranceOnyama Limba QUALIFIED
Ricardo L FlosiUnited KingdomStephen Shaw PROPOSAL
Leon O KuskoArgentinaBernardo Dominic UNQUALIFIED
Adams D ButtUnited KingdomAmy Elsner NEW
Adams A StensethSpainAsiya Javayant QUALIFIED
Costa A GauchoGermanyElwin Sharvill PROPOSAL
Johnson M KuskoJapanOnyama Limba QUALIFIED
Leja L CampainBrazilXuxue Feng NEGOTIATION
Morrow H NickaUnited KingdomAnna Fali PROPOSAL
Murillo C RoysterUnited KingdomBernardo Dominic RENEWAL
Maisha E OstroskyFranceIoni Bowcher UNQUALIFIED
Faith P MarrierItalyElwin Sharvill UNQUALIFIED
Emily S KolmetzFranceAnna Fali NEW
Kaitlin F BriddickGermanyStephen Shaw RENEWAL
Darci O FerenczItalyAnna Fali NEW
Maisha A WhobreyItalyAsiya Javayant PROPOSAL
Aditya N WieserArgentinaXuxue Feng UNQUALIFIED
Ashley J SergiGermanyIvan Magalhaes RENEWAL
Mayumi Q KolmetzGermanyStephen Shaw NEW
James S CaldareraUnited KingdomStephen Shaw RENEWAL
Silvio Y FerenczFranceOnyama Limba NEW
Jennifer R VenereIndiaIvan Magalhaes QUALIFIED
Darci X KolmetzArgentinaIoni Bowcher NEGOTIATION
Morrow P TollnerAustraliaBernardo Dominic UNQUALIFIED
Clifford Q ButtCanadaAsiya Javayant NEGOTIATION
Murillo U KuskoFranceElwin Sharvill NEGOTIATION
Jeanfrancois F InouyeCanadaStephen Shaw PROPOSAL
Tony I FerenczBrazilAmy Elsner RENEWAL
Julie H PerinIndiaAsiya Javayant RENEWAL
Jones N StockhamItalyBernardo Dominic QUALIFIED
Claire E CaudyIndiaIoni Bowcher UNQUALIFIED
Kaitlin Y MacleadBrazilIvan Magalhaes NEW
Ricardo R RoysterIndiaAmy Elsner QUALIFIED
Jeanfrancois J IturbideBrazilBernardo Dominic UNQUALIFIED
Francesco W RulapaughIndiaElwin Sharvill UNQUALIFIED
Jeanfrancois J BriddickRussiaIoni Bowcher NEGOTIATION
Claire O AmigonUnited KingdomElwin Sharvill UNQUALIFIED
Mujtaba O IturbideGermanyIoni Bowcher UNQUALIFIED
Stacey N SchemmerCanadaXuxue Feng NEGOTIATION
Smith H OstroskyArgentinaStephen Shaw RENEWAL
Tony K WhobreyAustraliaXuxue Feng PROPOSAL
Jefferson M TollnerItalyXuxue Feng UNQUALIFIED
Frozen Columns
Name
Wickens C Gillian
Greenwood S Albares
Costa H Waycott
Emily T Kolmetz
Kaitlin F Malet
Maisha D Doe
Greenwood Q Darakjy
David Q Rulapaugh
Stacey G Ruta
Aditya F Figeroa
Silvio R Gillian
Aruna J Ostrosky
Maria E Rulapaugh
Aruna G Caudy
Greenwood D Venere
Kaitlin N Nestle
Stacey O Gillian
Juan K Gaucho
Kaitlin I Rim
Kadeem A Kusko
Maisha A Figeroa
Deepesh H Sergi
Antonio A Flosi
Darci A Ferencz
Julie L Ruta
Wickens E Vocelka
Jones H Campain
Stacey M Gillian
Kadeem P Amigon
Cody L Vocelka
Morrow K Briddick
James V Foller
Aika L Vocelka
Ricardo L Flosi
Maisha H Chui
Aditya Z Gillian
Octavia R Stockham
Cody F Briddick
Claire V Sergi
Octavia M Iturbide
Adams X Rulapaugh
Arvin R Wieser
Claire U Chui
Faith V Campain
Wickens K Albares
Smith Q Venere
Antonio Y Dilliard
Chavez Z Caldarera
Mayumi J Wieser
Salvatore O Perin
IdCountryDate
1000Argentina2024-04-22
1001France2024-04-18
1002India2024-04-12
1003India2024-04-26
1004United Kingdom2024-04-03
1005Argentina2024-04-19
1006France2024-04-17
1007Spain2024-04-15
1008France2024-04-02
1009Spain2024-04-09
1010Italy2024-04-26
1011Spain2024-04-13
1012India2024-04-15
1013United Kingdom2024-04-28
1014Spain2024-04-02
1015France2024-04-09
1016Australia2024-04-23
1017Italy2024-04-09
1018Germany2024-04-03
1019Italy2024-04-28
1020Spain2024-04-13
1021Spain2024-04-17
1022Brazil2024-04-21
1023Australia2024-04-05
1024India2024-04-13
1025Australia2024-04-22
1026Brazil2024-04-12
1027Canada2024-04-23
1028Italy2024-04-21
1029Italy2024-04-25
1030India2024-04-05
1031United Kingdom2024-04-01
1032Australia2024-04-08
1033India2024-04-23
1034Canada2024-04-18
1035Italy2024-04-19
1036United Kingdom2024-04-24
1037Japan2024-04-19
1038United Kingdom2024-04-05
1039Canada2024-04-10
1040Germany2024-04-21
1041India2024-04-21
1042United Kingdom2024-04-16
1043France2024-04-18
1044France2024-04-21
1045Italy2024-04-28
1046Spain2024-04-11
1047Russia2024-04-21
1048Italy2024-04-14
1049Brazil2024-04-13

On-Demand Data

NameIdCountryDate
Octavia W Glick1000Italy2024-04-20
Faith I Venere1001Argentina2024-04-25
Aruna D Butt1002Canada2024-04-25
David C Nestle1003Germany2024-04-25
Francesco F Kolmetz1004Canada2024-04-05
Mayumi L Caudy1005Germany2024-04-01
Munro P Morasca1006France2024-04-12
Mayumi Y Stenseth1007Australia2024-04-12
Silvio C Ferencz1008Germany2024-04-26
Stacey M Whobrey1009Germany2024-04-09
Aika V Inouye1010Germany2024-04-02
Kaitlin B Paprocki1011France2024-04-12
Nicolas R Garufi1012Argentina2024-04-03
Salvatore J Paprocki1013Russia2024-04-21
Clifford O Flosi1014India2024-04-17
Rodrigues A Nicka1015France2024-04-05
Aditya L Tollner1016Spain2024-04-24
James K Royster1017Germany2024-04-18
Mujtaba R Paprocki1018Germany2024-04-22
Ivar I Butt1019Japan2024-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja C OstroskyBrazilAmy Elsner RENEWAL
James S DilliardAustraliaOnyama Limba RENEWAL
Julie U IturbideIndiaAsiya Javayant RENEWAL
Wickens X MaletFranceStephen Shaw UNQUALIFIED
Claire A GillianFranceElwin Sharvill UNQUALIFIED
Nicolas O GlickAustraliaAsiya Javayant NEW
Faith Q PerinRussiaAnna Fali NEGOTIATION
Deepesh O RulapaughBrazilBernardo Dominic RENEWAL
Leja U NickaFranceIoni Bowcher UNQUALIFIED
Sinclair P MorascaBrazilAnna Fali NEGOTIATION
Octavia J CaldareraUnited KingdomStephen Shaw UNQUALIFIED
David L GarufiAustraliaIvan Magalhaes QUALIFIED
Cody G GarufiSpainStephen Shaw UNQUALIFIED
Kaitlin M MarrierUnited KingdomIoni Bowcher UNQUALIFIED
Greenwood M RimUnited KingdomOnyama Limba NEW
Ricardo G RutaBrazilElwin Sharvill RENEWAL
Maria Z GarufiAustraliaElwin Sharvill NEGOTIATION
Stacey N SaylorsGermanyAsiya Javayant NEGOTIATION
Darci T FlosiUnited KingdomBernardo Dominic NEW
Leon Z MaletFranceIoni Bowcher NEW
Rodrigues N PoquetteUnited KingdomAsiya Javayant NEGOTIATION
Maisha O CaudyItalyIvan Magalhaes NEGOTIATION
Nicolas J GillianJapanStephen Shaw UNQUALIFIED
Smith E GlickCanadaIoni Bowcher NEW
Adams M RutaAustraliaIvan Magalhaes RENEWAL
Jones G WieserIndiaIoni Bowcher PROPOSAL
Darci L VenereUnited KingdomOnyama Limba NEW
Clifford S BologniaCanadaAsiya Javayant QUALIFIED
Greenwood U DilliardAustraliaXuxue Feng QUALIFIED
Cody Y WaycottUnited KingdomBernardo Dominic QUALIFIED
Deepesh N GillianCanadaXuxue Feng QUALIFIED
Morrow C GauchoRussiaAsiya Javayant RENEWAL
Munro J SchemmerCanadaOnyama Limba RENEWAL
Aruna I WhobreyUnited KingdomStephen Shaw QUALIFIED
Murillo A KolmetzJapanStephen Shaw NEW
Izzy F PaprockiBrazilAsiya Javayant QUALIFIED
Julie R KuskoBrazilBernardo Dominic NEGOTIATION
Arvin P PaprockiIndiaStephen Shaw UNQUALIFIED
Wickens O MarrierBrazilAsiya Javayant NEW
Isabel U GlickAustraliaAsiya Javayant 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>