2011-05-04 65 views
3

有人告诉我,JSF 2.0自动处理多个提交问题。 是吗? 如果是,JSF 2.0如何做到这一点? 如果否,那么必须注意哪些事情,以便在处理此问题时不会留下任何陷阱?JSF 2.0和多个提交问题

谢谢。

回答

5

这是由JSF spec issue 559要求和维护。就目前而言,目前尚不存在,但它是针对即将到来的JSF 2.2的目标。

在此之前,Seam's <s:token>是您的最佳解决方案,它不仅防止CSRF(自从JSF 2.1以来不再严格需要,根据JSF impl issue 812),还可以双重提交。

+0

我们没有使用Seam。我们正在使用JSF 2.0和Prime Faces。任何想法或建议? – 2011-05-05 20:17:29

+1

你想处理这个clientside或serverside?如果客户端,请检查[这个答案] JavaScript'setTimeout()'方法(http://stackoverflow.com/questions/1750625/how-do-i-prevent-form-resubmission-in-seam/1751464#1751464) 。如果服务器端,我认为在视图范围的bean的action方法中检查和设置布尔属性是最简单的。对于更高级的解决方案,使用全功能令牌,您可以从[本文]中获得一些想法(http://jroller.com/mert/entry/jsf_preventing_double_form_submit)。 – BalusC 2011-05-05 20:56:54

+0

感谢您的答复和链接,他们很有帮助。 – 2011-05-06 18:28:23

0

<h:commandButton onclick ="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);setTimeout('document.getElementById(\'' + this.id + '\').disabled=false;', 500);" />

思想提高取决于您简单而elagent解决方案。我想我们应该在一段时间后启用提交按钮。我相信你会想到这一点,但这是为像我这样的其他新手读者:-)