我有一个带有验证器和命令按钮的TextBox。当文本框的验证失败时,我想禁用命令按钮,否则应该启用它。我不想使用任何代码隐藏,因此它应该在bean中没有任何辅助属性的情况下工作。
那么如何根据验证器状态告诉命令按钮被禁用/启用?
<h:outputLabel for="category" value="#{msg['category.create']}"/>
<h:inputText id="category" required="true" label="#{msg['category.create']}" value="#{CreateCategoryBean.newCategory.name}" >
<f:validator validatorId="Get.Validator.CategoryValidator" />
<f:ajax event="keyup" render="categorymessage" />
</h:inputText>
<h:messages for="category" id="categorymessage"/>
<h:commandButton id="submit" value="#{msg['default.create']}" action="#{CreateCategoryBean.CreateCategory()}"
答案 0 :(得分:3)
由于您已经有<f:ajax event="keyup">
,所以只需让它更新<h:commandButton>
,然后在其disabled
attribtue中检查UIComponent#isValid()
<h:inputText>
}}不会返回false
。
<h:inputText binding="#{category}" ...>
<f:ajax ... render="categoryMessage submit" />
</h:inputText>
<h:commandButton id="submit" ... disabled="#{not category.valid}" />
不需要额外的bean属性。上面的代码按原样完成。