Как реализовать кнопку навигации в JSF 2.0, которая не выполняет никаких проверок чего-либо на текущей странице? - PullRequest
3 голосов
/ 28 марта 2012

Я хочу реализовать навигационную кнопку, которая переносит пользователя на другую страницу. У меня нет желания или необходимости запускать какие-либо проверки или обновлять модель и т. Д. Я реализовал это как ajaxified клиентское перенаправление (заметьте, я использую Primefaces 3.2).

Это работает-- но это лучший способ сделать это?

Переход от «onePage.xhtml» к «anotherPage.xhtml»

onePage.xhtml:
...
<p:commandButton value="Navigate to Another Page" 
                 process="@this"/>
                 action="anotherPage?faces-redirect=true" 

...

Обратите внимание, я пытался использовать немедленное = "true", однако фаза Apply Request Values ​​все еще выполняется, что приводит к тому, что NPE для меня становится геттером в моем управляемом бине (поскольку у меня больше нет данных, которые нужны моему геттеру) .

Ответы [ 2 ]

6 голосов
/ 29 марта 2012

Просто используйте <h:button> или <p:button>.Он отправляет нормальный запрос GET.На самом деле нет необходимости в запросе POST-Redirect-GET, если это просто переход от страницы к странице.

<h:button value="Navigate to Another Page" outcome="anotherPage" />

Для PrimeFaces look'n'feel просто замените h: на p:.Обратите внимание, что этот компонент не требует <h:form>.Эквивалентом ссылки является <h:link> (для которого нет эквивалента PrimeFaces, в любом случае нет ничего, что нужно повторно разрабатывать).

См. Также:

1 голос
/ 28 марта 2012

Установите атрибут immediate в true в commandButton, это пропустит все проверки, преобразования или обновления. Атрибуты заставляют жизненный цикл JSF переходить от фазы Применить значения запроса непосредственно к фазе ответа ответа.

...