Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

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 Lazy

DataTable has built-in support to deal with huge datasets. In order to enable lazy loading, a LazyDataModel needs to be implemented to query the datasource when pagination, sorting, filtering or live scrolling happens. This example uses an in-memory list to mimic a real datasource like a database. In a real application, loading should be executed with the query built using the information passed to the load method.

NameCountryCompanyRepresentative
Salvatore Stockham ArgentinaDorl, James J EsqXuxue Feng
Jones Vocelka RussiaChapman, Ross E EsqAmy Elsner
Nicolas Iturbide FranceChanay, Jeffrey A EsqAnna Fali
Juan Wieser GermanyBenton, John B JrXuxue Feng
Arvin Albares FranceChemel, James L CpaStephen Shaw
Jennifer Amigon JapanDorl, James J EsqIoni Bowcher
Jeanfrancois Venere RussiaChanay, Jeffrey A EsqAmy Elsner
Izzy Garufi ArgentinaRousseaux, Michael EsqElwin Sharvill
Mujtaba Nicka BrazilFeltz Printing ServiceXuxue Feng
Jennifer Amigon JapanChapman, Ross E EsqAsiya Javayant
Customer Detail

<div class="card">
    <h:form id="form">
        <p:dataTable var="customer" value="#{dtLazyView.lazyModel}" paginator="true" rows="10"
                     paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                     rowsPerPageTemplate="5,10,15" selectionMode="single"
                     selection="#{dtLazyView.selectedCustomer}"
                     id="customerTable">
            <p:ajax event="rowSelect" listener="#{dtLazyView.onRowSelect}" update=":form:customerDetail"
                    oncomplete="PF('customerDialog').show()"/>
            <p:column headerText="Name" sortBy="#{customer.name}" filterBy="#{customer.name}">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" sortBy="#{customer.country}" filterBy="#{customer.country}">
                <span class="flag flag-#{customer.country.code}" style="width: 30px; height: 20px"/>
                <h:outputText style="vertical-align: middle; margin-left: .5rem"
                              value="#{customer.country.name}"/>
            </p:column>
            <p:column headerText="Company" sortBy="#{customer.company}" filterBy="#{customer.company}">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Representative" sortBy="#{customer.representative}"
                      filterBy="#{customer.representative}">
                <p:graphicImage name="images/avatar/#{customer.representative.image}" library="demo"
                                width="32" style="vertical-align: middle"/>
                <h:outputText style="vertical-align: middle; margin-left: .5rem"
                              value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>

        <p:dialog header="Customer Detail" widgetVar="customerDialog" modal="true" showEffect="fade"
                  hideEffect="fade" resizable="false">
            <p:outputPanel id="customerDetail" style="text-align:center;">
                <p:panelGrid columns="2" rendered="#{not empty dtLazyView.selectedCustomer}"
                             columnClasses="label,value">

                    <h:outputText value="Name:"/>
                    <h:outputText value="#{dtLazyView.selectedCustomer.name}"/>

                    <h:outputText value="Country"/>
                    <p:column>
                        <span class="flag flag-#{dtLazyView.selectedCustomer.country.code}"
                              style="width: 30px; height: 20px"/>
                        <h:outputText style="vertical-align: middle; margin-left: .5rem"
                                      value="#{dtLazyView.selectedCustomer.country.name}"/>
                    </p:column>

                    <h:outputText value="Company:"/>
                    <h:outputText value="#{dtLazyView.selectedCustomer.company}"/>

                    <h:outputText value="Representative:"/>
                    <p:column>
                        <p:graphicImage name="images/avatar/#{dtLazyView.selectedCustomer.representative.image}"
                                        library="demo"
                                        width="32" style="vertical-align: middle"/>
                        <h:outputText style="vertical-align: middle; margin-left: .5rem"
                                      value="#{dtLazyView.selectedCustomer.representative.name}"/>
                    </p:column>

                </p:panelGrid>
            </p:outputPanel>
        </p:dialog>
    </h:form>
</div>