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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part No action instance for path /start could be created
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 xml : 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 <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 xml : 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 <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 :
JSP_GLOBAL redirige sur 'global'.
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 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)); }
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.
Partager