在JSF中验证没有自定义验证器的数字值

时间:2015-04-07 20:48:35

标签: validation jsf jsf-2

我有一个JSF表单。当用户在0字段中输入qty并点击Add To Card按钮时,我希望显示一条消息。

这是JSF表单:

<h:form>
      <h:inputText id="qtyField" value="#{booksBean.qty}">
          <!--What kind of validation should i use here?-->
          <f:ajax event="blur" render="qtyMsg"/>
       </h:inputText>

       <h:message id="qtyMsg" for="qtyField"/>

       <h:commandButton value="Add To Card"
                        action="#{booksBean.orderBook()}"
                        rendered="#{booksBean.qty>0}">
           <f:ajax execute="@form" rendered="@form"/>
       </h:commandButton>
</h:form>

我是否需要自定义验证器类才能简单地将数值与零值进行比较?

像这样:

@FacesValidator("myValidator")
public class MyValidator implements Validator {

@Override
public void validate(FacesContext context, UIComponent component, Object value) {

   if (intValue== 0 || intValue <0) {
      throw new ValidatorException(new FacesMessage(...));
   }
    //...
}

如果没有创建自定义验证器类,有没有更短的方法?

1 个答案:

答案 0 :(得分:2)

您可以使用f:validateLongRange

<h:inputText value="#{backingBean.input1}">
    <f:validateLongRange minimum="1" />
</h:inputText>
  

检查组件的本地值是否在某个特定范围内   范围。该值必须是任何数字类型或可以是的字符串   转换为长。