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
Morrow W WaycottIndiaElwin Sharvill NEGOTIATION
Alejandro K BriddickAustraliaIoni Bowcher UNQUALIFIED
Tony V GarufiIndiaElwin Sharvill PROPOSAL
Cody Q SchemmerGermanyBernardo Dominic NEGOTIATION
Wickens B SaylorsUnited KingdomIoni Bowcher NEW
Maisha D RutaSpainOnyama Limba NEW
Leja X CaldareraBrazilAmy Elsner RENEWAL
Octavia G MaletJapanAnna Fali UNQUALIFIED
Ivar M WhobreyAustraliaOnyama Limba PROPOSAL
Mayumi X VenereIndiaOnyama Limba UNQUALIFIED
Wickens O WieserItalyAnna Fali QUALIFIED
Jennifer Z WhobreyArgentinaElwin Sharvill RENEWAL
Greenwood B AmigonJapanAsiya Javayant QUALIFIED
Jones I CaldareraSpainStephen Shaw RENEWAL
Silvio A RutaBrazilBernardo Dominic NEGOTIATION
Darci Y FigeroaBrazilXuxue Feng NEGOTIATION
Antonio E RimFranceStephen Shaw QUALIFIED
Aruna R VenereCanadaAmy Elsner UNQUALIFIED
Rodrigues O RimBrazilBernardo Dominic UNQUALIFIED
Isabel C SaylorsCanadaAnna Fali PROPOSAL
Misaki O ButtJapanOnyama Limba NEW
Ricardo T MorascaIndiaElwin Sharvill NEGOTIATION
Juan D FlosiUnited KingdomBernardo Dominic QUALIFIED
Julie N GlickGermanyIoni Bowcher RENEWAL
Clifford Q PoquetteBrazilAmy Elsner NEW
Claire T GlickJapanAmy Elsner RENEWAL
Costa H RulapaughAustraliaElwin Sharvill QUALIFIED
Julie U BriddickArgentinaIoni Bowcher QUALIFIED
Silvio Y MorascaRussiaIvan Magalhaes RENEWAL
Salvatore O GarufiBrazilStephen Shaw UNQUALIFIED
Kadeem T CaldareraBrazilAmy Elsner PROPOSAL
James W BowleyRussiaElwin Sharvill PROPOSAL
Leon W VenereUnited KingdomAsiya Javayant RENEWAL
Smith I AlbaresJapanElwin Sharvill NEGOTIATION
Jones L OldroydCanadaAnna Fali PROPOSAL
Maria Q KuskoAustraliaIvan Magalhaes NEW
Munro T BriddickBrazilXuxue Feng NEW
Antonio Q MarrierFranceIoni Bowcher NEW
Costa T BologniaIndiaBernardo Dominic PROPOSAL
Silvio B PerinSpainIoni Bowcher PROPOSAL
Arvin B SaylorsGermanyOnyama Limba UNQUALIFIED
James T MacleadBrazilStephen Shaw NEGOTIATION
Emily A KuskoBrazilOnyama Limba UNQUALIFIED
Arvin T BowleyUnited KingdomElwin Sharvill QUALIFIED
Kadeem Z OldroydJapanBernardo Dominic NEGOTIATION
Aditya P PaprockiItalyXuxue Feng RENEWAL
Costa X DilliardSpainAmy Elsner NEGOTIATION
Nicolas B SchemmerCanadaAmy Elsner PROPOSAL
Arvin U TollnerIndiaAmy Elsner UNQUALIFIED
Rodrigues S SaylorsSpainIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Adams V CaudyJapanXuxue Feng NEGOTIATION
Chavez O VocelkaItalyXuxue Feng NEGOTIATION
Emily E TollnerAustraliaStephen Shaw NEGOTIATION
Maisha S FlosiIndiaBernardo Dominic QUALIFIED
Mujtaba Q MaletUnited KingdomXuxue Feng PROPOSAL
Tony K VenereCanadaElwin Sharvill QUALIFIED
Maria W DarakjyFranceOnyama Limba NEW
Tony S FigeroaIndiaIoni Bowcher UNQUALIFIED
Misaki Y CampainFranceOnyama Limba RENEWAL
Mayumi H SaylorsUnited KingdomStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan P TollnerBrazil2024-04-09Morlong Associates UNQUALIFIED0Ivan Magalhaes
1001Salvatore E ButtUnited Kingdom2024-04-07Dorl, James J Esq PROPOSAL55Xuxue Feng
1002Mayumi S FollerIndia2024-03-31Benton, John B Jr QUALIFIED74Xuxue Feng
1003David B SergiFrance2024-04-29Rangoni Of Florence QUALIFIED88Elwin Sharvill
1004Francesco Z MarrierAustralia2024-04-15Buckley Miller Wright PROPOSAL8Elwin Sharvill
1005Sinclair T TollnerBrazil2024-04-06King, Christopher A Esq RENEWAL58Amy Elsner
1006Darci X DarakjySpain2024-04-25Rousseaux, Michael Esq QUALIFIED88Anna Fali
1007Mujtaba V KolmetzGermany2024-04-12Rangoni Of Florence NEW30Asiya Javayant
1008Juan H PerinBrazil2024-04-07Commercial Press UNQUALIFIED74Ivan Magalhaes
1009Rodrigues X WhobreyRussia2024-04-19Rousseaux, Michael Esq QUALIFIED98Amy Elsner
1010Ivar M OstroskyUnited Kingdom2024-04-08Morlong Associates RENEWAL48Stephen Shaw
1011Mayumi I IturbideRussia2024-04-03Feiner Bros PROPOSAL15Ivan Magalhaes
1012Chavez B ButtFrance2024-04-20Commercial Press NEGOTIATION45Ioni Bowcher
1013Darci W BriddickUnited Kingdom2024-04-19Benton, John B Jr QUALIFIED81Stephen Shaw
1014Rodrigues C RulapaughCanada2024-04-14Benton, John B Jr PROPOSAL24Amy Elsner
1015Jefferson C GauchoGermany2024-04-01Feltz Printing Service NEGOTIATION71Onyama Limba
1016Juan Q AmigonSpain2024-04-13Dorl, James J Esq PROPOSAL41Bernardo Dominic
1017Adams X PaprockiItaly2024-04-26Benton, John B Jr QUALIFIED26Bernardo Dominic
1018Adams D SchemmerAustralia2024-04-27Benton, John B Jr NEGOTIATION19Xuxue Feng
1019James B GillianUnited Kingdom2024-04-12Rangoni Of Florence UNQUALIFIED17Xuxue Feng
1020Deepesh W VenereFrance2024-04-15Benton, John B Jr PROPOSAL39Amy Elsner
1021Maria U GillianArgentina2024-03-31Truhlar And Truhlar Attys QUALIFIED21Xuxue Feng
1022James B ShinkoCanada2024-04-11King, Christopher A Esq QUALIFIED69Stephen Shaw
1023Maria X PerinArgentina2024-04-11Morlong Associates PROPOSAL55Ioni Bowcher
1024Clifford Q OldroydUnited Kingdom2024-04-01Printing Dimensions NEGOTIATION66Xuxue Feng
1025Leon Q PaprockiIndia2024-04-13Feiner Bros QUALIFIED69Bernardo Dominic
1026Faith N VocelkaSpain2024-04-13King, Christopher A Esq RENEWAL28Elwin Sharvill
1027Chavez F RulapaughRussia2024-04-22Chapman, Ross E Esq PROPOSAL21Elwin Sharvill
1028Emily A NestleFrance2024-04-21Benton, John B Jr PROPOSAL55Ivan Magalhaes
1029Deepesh K RutaSpain2024-04-09Chanay, Jeffrey A Esq UNQUALIFIED75Ioni Bowcher
1030Maria W SlusarskiGermany2024-04-16Printing Dimensions RENEWAL69Amy Elsner
1031Johnson K RoysterJapan2024-04-03Printing Dimensions NEW63Ivan Magalhaes
1032Ashley F DarakjyIndia2024-04-01Chapman, Ross E Esq QUALIFIED66Onyama Limba
1033Jennifer R SlusarskiArgentina2024-04-23Rangoni Of Florence NEGOTIATION87Asiya Javayant
1034David C KolmetzBrazil2024-04-16King, Christopher A Esq PROPOSAL48Xuxue Feng
1035Maria V GauchoRussia2024-04-29Commercial Press QUALIFIED85Elwin Sharvill
1036Maisha G VocelkaSpain2024-04-13Chapman, Ross E Esq NEW71Anna Fali
1037Clifford F CaudyUnited Kingdom2024-04-14Printing Dimensions RENEWAL68Ivan Magalhaes
1038Nicolas N CaldareraGermany2024-04-24Morlong Associates PROPOSAL28Anna Fali
1039Aika Z RutaArgentina2024-04-05Dorl, James J Esq QUALIFIED14Asiya Javayant
1040Jennifer D CaudyGermany2024-04-17Chapman, Ross E Esq RENEWAL18Amy Elsner
1041Mayumi U MorascaFrance2024-04-27Benton, John B Jr QUALIFIED19Onyama Limba
1042Murillo W RimAustralia2024-04-18Benton, John B Jr RENEWAL20Onyama Limba
1043Aika S ButtArgentina2024-04-21Chapman, Ross E Esq QUALIFIED28Elwin Sharvill
1044David I IturbideSpain2024-04-06Benton, John B Jr QUALIFIED18Anna Fali
1045Mujtaba Z CaudyRussia2024-04-25Buckley Miller Wright QUALIFIED52Xuxue Feng
1046Alejandro J MacleadItaly2024-04-20Chemel, James L Cpa NEW61Onyama Limba
1047Darci V NickaSpain2024-04-12Truhlar And Truhlar Attys NEGOTIATION76Elwin Sharvill
1048Aika B FollerFrance2024-04-01King, Christopher A Esq RENEWAL28Stephen Shaw
1049Wickens U InouyeArgentina2024-04-27Feiner Bros UNQUALIFIED83Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Smith N CaldareraJapanAnna Fali UNQUALIFIED
Alejandro D FigeroaBrazilXuxue Feng UNQUALIFIED
Aika T SlusarskiAustraliaIvan Magalhaes UNQUALIFIED
Cody N ChuiFranceStephen Shaw RENEWAL
Francesco X RulapaughFranceAnna Fali NEGOTIATION
Nicolas D InouyeItalyOnyama Limba RENEWAL
Leja P SchemmerUnited KingdomElwin Sharvill NEW
Chavez O MaletBrazilXuxue Feng RENEWAL
Isabel B GillianBrazilStephen Shaw QUALIFIED
David S BriddickGermanyXuxue Feng RENEWAL
Maria B KolmetzRussiaStephen Shaw UNQUALIFIED
Nicolas F OstroskyUnited KingdomIvan Magalhaes PROPOSAL
Kadeem M KolmetzJapanAsiya Javayant RENEWAL
Chavez Q AmigonSpainBernardo Dominic RENEWAL
Misaki K WhobreyGermanyAnna Fali UNQUALIFIED
Stacey P VenereCanadaElwin Sharvill UNQUALIFIED
Emily E OstroskyRussiaElwin Sharvill RENEWAL
Salvatore H AlbaresUnited KingdomAmy Elsner NEGOTIATION
James Q KolmetzArgentinaAmy Elsner QUALIFIED
Mujtaba B MaletFranceBernardo Dominic RENEWAL
Chavez Y RimUnited KingdomOnyama Limba NEW
Jefferson R VenereFranceAmy Elsner RENEWAL
Juan S FigeroaItalyBernardo Dominic QUALIFIED
Nicolas Z OldroydCanadaStephen Shaw NEW
Aika C BologniaFranceBernardo Dominic NEGOTIATION
Aika R MaletSpainStephen Shaw RENEWAL
Rodrigues A ShinkoSpainElwin Sharvill NEGOTIATION
David M OstroskyUnited KingdomAnna Fali UNQUALIFIED
Murillo B FigeroaIndiaIvan Magalhaes PROPOSAL
James I RimSpainIoni Bowcher NEGOTIATION
Darci P RoysterItalyIvan Magalhaes UNQUALIFIED
Wickens V WieserUnited KingdomOnyama Limba QUALIFIED
Arvin A GillianJapanXuxue Feng PROPOSAL
Mujtaba P KuskoJapanAnna Fali RENEWAL
Ricardo V FigeroaUnited KingdomAnna Fali RENEWAL
Costa W BriddickRussiaBernardo Dominic NEW
James V WieserItalyElwin Sharvill QUALIFIED
Julie T AmigonBrazilIvan Magalhaes NEW
Cody J VocelkaItalyElwin Sharvill RENEWAL
Jefferson X StensethItalyElwin Sharvill NEGOTIATION
Darci V BriddickBrazilIvan Magalhaes QUALIFIED
Adams T RimGermanyXuxue Feng RENEWAL
Octavia U VocelkaRussiaElwin Sharvill NEGOTIATION
Deepesh G KuskoFranceAmy Elsner QUALIFIED
Izzy I DoeArgentinaOnyama Limba NEW
Munro O RulapaughItalyBernardo Dominic NEW
Jennifer Q PerinSpainIoni Bowcher UNQUALIFIED
Ricardo Z GauchoRussiaOnyama Limba UNQUALIFIED
Francesco Y WaycottGermanyIoni Bowcher NEGOTIATION
Leon P BologniaCanadaElwin Sharvill QUALIFIED
Frozen Columns
Name
Salvatore N Perin
Leon G Iturbide
Jefferson F Malet
Jennifer D Kusko
Mujtaba F Kusko
Antonio X Doe
Nicolas Y Royster
Tony L Dilliard
Mayumi W Caldarera
Isabel X Briddick
Salvatore G Kusko
Greenwood J Iturbide
Aika B Venere
Jefferson E Amigon
Tony I Royster
Smith U Morasca
Leon G Whobrey
Deepesh P Tollner
Octavia U Bolognia
Octavia B Gaucho
Greenwood R Figeroa
Silvio P Gaucho
Cody W Schemmer
Maria U Malet
Julie P Butt
Juan Z Iturbide
Darci C Flosi
James B Venere
Adams M Foller
Claire R Amigon
Maria G Morasca
Greenwood I Gillian
Maria V Paprocki
Jones F Morasca
Izzy G Perin
Francesco U Malet
Wickens U Nestle
Isabel H Bolognia
Aditya I Caldarera
Wickens I Butt
Tony V Royster
Kaitlin W Nicka
Mujtaba S Flosi
Morrow O Caldarera
Ashley C Perin
Salvatore K Malet
Costa L Slusarski
Izzy F Schemmer
Rodrigues J Kusko
Isabel X Caudy
IdCountryDate
1000Canada2024-04-12
1001Brazil2024-04-16
1002Spain2024-04-29
1003Japan2024-04-28
1004Germany2024-04-10
1005Brazil2024-04-27
1006Spain2024-04-07
1007Russia2024-04-20
1008Germany2024-04-04
1009Brazil2024-04-25
1010United Kingdom2024-04-13
1011Spain2024-04-25
1012Argentina2024-04-29
1013Italy2024-04-26
1014Russia2024-04-13
1015Spain2024-04-06
1016Italy2024-04-13
1017Russia2024-04-11
1018Argentina2024-04-17
1019Spain2024-04-14
1020Australia2024-04-03
1021Spain2024-04-15
1022Spain2024-04-22
1023Canada2024-04-04
1024Argentina2024-04-12
1025Argentina2024-04-03
1026Italy2024-04-01
1027Argentina2024-04-10
1028Argentina2024-04-21
1029Japan2024-04-17
1030Argentina2024-04-06
1031Japan2024-04-29
1032Argentina2024-04-05
1033Russia2024-04-05
1034Brazil2024-04-26
1035United Kingdom2024-04-24
1036Italy2024-04-28
1037France2024-04-10
1038India2024-04-29
1039Italy2024-04-10
1040Germany2024-04-02
1041Italy2024-04-06
1042India2024-04-03
1043Japan2024-04-11
1044Argentina2024-03-31
1045United Kingdom2024-04-05
1046Italy2024-04-26
1047France2024-04-07
1048Japan2024-04-26
1049Argentina2024-04-11

