我有一个禁用某些表单的复选框。
<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”。