次の行動を誰が説明できますか? JavaScript でコマンド ボタンを無効にすると、アクション メソッドは実行されません。
<h:form>
<h:commandButton value="test" action="#{bean.test}" onclick="disabled=true" />
</h:form>
次の行動を誰が説明できますか? JavaScript でコマンド ボタンを無効にすると、アクション メソッドは実行されません。
<h:form>
<h:commandButton value="test" action="#{bean.test}" onclick="disabled=true" />
</h:form>
HTML フォーム要素が無効になっている場合、そのname=value
ペアは HTTP リクエスト パラメータとして送信されないため、JSF はリクエスト パラメータ マップでそれを見つけることができません。コマンド ボタンの場合、これはアクションが呼び出されないことを意味します。
フォームが送信された直後にボタンを無効にする必要があります。属性を使用するための提案された提案は、disabled
手遅れであるため意味がありません。フォームの送信時には設定されませんが、応答が返されたときにのみ設定されます。
この特定のケースで特定の機能要件を達成するには、JS を使用して無効化をタイムアウトにすることができます。
<h:commandButton ... onclick="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);" />
ただし、使用する方がはるかに優れています<f:ajax onevent>
コンポーネントのプロパティ「disabled」を使用して、BackBean からボタンを無効にしてみてください。
disabled="#{!(bean.disable)}"
このオプションは、情報が送信された後、コンポーネントがレンダリングされるときに機能します