Bonjour,
J'essaye d'utiliser le LookupDispatchAction pour avoir 2 boutons de soumission pour 1 seule action.
Malheureusement je coince sur l'exception suivante lorsque je clic sur mon bouton "Verification":
javax.servlet.ServletException: Action[/MajFichier] missing resource in key method map
org.apache.struts.actions.LookupDispatchAction.getLookupMapName(LookupDispatchAction.java:230)
org.apache.struts.actions.LookupDispatchAction.getMethodName(LookupDispatchAction.java:271)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:173)
org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:150)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
ter.logement.gui.IdLogementController.process(IdLogementController.java:41)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
java.security.AccessController.doPrivileged(Native Method)
ter.logement.tools.gui.DefaultFilter.doFilter(DefaultFilter.java:53)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
Pourtant tout me semble correct.
Merci pour votre aide.
Voici mon stuts-config.xml:
Voici 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 <form-beans> <form-bean name="FB_FICHIER" type="ter.logement.gui.admin.FbSelectionFichier"> <form-property name="ValidationMAJ" type="java.lang.String"/> </form-bean> </form-beans> <action-mappings> <action path="/MajFichier" type="ter.logement.gui.admin.EnvAcFichierAction" name="FB_FICHIER" scope="request" validate="true" input="/admin/MiseaJourMasse.jsp" parameter="ValidationMAJ"> <forward name="succes" path="/admin/MiseaJourMasse.jsp"/> </action> </action-mappings>
J'ai renseigné dans mon fichier resources.properties le nom de mes boutons:
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 <%@ page contentType="text/html;charset=windows-1252"%> <%@ taglib uri="/WEB-INF/struts-html" prefix="html"%> <%@ taglib uri="/WEB-INF/cc-forms" prefix="forms"%> <%@ taglib uri="/WEB-INF/cc-base" prefix="base"%> <%@ taglib uri="/WEB-INF/ter-composants" prefix="tercomposant"%> <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean"%> <html:html locale="true"> <head> <title>Mise à jour en masse de logements</title> </head> <body> <html:form action="/MajFichier" method="post" enctype="multipart/form-data"> <table> <tr> <td align="center" colspan="2"><font size="4">Sélectionner le fichier à importer</font></td> </tr> <tr> <td align="left" colspan="2"><font color="red"><html:errors /></font> </td> </tr> <tr> <td align="right">Saisie du chemin du fichier</td> <td align="left"><html:file property="theFile" /></td> </tr> <tr> <td align="center" colspan="2"> <html:submit property="ValidationMAJ"> <bean:message key="button.validation"/> </html:submit> <html:submit property="ValidationMAJ"> <bean:message key="button.maj"/> </html:submit> </td> </tr> </table> </html:form> </body> </html:html>
et mes méthodes associés sont:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 button.validation=Verification button.maj=MAJ
Merci encore pour votre aide car là ... je n'ai vraiment plus d'idées ...
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
60
61
62 package ter.logement.gui.admin; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.util.HashMap; import java.util.Map; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.apache.struts.actions.LookupDispatchAction; import java.io.IOException; public class EnvAcFichierAction extends LookupDispatchAction { protected Map getKeyMethodMap() { Map<String, String> map = new HashMap<String, String>(); map.put("button.validation", "validation"); map.put("button.maj", "miseajour"); return map; } public ActionForward validation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { FbSelectionFichier myForm = (FbSelectionFichier) form; // Process the FormFile FormFile myFile = myForm.getTheFile(); String contentType = myFile.getContentType(); String fileName = myFile.getFileName(); int fileSize = myFile.getFileSize(); byte[] fileData = myFile.getFileData(); System.out.println("Type du fichier: " + contentType); System.out.println("Nom du Fichier: " + fileName); System.out.println("Taille du fichier: " + fileSize); return (mapping.findForward("succes")); } public ActionForward miseajour( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { System.out.println("Appel de la methode miseajour()"); return (mapping.findForward("succes")); } }
Partager