2013-10-04 65 views
1

目標:我想在用戶重新搜索時將分頁重置爲第1頁。Richfaces 4重置分頁

代碼:

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

找到了圍繞使用第一個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"/>