JBoss.orgCommunity Documentation

6.26.  < rich:beanValidator >

The <rich:beanValidator> is a component designed to provide validation using Hibernate model-based constraints

Table 6.51. rich : beanValidator attributes

Attribute NameDescription
bindingbinding
summarySummary message for a validation errors.

Table 6.52. Component identification parameters

NameValue
component-typeorg.richfaces.beanValidator
component-classorg.richfaces.component.html.HtmlbeanValidator
component-familyorg.richfaces.beanValidator
renderer-typeorg.richfaces.beanValidatorRenderer
tag-classorg.richfaces.taglib.beanValidatorTag

To create the simplest variant of the component on a page use the following syntax:

Example:


...
<h:inputText value="#{validationBean.email}" id="email">
<rich:beanValidator summary="Invalid email"/>
</h:inputText>
...

Example:

import org.richfaces.component.html.HtmlCalendar;   

...
HtmlbeanValidator mybeanValidator= new HtmlbeanValidator();
...

Starting from 3.2.2 GA version Rich Faces provides support for model-based constraints defined using Hibernate Validator. Thus it's possible to use Hibernate Validators the same as for Seam based applications.

The <rich:beanValidator> component is defined in the same way as any JSF validator. Look at the example below.


...     
      <rich:panel>
        <f:facet name="header">
          <h:outputText value="#{validationBean.progressString}" id="progress"/>
        </f:facet>
        <h:panelGrid columns="3">
          <h:outputText value="Name:" />
          <h:inputText value="#{validationBean.name}" id="name">
            <rich:beanValidator summary="Invalid name"/>
          </h:inputText>
          <rich:message for="name" />
          <h:outputText value="Email:" />
          <h:inputText value="#{validationBean.email}" id="email">
            <rich:beanValidator summary="Invalid email"/>
          </h:inputText>
          <rich:message for="email" />
          <h:outputText value="Age:" />
          <h:inputText value="#{validationBean.age}" id="age">
            <rich:beanValidator summary="Wrong age"/>
          </h:inputText>
          <rich:message for="age" />
          <f:facet name="footer">
            <a4j:commandButton value="Submit" action="#{validationBean.success}" reRender="progress"/>
          </f:facet>
        </h:panelGrid>
      </rich:panel>
      ...

Please play close attention on the bean code that contains the constraints defined with Hibernate annotation which perform validation of the input data.



package org.richfaces.demo.validation;
import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
import org.hibernate.validator.Max;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;
public class ValidationBean {
    @NotEmpty
    @Length(min=3,max=12)
    private String name;
    @Email
    @NotEmpty
    private String email;
    @NotNull
    @Min(18)
    @Max(100)
    private int age;
    
    public ValidationBean() {
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

The following figure shows what happens if validation fails


As you can see from the example that in order to validate the <rich:beanValidator> should be nested into a input JSF or RichFaces component.

The component has the only attribute - "summary" which displays validation messages about validation errors.