Bonjour,

Ca va faire maintenant un an que j'ai pas touché à un projet struts et me voila atteint de la plus grande des amnésies. Je n'arrive pas à lier un formulaire situé dans une JSP à mon actionForm. Sur le projet, nous utilisons struts Tiles pour construire nos pages.

J'obtiens l'erreur suivante lorsque j'essaye d'acceder à la page:
19 avr. 2008 12:28:20 org.apache.struts.util.RequestUtils createActionForm
GRAVE: Error creating form bean of class fr.argosi.administration.InfoPersoForm
java.lang.IllegalAccessException: Class org.apache.struts.config.FormBeanConfig can not access a member of class fr.argosi.administration.InfoPersoForm with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:254)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:208)
at org.apache.struts.action.RequestProcessor.processActionForm(RequestProcessor.java:319)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:192)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
Le corps de la page que j'essaye d'atteindre (version très simplifiée)
Appel fait par l'intermédiaire d'un lien: infoPerso.do
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
 
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<html:form method="post" action="enregistrer.do" >
    <center>
        <table>
            <tr>
                <td><label>Intitule </label></td>
                <td><html:text property="intitule" /></td>
            </tr>
            <tr>
                <td><label>Nom Entreprise</label></td>
                <td><html:text property="nomEntreprise" /></td>
            </tr>
        </table>
    </center>
</html:form>

Le 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
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
    "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
    <!-- ======== Form Bean Definitions ======== -->
    <form-beans>
        <form-bean name="formInfoPerso" type="fr.argosi.administration.InfoPersoForm" />
    </form-beans>
 
    <!-- ======== Action Mapping Definitions ======== -->
    <action-mappings>
        <action path="/infoPerso" 
                name="formInfoPerso"
                type="fr.argosi.administration.InfoPersoAction"
                scope="request">
            <forward name="success" path="infoPerso"/>
        </action>
    </action-mappings>
 
    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
 
 
    <!-- ======== Tiles plugin ======== -->
    <plug-in className="org.apache.struts.tiles.TilesPlugin">
        <set-property     property="definitions-config"
                        value="    /WEB-INF/config/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/config/validator-rules.xml"/>
    </plug-in>
</struts-config>
L'actionForm:
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
 
package fr.argosi.administration;
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
 
public class InfoPersoForm extends ActionForm {
 
    /**
     * Numero de serial automatique.
     */
    private static final long serialVersionUID = -3211966788964671747L;
 
    private String intitule = null;
 
    private String nomEntreprise = null;
 
    public String getIntitule() {
    return intitule;
    }
 
    public void setIntitule(String intitule) {
    this.intitule = intitule;
    }
 
    public String getNomEntreprise() {
    return nomEntreprise;
    }
 
    public void setNomEntreprise(String nomEntreprise) {
    this.nomEntreprise = nomEntreprise;
    }
}
La classe action:
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
package fr.argosi.administration;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
public class InfoPersoAction extends Action {
 
    public ActionForward execute(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response){        
        return mapping.findForward("success");
    }
}
Si vous pouvez m'aider, je vous en serais très reconnaissant. Je continue cependant à rechercher de mon coté car ce problème est vraiment bloquant pour le projet :p.
Merci d'avance.