1

次の行動を誰が説明できますか? JavaScript でコマンド ボタンを無効にすると、アクション メソッドは実行されません。

<h:form>
    <h:commandButton value="test" action="#{bean.test}" onclick="disabled=true" />
</h:form>
4

2 に答える 2

2

HTML フォーム要素が無効になっている場合、そのname=valueペアは HTTP リクエスト パラメータとして送信されないため、JSF はリクエスト パラメータ マップでそれを見つけることができません。コマンド ボタンの場合、これはアクションが呼び出されないことを意味します。

フォームが送信された直後にボタンを無効にする必要があります。属性を使用するための提案された提案は、disabled手遅れであるため意味がありません。フォームの送信時には設定されませんが、応答が返されたときにのみ設定されます。

この特定のケースで特定の機能要件を達成するには、JS を使用して無効化をタイムアウトにすることができます。

<h:commandButton ... onclick="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);" />

ただし、使用する方がはるかに優れています<f:ajax onevent>

以下も参照してください。

于 2012-10-05T13:25:31.067 に答える
-1

コンポーネントのプロパティ「disabled」を使用して、BackBean からボタンを無効にしてみてください。

disabled="#{!(bean.disable)}"

このオプションは、情報が送信された後、コンポーネントがレンダリングされるときに機能します

于 2012-10-05T12:26:29.030 に答える