PreRenderView пропуск действия кнопки после возврата браузера
У меня есть страница результатов поиска с кнопкой "Показать больше результатов". Бэк-Боб имеет область сеанса, и мы используем предварительный просмотр для выполнения метода поиска в бэк-Бобе:
<f:event type="preRenderView" listener="#{SearchBean.searchSolutions}" />
Кнопка "Показать больше результатов" определяется следующим образом:
<h:commandButton action="#{SearchBean.onClickShowMoreResults()}">
<f:ajax disabled="false" render=":searchResultsForm"/>
</h:commandButton>
Вот проблема, которая у меня есть, и шаги для воспроизведения:
- выполните поиск.
- нажмите на результат поиска, который приведет к странице результатов.
- используйте кнопку браузера назад.
- щелчок на кнопке "Показать дополнительные результаты".
- проблема -- > функция onClickShowMoreResults () не вызывается, а вместо нее вызывается метод прослушивателя searchSolutions () (это происходит периодически, большую часть времени функция вызывается правильно, и все в порядке altought, как только я получаю проблему, я могу воспроизвести ее каждый раз с шагами 2-4, не начиная новый поиск).
Я попытался пропустить запросы ajax в методе listener (как объяснено здесь ) и это решает проблему, но это невозможно для меня, потому что есть ajax-запросы, которые должны выполнить метод listener (изменение критериев поиска).
Есть ли что-то, чего я не понимаю в предварительном просмотре, или есть другой способ достичь того, что я пытаюсь сделать ?Спасибо за помощь!
1 ответ:
Поскольку я не получил ответа, я нашел обходной путь для этой проблемы.
Я убедился, что у меня нет ajax-вызовов метода listener (делая некоторые жертвы), и использовал ответ BalusC в этой нити.
Использование :
if (FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) { return; // Skip ajax requests. }
В listener метод решает эту проблему.