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