Locale

Change the locale of the datepicker, schedule and client side validation messages.

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.

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 CaldareraBrazilElwin Sharvill NEGOTIATION
Rodrigues CampainAustraliaAsiya Javayant NEW
Munro FerenczAustraliaIvan Magalhaes QUALIFIED
Greenwood BologniaBrazilIvan Magalhaes NEGOTIATION
Aruna FigeroaArgentinaStephen Shaw NEGOTIATION
Silvio SlusarskiAustraliaStephen Shaw UNQUALIFIED
Jones VocelkaRussiaIoni Bowcher PROPOSAL
Clifford RimGermanyStephen Shaw NEW
Faith GillianCanadaAnna Fali RENEWAL
Stacey MacleadIndiaAsiya Javayant UNQUALIFIED
Misaki RoysterSpainOnyama Limba NEW
Ashley DoeSpainAsiya Javayant PROPOSAL
Ricardo GauchoGermanyBernardo Dominic NEW
Darci PoquetteUnited KingdomIoni Bowcher QUALIFIED
Kaitlin OstroskyAustraliaAsiya Javayant QUALIFIED
Smith GlickGermanyIoni Bowcher NEW
Jennifer AmigonFranceAsiya Javayant RENEWAL
Morrow RutaUnited KingdomAmy Elsner NEGOTIATION
Jeanfrancois VenereGermanyXuxue Feng NEW
Faith GillianAustraliaAsiya Javayant QUALIFIED
Greenwood BologniaBrazilElwin Sharvill NEW
Aika InouyeGermanyBernardo Dominic RENEWAL
Jeanfrancois VenereArgentinaAmy Elsner UNQUALIFIED
Leja CaldareraJapanBernardo Dominic PROPOSAL
Munro FerenczAustraliaAmy Elsner RENEWAL
Nicolas IturbideBrazilStephen Shaw RENEWAL
Mayumi KolmetzArgentinaStephen Shaw RENEWAL
Ivar PaprockiBrazilOnyama Limba NEGOTIATION
Rodrigues CampainFranceBernardo Dominic QUALIFIED
Maria MarrierBrazilAmy Elsner QUALIFIED
Juan WieserItalyAnna Fali RENEWAL
Johnson SergiGermanyOnyama Limba QUALIFIED
Sinclair WaycottArgentinaAmy Elsner RENEWAL
Leon OldroydRussiaBernardo Dominic UNQUALIFIED
Aruna FigeroaCanadaAsiya Javayant PROPOSAL
Jeanfrancois VenereSpainIvan Magalhaes QUALIFIED
Arvin AlbaresItalyOnyama Limba NEW
Jones VocelkaArgentinaAnna Fali QUALIFIED
Misaki RoysterItalyOnyama Limba QUALIFIED
Aika InouyeSpainIoni Bowcher UNQUALIFIED
Leja CaldareraUnited KingdomAmy Elsner RENEWAL
Maria MarrierCanadaElwin Sharvill NEW
Jennifer AmigonJapanBernardo Dominic NEW
Sinclair WaycottCanadaOnyama Limba NEW
Stacey MacleadAustraliaAsiya Javayant PROPOSAL
Alejandro PerinArgentinaXuxue Feng NEGOTIATION
Wickens NestleRussiaAnna Fali UNQUALIFIED
Jeanfrancois VenereFranceAnna Fali PROPOSAL
Clifford RimAustraliaXuxue Feng NEGOTIATION
Jones VocelkaAustraliaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiUnited KingdomAsiya Javayant NEW
Juan WieserFranceBernardo Dominic PROPOSAL
Kaitlin OstroskyGermanyOnyama Limba NEGOTIATION
Ashley DoeUnited KingdomXuxue Feng QUALIFIED
Jones VocelkaSpainAnna Fali NEW
Kaitlin OstroskyRussiaStephen Shaw RENEWAL
Faith GillianBrazilStephen Shaw PROPOSAL
Faith GillianAustraliaBernardo Dominic RENEWAL
Nicolas IturbideFranceElwin Sharvill RENEWAL
Mujtaba NickaIndiaOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteUnited Kingdom2021-09-01Printing Dimensions RENEWAL13Bernardo Dominic
1001Emily WhobreyBrazil2021-09-09Rangoni Of Florence NEW20Ioni Bowcher
1002Isabel BowleySpain2021-09-13Dorl, James J Esq UNQUALIFIED67Stephen Shaw
1003Munro FerenczSpain2021-08-31Buckley Miller Wright UNQUALIFIED56Bernardo Dominic
1004Aika InouyeGermany2021-08-25Feltz Printing Service NEGOTIATION48Xuxue Feng
1005Aika InouyeJapan2021-09-02Truhlar And Truhlar Attys PROPOSAL69Anna Fali
1006Jones VocelkaJapan2021-08-25Benton, John B Jr PROPOSAL61Ivan Magalhaes
1007Izzy GarufiSpain2021-08-26Chemel, James L Cpa PROPOSAL59Onyama Limba
1008Sinclair WaycottRussia2021-08-22Buckley Miller Wright UNQUALIFIED62Stephen Shaw
1009Nicolas IturbideUnited Kingdom2021-09-10Feltz Printing Service QUALIFIED65Asiya Javayant
1010Ivar PaprockiItaly2021-09-12King, Christopher A Esq PROPOSAL81Asiya Javayant
1011Misaki RoysterSpain2021-09-03Benton, John B Jr PROPOSAL36Xuxue Feng
1012Deepesh ChuiFrance2021-09-12Printing Dimensions PROPOSAL61Ioni Bowcher
1013Faith GillianJapan2021-08-31Printing Dimensions QUALIFIED34Stephen Shaw
1014Smith GlickBrazil2021-08-30Rousseaux, Michael Esq NEGOTIATION53Amy Elsner
1015Jefferson SchemmerUnited Kingdom2021-09-11Printing Dimensions NEGOTIATION3Ioni Bowcher
1016Juan WieserAustralia2021-08-31Benton, John B Jr NEW45Stephen Shaw
1017Kadeem FlosiIndia2021-08-22King, Christopher A Esq RENEWAL74Elwin Sharvill
1018Darci PoquetteItaly2021-09-05Dorl, James J Esq NEW52Stephen Shaw
1019Morrow RutaAustralia2021-08-23Truhlar And Truhlar Attys NEGOTIATION72Stephen Shaw
1020Octavia MaletGermany2021-09-08Rousseaux, Michael Esq PROPOSAL99Xuxue Feng
1021Rodrigues CampainAustralia2021-09-01Rangoni Of Florence UNQUALIFIED72Bernardo Dominic
1022Mayumi KolmetzCanada2021-08-23Chemel, James L Cpa PROPOSAL19Anna Fali
1023Ivar PaprockiSpain2021-08-25Chemel, James L Cpa PROPOSAL93Ivan Magalhaes
1024Smith GlickItaly2021-09-03Chanay, Jeffrey A Esq NEW68Ivan Magalhaes
1025Cody SaylorsGermany2021-09-03Buckley Miller Wright NEGOTIATION76Ivan Magalhaes
1026Cody SaylorsArgentina2021-09-15Feiner Bros RENEWAL10Xuxue Feng
1027Chavez BriddickRussia2021-09-03Benton, John B Jr QUALIFIED34Bernardo Dominic
1028Jennifer AmigonSpain2021-09-11Chapman, Ross E Esq NEW32Ioni Bowcher
1029Munro FerenczGermany2021-08-18Chemel, James L Cpa NEW46Anna Fali
1030Nicolas IturbideArgentina2021-09-03Dorl, James J Esq NEW24Stephen Shaw
1031Octavia MaletCanada2021-09-07Rangoni Of Florence NEGOTIATION42Xuxue Feng
1032Julie StensethFrance2021-08-20Feiner Bros RENEWAL88Anna Fali
1033Chavez BriddickJapan2021-09-12Commercial Press NEGOTIATION70Asiya Javayant
1034Kaitlin OstroskyAustralia2021-09-12King, Christopher A Esq RENEWAL44Asiya Javayant
1035Maria MarrierRussia2021-09-04Chapman, Ross E Esq UNQUALIFIED37Asiya Javayant
1036Alejandro PerinRussia2021-09-02Feltz Printing Service NEW3Stephen Shaw
1037Antonio CaudyGermany2021-09-02Dorl, James J Esq NEGOTIATION23Ivan Magalhaes
1038Nicolas IturbideGermany2021-08-22Rousseaux, Michael Esq PROPOSAL32Ivan Magalhaes
1039Nicolas IturbideArgentina2021-08-30Buckley Miller Wright QUALIFIED7Anna Fali
1040Johnson SergiAustralia2021-08-27Buckley Miller Wright UNQUALIFIED64Ioni Bowcher
1041Leja CaldareraCanada2021-09-05Truhlar And Truhlar Attys NEGOTIATION76Elwin Sharvill
1042Juan WieserRussia2021-09-13Rousseaux, Michael Esq QUALIFIED38Elwin Sharvill
1043Izzy GarufiIndia2021-08-30Printing Dimensions NEGOTIATION42Xuxue Feng
1044Maria MarrierJapan2021-08-31Morlong Associates QUALIFIED76Amy Elsner
1045Maisha RulapaughUnited Kingdom2021-09-06Chapman, Ross E Esq RENEWAL14Ivan Magalhaes
1046Leja CaldareraIndia2021-09-09Truhlar And Truhlar Attys NEW87Onyama Limba
1047Aruna FigeroaAustralia2021-09-02Truhlar And Truhlar Attys PROPOSAL76Stephen Shaw
1048Emily WhobreyAustralia2021-09-15Benton, John B Jr RENEWAL20Elwin Sharvill
1049Cody SaylorsUnited Kingdom2021-08-27Chemel, James L Cpa NEW4Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Leja CaldareraItalyIoni Bowcher UNQUALIFIED
Faith GillianAustraliaOnyama Limba NEGOTIATION
Maisha RulapaughFranceXuxue Feng NEW
Misaki RoysterGermanyAsiya Javayant NEW
Ricardo GauchoUnited KingdomElwin Sharvill NEW
Munro FerenczAustraliaAmy Elsner PROPOSAL
Jones VocelkaRussiaStephen Shaw NEGOTIATION
David DarakjyGermanyXuxue Feng RENEWAL
Mayumi KolmetzFranceElwin Sharvill PROPOSAL
Silvio SlusarskiBrazilStephen Shaw RENEWAL
Maria MarrierSpainBernardo Dominic UNQUALIFIED
Ivar PaprockiCanadaIoni Bowcher UNQUALIFIED
James ButtUnited KingdomOnyama Limba PROPOSAL
Octavia MaletArgentinaIvan Magalhaes UNQUALIFIED
Maria MarrierJapanElwin Sharvill NEGOTIATION
Murillo MaletFranceAnna Fali UNQUALIFIED
Ricardo GauchoArgentinaIoni Bowcher QUALIFIED
Cody SaylorsRussiaAnna Fali NEW
Stacey MacleadArgentinaIoni Bowcher QUALIFIED
Deepesh ChuiIndiaOnyama Limba PROPOSAL
Cody SaylorsUnited KingdomXuxue Feng NEGOTIATION
Ricardo GauchoJapanElwin Sharvill PROPOSAL
Maria MarrierJapanAsiya Javayant NEW
James ButtFranceIvan Magalhaes RENEWAL
Octavia MaletAustraliaIvan Magalhaes PROPOSAL
Jones VocelkaFranceElwin Sharvill QUALIFIED
Julie StensethFranceElwin Sharvill NEW
Ricardo GauchoUnited KingdomStephen Shaw UNQUALIFIED
Antonio CaudyUnited KingdomAnna Fali NEW
Aruna FigeroaFranceAsiya Javayant QUALIFIED
David DarakjyItalyOnyama Limba RENEWAL
James ButtCanadaOnyama Limba NEW
Ivar PaprockiGermanyIoni Bowcher UNQUALIFIED
Antonio CaudyAustraliaElwin Sharvill QUALIFIED
Mujtaba NickaGermanyAmy Elsner NEW
Sinclair WaycottSpainElwin Sharvill UNQUALIFIED
Francesco ShinkoUnited KingdomAsiya Javayant NEGOTIATION
Smith GlickSpainBernardo Dominic NEW
Alejandro PerinIndiaIoni Bowcher RENEWAL
Octavia MaletJapanElwin Sharvill NEGOTIATION
Jeanfrancois VenereGermanyAsiya Javayant NEGOTIATION
Mayumi KolmetzFranceOnyama Limba NEW
Aditya KuskoJapanBernardo Dominic UNQUALIFIED
Rodrigues CampainCanadaAnna Fali NEW
Antonio CaudyFranceAsiya Javayant RENEWAL
Silvio SlusarskiBrazilXuxue Feng UNQUALIFIED
Costa DilliardSpainStephen Shaw UNQUALIFIED
Murillo MaletIndiaAsiya Javayant PROPOSAL
David DarakjyArgentinaIoni Bowcher RENEWAL
Antonio CaudyGermanyIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Aika Inouye
Mujtaba Nicka
Ashley Doe
Maria Marrier
Octavia Malet
Ricardo Gaucho
Aditya Kusko
Mujtaba Nicka
Rodrigues Campain
Aika Inouye
Costa Dilliard
Greenwood Bolognia
Adams Morasca
Francesco Shinko
Smith Glick
Murillo Malet
Arvin Albares
Aika Inouye
Mayumi Kolmetz
Adams Morasca
Adams Morasca
David Darakjy
Silvio Slusarski
Izzy Garufi
Deepesh Chui
Salvatore Stockham
Jennifer Amigon
Salvatore Stockham
Rodrigues Campain
Ashley Doe
Murillo Malet
Deepesh Chui
Mujtaba Nicka
Jones Vocelka
Ivar Paprocki
Ricardo Gaucho
Isabel Bowley
Nicolas Iturbide
Munro Ferencz
Emily Whobrey
Ivar Paprocki
Aditya Kusko
Izzy Garufi
Munro Ferencz
Mujtaba Nicka
Octavia Malet
Stacey Maclead
Emily Whobrey
Kaitlin Ostrosky
Maria Marrier
IdCountryDate
1000Italy2021-08-27
1001Canada2021-09-11
1002India2021-09-04
1003India2021-09-14
1004France2021-09-01
1005Russia2021-09-08
1006Brazil2021-09-06
1007Brazil2021-09-16
1008Argentina2021-08-29
1009Russia2021-09-14
1010Italy2021-09-06
1011India2021-09-04
1012Italy2021-08-19
1013United Kingdom2021-09-16
1014Argentina2021-09-03
1015France2021-09-07
1016France2021-08-19
1017Russia2021-08-23
1018India2021-09-15
1019Spain2021-09-10
1020India2021-09-03
1021Australia2021-09-01
1022Argentina2021-09-01
1023Italy2021-08-27
1024Argentina2021-09-12
1025Italy2021-08-29
1026Russia2021-08-24
1027Brazil2021-08-24
1028Russia2021-09-15
1029Spain2021-09-01
1030Germany2021-08-22
1031Canada2021-08-24
1032Spain2021-09-11
1033Spain2021-09-14
1034Italy2021-09-09
1035Spain2021-09-15
1036Italy2021-08-24
1037Canada2021-09-03
1038Canada2021-08-20
1039Germany2021-09-09
1040Russia2021-08-25
1041United Kingdom2021-08-22
1042France2021-09-09
1043Russia2021-09-05
1044Canada2021-08-21
1045France2021-09-05
1046India2021-08-26
1047Argentina2021-08-29
1048France2021-09-11
1049Australia2021-09-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleGermanyOnyama Limba RENEWAL
Arvin AlbaresIndiaAmy Elsner NEW
Salvatore StockhamSpainIvan Magalhaes NEGOTIATION
Claire TollnerIndiaIvan Magalhaes UNQUALIFIED
Maria MarrierCanadaIvan Magalhaes NEW
Kadeem FlosiFranceAmy Elsner QUALIFIED
Nicolas IturbideSpainXuxue Feng QUALIFIED
Mayumi KolmetzJapanIvan Magalhaes UNQUALIFIED
Francesco ShinkoSpainIoni Bowcher QUALIFIED
Jones VocelkaAustraliaOnyama Limba RENEWAL
Ashley DoeGermanyXuxue Feng NEGOTIATION
Cody SaylorsGermanyStephen Shaw NEW
Francesco ShinkoAustraliaAnna Fali PROPOSAL
Ricardo GauchoSpainAnna Fali RENEWAL
Johnson SergiSpainIoni Bowcher NEGOTIATION
Salvatore StockhamFranceAmy Elsner NEW
Rodrigues CampainFranceXuxue Feng RENEWAL
Claire TollnerJapanIoni Bowcher RENEWAL
Faith GillianCanadaAmy Elsner PROPOSAL
Antonio CaudyGermanyAnna Fali UNQUALIFIED
James ButtFranceAmy Elsner NEW
Salvatore StockhamIndiaOnyama Limba UNQUALIFIED
Aditya KuskoUnited KingdomElwin Sharvill QUALIFIED
Arvin AlbaresAustraliaAmy Elsner PROPOSAL
Jefferson SchemmerFranceOnyama Limba UNQUALIFIED
Jones VocelkaJapanAnna Fali UNQUALIFIED
Leja CaldareraItalyAnna Fali PROPOSAL
Nicolas IturbideRussiaAsiya Javayant NEW
Maria MarrierJapanElwin Sharvill RENEWAL
Ivar PaprockiAustraliaBernardo Dominic UNQUALIFIED
Stacey MacleadAustraliaStephen Shaw RENEWAL
Leon OldroydUnited KingdomOnyama Limba NEGOTIATION
Izzy GarufiGermanyElwin Sharvill PROPOSAL
Salvatore StockhamJapanAmy Elsner PROPOSAL
Johnson SergiSpainIvan Magalhaes PROPOSAL
Octavia MaletCanadaAmy Elsner QUALIFIED
Salvatore StockhamJapanAnna Fali NEW
Clifford RimAustraliaBernardo Dominic UNQUALIFIED
Costa DilliardUnited KingdomIoni Bowcher NEW
Rodrigues CampainUnited KingdomXuxue Feng NEW

<style type="text/css">
    .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">
        <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>