Bonjour à tous,
Impossible de faire fonctionner ce Plugin, malgré de nombreux articles sur le Web :
Voici l'ensemble des créations ou modifs que j'ai réalisées :
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 <struts-config> <form-beans> <form-bean name="formChoixMachine" type="com.mycompany.pad.ChoixMachineForm"> <!-- Certains scripts ont le "type" mentionné ci-après, la différence ? --> <!-- type="org.apache.struts.validator.DynaValidatorForm" --> <form-property name="manufactNumber" type="java.lang.String"/> </form-bean> </form-beans> [...] <action-mappings> [...] <action name="formChoixMachine" path="/FormAffichMachine" scope="session" validate="true" input="/choixMachine.do" type="com.mycompany.pad.ChoixMachineAction" > <forward name="succes" path="/vues/ficheMachine.jsp"/> <forward name="echec" path="/vues/choixMachine.jsp"/> </action> [...] </action-mappings> <message-resources parameter="com.mycompany.pad.padRessources"/> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> <set-property property="stopOnFirstError" value="false"/> </plug-in> </struts-config>
validator-rules.xml (!!! code récupéré sur le net !!!)
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="UTF-8"?> <!DOCTYPE formation-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <formation-validation> <global> <validator name="required" classname="org.apache.struts.validator.FieldChecks" method="validateRequired" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.required" /> <validator name="mask" classname="org.apache.struts.validator.FieldChecks" method="validateMask" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.invalid" /> <validator name="minlength" classname="org.apache.struts.util.StrutsValidator" method="validateMinLength" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="required" msg="errors.minlength" /> </global> </formation-validation>
validation.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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <form-validation> <formset> <form name="formChoixMachine"> <field property="manufactNumber" depends="required,mask"> <msg name="mask" key="error.manufactNumber.incorrect" /> <arg position="0" key="error.manufactNumber.incorrect" /> <var> <var-name>mask</var-name> <var-value>^[0-9]{6}$</var-value> </var> </field> </form> </formset> </form-validation>
padRessources.properties
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 errors.header=<span style="padding-left: 10px"> errors.footer=</span> errors.prefix=<span class="erreur"> errors.suffix=</span> error.manufactNumber.incorrect=Numéro de fabrication <i>incorrect</i>. error.manufactNumber.inexistant=Numéro de fabrication <i>inexistant</i>. # Messages d'erreur de Struts Validator errors.required={0} est obligatoire. errors.minlength={0} ne peut pas être inférieur à {1} caractères. errors.maxlength={0} ne peut pas être supérieur à {1} caractères. errors.invalid={0} est invalide. errors.byte={0} doit être de type "byte". errors.short={0} doit être de type "short". errors.integer={0} doit être de type "integer". errors.long={0} doit être de type "long". errors.float={0} doit être de type "float". errors.double={0} doit être de type "double". errors.date={0} n'est pas une date valide. errors.range={0} n'est pas compris entre {1} et {2}. errors.creditcard={0} n'est pas un numéro de carte de crédit valide. errors.email={0} n'est pas une adresse de courrier électronique valide.
ChoixMachineForm
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 package com.mycompany.pad; import org.apache.struts.validator.ValidatorForm; public class ChoixMachineForm extends ValidatorForm { //Déclarations des éléments de la JSP [...] //Getters et Setters [...] // Validation // Je peux bien la supprimer cette méthode désormais, non ?! /*public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { // Gestion des erreurs ActionErrors erreurs = new ActionErrors(); // Le chemin du 1er FDM doit être non vide if (getUrlFdm() == null || getUrlFdm() == "") { erreurs.add("urlFdmVide", new ActionMessage("error.urlFdm.vide")); } // Le chemin du 2ème FDM doit être non vide if (getUrlFdm2() == null || getUrlFdm2() == "") { erreurs.add("urlFdm2Vide", new ActionMessage("error.urlFdm2.vide")); } return erreurs; }*/ }
Ma 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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %> <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="style/default.css" type="text/css" /> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Sélection du FDM à afficher</title> <html:javascript formName="formChoixMachine" dynamicJavascript="false" staticJavascript="true" /> <!-- dynamicJavascript à "false" et ça NE plante PLUS --> </head> <body> [...] <div class="conteneur"> <h1>Interface de consultation de la BdD des paramètres machines</h1> <hr /> <html:form action="/FormAffichMachine" focus="manufactNumber" onsubmit="return validateFormChoixMachine(this);"> <fieldset> <legend>Choix du FDM à afficher</legend> <p class="fieldset"> <label for="manufactNumber"> Numéro de fabrication : <html:text property="manufactNumber" size="10" maxlength="6" onfocus="select();" /> </label> <html:submit styleClass="bouton" value="Soumettre" /> <html:errors property="manufactNumberIncorrect" /> <html:errors property="manufactNumberInexistant" /> </p> </fieldset> </html:form> </div> </body> </html>
Et voici la page d'erreurs avec dynamicJavascript="false" : La JSP s'affiche, je peux soumettre le formulaire et ... :
Etat HTTP 500 -
--------------------------------------------------------------------------------
type Rapport d'exception
message
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
exception
javax.servlet.ServletException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
java.lang.ClassCastException
com.mycompany.pad.ChoixMachineAction.execute(ChoixMachineAction.java:29)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.
Et voici la page d'erreurs avec dynamicJavascript="true" : La JSP ne s'affiche même PAS ... :
Etat HTTP 500 -
--------------------------------------------------------------------------------
type Rapport d'exception
message
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
exception
javax.servlet.ServletException: Exception in JSP: /vues/choixMachine.jsp:10
7: <link rel="stylesheet" href="style/default.css" type="text/css" />
8: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
9: <title>Sélection du FDM à afficher</title>
10: <html:javascript formName="formChoixMachine" dynamicJavascript="true" staticJavascript="true" />
11: </head>
12: <body>
13: <div class="menuGaucheBarre"></div>
Stacktrace:
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
org.apache.jasper.JasperException: Exception in JSP: /vues/choixMachine.jsp:10
7: <link rel="stylesheet" href="style/default.css" type="text/css" />
8: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
9: <title>Sélection du FDM à afficher</title>
10: <html:javascript formName="formChoixMachine" dynamicJavascript="true" staticJavascript="true" />
11: </head>
12: <body>
13: <div class="menuGaucheBarre"></div>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
java.lang.NullPointerException: Depends string "required" was not found in validator-rules.xml.
org.apache.struts.taglib.html.JavascriptValidatorTag.createActionList(JavascriptValidatorTag.java:707)
org.apache.struts.taglib.html.JavascriptValidatorTag.createDynamicJavascript(JavascriptValidatorTag.java:441)
org.apache.struts.taglib.html.JavascriptValidatorTag.renderJavascript(JavascriptValidatorTag.java:396)
org.apache.struts.taglib.html.JavascriptValidatorTag.doStartTag(JavascriptValidatorTag.java:349)
org.apache.jsp.vues.choixMachine_jsp._jspx_meth_html_005fjavascript_005f0(choixMachine_jsp.java:134)
org.apache.jsp.vues.choixMachine_jsp._jspService(choixMachine_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.
Désolé pour ces "pavés", mais je vois vraiment pas d'où peut venir le problème !
Merci d'avance,
Gôm.
Partager