Fiches / Articles

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

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>

Pour faire fonctionner cet exemple, il suffit de copier le fichier weblogic-vtags.jar dans le répertoire WEB-INF/lib du répertoire d'exploitation de la jsp. Un fichier web.xml doit être présent dans le répertoire WEB-INF avec :


<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 :


- summary :

- form :

- validator :

  1. Exemples d'utilisation :
  1. 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>

  1. 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>