|
Cadre Fonctionnel |
Développement de JSP et validation de formulaire |
|
Cadre Technique |
NT/WebLogic 6.1 |
|
Identifiant |
SYS_JSP_02 |
|
Référent technique |
|
|
Version |
1.0 |
|
Auteur |
Alexandre Brillant |
|
Date |
19/10/01 |
| Source |
Documentation WebLogic 6.1 |
WebLogic 6.1 simplifie la validation de formulaire par l'exploitation d'une bibliothèque stockée dans le fichier wlserver6.1/ext/weblogic-vtags.jar. Cette bibliothèque comprend :
Le tag summary exploitable pour l'ensemble de la page. Ce tag doit englober toute la page HTML
Le tag form semblable au tag HTML de même nom
Le tag validator associé à un champ d'un formulaire et appliquant une méthode de validation (présence d'un champ, expression régulière, comparaison de deux champs.
Exploitation :
Copier le fichier weblogic-vtags.jar dans le répertoire WEB-INF/lib du répertoire de la JSP. Modifier le fichier web.xml du répertoire WEB-INF en ajoutant
<taglib>
<taglib-uri>wlTag.tld</taglib-uri>
<taglib-location>
/WEB-INF/lib/weblogic-vtags.jar
</taglib-location>
</taglib>
|
Exemple :
<%-- ***************** JSP DIRECTIVE ****************** --%>
<%--
Author : Alexandre Brillant
Creation Date : 18/10/01
Version : 1.0
Role : Exemple de validation de formulaire
--%>
<%@page language="java" info="Rôle
principale" contentType=""text/html;" charset=iso-8859-1"
isErrorPage="false" errorPage=""error.jsp"" %>
<%@taglib uri="wlTag.tld" prefix="wl"%>
<wl:summary>
<%-- ******************* HTML ***************** --%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<meta http-equiv="Content-Language" content="fr">
<title>Titre de la page</title>
<link href="style.css" rel="stylesheet"
type="text/css">
</head>
<body>
<wl:form name="login" method="POST"
action="testFormOk.jsp">
<wl:validator
errorMessage="Le login est obligatoire"
expression=""
validatorClass="weblogicx.jsp.tags.validators.RequiredFieldValidator">
<font color="red">Le login est obligatoire</font>
</wl:validator>
<p><input type="text" name="login"/>
</p>
<wl:validator
errorMessage="Le mot de passe est obligatoire"
expression=""
validatorClass="weblogicx.jsp.tags.validators.RequiredFieldValidator">
<font color="red">Le mot de passe est
obligatoire</font>
</wl:validator>
<p><input type="password" name="password">
</p>
</wl:form>
</body>
</html>
</wl:summary>
|
<taglib>
<taglib-uri>wlTag.tld</taglib-uri>
<taglib-location>
/WEB-INF/lib/weblogic-vtags.jar
</taglib-location>
</taglib>
|
Principales propriétés pour chaque tag :
name : Ce champ n'est obligatoire que lorsque plusieurs formulaires sont présents dans la page. Il représente un vecteur contenant la liste des messages d'erreur générée par les tags validator (par l'intermédiaire de l'attribut errorMessage).
headerText : Champ non obligatoire : Variable dont le texte peut être affichée
redirectPage : Champ non obligatoire si le tag form contient l'attribut action.
- form :
method : Même exploitation que pour le tag HTML form. De préférence toujours utiliser la valeur POST
action : URL de destination toujours différente de la page courante lorsque les champs sont considérés comme valides
name : Identique à l'attribute name du tag HTML form.
- validator :
errorMessage : Chaîne de caractère stockée dans le vecteur nommé dans l'attribut name du tag summary.
expression : Valeur supplémentaire pour la validation (par exemple pour définir une expression régulière)
fieldToValidate : Nom du champ à valider. Un champ se présente sous la forme <input name=" « ... »>
validatorClass : Classe effectuant la validation parmi weblogicx.jsp.tags.validators.RequiredFieldValidator, weblogics.jsp.tags.validators.RegExpValidator et weblogics.jsp.tags.validators.CompareValidator.
Champs obligatoires
Exemple avec un champ login obligatoire
<wl:validator errorMessage="Le login est obligatoire" expression="" validatorClass="weblogicx.jsp.tags.validators.RequiredFieldValidator"> <font color="red">Le login est obligatoire</font> </wl:validator> <p><input type="text" name="login"/> </p> |
Expression régulière
WebLogic utilise l'API ORO du projet apache : http://jakarta.apache.org
Des exemples de syntaxes sont disponibles sur : http://www.javaworld.com/javaworld/jw-07-2001/jw-0713-regex.htmll
Exemple pour la validation d'un e-mail :
<!-- Email --> <wl:validator errorMessage="Erreur dans L'email" expression="^.*@.*\\..*$" fieldToValidate=""email"" validatorClass="weblogicx.jsp.tags.validators.RegExpValidator"> <font color="red">L'email est invalide</font> </wl:validator> <p><input type="text" name="email"> </p> |
Comparaison de deux champs
<!-- Confirmation --> <wl:validator errorMessage="Erreur dans L'email" expression="^.*@.*\\..*$" fieldToValidate="password1,password2" validatorClass="weblogicx.jsp.tags.validators.CompareValidator"> <font color="red">Mot de passe invalide</font> </wl:validator> <p><input type="password" name="password1"> </p> <p><input type="password" name="password2"> </p> |
Il est aussi possible de réaliser une extension des classes de validation en héritant de la classe weblogic.jsp.tags.validators.CustomizableAdapter.
Exemple d'extension contrôlant la taille d'un champ :
package com.airial.tag;
import weblogicx.jsp.tags.validators.CustomizableAdapter;
import javax.servlet.*;
/**
* Validateur de taille pour un champ texte. L'utilisateur
* spécifie dans l'attribut expression la taille du champ attendue
*
* @author "Alexandre Brillant" <brillant@hexadev.com>
* @version 1.0
* @since 1.0
* @see CustomizableAdapter
*/
public class SizeValidator extends CustomizableAdapter {
public SizeValidator() {
super();
}
public boolean validate( ServletRequest req ) {
String _expression = getExpression();
int size = 0;
try {
size = Integer.parseInt( _expression );
} catch( NumberFormatException exc ) {
return false;
}
String value = req.getParameter( getFieldToValidate() );
return value.length() == size;
}
}
|
Pour l'intégration de cette classe, le plus simple et de décompresser la librairie weblogic-vtags.jar
Exemple d'utilisation de la nouvelle classe :
<!-- Taille d'un champ --> <wl:validator errorMessage="Erreur dans L'email" expression="10" fieldToValidate=""field"" validatorClass="com.airial.tag.SizeValidator"> <font color="red">Mot de passe invalide</font> </wl:validator> <p><input type="text" name="field"> </p> <p><input type="submit" name="submit"></p> </wl:form> |
Réintroduction de valeur de champ en cas d'erreur :
Le plus simple est d'utiliser le vecteur errorVector ou le nom choisit par la propriété name du tag summary.
Exemple permettant d'initialiser un champ avec la précédente valeur sur une erreur :
<p>Field = <input type="text" name="field" value="<%= ( errorVector.size() > 0 ) ? request.getParameter( "field" ) : "default value" %>"> </p> |