JSF 2.0:POST / Redirect / GET模式,当action方法返回null时(保持在同一页面上)

时间:2011-08-09 06:04:29

标签: jsf-2

我需要在刷新时避免双重POST。所以我在POST/Redirect/GET中使用this post模式(faces-redirect=true)和导航处理程序(@BalusC)。当action方法返回null(保持在同一页面)时,如何在JSF 2.0中使用该模式?它甚至可能还是我需要使用其他POST / Redirect / GET?我需要保持一个视图范围的bean,所以返回动作方法相同的视图(PRG工作)不是一个解决方案(导致丢失view scope)。

查看test.xhtml:

<h:commandButton action="#{bean.send}"/>

豆:

@ManagedBean
@ViewScoped
class Bean {
   String send() {
       // do something...
       return null;
   }

   String send2() {
       // do something...
       return "test";  // view scope lost
   }
}

2 个答案:

答案 0 :(得分:0)

Marioosh。

发布/重定向/获取会导致两个生命周期场景:

  • 重定向导致非面部响应(JSF-2规范的第2.1节)。

  • 获取具有Faces响应的非面部请求(第2.1.1节)。在此方案中创建了一个新视图。

答案 1 :(得分:0)

某些框架默认实现此策略:例如Spring WebFlow。每个提交(POST)之后是一个带有参数“execution”的重定向GET,使Spring能够找到SAME视图。 例如:

http://myhost:8080/booking-spring-faces/spring/mypage?execution=e1s2

我很想在像BalusC的Omnifaces这样的JSF工具包中找到这个功能!