ユーザー データを編集するときに、パスワードが空でない場合にのみ、パスワードの検証を動的に有効にしたいと考えています。私が試したのは、validateBean タグの無効な属性を動的にするために、パスワード コンポーネントをレンダリングする ajax リクエストを使用することです。
私のビーンには、ajaxリクエストに関連付けられたリスナーが実行されると更新されるブールプロパティdisabledValidationがあります。
私が見つけた最初の問題は、ユーザーがパスワード コンポーネントを書き込むときにパスワードが InputHidden であることが (ajax タグにより) 再レンダリングされ、ユーザーが書いたものが失われることです。
また、ajax タグに関連付けられたリスナーが実行されることはありません。
<h:inputSecret id="password" binding="#{password}" value="#{userBean.user.password}">
<f:validateBean disabled="#{userBean.disabledValidation}">
<f:ajax event="blur" render="@this" listener="#{userBean.enableValidationIfPasswordIsFilled}"/>
</f:validateBean>
</h:inputSecret>
<h:message for="password" />