我目前正在研究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中有替代方案可用于这些情况 感谢。
答案 0 :(得分:1)
是的,添加<redirect/>
是使其成为PRG的正确方法之一。
其他方法涉及在bean操作方法中手动调用ExternalContext#redirect()
,或者(仅在JSF 2.x中)将faces-redirect=true
参数添加到(隐式导航)结果值,这也可以通过custom configurable navigation handler