编辑用户数据时,我希望仅当密码不为空时才动态启用密码验证。我尝试过使用呈现密码组件的 ajax 请求,以使 validateBean 标记中的禁用属性变为动态。
我的 bean 有一个布尔属性 disabledValidation,它在执行与 ajax 请求关联的侦听器时更新。
我发现的第一个问题是,当用户编写其密码组件时,输入隐藏的密码被重新呈现(由于 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" />