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
Leja A ButtGermanyXuxue Feng QUALIFIED
Ashley E MaletAustraliaStephen Shaw QUALIFIED
Deepesh Z NickaRussiaOnyama Limba PROPOSAL
Maisha G VenereBrazilAsiya Javayant NEGOTIATION
Jeanfrancois A MorascaGermanyBernardo Dominic PROPOSAL
Murillo L PaprockiGermanyElwin Sharvill QUALIFIED
Misaki E AlbaresAustraliaIvan Magalhaes PROPOSAL
Greenwood Y MacleadArgentinaElwin Sharvill RENEWAL
Juan W StockhamBrazilIoni Bowcher PROPOSAL
Aditya T ShinkoFranceAnna Fali QUALIFIED
Izzy V RimItalyIoni Bowcher PROPOSAL
Antonio E CampainBrazilIoni Bowcher NEW
Murillo C WieserSpainOnyama Limba PROPOSAL
Clifford P AmigonSpainXuxue Feng UNQUALIFIED
Francesco V InouyeArgentinaIvan Magalhaes NEW
Murillo F AlbaresUnited KingdomIoni Bowcher NEW
Maisha O AlbaresJapanOnyama Limba NEW
Claire Y RulapaughBrazilAnna Fali QUALIFIED
Ricardo C FerenczIndiaAsiya Javayant NEGOTIATION
Juan P MaletRussiaAsiya Javayant NEW
Stacey N CampainItalyXuxue Feng NEGOTIATION
Ashley Z GarufiFranceAnna Fali NEW
Izzy D OstroskyCanadaElwin Sharvill QUALIFIED
Darci E AlbaresUnited KingdomIvan Magalhaes QUALIFIED
Tony F FlosiBrazilBernardo Dominic PROPOSAL
Clifford S WieserSpainOnyama Limba NEW
Smith F SaylorsGermanyOnyama Limba NEW
Morrow J OstroskySpainAsiya Javayant NEW
Juan K ButtJapanStephen Shaw NEW
Octavia R PerinUnited KingdomOnyama Limba NEW
Aditya C GauchoFranceAnna Fali QUALIFIED
Aika X CaudyJapanAmy Elsner PROPOSAL
Mujtaba W WaycottArgentinaIoni Bowcher NEGOTIATION
Morrow F CampainUnited KingdomAsiya Javayant QUALIFIED
Chavez B RimGermanyBernardo Dominic UNQUALIFIED
Alejandro S WaycottJapanStephen Shaw RENEWAL
Sinclair G RimIndiaStephen Shaw UNQUALIFIED
Cody F AlbaresRussiaStephen Shaw UNQUALIFIED
Ricardo L FerenczCanadaBernardo Dominic NEGOTIATION
Costa P WieserRussiaElwin Sharvill RENEWAL
Juan V FollerRussiaIvan Magalhaes PROPOSAL
Ashley S PerinIndiaAsiya Javayant RENEWAL
Maisha W FollerAustraliaStephen Shaw UNQUALIFIED
Murillo N StockhamSpainAmy Elsner NEW
Arvin F KolmetzSpainAnna Fali NEW
Clifford I MaletSpainAmy Elsner NEW
Isabel T ButtCanadaAnna Fali UNQUALIFIED
Misaki K SchemmerBrazilAnna Fali UNQUALIFIED
Jeanfrancois F SergiRussiaXuxue Feng NEW
Wickens T CaldareraUnited KingdomAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Maria X RulapaughFranceStephen Shaw PROPOSAL
Munro L AmigonAustraliaStephen Shaw UNQUALIFIED
Arvin M RutaBrazilIoni Bowcher RENEWAL
Munro L RimFranceAnna Fali QUALIFIED
Kadeem T MacleadAustraliaOnyama Limba QUALIFIED
Clifford A VocelkaGermanyAsiya Javayant NEGOTIATION
Smith H SchemmerSpainOnyama Limba QUALIFIED
Ivar Q WaycottBrazilElwin Sharvill NEW
Salvatore Z WhobreyGermanyIvan Magalhaes PROPOSAL
Octavia N VenereJapanOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi T WieserArgentina2024-03-30Rousseaux, Michael Esq NEW2Elwin Sharvill
1001Ivar M PerinArgentina2024-04-07Morlong Associates PROPOSAL51Amy Elsner
1002Stacey P SaylorsGermany2024-04-11Printing Dimensions UNQUALIFIED54Ivan Magalhaes
1003Chavez B DilliardCanada2024-04-03Dorl, James J Esq RENEWAL50Xuxue Feng
1004Ivar Y DilliardRussia2024-04-24Commercial Press QUALIFIED58Bernardo Dominic
1005Francesco N DilliardBrazil2024-04-18Chemel, James L Cpa NEW42Bernardo Dominic
1006Leon D CaldareraUnited Kingdom2024-04-24Feltz Printing Service UNQUALIFIED16Stephen Shaw
1007Mayumi E DoeItaly2024-03-27Truhlar And Truhlar Attys NEW80Ioni Bowcher
1008Emily N KuskoRussia2024-03-28Rangoni Of Florence NEW8Stephen Shaw
1009Izzy L BowleyItaly2024-04-01Rousseaux, Michael Esq NEGOTIATION26Amy Elsner
1010Chavez C NestleJapan2024-04-19Benton, John B Jr NEW22Ivan Magalhaes
1011Leon C ChuiSpain2024-04-17Morlong Associates NEW96Ioni Bowcher
1012Munro G FlosiCanada2024-04-03Printing Dimensions UNQUALIFIED25Elwin Sharvill
1013Mujtaba N TollnerBrazil2024-04-16Truhlar And Truhlar Attys NEGOTIATION48Ioni Bowcher
1014Jennifer L FigeroaArgentina2024-04-04Benton, John B Jr UNQUALIFIED71Anna Fali
1015Smith W TollnerUnited Kingdom2024-04-22Feiner Bros RENEWAL32Bernardo Dominic
1016Tony M KuskoIndia2024-04-09King, Christopher A Esq NEGOTIATION0Bernardo Dominic
1017David N IturbideIndia2024-04-02Chanay, Jeffrey A Esq RENEWAL51Anna Fali
1018Emily D SergiUnited Kingdom2024-04-04Commercial Press RENEWAL30Amy Elsner
1019Silvio D AlbaresCanada2024-04-03Chanay, Jeffrey A Esq UNQUALIFIED36Xuxue Feng
1020Jennifer Q InouyeBrazil2024-04-21Benton, John B Jr PROPOSAL35Asiya Javayant
1021Izzy J OldroydSpain2024-04-06Chemel, James L Cpa NEGOTIATION67Bernardo Dominic
1022Jennifer X GillianJapan2024-04-05Feiner Bros NEGOTIATION75Elwin Sharvill
1023Munro V ChuiJapan2024-04-17Rangoni Of Florence NEGOTIATION8Stephen Shaw
1024Kaitlin K FlosiArgentina2024-04-24Feiner Bros PROPOSAL2Stephen Shaw
1025Clifford Q ShinkoRussia2024-03-26Printing Dimensions RENEWAL25Stephen Shaw
1026James M RimGermany2024-04-12Chemel, James L Cpa PROPOSAL12Anna Fali
1027Arvin G BriddickUnited Kingdom2024-04-13Rousseaux, Michael Esq PROPOSAL31Bernardo Dominic
1028Alejandro W PerinJapan2024-04-07King, Christopher A Esq RENEWAL44Onyama Limba
1029Nicolas Z PerinSpain2024-04-24Rangoni Of Florence UNQUALIFIED76Bernardo Dominic
1030Ricardo G CaudySpain2024-03-28Dorl, James J Esq RENEWAL19Elwin Sharvill
1031Johnson O DarakjyItaly2024-04-13Chanay, Jeffrey A Esq UNQUALIFIED44Ivan Magalhaes
1032Julie W SergiAustralia2024-04-18King, Christopher A Esq NEW6Stephen Shaw
1033Johnson Q RulapaughSpain2024-04-07Rousseaux, Michael Esq QUALIFIED13Ioni Bowcher
1034Deepesh A InouyeArgentina2024-03-26Morlong Associates QUALIFIED11Anna Fali
1035Nicolas C InouyeUnited Kingdom2024-03-28Rangoni Of Florence RENEWAL42Elwin Sharvill
1036Misaki B FerenczUnited Kingdom2024-04-21Buckley Miller Wright UNQUALIFIED13Ioni Bowcher
1037Jones M DarakjyCanada2024-04-09Chanay, Jeffrey A Esq UNQUALIFIED29Stephen Shaw
1038Octavia N MarrierItaly2024-03-28Dorl, James J Esq UNQUALIFIED98Elwin Sharvill
1039Arvin Y PoquetteGermany2024-04-07Rangoni Of Florence RENEWAL84Xuxue Feng
1040Emily G WhobreyIndia2024-04-02Rangoni Of Florence UNQUALIFIED99Ivan Magalhaes
1041Faith P SlusarskiRussia2024-04-11Commercial Press NEW87Bernardo Dominic
1042Darci G GillianCanada2024-04-02Morlong Associates NEGOTIATION77Ivan Magalhaes
1043Sinclair C SlusarskiSpain2024-04-15King, Christopher A Esq NEW89Ivan Magalhaes
1044Aruna Z MaletFrance2024-04-16Chanay, Jeffrey A Esq QUALIFIED60Ivan Magalhaes
1045Jefferson Z GarufiJapan2024-03-30Rangoni Of Florence PROPOSAL74Ioni Bowcher
1046Salvatore H InouyeArgentina2024-04-20Rousseaux, Michael Esq PROPOSAL17Ioni Bowcher
1047Nicolas K VenereGermany2024-04-05King, Christopher A Esq RENEWAL59Xuxue Feng
1048Ricardo D RutaIndia2024-03-31Rousseaux, Michael Esq QUALIFIED40Ivan Magalhaes
1049Ivar N RimGermany2024-03-28Printing Dimensions RENEWAL82Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ricardo I InouyeBrazilXuxue Feng NEW
Jennifer Q TollnerFranceAsiya Javayant UNQUALIFIED
Smith W CaldareraIndiaXuxue Feng QUALIFIED
Leon M WieserFranceAmy Elsner QUALIFIED
Aika F RulapaughRussiaAsiya Javayant QUALIFIED
Mayumi Z RulapaughCanadaOnyama Limba QUALIFIED
Leja L IturbideRussiaBernardo Dominic QUALIFIED
David V PaprockiGermanyAmy Elsner NEGOTIATION
Rodrigues R VocelkaSpainIoni Bowcher RENEWAL
Leon S SergiArgentinaOnyama Limba PROPOSAL
Mayumi K DilliardSpainElwin Sharvill PROPOSAL
Misaki W BologniaRussiaIvan Magalhaes QUALIFIED
Morrow Q FollerFranceAnna Fali UNQUALIFIED
Alejandro R DoeRussiaAmy Elsner NEGOTIATION
Chavez P DoeRussiaIoni Bowcher UNQUALIFIED
Kadeem H MorascaUnited KingdomAnna Fali UNQUALIFIED
Antonio K SaylorsUnited KingdomStephen Shaw QUALIFIED
Izzy E RulapaughItalyOnyama Limba PROPOSAL
Kaitlin M MacleadItalyIoni Bowcher UNQUALIFIED
Octavia D AlbaresRussiaOnyama Limba PROPOSAL
Ivar Q StensethAustraliaIoni Bowcher NEGOTIATION
Ricardo C DoeJapanXuxue Feng NEGOTIATION
Mayumi C MacleadAustraliaAnna Fali NEGOTIATION
Ashley M MaletAustraliaAsiya Javayant UNQUALIFIED
Mayumi Q PaprockiJapanOnyama Limba RENEWAL
Smith T DoeArgentinaIoni Bowcher PROPOSAL
Jefferson H KolmetzIndiaIvan Magalhaes NEGOTIATION
Munro S SlusarskiUnited KingdomBernardo Dominic NEGOTIATION
Greenwood K RoysterIndiaAsiya Javayant UNQUALIFIED
Maisha D AmigonItalyAmy Elsner UNQUALIFIED
Julie M AmigonItalyBernardo Dominic RENEWAL
Johnson S WaycottJapanStephen Shaw RENEWAL
Alejandro E FlosiCanadaBernardo Dominic UNQUALIFIED
Tony U PoquetteItalyIoni Bowcher RENEWAL
Mujtaba A RulapaughAustraliaXuxue Feng NEW
Ivar T MaletSpainXuxue Feng NEGOTIATION
Alejandro H StensethArgentinaXuxue Feng PROPOSAL
Kaitlin A DilliardArgentinaAsiya Javayant NEGOTIATION
Aika F RulapaughFranceAnna Fali NEGOTIATION
Ashley X NestleIndiaElwin Sharvill RENEWAL
Murillo V NickaItalyXuxue Feng QUALIFIED
Costa B MorascaBrazilAmy Elsner UNQUALIFIED
Misaki Z GlickRussiaElwin Sharvill RENEWAL
Antonio A NickaFranceXuxue Feng QUALIFIED
Jennifer O MacleadAustraliaXuxue Feng QUALIFIED
Jennifer U BologniaAustraliaIoni Bowcher UNQUALIFIED
Silvio B MacleadBrazilBernardo Dominic NEW
Ricardo R WaycottItalyOnyama Limba UNQUALIFIED
Maria B KolmetzUnited KingdomBernardo Dominic NEGOTIATION
Jeanfrancois D GauchoIndiaAnna Fali NEW
Frozen Columns
Name
Isabel O Kolmetz
Wickens P Royster
Claire U Ostrosky
Ivar Y Bowley
Chavez F Stockham
Aruna N Albares
Jones X Albares
Maria A Marrier
James Z Flosi
Maisha M Morasca
Chavez B Albares
Jones G Ostrosky
Stacey L Nicka
Mayumi M Bolognia
David R Whobrey
Chavez J Caudy
Cody G Foller
Isabel E Glick
Izzy I Marrier
Aruna Y Maclead
Adams L Tollner
Antonio L Malet
David L Maclead
Cody P Butt
Jefferson M Briddick
James O Morasca
Jones V Amigon
Isabel L Morasca
Ivar W Poquette
Emily L Malet
Francesco O Inouye
Greenwood J Nicka
Ashley C Glick
Alejandro Y Caudy
Isabel G Sergi
Alejandro Q Flosi
Munro L Gaucho
Smith X Gillian
Johnson D Figeroa
Juan L Morasca
Aruna U Vocelka
Munro P Vocelka
Aditya O Morasca
Rodrigues G Flosi
Maria B Caudy
Aruna K Caudy
Munro X Inouye
James C Campain
Salvatore T Ruta
Leja W Figeroa
IdCountryDate
1000Canada2024-04-03
1001Australia2024-04-10
1002Spain2024-03-29
1003Russia2024-04-16
1004Australia2024-04-09
1005Germany2024-04-04
1006France2024-04-24
1007Germany2024-03-28
1008France2024-04-12
1009Brazil2024-04-20
1010Russia2024-04-24
1011Russia2024-04-04
1012Japan2024-04-22
1013Germany2024-03-26
1014Brazil2024-04-12
1015Canada2024-03-30
1016Germany2024-04-01
1017Canada2024-04-13
1018India2024-04-19
1019Italy2024-04-04
1020Germany2024-04-08
1021Brazil2024-03-29
1022Italy2024-04-11
1023Russia2024-04-15
1024Australia2024-03-28
1025Argentina2024-04-17
1026Spain2024-04-21
1027Australia2024-04-06
1028Canada2024-04-07
1029United Kingdom2024-04-11
1030Germany2024-04-13
1031Russia2024-04-17
1032Italy2024-04-11
1033Italy2024-04-22
1034Argentina2024-04-12
1035Germany2024-04-16
1036United Kingdom2024-04-21
1037Italy2024-04-20
1038Russia2024-04-23
1039Italy2024-04-23
1040Spain2024-04-03
1041Spain2024-03-26
1042Brazil2024-04-05
1043United Kingdom2024-04-22
1044Canada2024-04-13
1045Russia2024-04-16
1046United Kingdom2024-04-20
1047Spain2024-04-13
1048Italy2024-04-07
1049Spain2024-04-06

