Projets
Pages enfant
  • 1.9.3 Ecriture des formulaires

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Validation des formulaires

Validation au niveau des JSP

Utilisation des validateurs prédéfinis

Il existe des validateurs par défaut dans JSF (validateLength, validateLongRange et validateDoubleRange), par exemple :

...

exercice
Utiliser un validateur prédéfini
Utiliser un validateur prédéfini

Ajouter un validateur prédéfini à la boite de saisie et supprimer le code correspondant de la méthode callback() (utiliser le validateur validateLength)

solution

1. Modification de la méthode callback :

Bloc de code
/**
 * JSF callback.
 * @return A String.
 */
public String callback() {
  return "gotoWelcome";
}

2. Modification de test1.jsp :

Bloc de code
<%@include file="_include.jsp"%>
  <%@include file="_navigation.jsp"%>
  <h:form>
    <h:messages/>
    <h:inputText value="#{test1Controller.myInput}" required="true">
	<f:validateLength minimum="3"/>
    </h:inputText>
    <h:commandButton value="Move"
	action="#{test1Controller.callback}"/>
  </h:form>

Développement de validateurs personnalisés

Il est aussi possible d'écrire ses propres validateurs. Leur mise en œuvre est relativement simple, par exemple :

...

exercice
Écrire un validateur
Écrire un validateur

Ajouter un validateur personnalisé validateMyInput() à la boite de saisie qui se charge de lancer une exception à la place de la méthode callback().

solution

1. Ajout dans Test1Controller:

Bloc de code
/**
 * @param context
 * @param componentToValidate
 * @param value
 * @throws ValidatorException
 */
public void validateMyInput(FacesContext context,
  UIComponent componentToValidate,
  Object value) throws ValidatorException {
  String strValue = (String) value;
  if (strValue.length() < 2) {
	throw new ValidatorException(getFacesErrorMessage("TEST1.MESSAGE.SHORT"));
  }
}

2. Modification test1.jsp :

Bloc de code
<%@include file="_include.jsp"%>
<%@include file="_navigation.jsp"%>

 <h:form>
   <h:messages/>
   <h:inputText value="#{test1Controller.myInput}" required="true"
      validator="#{test1Controller.validateMyInput}"/>
   <h:commandButton value="Move"
	action="#{test1Controller.callback}"/>
 </h:form>

Validation au niveau des beans (JSR 303)

http://musingsofaprogrammingaddict.blogspot.com/2009/01/getting-started-with-jsr-303-beans.html

Mise à jour de propriétés par les formulaires (updateActionlistener)

...