目标:当用户进行新搜索时,我想将分页重置为第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}" />
SearchAction:
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中预期的那样工作。我们非常感谢您提供的任何帮助。
答案 0 :(得分: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"/>