Probleme de non detection des erreurs dans un formulaire (methode validate)
Bonjour,
je debute dans struts et compagnie.
J'ai un soucis : lorsque je valide mon formulaire, je ne suis pas redirigé vers la page d'erreur "erreur.struts.jsp" alors que j'ai une erreur dans mon formulaire qui devrait m'etre indiquée : mon champ "emplacement" est vide.
Je teste dans "FormulaireBean" si le champ emplacement est vide je crée une erreur qui se référence au fichier "strutsressources.properties" et qui devrait me redirigé vers la page "erreur.struts.jsp" et m'indiquer l'erreur correspondante.
Voici le code de mon fichier "struts-config.xml" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-bean
name="frmStruts"
type="istia.st.struts.struts.FormulaireBean"
/>
</form-beans>
<action-mappings>
<action
path="/main"
name="frmStruts"
scope="session"
validate="true"
input="/erreurs.do"
parameter="/vues/main.html"
type="org.apache.struts.actions.ForwardAction"
/>
<action
path="/erreurs"
parameter="/vues/erreurs.struts.jsp"
type="org.apache.struts.actions.ForwardAction"
/>
<action
path="/reponse"
parameter="/vues/reponse.struts.jsp"
type="org.apache.struts.actions.ForwardAction"
/>
<action
path="/formulaire"
parameter="/vues/formulaire.struts.jsp"
type="org.apache.struts.actions.ForwardAction"
/>
</action-mappings>
<message-resources parameter="ressources.strutsressources"/>
</struts-config> |
Voici le code de mon fichier "FormulaireBean.java" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
package istia.st.struts.struts;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.*;
import org.apache.struts.action.*;
@SuppressWarnings("serial")
public class FormulaireBean extends ActionForm {
// emplacement
private String emplacement = null;
public String getEmplacement() {
return emplacement;
}
public void setEmplacement(String emplacement) {
this.emplacement = emplacement;
}
// validation
@SuppressWarnings("deprecation")
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
// gestion des erreurs
ActionErrors erreurs = new ActionErrors();
// l'emplacement doit être non vide
if (emplacement == null || emplacement.trim().equals("") || emplacement.trim().equals("test")) {
erreurs.add("emplacementvide", new ActionError("struts.formulaire.emplacement.vide"));
}
// on rend la liste d'erreurs
return erreurs;
}
} |
Voici le code de mon fichier "strutsressources.properties" :
Code:
1 2 3 4
|
struts.formulaire.emplacement.vide=<li>Vous devez indiquer un emplacement</li>
errors.header=<ul>
errors.footer=</ul> |
Enfin voila le fichier "formulaire.struts.jsp" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<meta http-equiv="pragma" content="no-cache">
<head>
<title>Struts - formulaire</title>
<script language="javascript">
function effacer(){
with(document.frmStruts){
emplacement.value="";
}
}
</script>
</head>
<body>
<center>
<h2>Struts - formulaire</h2>
<hr>
<html:form action="/main">
<table>
<tr>
<td>Emplacement d'origine</td>
<td><html:text property="emplacement" size="20" /></td>
</tr>
</table>
<table>
<tr>
<td><html:submit value="Envoyer"/></td>
<td><html:reset value="Rétablir"/></td>
<td><html:button property="btnEffacer" value="Effacer" onclick="effacer()"/></td>
</tr>
</table>
</html:form>
</center>
</body>
</html> |
Je ne suis jamais redirigé vers la page erreur et je ne sais pas d'ou cela peut venir.
Peut etre que mon fichier .properties est mal placé ( je l'ai mis dans WEB-INF\classes\ressources).
Peut etre que ma fonction validate est mal écrite : eclipse me dit que la méthode add(String, ActionError) du type ActionErrors est si je ne met pas le "@SuppressWarnings("deprecation")".
En tout cas je ne pense pas qu'il passe par cette fonction validate car j'ai enlevé le test sur l'attribut "emplacement" et créé l'erreur a chaque fois qu'il appel cette fonction, je ne suis jamais redirigé vers la page erreur.
Peut etre que mon fichier config est mal écrit. Pourtant le validate est à "true".
Merci de me dire ce qui ne va pas et de me faire part de vos remarques sur mon code.