user4279433
user4279433

Reputation:

Validate a number value without custom validator in JSF

I have a JSF form. I want a message to be displayed, when a user entered 0 in qty field and clicked on the Add To Card button.

Here is the JSF form:

<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>

Do I need a custom validator class just to simply compare a number value with a zero?

Like this:

@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(...));
   }
    //...
}

Is there any shorter way without creating a custom validator class?

Upvotes: 0

Views: 933

Answers (1)

user201891
user201891

Reputation:

You can use f:validateLongRange for this.

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

Checks whether the local value of a component is within a certain range. The value must be any numeric type or String that can be converted to a long.

Upvotes: 2

Related Questions