表格在使用分页时不显示数据

时间:2012-07-31 06:47:35

标签: jsf-2 primefaces

我有一个像这样的

<h:form id="logForm" prependId="false">
    <div class="leftcol">
    ....
    <h:commandButton value="Apply Filters"
        action="#{exporterReview.applyFilterAction}">    
    </h:commandButton><br></br><br></br>
    ....
    </div>

    <div class="rightcol1" >
        <p:dataTable  var="exporter" 
                      value="#{exporterReview.exporters}"
                      paginator="true" rows="5"
                      height="400" paginatorPosition="top"
                      emptyMessage="#{exporterReview.noExporterFound}">

            <p:column>

                <div style="....">
                    <h:graphicImage value="#{exporter.imgPath}" />
                </div>

                <div style="...">
                    <h:commandButton value="Update" 
                                     action="#{exporterReview.updateExporter}"         
                                     rendered="#{login.updateState}"  
                                     style="... ">
                        <f:param name="exporterid" 
                                 value="#{exporter.exporterId}" />
                    </h:commandButton>
                </div>

                <div class="arrowbuttons">
                    <span class="arrow"></span>
                </div>
                <p:spacer height="10" width="20"/>
                <h:commandButton  value="#{exporter.organizationName}" 
                                  action="#{exporterReview.viewExporter}" 
                                  style="...">
                    <f:param name="exporterid" value="#{exporter.exporterId}" />
                    <f:param name="disableLink" value="#{exporter.disableLink}" />
                </h:commandButton>

                <div style='padding-top:10px'>
                    <h:outputLabel value="City: "  style="color: #1c6ace;"/>
                    <h:panelGroup rendered="#{not exporter.disableLink}">
                        <h:commandLink value="#{exporter.cityName}" 
                                       style="text-decoration: underline" 
                                       disabled="#{exporter.disableLink}" 
                                       onclick="openCityPopup(#{exporter.cityId});" >
                        </h:commandLink>
                    </h:panelGroup>

                    <h:panelGroup rendered="#{exporter.disableLink}">
                        <h:outputText value="#{exporter.cityName}"></h:outputText>
                    </h:panelGroup>
                </div>

                <div style='padding-top:3px'>
                    <h:outputLabel value="Email Address: " style="color: #1c6ace;"/>
                    <a href="mailto:#{exporter.emailAddress}">
                        <h:outputText value="#{exporter.emailAddress}" 
                                      style="..">
                        </h:outputText>
                    </a>
                </div>

                <div style='padding-top:3px'>
                    <h:outputText value="#{exporter.categoryDesc}" 
                                  escape="false" />
                </div>

                <div class="horizontalline"></div>
            </p:column>

        </p:dataTable>
    </div>
</h:form>

这是过滤方法

public void applyFilterAction() {
    ....
    //Setting whereParam so that whenever user navigate from page And return back
    // the grid is populated with the previous search criteria
    session.setAttribute("settingWhereParam", whereParam);
    getExporterGrid();

} //end of applyFilterAction

private void getExporterGrid() {
    ....
    exporters.add(new Exporter(Datatable values));

} //end of getExporterGrid

问题是,当我在第一页并进行搜索时,每件事情都可以。这是第一张照片。 enter image description here

然后,如果我应用搜索,那么它就变成了

enter image description here

但是,如果我做分页,请转到第4页然后应用搜索,然后没有结果显示

enter image description here

但是没有显示

enter image description here

为什么会这样?我做错了什么?我正在使用Prime面孔2.2。这是一个旧计划。

谢谢

2 个答案:

答案 0 :(得分:0)

我不确定这是否适用于primefaces 2.2,但在版本3+中,您可以指定更新属性。

你的commandButton看起来像这样:

<h:commandButton value="Apply Filters" action="#{exporterReview.applyFilterAction}" update="@form">

答案 1 :(得分:0)

我做到了:)。其实我做了一个解决方法。我做了什么,我在我的过滤器Button上使用onClick事件。喜欢

<h:commandButton id="filterButton"
                 value="Apply Filters"
                 style=""
                 action="#{exporterReview.applyFilterAction}"
                 onclick="filterButtonClick(event)" />

现在,当单击按钮时,首先运行我的客户端代码。所以我获取所有值,然后使用ajax调用servlet,并将结果保存在session对象中。之后我的服务器端代码将运行,并调用我的action方法,其中我简单地返回同一页面的url。

public String applyFilterAction() {

    return "Exporter_Review?faces-redirect=true";

} //end of applyFilterAction()

现在,当页面调用时,我只需在会话中检查结果。如果会话对象存在,则只需从该对象获取值并显示结果。当我离开页面时,我只是在对象的会话中放置null,现在使用默认值。现在一切正常:)