Create new RichFaces Documentation Jira issue

This will launch the RichFaces Jira page - to complete your feedback please login if needed, and submit the Jira.

JBoss.orgCommunity Documentation

6.26.  < rich:graphValidator >

The <rich:graphValidator> component allows to register Hibernate Validators for multiple input components.

Table 6.52. rich : graphValidator attributes

Attribute NameDescription
bindingThe attribute takes a value-binding expression for a component property of a backing bean
idEvery component may have a unique id that is automatically created if omitted
profileThis attribute is reserved till the implementation of JavaBean Validation feature (JSR-303).
summarySummary message for a validation errors.
typeJSF Validator type, that implements GraphValidator interface.This validator is used for the Graph and input fields validation.
valueThe current value for this component.

Table 6.53. Component identification parameters

NameValue
component-typeorg.richfaces.graphValidator
component-classorg.richfaces.component.html.HtmlgraphValidator
component-familyorg.richfaces.graphValidator
renderer-typeorg.richfaces.graphValidatorRenderer
tag-classorg.richfaces.taglib.graphValidatorTag

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

Example:


...
<h:outputText value="Name:" />
       <h:inputText value="#{userBean.name}" id="name" required="true">
              <f:validateLength minimum="3" maximum="12"/>
              <rich:graphValidator event="onblur"/>
       </h:inputText>
...

Example:

import org.richfaces.component.html.HtmlCalendar;   

...
HtmlgraphValidator mygraphValidator= new HtmlgraphValidator();
...

The <rich:graphValidator> component behaves basically the same way as the <rich:beanValidator> The deference between these two components is that in order to validate some input data with a <rich:beanValidator> component, it should be a nested element of an input component, whereas <rich:graphValidator> wraps multiple input components and validates the data received from them.

The following example demonstrate a pattern of how the <rich:graphValidator> can be used.


...
<rich:graphValidator>
       <h:panelGrid columns="3">
              <h:outputText value="Name:" />
              <h:inputText value="#{validationBean.name}" id="name">
                     <f:validateLength minimum="2" />
              </h:inputText>
              <rich:message for="name" />
              <h:outputText value="Email:" />
              <h:inputText value="#{validationBean.email}" id="email" />
              <rich:message for="email" />
       </h:panelGrid>
</rich:graphValidator>
...

The data validation can be also performed using Hibernate Validator, the same way as it is done with <rich:beanValidator> .

The components's architecture provides an option to bind the component to a managed bean, which is done with the <value> attribute. The attribute ensures that the entered data is valid after the model is updated by revalidating the bean properties.

Please look at the example below.


...
<rich:graphValidator summary="Invalid values: " value="#{dayStatistics}">
<a4j:repeat value="#{dayStatistics.dayPasstimes}" var="pt" id="table">
<h:outputText value="#{pt.title}" />
<rich:inputNumberSpinner minValue="0" maxValue="24" value="#{pt.time}" id="time">
</rich:inputNumberSpinner>
<rich:message for="time" />
</a4j:repeat>
</rich:graphValidator>
...

Hence, the given above code will provide the functionality that is illustrated on the images below.

"Games" field did not pass validation

Figure 6.3. "Games" field did not pass validation


As you can see from the picture the "Games" field did not pass validation, as <rich:graphValidator> can be used to perform validation of a single input item.

Total sum of all input values is incorrect

Figure 6.4. Total sum of all input values is incorrect


The figure above shows that the entered data was revalidated after all fields were completed, and the data did not pass revalidation since the total sum was incorrect.

Here you can see an example of <rich:graphValidator> usage and sources for the given example.