On-Demand Data

NameIdCountryDate
Leja V Poquette1000Spain2024-04-08
Ivar I Chui1001United Kingdom2024-04-13
Antonio H Stockham1002Spain2024-04-12
Aika E Wieser1003Australia2024-04-05
Octavia D Schemmer1004Brazil2024-03-29
Chavez S Gillian1005Canada2024-04-14
Kadeem O Ferencz1006Brazil2024-04-14
Octavia D Iturbide1007India2024-04-14
Misaki X Ferencz1008Germany2024-04-15
Octavia V Flosi1009France2024-04-22
Leon I Wieser1010United Kingdom2024-04-24
Rodrigues P Ferencz1011Germany2024-04-01
Tony A Figeroa1012Germany2024-04-09
Stacey X Ostrosky1013Germany2024-03-30
Izzy G Amigon1014Japan2024-04-12
Izzy H Poquette1015Spain2024-03-27
David T Royster1016Russia2024-04-11
Greenwood C Whobrey1017Russia2024-04-06
Maria B Bowley1018Brazil2024-03-30
Adams C Darakjy1019Argentina2024-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maisha N OstroskyGermanyAnna Fali NEGOTIATION
Aika V CaudyJapanStephen Shaw NEW
Misaki V OstroskySpainStephen Shaw QUALIFIED
Maisha Q ButtJapanAsiya Javayant RENEWAL
Deepesh H CaudyBrazilXuxue Feng NEGOTIATION
Jones W ShinkoItalyIvan Magalhaes RENEWAL
Ashley X GarufiUnited KingdomAnna Fali UNQUALIFIED
Maisha D FerenczAustraliaAsiya Javayant NEGOTIATION
Sinclair W NestleGermanyElwin Sharvill NEGOTIATION
Antonio R SaylorsFranceElwin Sharvill QUALIFIED
Alejandro O MorascaJapanAsiya Javayant QUALIFIED
Ashley H InouyeSpainAsiya Javayant QUALIFIED
Julie W GlickRussiaXuxue Feng NEW
Sinclair B RutaCanadaXuxue Feng UNQUALIFIED
Arvin A AlbaresIndiaAsiya Javayant NEGOTIATION
Maisha C CampainUnited KingdomXuxue Feng QUALIFIED
Aika V AmigonItalyOnyama Limba PROPOSAL
Jones G DilliardSpainAmy Elsner RENEWAL
Cody M ShinkoFranceBernardo Dominic PROPOSAL
Aditya K NickaArgentinaElwin Sharvill PROPOSAL
Morrow A FerenczFranceIvan Magalhaes RENEWAL
Francesco Z PaprockiGermanyAmy Elsner UNQUALIFIED
Jones R NickaGermanyElwin Sharvill NEW
Costa R StensethArgentinaXuxue Feng RENEWAL
Jeanfrancois O GillianUnited KingdomOnyama Limba UNQUALIFIED
Costa O StockhamIndiaIvan Magalhaes NEGOTIATION
Juan B WaycottCanadaAmy Elsner RENEWAL
Silvio B StockhamArgentinaAsiya Javayant NEGOTIATION
Maria P GlickJapanAnna Fali RENEWAL
Jeanfrancois O RoysterAustraliaBernardo Dominic QUALIFIED
Clifford M SergiGermanyStephen Shaw QUALIFIED
Ivar M ButtBrazilIoni Bowcher UNQUALIFIED
Ashley J DoeArgentinaOnyama Limba NEW
Claire P WaycottGermanyBernardo Dominic PROPOSAL
Murillo F KuskoUnited KingdomAnna Fali PROPOSAL
Faith U KuskoBrazilOnyama Limba UNQUALIFIED
Maisha A ButtFranceAsiya Javayant QUALIFIED
Aika K VenereArgentinaBernardo Dominic NEGOTIATION
Jeanfrancois H TollnerAustraliaStephen Shaw NEW
Leon U NestleJapanAmy Elsner NEGOTIATION

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