No action instance for path /start could be created
Bonjour,
Je suis actuellement en train de développer une nouvelle application web, et je tombe sur le message d'erreur suivant lorsque je tente d'y accéder :
Code:
No action instance for path /start could be created
Après plusieurs heures (pour ne pas dire jours) de recherche, je me tourne vers vous pour savoir comment résoudre ce problème :) en espérant que vous puissiez m'aider.
Contexte du problème:
J'ai un EAR qui contient plusieurs WAR (un par application). J'ai une application globale dont le but est de gérer une page de login, puis de présenter un menu listant les applications qu'il est possible de lancer. Jusqu'à maintenant je n'avais aucun soucis, sauf que je viens d'incorporer une nouvelle application dans cette liste (sous forme de nouveau projet web dynamique donc).
Après m'être loggué, lorsque je clique pour lancer l'application, l'url suivante est appelée :
http://bidule.truc.org:8080/AppliGen...brary/start.do
Je me doute que le problème est lié à la configuration struts mais ne trouve toujours pas. Voici la configuration de ma nouvelle application nommée 'Library':
Fichier web.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <servlet>
<servlet-name>LibraryServlet</servlet-name>
<servlet-class>org.*.*.*.gui.LibraryServlet</servlet-class>
....
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/properties/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LibraryServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
... |
Fichier de config struts :
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 44 45 46 47 48 49 50 51 52 53 54 55
| <struts-config>
<form-beans type="org.apache.struts.action.ActionFormBean">
<form-bean name="loginForm" type="org.*.*.gui.form.LoginForm" />
<form-bean name="libraryForm" type="org.*.*.library.gui.form.LibraryForm" />
</form-beans>
<global-forwards type="org.apache.struts.action.ActionForward">
<forward name="start" path="/start.do" />
<forward name="login" path="/jsp/login.jsp" />
<forward name="close" path="/jsp/close.jsp" />
<forward name="global" path="/jsp/library-global.jsp" />
<forward name="detail" path="/jsp/library-detail.jsp" />
</global-forwards>
<action-mappings>
<action type="org.epo.docarea.gui.action.VersionAction"
path="/version">
</action>
<!-- START: first action -->
<action type="org.*.*.library.gui.action.StartAction"
name="loginForm"
path="/start"
validate="false">
</action>
<!-- LOGIN: in case of unvalidated session -->
<action type="org.*.*.gui.action.LoginAction"
name="loginForm"
path="/login">
<forward name="success" path="/start.do" />
</action>
<action type="org.*.*.library.gui.action.GlobalAction"
name="libraryForm"
path="/global"
scope="session"
parameter="action">
</action>
<action type="org.*.*.library.gui.action.DetailAction"
name="libraryForm"
path="/detail"
scope="session"
parameter="action">
</action>
</action-mappings>
<message-resources parameter="org.*.*.library.gui.ApplicationResources"/>
</struts-config> |
En gros, lorsque je clique sur une application dans mon menu, ça ouvre une nouvelle fenêtre en appelant l'url suivante : http://bidule.truc.org:8080/AppliGen...brary/start.do, et c'est là que j'ai le message d'erreur.
Voici le code de la méthode 'execute' de ma classe d'action 'StartAction', sencée être appelé au démarrage de cette URL :
StartAction.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public ActionForward execute(ActionMapping theMapping,
ActionForm theForm,
HttpServletRequest theRequest,
HttpServletResponse theResponse) {
// --- Measure time of execute method
long myTime = System.currentTimeMillis();
logger.info("[execute] Return forward "+ JSP_GLOBAL);
myTime = System.currentTimeMillis() - myTime;
logger.warn("[execute] StartAction executed in "+((double)myTime)/1000+" s. with session id. "+theRequest.getSession().getId());
return (theMapping.findForward(JSP_GLOBAL));
} |
JSP_GLOBAL redirige sur 'global'.
PS: mes classe de formulaire et classe d'action étendent bien respectivement les classe ActionForm et DispatchAction.
Je vous remercie d'avance pour l'aide que vous m'apporterez.