On-Demand Data

NameIdCountryDate
Kadeem W Morasca1000United Kingdom2024-04-23
Salvatore A Figeroa1001France2024-04-20
Adams T Gillian1002France2024-04-14
Kadeem T Vocelka1003Argentina2024-04-15
Faith F Slusarski1004Australia2024-04-09
Claire R Venere1005Germany2024-04-22
Leja A Butt1006India2024-04-16
Aditya R Waycott1007Russia2024-03-31
Jeanfrancois K Bolognia1008Australia2024-04-13
Izzy O Vocelka1009Germany2024-04-23
Jefferson C Poquette1010United Kingdom2024-04-10
Arvin W Malet1011Germany2024-04-09
Wickens T Amigon1012United Kingdom2024-04-05
Juan N Wieser1013Italy2024-04-13
Tony S Poquette1014Germany2024-04-28
Ivar G Darakjy1015India2024-03-31
Salvatore N Stenseth1016India2024-04-28
Julie F Wieser1017United Kingdom2024-04-19
Juan W Ostrosky1018Germany2024-04-06
Jeanfrancois U Kolmetz1019Italy2024-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro V SaylorsAustraliaElwin Sharvill RENEWAL
Octavia R WhobreyRussiaAmy Elsner QUALIFIED
Morrow F FigeroaSpainBernardo Dominic RENEWAL
Octavia W ButtCanadaIoni Bowcher NEGOTIATION
Alejandro X WhobreyBrazilBernardo Dominic PROPOSAL
Darci Y TollnerSpainAmy Elsner UNQUALIFIED
Munro P DilliardUnited KingdomStephen Shaw PROPOSAL
Mayumi I SlusarskiCanadaAmy Elsner NEW
Morrow U FollerJapanAnna Fali NEGOTIATION
Silvio N AmigonUnited KingdomOnyama Limba NEGOTIATION
Deepesh Z SergiFranceAnna Fali NEGOTIATION
Julie C FerenczCanadaXuxue Feng QUALIFIED
Francesco F NestleCanadaAnna Fali PROPOSAL
Octavia O ChuiItalyAnna Fali PROPOSAL
Alejandro K SlusarskiIndiaIvan Magalhaes QUALIFIED
Deepesh U FlosiBrazilIvan Magalhaes QUALIFIED
Ashley H DarakjyRussiaAnna Fali NEGOTIATION
Stacey W PerinJapanAmy Elsner PROPOSAL
Tony M GillianBrazilIoni Bowcher NEGOTIATION
Nicolas F SergiFranceAmy Elsner NEW
Jefferson A RimJapanStephen Shaw PROPOSAL
Clifford U FerenczRussiaAsiya Javayant UNQUALIFIED
Sinclair V PaprockiBrazilIvan Magalhaes UNQUALIFIED
Antonio S DilliardIndiaAmy Elsner UNQUALIFIED
Greenwood V TollnerUnited KingdomAsiya Javayant RENEWAL
Jefferson P FerenczItalyIoni Bowcher PROPOSAL
Jeanfrancois V OldroydBrazilOnyama Limba PROPOSAL
Leon Z ButtRussiaAnna Fali NEW
Greenwood N FollerBrazilBernardo Dominic UNQUALIFIED
Julie O MaletRussiaBernardo Dominic UNQUALIFIED
David O KolmetzItalyIvan Magalhaes NEGOTIATION
Jeanfrancois G FerenczItalyAmy Elsner QUALIFIED
Adams J BologniaSpainAnna Fali UNQUALIFIED
Costa V BowleyItalyAmy Elsner PROPOSAL
Deepesh C RutaBrazilIoni Bowcher NEW
Isabel G VenereRussiaAnna Fali QUALIFIED
Wickens I AlbaresUnited KingdomIoni Bowcher QUALIFIED
Maria X OldroydCanadaAmy Elsner RENEWAL
Johnson Y AmigonUnited KingdomAmy Elsner RENEWAL
James D StensethArgentinaAmy Elsner 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>