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
Greenwood Bolognia ItalyRousseaux, Michael EsqElwin Sharvill
Kadeem Flosi ArgentinaDorl, James J EsqElwin Sharvill
Leja Caldarera United KingdomBuckley Miller WrightAmy Elsner
Aruna Figeroa AustraliaCommercial PressAsiya Javayant
Salvatore Stockham JapanMorlong AssociatesAsiya Javayant
Greenwood Bolognia United KingdomRangoni Of FlorenceBernardo Dominic
Alejandro Perin ItalyCommercial PressIvan Magalhaes
Rodrigues Campain AustraliaFeiner BrosAsiya Javayant
Morrow Ruta BrazilBuckley Miller WrightStephen Shaw
Greenwood Bolognia FranceChanay, Jeffrey A 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>