【发布时间】:2011-05-04 20:27:55
【问题描述】:
有人告诉我JSF 2.0 会自动处理多次提交问题。 是对的吗? 如果是,JSF 2.0 如何做到这一点? 如果不是,有哪些需要注意的地方,以免在处理这个问题时留下任何陷阱?
谢谢。
【问题讨论】:
标签: jsf double submission
有人告诉我JSF 2.0 会自动处理多次提交问题。 是对的吗? 如果是,JSF 2.0 如何做到这一点? 如果不是,有哪些需要注意的地方,以免在处理这个问题时留下任何陷阱?
谢谢。
【问题讨论】:
标签: jsf double submission
这是由JSF spec issue 559 请求和维护的。就目前而言,它还不存在,但它是针对即将到来的 JSF 2.2 的。
在此之前,Seam's <s:token> 是您最好的解决方案,它不仅可以防止 CSRF(根据JSF impl issue 812,自 JSF 2.1 以来,这不再是绝对必要的),而且还可以重复提交。
【讨论】:
setTimeout() 方法。如果是服务器端,我认为在视图范围 bean 的操作方法中检查和设置布尔属性是最简单的。对于更高级的解决方案,使用完全有价值的令牌,您可能会从 this article 中获得一些想法。
<h:commandButton onclick ="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);setTimeout('document.getElementById(\'' + this.id + '\').disabled=false;', 500);" />
考虑改进您的简单而优雅的解决方案。我认为我们应该在一段时间后启用提交按钮。我相信你会想到这一点,但这是给像我这样的其他新手读者的:-)
【讨论】: