禁用/启用h:commandButton验证失败/没问题

时间:2013-07-29 14:08:26

标签: validation jsf-2 form-submit

我有一个带有验证器和命令按钮的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()}"

1 个答案:

答案 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属性。上面的代码按原样完成。

另见: