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
Antonio CaudyBrazilIvan Magalhaes PROPOSAL
Maisha RulapaughAustraliaBernardo Dominic NEGOTIATION
Rodrigues CampainCanadaAnna Fali QUALIFIED
Nicolas IturbideFranceAnna Fali PROPOSAL
Nicolas IturbideAustraliaOnyama Limba NEW
Ivar PaprockiGermanyIoni Bowcher RENEWAL
Munro FerenczBrazilAmy Elsner PROPOSAL
Cody SaylorsUnited KingdomAmy Elsner NEW
Smith GlickArgentinaAnna Fali RENEWAL
Johnson SergiIndiaXuxue Feng RENEWAL
Munro FerenczItalyBernardo Dominic RENEWAL
Morrow RutaIndiaAsiya Javayant UNQUALIFIED
Nicolas IturbideArgentinaElwin Sharvill NEGOTIATION
Misaki RoysterItalyAmy Elsner QUALIFIED
Murillo MaletUnited KingdomAsiya Javayant NEW
Adams MorascaItalyElwin Sharvill NEW
Jennifer AmigonCanadaAmy Elsner PROPOSAL
Mujtaba NickaIndiaAsiya Javayant PROPOSAL
Maria MarrierArgentinaOnyama Limba NEGOTIATION
Antonio CaudyGermanyXuxue Feng PROPOSAL
Juan WieserIndiaIoni Bowcher NEW
Greenwood BologniaFranceAmy Elsner QUALIFIED
Leja CaldareraArgentinaAmy Elsner RENEWAL
Clifford RimIndiaXuxue Feng RENEWAL
Kaitlin OstroskyAustraliaAsiya Javayant NEGOTIATION
Izzy GarufiGermanyBernardo Dominic NEGOTIATION
Ricardo GauchoArgentinaXuxue Feng QUALIFIED
Johnson SergiSpainAsiya Javayant RENEWAL
Emily WhobreyRussiaOnyama Limba QUALIFIED
Deepesh ChuiItalyIvan Magalhaes PROPOSAL
Octavia MaletJapanAnna Fali NEGOTIATION
Kadeem FlosiJapanXuxue Feng QUALIFIED
Munro FerenczIndiaAmy Elsner UNQUALIFIED
Clifford RimIndiaOnyama Limba PROPOSAL
Aditya KuskoCanadaOnyama Limba NEGOTIATION
Munro FerenczRussiaAmy Elsner QUALIFIED
Clifford RimIndiaBernardo Dominic UNQUALIFIED
Deepesh ChuiCanadaAmy Elsner QUALIFIED
Chavez BriddickCanadaElwin Sharvill RENEWAL
Munro FerenczGermanyIvan Magalhaes QUALIFIED
Leja CaldareraCanadaAmy Elsner NEGOTIATION
Jennifer AmigonAustraliaXuxue Feng UNQUALIFIED
Jefferson SchemmerBrazilStephen Shaw PROPOSAL
Julie StensethFranceOnyama Limba NEW
Antonio CaudyItalyIvan Magalhaes UNQUALIFIED
Aruna FigeroaIndiaAsiya Javayant UNQUALIFIED
Ivar PaprockiIndiaAnna Fali RENEWAL
Claire TollnerItalyOnyama Limba NEW
Claire TollnerRussiaBernardo Dominic NEW
Misaki RoysterCanadaIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteCanadaElwin Sharvill QUALIFIED
Antonio CaudyRussiaBernardo Dominic RENEWAL
Ashley DoeJapanElwin Sharvill QUALIFIED
Nicolas IturbideItalyStephen Shaw NEGOTIATION
Leja CaldareraArgentinaElwin Sharvill PROPOSAL
Leon OldroydCanadaIvan Magalhaes UNQUALIFIED
Aruna FigeroaCanadaAsiya Javayant NEGOTIATION
Mujtaba NickaIndiaAmy Elsner RENEWAL
Leja CaldareraCanadaAmy Elsner UNQUALIFIED
Maisha RulapaughRussiaAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood BologniaItaly2021-04-14Rangoni Of Florence NEGOTIATION25Stephen Shaw
1001Kadeem FlosiUnited Kingdom2021-04-06Dorl, James J Esq QUALIFIED39Amy Elsner
1002Ashley DoeAustralia2021-03-27Rangoni Of Florence RENEWAL36Onyama Limba
1003Isabel BowleyArgentina2021-03-24Commercial Press NEW36Onyama Limba
1004Arvin AlbaresCanada2021-03-27Feiner Bros QUALIFIED13Anna Fali
1005Aditya KuskoAustralia2021-04-03Truhlar And Truhlar Attys NEGOTIATION66Anna Fali
1006Octavia MaletBrazil2021-03-28Dorl, James J Esq PROPOSAL30Asiya Javayant
1007Morrow RutaAustralia2021-04-03Dorl, James J Esq PROPOSAL99Onyama Limba
1008Jefferson SchemmerCanada2021-04-07Benton, John B Jr UNQUALIFIED10Amy Elsner
1009Jefferson SchemmerIndia2021-03-19Buckley Miller Wright UNQUALIFIED7Onyama Limba
1010Smith GlickBrazil2021-04-05Feiner Bros RENEWAL55Anna Fali
1011Mujtaba NickaFrance2021-03-20Chapman, Ross E Esq NEGOTIATION52Bernardo Dominic
1012Mayumi KolmetzRussia2021-03-16Chapman, Ross E Esq RENEWAL57Onyama Limba
1013Murillo MaletFrance2021-03-29Morlong Associates UNQUALIFIED84Ivan Magalhaes
1014Smith GlickFrance2021-03-31Buckley Miller Wright UNQUALIFIED85Asiya Javayant
1015Alejandro PerinSpain2021-03-23Chemel, James L Cpa NEGOTIATION7Xuxue Feng
1016Ivar PaprockiRussia2021-04-10Morlong Associates RENEWAL96Bernardo Dominic
1017Jennifer AmigonAustralia2021-03-17Morlong Associates RENEWAL61Ivan Magalhaes
1018Johnson SergiArgentina2021-04-08Buckley Miller Wright RENEWAL78Stephen Shaw
1019Jefferson SchemmerItaly2021-04-05Benton, John B Jr QUALIFIED42Elwin Sharvill
1020Silvio SlusarskiSpain2021-03-23Chanay, Jeffrey A Esq QUALIFIED43Anna Fali
1021Juan WieserBrazil2021-04-05Truhlar And Truhlar Attys NEW88Amy Elsner
1022Cody SaylorsSpain2021-04-09Benton, John B Jr NEGOTIATION45Xuxue Feng
1023Aditya KuskoBrazil2021-04-03Rousseaux, Michael Esq NEW97Onyama Limba
1024Sinclair WaycottArgentina2021-04-01Chanay, Jeffrey A Esq QUALIFIED41Xuxue Feng
1025Costa DilliardCanada2021-04-02Rousseaux, Michael Esq QUALIFIED73Bernardo Dominic
1026Arvin AlbaresGermany2021-04-13Benton, John B Jr NEGOTIATION5Xuxue Feng
1027Munro FerenczBrazil2021-04-03Benton, John B Jr QUALIFIED79Ivan Magalhaes
1028Ashley DoeItaly2021-04-09King, Christopher A Esq NEW44Xuxue Feng
1029Ashley DoeBrazil2021-04-12Chemel, James L Cpa NEGOTIATION14Onyama Limba
1030Kadeem FlosiJapan2021-04-11Buckley Miller Wright RENEWAL86Bernardo Dominic
1031Antonio CaudyGermany2021-04-05Chapman, Ross E Esq PROPOSAL42Asiya Javayant
1032Cody SaylorsRussia2021-03-28Rangoni Of Florence PROPOSAL46Xuxue Feng
1033Nicolas IturbideFrance2021-04-12King, Christopher A Esq QUALIFIED58Xuxue Feng
1034Jefferson SchemmerItaly2021-03-18Chanay, Jeffrey A Esq NEW52Asiya Javayant
1035Silvio SlusarskiBrazil2021-04-01Feltz Printing Service UNQUALIFIED94Asiya Javayant
1036Mujtaba NickaCanada2021-04-08Chapman, Ross E Esq RENEWAL96Onyama Limba
1037Julie StensethJapan2021-04-10Commercial Press UNQUALIFIED95Bernardo Dominic
1038Mujtaba NickaCanada2021-03-26Chanay, Jeffrey A Esq UNQUALIFIED16Xuxue Feng
1039Greenwood BologniaRussia2021-03-23Rousseaux, Michael Esq NEGOTIATION96Stephen Shaw
1040Leja CaldareraRussia2021-04-09Feltz Printing Service PROPOSAL79Bernardo Dominic
1041Ricardo GauchoSpain2021-03-27Buckley Miller Wright QUALIFIED83Onyama Limba
1042Costa DilliardRussia2021-03-21Rangoni Of Florence NEW31Elwin Sharvill
1043Francesco ShinkoIndia2021-03-22Benton, John B Jr QUALIFIED93Asiya Javayant
1044Jefferson SchemmerIndia2021-03-23Rangoni Of Florence PROPOSAL22Ivan Magalhaes
1045Smith GlickGermany2021-04-02Chemel, James L Cpa NEGOTIATION69Amy Elsner
1046Greenwood BologniaIndia2021-04-10Benton, John B Jr PROPOSAL52Asiya Javayant
1047Kadeem FlosiAustralia2021-04-04Commercial Press RENEWAL65Xuxue Feng
1048Maisha RulapaughCanada2021-03-20Buckley Miller Wright QUALIFIED98Anna Fali
1049David DarakjySpain2021-03-17Morlong Associates PROPOSAL45Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Murillo MaletUnited KingdomOnyama Limba QUALIFIED
Mujtaba NickaIndiaOnyama Limba NEGOTIATION
Greenwood BologniaUnited KingdomAnna Fali NEW
Izzy GarufiRussiaBernardo Dominic RENEWAL
Leon OldroydJapanStephen Shaw PROPOSAL
Cody SaylorsUnited KingdomAmy Elsner QUALIFIED
Faith GillianRussiaElwin Sharvill UNQUALIFIED
Morrow RutaAustraliaElwin Sharvill UNQUALIFIED
Johnson SergiBrazilStephen Shaw QUALIFIED
James ButtFranceAsiya Javayant UNQUALIFIED
Morrow RutaCanadaXuxue Feng RENEWAL
James ButtFranceBernardo Dominic QUALIFIED
Emily WhobreyItalyAmy Elsner NEGOTIATION
Aditya KuskoItalyIvan Magalhaes UNQUALIFIED
Leon OldroydUnited KingdomAmy Elsner UNQUALIFIED
Isabel BowleyArgentinaAsiya Javayant NEW
Stacey MacleadArgentinaBernardo Dominic PROPOSAL
Wickens NestleBrazilIvan Magalhaes RENEWAL
Alejandro PerinRussiaAsiya Javayant PROPOSAL
Jennifer AmigonBrazilAmy Elsner UNQUALIFIED
Kadeem FlosiArgentinaAsiya Javayant QUALIFIED
Leja CaldareraBrazilIvan Magalhaes PROPOSAL
Aditya KuskoJapanElwin Sharvill UNQUALIFIED
Rodrigues CampainUnited KingdomStephen Shaw NEGOTIATION
Octavia MaletItalyXuxue Feng NEGOTIATION
Munro FerenczItalyIoni Bowcher NEW
Francesco ShinkoArgentinaStephen Shaw QUALIFIED
Adams MorascaItalyBernardo Dominic PROPOSAL
Mayumi KolmetzJapanElwin Sharvill NEGOTIATION
Faith GillianRussiaAnna Fali QUALIFIED
Morrow RutaIndiaAnna Fali PROPOSAL
Alejandro PerinAustraliaBernardo Dominic UNQUALIFIED
Maria MarrierCanadaIoni Bowcher PROPOSAL
Munro FerenczUnited KingdomAnna Fali QUALIFIED
Emily WhobreyIndiaAmy Elsner NEW
Julie StensethSpainIvan Magalhaes NEW
Tony FollerGermanyElwin Sharvill PROPOSAL
Morrow RutaItalyElwin Sharvill UNQUALIFIED
Leja CaldareraGermanyAmy Elsner QUALIFIED
Cody SaylorsRussiaIvan Magalhaes RENEWAL
Juan WieserUnited KingdomIvan Magalhaes NEGOTIATION
Isabel BowleyCanadaAsiya Javayant QUALIFIED
Juan WieserBrazilAmy Elsner UNQUALIFIED
Isabel BowleyArgentinaStephen Shaw PROPOSAL
Stacey MacleadGermanyIvan Magalhaes QUALIFIED
Claire TollnerJapanIoni Bowcher RENEWAL
Chavez BriddickFranceXuxue Feng QUALIFIED
Ricardo GauchoArgentinaBernardo Dominic QUALIFIED
Deepesh ChuiSpainAnna Fali NEGOTIATION
Munro FerenczFranceIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Silvio Slusarski
Costa Dilliard
Chavez Briddick
Aika Inouye
Stacey Maclead
Rodrigues Campain
Mujtaba Nicka
James Butt
Maria Marrier
Ashley Doe
Ashley Doe
Julie Stenseth
Arvin Albares
Mujtaba Nicka
Clifford Rim
Deepesh Chui
Aruna Figeroa
James Butt
Darci Poquette
Alejandro Perin
Maria Marrier
Emily Whobrey
Ricardo Gaucho
Francesco Shinko
Aika Inouye
Octavia Malet
Kadeem Flosi
Julie Stenseth
Claire Tollner
Cody Saylors
Deepesh Chui
Mayumi Kolmetz
Misaki Royster
Silvio Slusarski
Nicolas Iturbide
Murillo Malet
Leja Caldarera
Francesco Shinko
Francesco Shinko
Morrow Ruta
Alejandro Perin
Aruna Figeroa
Leja Caldarera
Ricardo Gaucho
Antonio Caudy
David Darakjy
Jennifer Amigon
Alejandro Perin
Salvatore Stockham
Nicolas Iturbide
IdCountryDate
1000Japan2021-03-16
1001Spain2021-03-29
1002Australia2021-03-23
1003Japan2021-03-26
1004Argentina2021-03-30
1005India2021-04-12
1006Italy2021-03-20
1007Spain2021-03-26
1008Australia2021-03-22
1009India2021-03-31
1010Spain2021-03-22
1011Brazil2021-04-08
1012Canada2021-03-29
1013Germany2021-03-18
1014Italy2021-03-29
1015United Kingdom2021-03-30
1016Germany2021-03-21
1017France2021-03-16
1018Spain2021-04-10
1019Japan2021-04-03
1020Italy2021-03-16
1021Brazil2021-04-06
1022United Kingdom2021-03-25
1023Russia2021-04-14
1024Spain2021-03-16
1025Canada2021-03-21
1026Australia2021-03-17
1027Russia2021-03-30
1028United Kingdom2021-04-10
1029Australia2021-04-04
1030Italy2021-04-05
1031United Kingdom2021-03-25
1032Brazil2021-04-10
1033Canada2021-03-18
1034Canada2021-04-01
1035Argentina2021-04-08
1036Canada2021-03-17
1037Brazil2021-04-11
1038Australia2021-03-23
1039India2021-03-17
1040Italy2021-04-12
1041United Kingdom2021-03-30
1042Spain2021-03-30
1043Canada2021-03-29
1044Italy2021-03-16
1045France2021-03-26
1046India2021-03-24
1047Italy2021-04-12
1048United Kingdom2021-04-08
1049Canada2021-03-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudyArgentinaElwin Sharvill RENEWAL
Munro FerenczBrazilElwin Sharvill UNQUALIFIED
Wickens NestleItalyXuxue Feng NEGOTIATION
Adams MorascaJapanAsiya Javayant RENEWAL
Sinclair WaycottCanadaIvan Magalhaes QUALIFIED
Jones VocelkaAustraliaBernardo Dominic RENEWAL
David DarakjyGermanyBernardo Dominic RENEWAL
Antonio CaudyGermanyBernardo Dominic NEW
Johnson SergiSpainIvan Magalhaes NEGOTIATION
Izzy GarufiCanadaOnyama Limba UNQUALIFIED
Tony FollerIndiaAnna Fali NEGOTIATION
Claire TollnerGermanyIvan Magalhaes QUALIFIED
Jennifer AmigonAustraliaOnyama Limba UNQUALIFIED
Claire TollnerFranceBernardo Dominic QUALIFIED
Maisha RulapaughBrazilAsiya Javayant PROPOSAL
Emily WhobreyRussiaXuxue Feng QUALIFIED
Leja CaldareraFranceStephen Shaw QUALIFIED
Maisha RulapaughCanadaElwin Sharvill NEGOTIATION
Octavia MaletCanadaOnyama Limba QUALIFIED
Jefferson SchemmerAustraliaAsiya Javayant PROPOSAL
Rodrigues CampainGermanyIoni Bowcher UNQUALIFIED
Ricardo GauchoGermanyAsiya Javayant UNQUALIFIED
Jones VocelkaUnited KingdomOnyama Limba RENEWAL
Ivar PaprockiItalyOnyama Limba NEGOTIATION
Murillo MaletUnited KingdomXuxue Feng RENEWAL
Maria MarrierFranceAmy Elsner NEGOTIATION
Aditya KuskoRussiaAnna Fali PROPOSAL
Tony FollerGermanyElwin Sharvill QUALIFIED
Murillo MaletJapanBernardo Dominic UNQUALIFIED
Leja CaldareraIndiaElwin Sharvill PROPOSAL
Johnson SergiFranceAmy Elsner UNQUALIFIED
Arvin AlbaresJapanXuxue Feng PROPOSAL
Aditya KuskoAustraliaXuxue Feng RENEWAL
Silvio SlusarskiIndiaIoni Bowcher NEW
Kaitlin OstroskyUnited KingdomAnna Fali NEW
James ButtGermanyAsiya Javayant PROPOSAL
David DarakjyJapanOnyama Limba RENEWAL
James ButtAustraliaStephen Shaw RENEWAL
Kadeem FlosiArgentinaOnyama Limba UNQUALIFIED
Adams MorascaSpainIvan Magalhaes NEGOTIATION

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