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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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&eacute;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.