Bonjour,

J'ai passé plusieurs jours à essayer de faire marcher cette validation mais je n'ai pas de résultats satisfaisants. Je me ballade dans une forêt d'erreurs !
Je poste le contenu de mes fichiers en espérant que vous pourrez m'aider. J'utilise Struts 1.3.8 sous NetBeans 7.0.1.

Pour l'instant, c'est l'erreur suivante qui me bloque (la page web lancée apparaît vide).
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
 
Grave: Servlet.service() for servlet [jsp] in context with path [/hotlineTP] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method for property: "email" of bean: "org.apache.struts.validator.ValidatorForm"] with root cause
javax.servlet.jsp.JspException: No getter method for property: "email" of bean: "org.apache.struts.validator.ValidatorForm"
	at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:915)
	at org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:123)
	at org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
	at org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80)
	at org.apache.jsp.support_jsp._jspx_meth_html_005ftext_005f0(support_jsp.java:304)
	at org.apache.jsp.support_jsp._jspx_meth_html_005fform_005f0(support_jsp.java:235)
	at org.apache.jsp.support_jsp._jspx_meth_html_005fhtml_005f0(support_jsp.java:139)
	at org.apache.jsp.support_jsp._jspService(support_jsp.java:92)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
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
44
45
 
<?xml version="1.0" encoding="UTF-8" ?>
 
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
 
 
<struts-config>
    <form-beans>
        <form-bean name="SupportForm" type="org.apache.struts.validator.ValidatorForm">
            <form-property name="email" type="java.lang.String"/>
            <form-property name="logiciel" type="java.lang.String"/>
            <form-property name="os" type="java.lang.String"/>
            <form-property name="probleme" type="java.lang.String"/>
        </form-bean>
    </form-beans>
 
    <global-forwards>
        <forward name="success"  path="/success.jsp"/>
    </global-forwards>
 
    <action-mappings>
        <action path="/support" name="SupportForm" scope="session" type="com.myapp.struts.SupportAction" validate="true"/>
 
        <forward name="failuresupport" path="/support.jsp"/>
    </action-mappings>
 
    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
 
    <message-resources parameter="com/myapp/struts/ApplicationResource"/>    
 
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />      
        <set-property property="moduleAware" value="true" />
    </plug-in>
 
    <!-- ========================= Validator plugin ================================= -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
 
</struts-config>
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
    <formset>
        <!-- An example form -->
        <form name="supportForm">
            <field property="email" depends="required">
                    <arg key="supportForm.email"/>
            </field>
            <field property="probleme" depends="required, minlength">
                    <arg0 key="supportForm.probleme"/>
                    <arg1 key="${var:minlength}" name="minlength" resource="false"/>
                    <var>
                        <var-name>minlength</var-name>
                        <var-value>10</var-value>
                    </var>
            </field>
        </form>
    </formset>
 
    <!-- An example formset for another locale -->
    <formset language="fr">
         <form name="supportForm">
            <field property="email" depends="required">
                    <arg key="supportForm.email"/>
            </field>
            <field property="probleme" depends="required, minlength">
                    <arg0 key="supportForm.probleme"/>
                    <arg1 key="${var:minlength}" name="minlength" resource="false"/>
                    <var>
                        <var-name>minlength</var-name>
                        <var-value>10</var-value>
                    </var>
            </field>
        </form>
   </formset>
</form-validation>
SupportForm.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
package com.myapp.struts;
 
import java.io.Serializable;
import org.apache.struts.validator.ValidatorForm;
 
 
public class SupportForm extends ValidatorForm implements Serializable{
 
    private Long id;
    private String logiciel;
    private String os;
    private String probleme;
    private String email;
 
    public Long getId() {
        return id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public String getProbleme() {
        return probleme;
    }
 
    public void setProbleme(String probleme) {
        this.probleme = probleme;
    }
 
    public String getLogiciel() {
        return logiciel;
    }
 
    public void setLogiciel(String logiciel) {
        this.logiciel = logiciel;
    }
 
    public String getOs() {
        return os;
    }
 
    public void setOs(String os) {
        this.os = os;
    }
 
    public SupportForm() {
        super();
    }
}
SupportAction.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
 
package com.myapp.struts;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
 
public class SupportAction extends org.apache.struts.action.Action {
 
    /* forward name="success" path="" */
    private final static String FAILURE = "failuresupport";
    private final static String IDENTIFY = "identify";
    private final static String SUCCESS = "success";
 
 
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // extract user data
        SupportForm supportForm = (SupportForm) form;
        return mapping.findForward(SUCCESS);
        }
    }
support.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
 
 
<%@page contentType="text/html" pageEncoding="UTF-8"%>
 
<html:html lang="true">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
        <title><bean:message key="supportForm.title"/></title>
        <html:javascript formName="supportForm"/>
    </head>
    <body>
        <h2><bean:message key="supportForm.title"/></h2>
        <html:form  action="/support" onsubmit="return validateSupportForm(this);" focus="email">
            <table border="0">        
                    <tr>
                        <td>Email :</td>
                        <td><html:text property="email"/></td>
                        <td><html:errors property="email"/></td>         
                    </tr>
                    <tr>
                        <td>Logiciel :</td>
                        <td><html:select property="logiciel" >
                                <html:option value="Excel">Excel</html:option>
                                <html:option value="Word">Word</html:option>
                                <html:option value="Access">Access</html:option>
                            </html:select>
                        </td>
                        <td>Système d'exploitation :</td>
                        <td><html:select property="os" >
                                <html:option value="Linux">Linux</html:option>
                                <html:option value="Windows">Windows</html:option>
                                <html:option value="Mac">Mac</html:option>
                            </html:select>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Description du problème :
                        </td>
                    </tr>
                    <tr>
                        <td><html:textarea property="probleme"/></td>
                        <td><html:errors property="probleme"/></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><html:submit value="Soumettre le Support" /></td>
                    </tr>
            </table>                      
        </html:form>
    </body>
</html:html>