1

目标:当用户进行新搜索时,我想将分页重置为第 1 页。

代码:

search.xhtml

<rich:datatable id=searchResultsTable value=#{SearchAction.searchResults}"
                render="scroller" first="#{SearchAction.firstRecord}">
    <!-- columns here -->
</rich:datatable>

<rich:dataScroller id="scroller" page = "#{SearchAction.currentPage}" for="searchResultsTable"/>

搜索面板:

<!-- headers and other stuff -->
<h:commandButton actionListener="#{SearchAction.resetPage}" 
                 action="#{SearchAction.performSearch}" />

搜索动作:

private int currentPage;
private int firstResult;

public void performSearch()
    {
    //do search stuff
    }

public void resetPage()
    {
    setCurrentPage( 1 );
    setFirstResult( 0 );
    }

//Getters and Setters

当前行为:搜索,转到第 2 页,显示第 2 页。进行新搜索,页码显示为一,但表格显示第 2 页的数据。(每页限制为 20 行,总行数为 25,所以很容易判断)

预期行为:应将页面重置为 1,并显示第一个结果。

根据我的阅读,这在 Richfaces 3.3 中有效,但在 4.2 中并没有按预期工作。可以提供的任何帮助将不胜感激。

4

1 回答 1

0

找到了使用第一个 API 的解决方法。有点烦人的是它显示结果的第一页,然后重新呈现新结果,但总比不工作要好。

searchPanel.xhtml

<a:commandButton action="#{SearchAction.performSearch()}" 
                 onbegin="#{rich:component('waitPanel')}.show()"
                 onbeforedomupdate="#{rich:component('waitPanel')}.hide()"
                 onclick="#{rich:component('scroller')}.first()
                 render=searchResultsTable scroller"/>
于 2013-10-11T18:07:50.513 回答