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
Octavia I KolmetzFranceStephen Shaw RENEWAL
Kadeem R PaprockiCanadaElwin Sharvill NEGOTIATION
Silvio S KolmetzAustraliaBernardo Dominic UNQUALIFIED
Jeanfrancois L SchemmerItalyAmy Elsner NEW
Tony P OstroskyJapanAsiya Javayant QUALIFIED
Kadeem D SergiIndiaElwin Sharvill UNQUALIFIED
Munro C StockhamUnited KingdomAmy Elsner NEGOTIATION
Arvin L ChuiItalyAsiya Javayant PROPOSAL
Ricardo U TollnerSpainStephen Shaw PROPOSAL
David E PaprockiCanadaOnyama Limba RENEWAL
Kadeem C GillianAustraliaAmy Elsner RENEWAL
Clifford B MarrierJapanAnna Fali NEW
Maisha K KuskoBrazilAmy Elsner NEGOTIATION
Jefferson H CaldareraItalyXuxue Feng NEW
Morrow T ShinkoBrazilIoni Bowcher UNQUALIFIED
Clifford E DoeIndiaIoni Bowcher RENEWAL
Mayumi V WaycottCanadaStephen Shaw PROPOSAL
Nicolas M WaycottFranceStephen Shaw QUALIFIED
Stacey C SlusarskiBrazilAnna Fali NEGOTIATION
Leon B TollnerBrazilStephen Shaw PROPOSAL
Stacey Q ChuiItalyBernardo Dominic PROPOSAL
Silvio N GarufiAustraliaAsiya Javayant UNQUALIFIED
Ricardo F IturbideItalyIoni Bowcher RENEWAL
Costa W DarakjyIndiaOnyama Limba NEGOTIATION
Julie Q WaycottGermanyAnna Fali QUALIFIED
Clifford C PerinAustraliaAmy Elsner NEGOTIATION
Darci W NestleSpainAnna Fali QUALIFIED
Darci J PoquetteJapanIvan Magalhaes NEGOTIATION
David G DoeItalyOnyama Limba RENEWAL
Kadeem Z GarufiUnited KingdomAnna Fali NEW
Clifford L SaylorsUnited KingdomAnna Fali RENEWAL
Mujtaba I CaudySpainAnna Fali RENEWAL
Murillo O MorascaIndiaOnyama Limba RENEWAL
Octavia Y CampainRussiaStephen Shaw NEW
Greenwood Z RimFranceOnyama Limba UNQUALIFIED
Silvio L DoeUnited KingdomAnna Fali PROPOSAL
Aruna F AlbaresJapanAsiya Javayant PROPOSAL
Kadeem Z NickaIndiaAmy Elsner NEGOTIATION
Rodrigues A PaprockiBrazilOnyama Limba PROPOSAL
Ricardo C VenereGermanyAsiya Javayant QUALIFIED
Mujtaba Z InouyeArgentinaIoni Bowcher QUALIFIED
Aditya L WhobreyItalyOnyama Limba UNQUALIFIED
Jones I RutaBrazilIoni Bowcher NEGOTIATION
Clifford C InouyeUnited KingdomStephen Shaw RENEWAL
Silvio E ChuiCanadaIoni Bowcher UNQUALIFIED
Mujtaba V StockhamArgentinaStephen Shaw NEW
Clifford M PoquetteItalyAsiya Javayant PROPOSAL
Jefferson V RulapaughArgentinaElwin Sharvill UNQUALIFIED
Stacey L PoquetteAustraliaIvan Magalhaes RENEWAL
Jones R GauchoCanadaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Faith C SaylorsGermanyAnna Fali PROPOSAL
Wickens X BologniaItalyStephen Shaw NEW
Jefferson Y ChuiFranceBernardo Dominic UNQUALIFIED
Emily L PerinGermanyStephen Shaw UNQUALIFIED
Silvio I PoquetteIndiaXuxue Feng RENEWAL
Maria V FlosiArgentinaOnyama Limba PROPOSAL
Aruna X FollerItalyOnyama Limba RENEWAL
Mujtaba M VocelkaSpainAsiya Javayant NEW
Adams V BowleyRussiaIoni Bowcher RENEWAL
Kaitlin A FollerSpainOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya Q SlusarskiArgentina2024-04-10Commercial Press QUALIFIED65Ivan Magalhaes
1001Julie Y CampainGermany2024-05-06Truhlar And Truhlar Attys PROPOSAL38Elwin Sharvill
1002Johnson P CaldareraCanada2024-04-27Feltz Printing Service UNQUALIFIED68Amy Elsner
1003Jeanfrancois R SergiSpain2024-04-17Feiner Bros PROPOSAL90Bernardo Dominic
1004Francesco G DilliardIndia2024-04-27Buckley Miller Wright QUALIFIED30Bernardo Dominic
1005Adams S GillianJapan2024-04-15Commercial Press RENEWAL92Bernardo Dominic
1006Greenwood F NestleIndia2024-04-12Feltz Printing Service PROPOSAL24Ioni Bowcher
1007Greenwood C CaldareraBrazil2024-04-17Commercial Press RENEWAL2Elwin Sharvill
1008Aditya G WieserArgentina2024-04-20Chapman, Ross E Esq NEGOTIATION90Xuxue Feng
1009Claire F WaycottSpain2024-05-08Morlong Associates UNQUALIFIED21Anna Fali
1010Nicolas C FigeroaFrance2024-05-06Dorl, James J Esq NEW80Amy Elsner
1011Antonio D BologniaGermany2024-04-20Dorl, James J Esq PROPOSAL47Bernardo Dominic
1012Rodrigues V FerenczFrance2024-05-05Chanay, Jeffrey A Esq PROPOSAL25Ivan Magalhaes
1013Jones C DarakjyJapan2024-05-05Rousseaux, Michael Esq NEW19Ioni Bowcher
1014Murillo Q RulapaughCanada2024-05-08Chanay, Jeffrey A Esq RENEWAL57Ioni Bowcher
1015Kaitlin J RoysterArgentina2024-05-02Rousseaux, Michael Esq UNQUALIFIED34Bernardo Dominic
1016Tony E RutaGermany2024-05-02Truhlar And Truhlar Attys PROPOSAL5Bernardo Dominic
1017Clifford F PaprockiIndia2024-04-24Truhlar And Truhlar Attys QUALIFIED43Xuxue Feng
1018Izzy Z SchemmerIndia2024-04-20Truhlar And Truhlar Attys RENEWAL22Ioni Bowcher
1019Emily K OstroskyRussia2024-04-14Truhlar And Truhlar Attys NEW73Xuxue Feng
1020Chavez V TollnerAustralia2024-04-12Rangoni Of Florence NEGOTIATION11Elwin Sharvill
1021Jennifer W CampainArgentina2024-04-24Chemel, James L Cpa UNQUALIFIED11Bernardo Dominic
1022Ivar W PaprockiUnited Kingdom2024-04-14Rousseaux, Michael Esq RENEWAL51Bernardo Dominic
1023Sinclair L AlbaresFrance2024-05-03Dorl, James J Esq NEGOTIATION85Onyama Limba
1024Leon D KolmetzCanada2024-04-22Truhlar And Truhlar Attys PROPOSAL11Stephen Shaw
1025Aika Q OstroskyAustralia2024-05-05Feltz Printing Service NEW73Amy Elsner
1026Aruna H NestleIndia2024-04-13Feiner Bros NEGOTIATION23Anna Fali
1027Tony W FigeroaItaly2024-04-28Feiner Bros RENEWAL89Anna Fali
1028David Q SchemmerSpain2024-04-13Dorl, James J Esq QUALIFIED89Bernardo Dominic
1029Silvio I CampainGermany2024-04-11Morlong Associates RENEWAL79Ivan Magalhaes
1030Costa J PerinJapan2024-04-18Chapman, Ross E Esq NEW2Elwin Sharvill
1031Tony L DilliardAustralia2024-05-02Chapman, Ross E Esq PROPOSAL91Onyama Limba
1032Misaki E VocelkaBrazil2024-04-26Chapman, Ross E Esq PROPOSAL91Bernardo Dominic
1033Jennifer I ChuiAustralia2024-05-06Chemel, James L Cpa QUALIFIED97Onyama Limba
1034Rodrigues X ButtAustralia2024-04-27Chapman, Ross E Esq QUALIFIED91Amy Elsner
1035Jeanfrancois R SlusarskiAustralia2024-05-02Printing Dimensions RENEWAL26Ioni Bowcher
1036Silvio O PerinArgentina2024-04-22Dorl, James J Esq QUALIFIED8Ivan Magalhaes
1037Murillo V VocelkaSpain2024-04-14Truhlar And Truhlar Attys UNQUALIFIED90Ioni Bowcher
1038Darci C FlosiArgentina2024-05-02Morlong Associates UNQUALIFIED52Asiya Javayant
1039Jennifer I KuskoRussia2024-05-01Benton, John B Jr NEW74Stephen Shaw
1040Jeanfrancois O NestleFrance2024-04-24King, Christopher A Esq UNQUALIFIED71Elwin Sharvill
1041Nicolas Y PoquetteUnited Kingdom2024-04-21Commercial Press QUALIFIED71Ivan Magalhaes
1042Chavez J DoeAustralia2024-04-10Rangoni Of Florence RENEWAL24Ioni Bowcher
1043Izzy A FollerCanada2024-04-22Truhlar And Truhlar Attys NEW44Stephen Shaw
1044Munro X MarrierFrance2024-05-04Feiner Bros PROPOSAL98Onyama Limba
1045Aruna O CaudyBrazil2024-05-09Rousseaux, Michael Esq NEW19Anna Fali
1046Francesco V StockhamRussia2024-04-13Dorl, James J Esq NEW34Onyama Limba
1047Darci L KuskoGermany2024-05-03Rangoni Of Florence UNQUALIFIED25Ivan Magalhaes
1048Octavia J SergiItaly2024-05-08Rousseaux, Michael Esq UNQUALIFIED16Amy Elsner
1049James O MacleadSpain2024-04-26Feiner Bros NEW75Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Tony V WaycottAustraliaIoni Bowcher QUALIFIED
Francesco P RimJapanAnna Fali NEW
Leja F NickaIndiaOnyama Limba NEW
Cody N SaylorsArgentinaAsiya Javayant PROPOSAL
Mujtaba E StockhamJapanAnna Fali QUALIFIED
Ashley O MaletArgentinaXuxue Feng PROPOSAL
Nicolas T WieserJapanElwin Sharvill RENEWAL
Ivar A RulapaughJapanOnyama Limba NEGOTIATION
Kadeem T FerenczFranceAmy Elsner UNQUALIFIED
Maisha V RutaIndiaStephen Shaw QUALIFIED
Alejandro L MaletAustraliaIoni Bowcher NEW
Leon V GlickRussiaElwin Sharvill NEW
Faith Q RutaSpainXuxue Feng PROPOSAL
Costa T RulapaughIndiaAnna Fali QUALIFIED
Darci Y GauchoJapanAnna Fali UNQUALIFIED
Jeanfrancois Q VocelkaRussiaStephen Shaw QUALIFIED
Misaki E RimCanadaElwin Sharvill UNQUALIFIED
Octavia J VocelkaUnited KingdomAnna Fali NEGOTIATION
Aruna E DarakjyCanadaAmy Elsner PROPOSAL
Aruna I WhobreyArgentinaStephen Shaw RENEWAL
Adams O PoquetteAustraliaOnyama Limba RENEWAL
Emily O SchemmerAustraliaOnyama Limba UNQUALIFIED
Cody D KuskoAustraliaBernardo Dominic UNQUALIFIED
Arvin T FigeroaJapanStephen Shaw RENEWAL
Silvio Q RutaAustraliaOnyama Limba NEGOTIATION
Munro J StensethBrazilAmy Elsner QUALIFIED
Octavia M WaycottRussiaAmy Elsner PROPOSAL
Mujtaba J IturbideGermanyIvan Magalhaes UNQUALIFIED
Rodrigues K FollerFranceIoni Bowcher RENEWAL
Jones N CaudyAustraliaBernardo Dominic RENEWAL
Julie P RoysterItalyElwin Sharvill UNQUALIFIED
Antonio E GauchoAustraliaIvan Magalhaes PROPOSAL
Ashley Z MaletIndiaAsiya Javayant RENEWAL
Cody K MaletArgentinaAnna Fali UNQUALIFIED
Ricardo D FigeroaItalyElwin Sharvill NEGOTIATION
Ricardo F StockhamJapanIvan Magalhaes PROPOSAL
Kadeem Z ChuiItalyXuxue Feng PROPOSAL
Mayumi V GarufiArgentinaOnyama Limba QUALIFIED
Leon U GauchoCanadaIvan Magalhaes RENEWAL
Clifford B NickaItalyElwin Sharvill NEW
Nicolas Q BowleyGermanyAsiya Javayant NEW
Smith M PoquetteCanadaIoni Bowcher NEGOTIATION
Costa P MacleadItalyElwin Sharvill PROPOSAL
Antonio E TollnerGermanyIvan Magalhaes NEW
Tony G RoysterAustraliaStephen Shaw QUALIFIED
Jefferson W MarrierItalyAsiya Javayant NEW
Tony Y MorascaArgentinaBernardo Dominic PROPOSAL
Jefferson T CampainArgentinaXuxue Feng RENEWAL
Jeanfrancois V NestleArgentinaAmy Elsner PROPOSAL
Ashley S RutaBrazilAmy Elsner PROPOSAL
Frozen Columns
Name
Antonio E Ostrosky
Tony K Caldarera
Aditya X Garufi
Maria L Bowley
Leja V Venere
Stacey S Oldroyd
Leon Z Garufi
Juan O Wieser
Antonio G Figeroa
Jones K Garufi
Munro U Stockham
David P Ruta
Jones O Perin
Kadeem M Albares
Alejandro O Vocelka
Jones C Malet
Deepesh N Tollner
Octavia V Morasca
James Z Morasca
Francesco N Marrier
Jefferson I Flosi
Murillo Y Figeroa
Maria R Ostrosky
Arvin F Inouye
Alejandro H Garufi
Smith Z Bowley
Costa O Kolmetz
Jennifer H Schemmer
Nicolas P Albares
Mujtaba O Doe
Costa J Gaucho
David D Nicka
Aditya Y Sergi
Aditya K Glick
Aruna E Tollner
Morrow C Amigon
Jennifer A Kusko
Mujtaba S Ferencz
Antonio E Malet
Emily H Nestle
Adams C Royster
Aruna J Gaucho
Maisha R Foller
Clifford I Paprocki
Munro P Stenseth
Stacey E Maclead
David I Slusarski
Alejandro G Chui
Murillo L Rulapaugh
Darci O Slusarski
IdCountryDate
1000Italy2024-05-04
1001Russia2024-04-10
1002United Kingdom2024-04-10
1003Russia2024-04-24
1004Australia2024-05-05
1005Italy2024-04-19
1006Japan2024-04-22
1007Canada2024-04-14
1008Canada2024-04-27
1009Germany2024-04-18
1010Russia2024-04-19
1011Brazil2024-04-19
1012Germany2024-04-23
1013Australia2024-04-26
1014Russia2024-04-26
1015Canada2024-04-28
1016Brazil2024-04-13
1017France2024-04-18
1018Japan2024-05-02
1019France2024-05-09
1020Argentina2024-05-05
1021Brazil2024-04-20
1022United Kingdom2024-04-10
1023Australia2024-04-26
1024France2024-04-29
1025India2024-05-07
1026India2024-04-22
1027France2024-04-18
1028Spain2024-04-13
1029Australia2024-04-28
1030France2024-04-29
1031Brazil2024-04-21
1032Canada2024-05-09
1033Russia2024-04-27
1034Spain2024-05-06
1035Australia2024-04-17
1036France2024-05-04
1037France2024-05-07
1038Russia2024-04-10
1039Canada2024-04-29
1040Argentina2024-04-23
1041India2024-05-03
1042United Kingdom2024-05-08
1043Australia2024-04-19
1044Spain2024-04-25
1045France2024-04-30
1046Italy2024-05-02
1047Brazil2024-04-17
1048Germany2024-04-23
1049Italy2024-05-05

