【发布时间】:2011-04-06 00:52:02
【问题描述】:
从我的 bean 中的一个动作,我试图重定向到另一个需要视图参数的页面。在 JSF2 中推荐的方法是什么?
例如,假设我的源页面是: http://localhost/page1.xhtml
它有一个调用动作的命令按钮:
<h:commandButton value="submit" action="#{myBean.submit}" />
我的 bean 的样子:
@ManagedBean
@RequestScoped
public class MyBean {
private int id;
public String submit() {
//Does stuff
id = setID();
return "success";
}
现在,我希望“提交”操作返回导航到 http://localhost/page2.xhtml?id=2
我尝试在导航案例中使用视图参数来执行此操作,但结果很奇怪。 faces-config sn-p 如下所示:
<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(),并为所有后续调用重用相同的值,从而为 page2 生成不正确的视图参数。
所以我正在寻找一种更好的方法来做到这一点,或者为什么每次都没有从我的 bean 请求视图参数的原因/解决方案。
【问题讨论】: