に以下の例外を取得しています。 <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を使用してないしている場合は、次のいずれかの方法は、数msクリックした後にボタンを無効にしますonclick
でsetTimeout()
機能で投げることです。あなたはすぐにそれを無効にすると、その後、ボタンのname=value
ペアはJSFを識別することができなくさせるような要求とともに送信されませんので、基本的に
、
<h:commandButton
id="foo"
value="submit"
action="#{bean.submit}"
onclick="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);"
/>
setTimeout()
は、必須ですaction
が実行されます。もちろん、それをいくつかのDOM準備またはウィンドウのロード機能にリファクタリングすることができます。これは、すべての送信ボタンにこれを適用します(jQueryはこれに非常に役立ちます)。
java.net.SocketExceptionが:ソケット書き込みエラー:ピア – user684434