在JSF上实现PRG

时间:2011-07-04 01:40:50

标签: java jsf

我目前正在研究JSF。 过去,在使用Spring和Struts的时候,我总是每次都做一个PRG(Post-Redirect-Get) 我做了一些可能会更新模型的事情。

在JSF中,我已经读过框架内部发出转发请求。所以它是安全的 假设我应该在可能更新模型的那些事务中添加重定向?

我的用例例如。我有一个在购物车中显示产品的JSP,用户可以执行支付交易。 我不希望他们支付两次,所以我想执行重定向

<navigation-rule>
   <from-view-id>/viewCart.jsp</from-view-id>
   <navigation-case>
      <from-outcome>pay</from-outcome>
      <to-view-id>/successPay.jsp</to-view-id>
      </redirect>
   </navigation-case>
</navigation-rule>

我担心用户使用他们的后退按钮或在浏览器上点击刷新?

我的想法是否正确或JSF中有替代方案可用于这些情况 感谢。

1 个答案:

答案 0 :(得分:1)

是的,添加<redirect/>是使其成为PRG的正确方法之一。

其他方法涉及在bean操作方法中手动调用ExternalContext#redirect(),或者(仅在JSF 2.x中)将faces-redirect=true参数添加到(隐式导航)结果值,这也可以通过custom configurable navigation handler