Jusqu’à aujourd’hui les erreurs possibles lors du remplissage des trois formulaires de l’application étaient gérées ‘manuellement’. Le contrôleur vérifiait les paramètres renseignés, et construisait un message d’erreur ainsi qu’un booléen ‘erreur’ en attribut. Puis on vérifiait, dans la page xhtml, la valeur du booléen ‘erreur’ : si il était ‘vrai’ on affichait le message en rouge.
Tout ceci a été modifié afin d’utiliser les fonctionnalités offertes par JSF. Grâce à cela, la méthode du contrôleur qui vérifie les champs est moins complexe car elle contient moins de boucle ‘if’ imbriquées (nécessaires à la construction d’un message d’erreur présentable dans une seule ‘String’) et la page xhtml voit ces trois lignes de code (contenant la condition d’affichage du message d’erreur dans un attribut ‘rendered’) nécessaire au message d’erreur simplifiées en une seule, très courte. De plus le contrôleur n’a plus besoin d’avoir les variables ‘String message’ et ‘boolean erreur’ en attribut car la page xhtml n’a plus besoin d’y accéder.
Voici un exemple du code obtenu pour un formulaire simple (1 seul champ):
La méthode du contrôleur :
|
public String chercher() {
String message = “”; if (codetu != null && !codetu.equals(“”)) { String codindetu = service.getCodIndFromCodEtu(codetu); if (codindetu != null) { return etatcivilcontroller.lienEnterNumero(codindetu); } message = “Etudiant ” + codetu + ” inexistant”; FacesMessage messageX = new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message); FacesContext.getCurrentInstance().addMessage(null, messageX);
} else { message = “Veuillez rentrer un identifiant.”; FacesMessage messageX = new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message); FacesContext.getCurrentInstance().addMessage(null, messageX);
} return View.CHERCHE_NUM;
}
|
L’affichage du message d’erreur dans page xhtml :
|
<h:form id=”formRechDossierWeb”> <h:messages id=”champMessages” errorStyle=”color: red” /> …
|
Et voici le résultat pour un formulaire un peu plus complexe (3 champs) :