2

我得到了一个带有验证器和命令按钮的文本框。当文本框的验证失败时,我想禁用命令按钮,否则应该启用它。我不想使用任何代码隐藏,因此它应该可以在 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()}"
4

1 回答 1

3

正如你已经 a<f:ajax event="keyup">一样,只需让它更新<h:commandButton>你在它的属性中依次disabled检查UIComponent#isValid()of<h:inputText>是否不返回false

<h:inputText binding="#{category}" ...>
    <f:ajax ... render="categoryMessage submit" />
</h:inputText>

<h:commandButton id="submit" ... disabled="#{not category.valid}" />

不需要额外的 bean 属性。上面的代码是完整的。

也可以看看:

于 2013-07-29T14:36:04.707 回答