2013-10-04 2 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 페이지가 표시됩니다. 새로운 검색을 사용하면 페이지 번호에 1이 표시되지만 표에는 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"/>