On-Demand Data

NameIdCountryDate
Emily K Oldroyd1000Brazil2024-04-13
Alejandro T Figeroa1001Argentina2024-04-17
Rodrigues K Campain1002Germany2024-04-21
Juan H Whobrey1003France2024-04-10
Nicolas X Waycott1004Japan2024-05-08
Maria S Garufi1005Canada2024-04-12
Cody Y Butt1006Italy2024-04-17
Mayumi J Malet1007Brazil2024-04-23
Antonio C Foller1008France2024-04-21
Murillo A Morasca1009Italy2024-05-05
Cody O Nestle1010France2024-04-21
Francesco H Malet1011Spain2024-04-23
Ricardo I Stockham1012Brazil2024-04-14
Mujtaba I Caudy1013Australia2024-05-08
Chavez G Ferencz1014Australia2024-04-17
Alejandro Y Waycott1015Argentina2024-04-19
Aditya N Maclead1016France2024-04-23
Emily K Paprocki1017Japan2024-04-13
Antonio Q Rim1018Australia2024-04-11
Jones U Malet1019Australia2024-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo S SchemmerRussiaElwin Sharvill NEGOTIATION
Chavez O PerinGermanyAnna Fali UNQUALIFIED
Alejandro J WieserSpainStephen Shaw NEW
Murillo X BologniaArgentinaStephen Shaw NEW
Mujtaba N SaylorsRussiaIvan Magalhaes UNQUALIFIED
Ricardo E InouyeAustraliaStephen Shaw NEW
Arvin M GlickAustraliaAsiya Javayant UNQUALIFIED
Rodrigues N CaudyUnited KingdomBernardo Dominic PROPOSAL
Sinclair H SlusarskiUnited KingdomBernardo Dominic UNQUALIFIED
David H NestleBrazilAnna Fali QUALIFIED
Salvatore W PoquetteUnited KingdomOnyama Limba NEGOTIATION
Salvatore P CaldareraCanadaAnna Fali NEGOTIATION
Tony N KuskoIndiaBernardo Dominic QUALIFIED
Nicolas B ShinkoJapanAnna Fali NEW
Greenwood A ButtIndiaIvan Magalhaes NEW
Darci J TollnerGermanyBernardo Dominic RENEWAL
Ivar J GillianBrazilIvan Magalhaes NEW
Wickens M IturbideRussiaAnna Fali PROPOSAL
Claire J StockhamRussiaAmy Elsner NEW
Kadeem C DilliardItalyAsiya Javayant NEGOTIATION
Sinclair A WaycottItalyAmy Elsner NEW
Maria G WieserJapanStephen Shaw NEGOTIATION
Smith C StockhamIndiaStephen Shaw UNQUALIFIED
Isabel Y OldroydSpainXuxue Feng NEW
Munro R RutaJapanIvan Magalhaes UNQUALIFIED
Costa R GarufiIndiaOnyama Limba PROPOSAL
Izzy C GauchoUnited KingdomXuxue Feng RENEWAL
Isabel N DilliardBrazilAsiya Javayant QUALIFIED
Ashley Z SaylorsSpainElwin Sharvill NEW
James U GarufiGermanyOnyama Limba QUALIFIED
Tony X ShinkoRussiaXuxue Feng PROPOSAL
Maisha C PoquetteJapanIvan Magalhaes NEGOTIATION
Jeanfrancois A KuskoCanadaBernardo Dominic RENEWAL
Isabel V ButtCanadaIoni Bowcher QUALIFIED
Morrow Y FigeroaRussiaIvan Magalhaes NEW
Adams P ChuiAustraliaXuxue Feng NEGOTIATION
Smith Z RulapaughItalyOnyama Limba PROPOSAL
Emily O GauchoItalyXuxue Feng NEGOTIATION
Jones F PerinCanadaElwin Sharvill RENEWAL
Deepesh Y MorascaArgentinaBernardo Dominic 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>