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.

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
Clifford RimSpainAsiya Javayant UNQUALIFIED
Maisha RulapaughRussiaStephen Shaw NEW
Emily WhobreyItalyElwin Sharvill NEGOTIATION
Leja CaldareraAustraliaStephen Shaw RENEWAL
Smith GlickBrazilAmy Elsner QUALIFIED
Smith GlickGermanyIvan Magalhaes NEGOTIATION
Alejandro PerinItalyAsiya Javayant QUALIFIED
Arvin AlbaresAustraliaXuxue Feng UNQUALIFIED
Arvin AlbaresItalyAmy Elsner NEW
Ivar PaprockiFranceBernardo Dominic NEGOTIATION
Leon OldroydIndiaOnyama Limba UNQUALIFIED
Adams MorascaGermanyOnyama Limba NEW
Nicolas IturbideUnited KingdomBernardo Dominic NEW
Costa DilliardRussiaXuxue Feng NEGOTIATION
Silvio SlusarskiSpainBernardo Dominic QUALIFIED
Jeanfrancois VenereUnited KingdomIoni Bowcher NEW
Claire TollnerArgentinaXuxue Feng RENEWAL
Nicolas IturbideGermanyAnna Fali NEGOTIATION
James ButtCanadaIvan Magalhaes NEGOTIATION
Isabel BowleyJapanBernardo Dominic NEW
Juan WieserRussiaAmy Elsner NEGOTIATION
Aruna FigeroaCanadaIvan Magalhaes NEW
Aruna FigeroaUnited KingdomBernardo Dominic NEGOTIATION
Aika InouyeBrazilAmy Elsner PROPOSAL
Murillo MaletUnited KingdomAsiya Javayant PROPOSAL
Mayumi KolmetzSpainBernardo Dominic NEW
Murillo MaletRussiaElwin Sharvill NEW
Adams MorascaJapanAsiya Javayant QUALIFIED
Alejandro PerinFranceBernardo Dominic QUALIFIED
Aditya KuskoItalyElwin Sharvill NEW
Ashley DoeCanadaElwin Sharvill QUALIFIED
Clifford RimAustraliaAsiya Javayant NEGOTIATION
Ricardo GauchoJapanAmy Elsner PROPOSAL
Aika InouyeSpainBernardo Dominic NEGOTIATION
Emily WhobreyUnited KingdomAsiya Javayant UNQUALIFIED
Ricardo GauchoGermanyAnna Fali QUALIFIED
Izzy GarufiAustraliaStephen Shaw RENEWAL
Clifford RimItalyAsiya Javayant PROPOSAL
Izzy GarufiCanadaXuxue Feng RENEWAL
Izzy GarufiFranceXuxue Feng RENEWAL
Cody SaylorsItalyStephen Shaw PROPOSAL
Aditya KuskoUnited KingdomAsiya Javayant QUALIFIED
Francesco ShinkoCanadaElwin Sharvill PROPOSAL
Chavez BriddickArgentinaStephen Shaw NEW
Misaki RoysterUnited KingdomIoni Bowcher RENEWAL
Nicolas IturbideItalyOnyama Limba NEW
Rodrigues CampainJapanAmy Elsner PROPOSAL
Arvin AlbaresCanadaAsiya Javayant NEW
Sinclair WaycottItalyAnna Fali PROPOSAL
Munro FerenczItalyIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoFranceIvan Magalhaes UNQUALIFIED
James ButtIndiaAmy Elsner UNQUALIFIED
Adams MorascaIndiaIoni Bowcher PROPOSAL
Ivar PaprockiArgentinaAnna Fali RENEWAL
Leja CaldareraAustraliaAmy Elsner NEW
Leja CaldareraUnited KingdomAsiya Javayant NEW
Cody SaylorsSpainBernardo Dominic UNQUALIFIED
Aruna FigeroaJapanIvan Magalhaes UNQUALIFIED
Chavez BriddickJapanAsiya Javayant NEW
Chavez BriddickIndiaStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerBrazil2021-10-12Morlong Associates NEW84Ioni Bowcher
1001Jefferson SchemmerSpain2021-09-18Printing Dimensions QUALIFIED32Stephen Shaw
1002Octavia MaletRussia2021-10-03Benton, John B Jr NEGOTIATION52Onyama Limba
1003Maisha RulapaughArgentina2021-10-10Truhlar And Truhlar Attys PROPOSAL58Asiya Javayant
1004Aika InouyeCanada2021-09-25Chanay, Jeffrey A Esq UNQUALIFIED83Elwin Sharvill
1005Jennifer AmigonUnited Kingdom2021-10-14Feiner Bros NEW37Ivan Magalhaes
1006James ButtSpain2021-10-13Rangoni Of Florence PROPOSAL18Amy Elsner
1007Jennifer AmigonAustralia2021-09-28Dorl, James J Esq RENEWAL74Anna Fali
1008Morrow RutaRussia2021-10-08Morlong Associates QUALIFIED49Bernardo Dominic
1009Mayumi KolmetzRussia2021-10-07Rousseaux, Michael Esq RENEWAL41Bernardo Dominic
1010Alejandro PerinRussia2021-10-07Rangoni Of Florence UNQUALIFIED20Anna Fali
1011Aruna FigeroaUnited Kingdom2021-10-01Chemel, James L Cpa PROPOSAL87Bernardo Dominic
1012Darci PoquetteCanada2021-09-21Truhlar And Truhlar Attys NEW27Onyama Limba
1013Clifford RimSpain2021-09-27Rangoni Of Florence QUALIFIED52Stephen Shaw
1014Wickens NestleRussia2021-10-07Chapman, Ross E Esq NEGOTIATION64Xuxue Feng
1015Salvatore StockhamGermany2021-10-01Dorl, James J Esq UNQUALIFIED87Bernardo Dominic
1016Adams MorascaUnited Kingdom2021-10-14Benton, John B Jr NEW84Elwin Sharvill
1017Ashley DoeBrazil2021-10-08Buckley Miller Wright PROPOSAL87Ivan Magalhaes
1018Sinclair WaycottCanada2021-09-19Feltz Printing Service NEW20Onyama Limba
1019Francesco ShinkoUnited Kingdom2021-10-01Truhlar And Truhlar Attys RENEWAL27Stephen Shaw
1020Deepesh ChuiFrance2021-10-14Benton, John B Jr UNQUALIFIED95Anna Fali
1021Adams MorascaItaly2021-10-15Buckley Miller Wright RENEWAL25Bernardo Dominic
1022Claire TollnerUnited Kingdom2021-10-15Feltz Printing Service RENEWAL22Ioni Bowcher
1023Silvio SlusarskiArgentina2021-09-22Dorl, James J Esq QUALIFIED33Anna Fali
1024Alejandro PerinFrance2021-09-23Rousseaux, Michael Esq NEGOTIATION12Elwin Sharvill
1025Deepesh ChuiJapan2021-09-19Feltz Printing Service UNQUALIFIED77Bernardo Dominic
1026Jennifer AmigonBrazil2021-10-01Dorl, James J Esq NEGOTIATION82Onyama Limba
1027Mayumi KolmetzSpain2021-10-11Rangoni Of Florence RENEWAL73Amy Elsner
1028Julie StensethItaly2021-09-20Commercial Press NEW99Asiya Javayant
1029Kaitlin OstroskySpain2021-09-18King, Christopher A Esq NEW31Stephen Shaw
1030Rodrigues CampainUnited Kingdom2021-10-16Morlong Associates NEGOTIATION11Ioni Bowcher
1031James ButtSpain2021-10-03Chanay, Jeffrey A Esq NEW23Ivan Magalhaes
1032Mayumi KolmetzSpain2021-10-17Morlong Associates NEW54Anna Fali
1033Emily WhobreySpain2021-10-16Buckley Miller Wright RENEWAL4Ioni Bowcher
1034Juan WieserCanada2021-09-24Printing Dimensions QUALIFIED17Ivan Magalhaes
1035Kaitlin OstroskyBrazil2021-10-13Truhlar And Truhlar Attys UNQUALIFIED87Xuxue Feng
1036Leon OldroydArgentina2021-09-21Chemel, James L Cpa NEW75Elwin Sharvill
1037James ButtUnited Kingdom2021-10-01King, Christopher A Esq NEW13Xuxue Feng
1038Deepesh ChuiUnited Kingdom2021-10-06King, Christopher A Esq RENEWAL85Ivan Magalhaes
1039Aika InouyeSpain2021-10-11Buckley Miller Wright NEW20Asiya Javayant
1040Leon OldroydItaly2021-10-03Feltz Printing Service NEGOTIATION76Anna Fali
1041Aika InouyeSpain2021-10-11Feiner Bros RENEWAL42Asiya Javayant
1042Jeanfrancois VenereSpain2021-09-19Dorl, James J Esq NEW12Ivan Magalhaes
1043Nicolas IturbideFrance2021-09-24Buckley Miller Wright NEGOTIATION83Anna Fali
1044James ButtGermany2021-09-24Feiner Bros UNQUALIFIED10Ivan Magalhaes
1045Cody SaylorsSpain2021-09-26Feltz Printing Service PROPOSAL74Amy Elsner
1046Claire TollnerIndia2021-10-10Truhlar And Truhlar Attys NEW46Elwin Sharvill
1047David DarakjyItaly2021-09-27Commercial Press NEGOTIATION21Bernardo Dominic
1048Stacey MacleadJapan2021-10-12Commercial Press UNQUALIFIED3Anna Fali
1049Julie StensethCanada2021-10-04Chapman, Ross E Esq RENEWAL98Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaItalyOnyama Limba NEW
Kadeem FlosiCanadaAsiya Javayant UNQUALIFIED
Maria MarrierCanadaIvan Magalhaes NEW
Aditya KuskoRussiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskySpainXuxue Feng NEGOTIATION
Rodrigues CampainUnited KingdomStephen Shaw QUALIFIED
Claire TollnerUnited KingdomIoni Bowcher RENEWAL
Jefferson SchemmerUnited KingdomOnyama Limba PROPOSAL
Nicolas IturbideRussiaBernardo Dominic PROPOSAL
Deepesh ChuiUnited KingdomStephen Shaw UNQUALIFIED
Leon OldroydBrazilIvan Magalhaes NEW
Faith GillianArgentinaAsiya Javayant NEW
Silvio SlusarskiAustraliaXuxue Feng PROPOSAL
Aditya KuskoFranceElwin Sharvill NEGOTIATION
Nicolas IturbideFranceOnyama Limba RENEWAL
Sinclair WaycottArgentinaAsiya Javayant UNQUALIFIED
Murillo MaletFranceXuxue Feng NEW
Costa DilliardCanadaIoni Bowcher UNQUALIFIED
Misaki RoysterIndiaXuxue Feng NEGOTIATION
Sinclair WaycottSpainAsiya Javayant PROPOSAL
Julie StensethArgentinaIoni Bowcher UNQUALIFIED
Maisha RulapaughAustraliaIoni Bowcher QUALIFIED
Murillo MaletFranceIoni Bowcher PROPOSAL
Jeanfrancois VenereBrazilOnyama Limba NEW
Aditya KuskoCanadaAmy Elsner NEGOTIATION
Jennifer AmigonUnited KingdomAmy Elsner PROPOSAL
Nicolas IturbideItalyIoni Bowcher UNQUALIFIED
Misaki RoysterBrazilIvan Magalhaes PROPOSAL
Aditya KuskoUnited KingdomOnyama Limba RENEWAL
Silvio SlusarskiGermanyOnyama Limba NEW
Deepesh ChuiArgentinaIvan Magalhaes NEW
Wickens NestleBrazilElwin Sharvill NEW
Izzy GarufiItalyIoni Bowcher UNQUALIFIED
Alejandro PerinItalyAnna Fali NEGOTIATION
Antonio CaudySpainAsiya Javayant UNQUALIFIED
Misaki RoysterBrazilStephen Shaw UNQUALIFIED
Wickens NestleRussiaXuxue Feng UNQUALIFIED
Julie StensethRussiaStephen Shaw RENEWAL
Leon OldroydArgentinaOnyama Limba PROPOSAL
James ButtAustraliaBernardo Dominic NEW
Deepesh ChuiCanadaOnyama Limba RENEWAL
Darci PoquetteAustraliaOnyama Limba PROPOSAL
Costa DilliardSpainAsiya Javayant QUALIFIED
Aditya KuskoArgentinaAnna Fali QUALIFIED
Salvatore StockhamItalyBernardo Dominic QUALIFIED
James ButtAustraliaAmy Elsner QUALIFIED
Kaitlin OstroskyJapanAnna Fali PROPOSAL
Deepesh ChuiAustraliaElwin Sharvill NEGOTIATION
Leon OldroydUnited KingdomBernardo Dominic UNQUALIFIED
Ashley DoeFranceAmy Elsner QUALIFIED
Frozen Columns
Name
Isabel Bowley
Maisha Rulapaugh
Darci Poquette
Cody Saylors
Juan Wieser
Jones Vocelka
Claire Tollner
Mujtaba Nicka
Murillo Malet
Clifford Rim
James Butt
Arvin Albares
Deepesh Chui
Kadeem Flosi
Leon Oldroyd
Ashley Doe
Jones Vocelka
Aditya Kusko
Morrow Ruta
Arvin Albares
Silvio Slusarski
Octavia Malet
Morrow Ruta
Adams Morasca
Jeanfrancois Venere
Arvin Albares
Octavia Malet
Johnson Sergi
Jones Vocelka
Greenwood Bolognia
Chavez Briddick
Misaki Royster
Mayumi Kolmetz
Ricardo Gaucho
Ivar Paprocki
Julie Stenseth
Cody Saylors
Stacey Maclead
Smith Glick
Clifford Rim
Juan Wieser
Stacey Maclead
Chavez Briddick
Kadeem Flosi
Misaki Royster
James Butt
Adams Morasca
Julie Stenseth
Jennifer Amigon
Leon Oldroyd
IdCountryDate
1000Argentina2021-09-19
1001Italy2021-09-30
1002India2021-10-02
1003Australia2021-09-25
1004Spain2021-09-28
1005Russia2021-09-18
1006Australia2021-09-19
1007India2021-10-02
1008France2021-09-27
1009Australia2021-09-29
1010Germany2021-10-08
1011India2021-10-06
1012Canada2021-09-26
1013United Kingdom2021-09-20
1014United Kingdom2021-10-03
1015India2021-09-19
1016United Kingdom2021-10-05
1017India2021-09-26
1018Germany2021-09-21
1019Italy2021-09-26
1020United Kingdom2021-09-20
1021United Kingdom2021-09-21
1022Canada2021-10-12
1023India2021-10-09
1024Italy2021-10-02
1025Spain2021-09-25
1026United Kingdom2021-09-20
1027India2021-10-13
1028Italy2021-10-13
1029Japan2021-10-08
1030Brazil2021-09-28
1031Brazil2021-09-24
1032United Kingdom2021-10-08
1033France2021-09-26
1034Canada2021-10-03
1035United Kingdom2021-10-01
1036Japan2021-09-28
1037Japan2021-10-04
1038Germany2021-09-20
1039Spain2021-09-21
1040France2021-09-21
1041United Kingdom2021-09-23
1042United Kingdom2021-09-20
1043Japan2021-09-21
1044Italy2021-10-17
1045Canada2021-10-05
1046Canada2021-09-30
1047Germany2021-10-16
1048Germany2021-10-12
1049Brazil2021-09-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
No records found.

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

Session expired

Reloading page

Message:
StackTrace: