【问题标题】:JSF 2.0: POST/Redirect/GET pattern when action method return null (stay on the same page)JSF 2.0:操作方法返回 null 时的 POST/Redirect/GET 模式(保持在同一页面上)
【发布时间】:2011-08-09 06:04:29
【问题描述】:

我需要避免在刷新时重复 POST。所以我使用POST/Redirect/GET 模式(faces-redirect=true)和导航处理程序(@BalusC),就像this post 一样。当操作方法返回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
   }
}

【问题讨论】:

  • 您好,您能否举例说明您尝试解决的使用案例?
  • 你有没有想过这个问题?

标签: jsf-2


【解决方案1】:

马里奥什。

Post/Redirect/Get 导致两个生命周期场景:

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

  • Get 会导致带有 Faces 响应的 Non-faces 请求(第 2.1.1 节)。在这种情况下会创建一个新视图。

【讨论】:

    【解决方案2】:

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

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

    我很想在 JSF 工具包中找到这个功能,比如 BalusC 的 Omnifaces!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2016-08-10
      • 2019-05-21
      相关资源
      最近更新 更多