这取决于您如何提交表单。如果您使用<f:ajax>
或任何其他基于Ajax的标记来执行Ajax提交,那么最好的方法是使用jsf.ajax.addOnEvent()
添加一个函数,该函数在Ajax请求即将发送时禁用该按钮,并在之后重新启用该按钮Ajax响应被检索。
例如如下所示,包含JSF Ajax脚本之后包含的内容,例如,在<script>
或<h:outputScript>
内部提及<h:head>
中的.js
文件。
jsf.ajax.addOnEvent(function(data) {
if (data.source.type != "submit") {
return; // Ignore anything else than input type="submit".
}
switch (data.status) {
case "begin":
data.source.disabled = true; // Disable input type="submit".
break;
case "complete":
data.source.disabled = false; // Re-enable input type="submit".
break;
}
});
如果你使用Ajax来执行提交,然后的方式之一是在onclick
一个setTimeout()
功能,禁用该按钮后点击几毫秒扔是不。
基本上,
<h:commandButton
id="foo"
value="submit"
action="#{bean.submit}"
onclick="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);"
/>
的setTimeout()
是强制性的,因为当你立即禁用它,那么name=value
对按钮将不会被这将导致JSF是无法识别的请求一起发送要执行action
。你当然可以重构它到一些DOM准备或窗口onload函数,它适用于所有提交按钮(jQuery将在这方面非常有用)。
java.net.SocketException异常:套接字写入错误:通过对 – user684434 2012-02-06 17:01:07