PreRenderView пропуск действия кнопки после возврата браузера


У меня есть страница результатов поиска с кнопкой "Показать больше результатов". Бэк-Боб имеет область сеанса, и мы используем предварительный просмотр для выполнения метода поиска в бэк-Бобе:

<f:event type="preRenderView" listener="#{SearchBean.searchSolutions}" />

Кнопка "Показать больше результатов" определяется следующим образом:

<h:commandButton action="#{SearchBean.onClickShowMoreResults()}">
    <f:ajax disabled="false" render=":searchResultsForm"/>
</h:commandButton>

Вот проблема, которая у меня есть, и шаги для воспроизведения:

  1. выполните поиск.
  2. нажмите на результат поиска, который приведет к странице результатов.
  3. используйте кнопку браузера назад.
  4. щелчок на кнопке "Показать дополнительные результаты".
  5. проблема -- > функция onClickShowMoreResults () не вызывается, а вместо нее вызывается метод прослушивателя searchSolutions () (это происходит периодически, большую часть времени функция вызывается правильно, и все в порядке altought, как только я получаю проблему, я могу воспроизвести ее каждый раз с шагами 2-4, не начиная новый поиск).

Я попытался пропустить запросы ajax в методе listener (как объяснено здесь ) и это решает проблему, но это невозможно для меня, потому что есть ajax-запросы, которые должны выполнить метод listener (изменение критериев поиска).

Есть ли что-то, чего я не понимаю в предварительном просмотре, или есть другой способ достичь того, что я пытаюсь сделать ?

Спасибо за помощь!

1 3

1 ответ:

Поскольку я не получил ответа, я нашел обходной путь для этой проблемы.

Я убедился, что у меня нет ajax-вызовов метода listener (делая некоторые жертвы), и использовал ответ BalusC в этой нити.

Использование :

if (FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) { 
       return; // Skip ajax requests.
}

В listener метод решает эту проблему.