Из действия в моем bean, я пытаюсь перенаправить на другую страницу, ожидающую параметра вида. Каков рекомендуемый способ сделать это в JSF2?
Например, моя исходная страница: http://localhost/page1.xhtml
у него есть commandButton, который вызывает действие:
<h:commandButton value="submit" action="#{myBean.submit}" />
где my bean выглядит следующим образом:
@ManagedBean
@RequestScoped
public class MyBean {
private int id;
public String submit() {
//Does stuff
id = setID();
return "success";
}
И теперь, я хочу, чтобы действие "отправить" вернулось, чтобы перейти к http://localhost/page2.xhtml?id=2
Я попытался сделать это с помощью параметра view-param в моем случае навигации, но с нечетными результатами. Фрагмент faces-config выглядит следующим образом:
<navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<redirect>
<view-param>
<name>id</name>
<value>#{myBean.id}</value>
</view-param>
</redirect>
</navigation-case>
</navigation-rule>
Странное поведение, несмотря на то, что myBean настроен на запрос области видимости, он только вызывает myBean.getId() при первом загрузке моего приложения и повторно использует это же значение для всех последующих вызовов, создавая неверные параметры просмотра для страницы2.
Итак, я ищу либо лучший способ сделать это, либо причину/решение для того, почему параметр view не запрашивается с моего bean каждый раз.