一部のフォームを無効にするチェックボックスがあります。
<h:selectBooleanCheckbox id="ldapAuthEnabled" value="#{enabled}" label="check it">
チェックすると、フォームのすべてのフィールドが無効になるため、次のようになります。
<h:inputText mandatory="true" value="#{someVar}"
disabled="#{!enabled}" required="#{enabled}" />
問題が発生するとき
- フィールドが無効になっていないときにフォームを保護しようとしています - 検証メッセージが表示されます!
- 次に、チェックボックスをクリックすると、すべてのフィールドが無効になりますが、それでも検証メッセージが表示されます! したがって、このため、controller.safe() メソッドに行くことさえできません。
問題は、期待どおりに機能させる方法です。- フィールドが無効になっている場合、検証メッセージを保持する必要はなく、フォームが無効であると考える必要はありません。
- 編集:
回答 (BalusC から) で示唆されているように、「値」を「バインディング」に変更したため、次のようなコードが作成されました。
<h:panelGroup id="my-panel">
<h:selectBooleanCheckbox id="myEdit" binding="#{checkbox}" label="enable it!">
<f:ajax event="click" render="my-panel"/>
</h:selectBooleanCheckbox>
<h:inputText id="name" value="#{bean.name}" disabled="#{not checkbox.value}" required="true" />
<h:outputText value="sometext"/>
</h:panelGroup>
「フォーム"<h:panelGroup id="my-panel">"
」の一部です。
しかし、同じ結果が得られます-save()を実行できない検証エラー。
現在、Bean に「SessionScope」を使用しています。