這取決於您如何提交表單。如果您使用<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