Bean返回上一页的方法

时间:2015-02-19 22:14:06

标签: jsf cdi back

执行相应的操作后,我的bean的方法必须确保浏览器返回上一页。我怎么处理呢?

我正在使用CDI会话。

2 个答案:

答案 0 :(得分:6)

在导航期间将当前URI作为请求参数传递给包含该操作的页面。

<h:link value="Go to page containing that action" outcome="pageContainingThatAction.xhtml">
    <f:param name="from" value="#{request.requestURI}" />
</h:link>

(如果您想传递视图ID,请使用#{view.viewId}

设置并记住表示视图/会话作用域托管bean中的URI的参数。

<f:metadata>
    <f:viewParam name="from" value="#{bean.from}" />
</f:metadata>

最后在该操作方法中重定向到该URI。

public void thatActionMethod() throws IOException {
    // ...

    externalContext.redirect(from);
}

答案 1 :(得分:1)

在评论中询问了几个问题之后,我想你想要做的是:

  • 在按钮上,为bean中返回String的函数指定属性action
  • 返回的字符串必须是您要重定向的页面的导航路径。
  • 如果单击按钮时验证错误,则只返回null,它将保持在同一页面上。
  • 确保在faces-config.xml
  • 中定义正确的导航规则

有关如何配置导航规则,请参阅此tutorial

有关action代码的信息,请参阅Primefaces commandButton doc