2013-10-04 5 views
1

Цель: я хочу сбросить разбивку на страницы на страницу 1, когда пользователь выполнит новый поиск.Richfaces 4 reset pagination

Код:

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"/>