Salut,
j'aimerai savoir s'il est possible d'utiliser ces propres servlets avec le framework seam, c'est à dire, je vourdrai créer un formulaire et dans l'attribut action de ce formulaire je voudrai appelé une servlet (la méthode DoGet)
Pour cela, j'ai créé une classe java dans le dossier de mes sessionBeans, voici le code :
Ensuite, j'ai ajouté les lignes suivantes dans le web.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 public class Download extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ FacesContext context = FacesContext.getCurrentInstance(); ExternalContext ec = context.getExternalContext(); String filePath = null; String fileName = null; int read = 0; byte[] bytes = new byte[1000]; response.setContentType("application/pdf"); response.addHeader("Content-disposition", "attachment; filename=\"" + fileName +"\""); filePath = "C:\\tutoriaux"; fileName = "jpa.pdf"; try { ServletOutputStream os = response.getOutputStream(); File file = new File(filePath,fileName); FileInputStream fis = new FileInputStream(file); while((read = fis.read(bytes)) != -1) { os.write(bytes,0,read); } os.flush(); context.responseComplete(); os.close(); System.out.println("\nSuccess\n"); } catch(Exception e) { System.out.println("\nFailure : " + e.toString() + "\n"); } } }
Mais lorsque je tape l'url de ma servlet sous firefox, voici l'erreur que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <servlet> <servlet-name>Download</servlet-name> <servlet-class>sessionBeans.Download</servlet-class> </servlet> <servlet-mapping> <servlet-name>Download</servlet-name> <url-pattern>/Download</url-pattern> </servlet-mapping>
D'où peut venir le problème ?
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 type Rapport d'exception message description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête. exception javax.servlet.ServletException: java.lang.IllegalArgumentException: no file extension in servlet path: /Download org.jboss.seam.web.ExceptionFilter.endWebRequestAfterException(ExceptionFilter.java:126) org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:70) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) cause mère java.lang.IllegalArgumentException: no file extension in servlet path: /Download org.jboss.seam.mock.MockViewHandler.getActionURL(MockViewHandler.java:44) org.jboss.seam.jsf.SeamViewHandler.getActionURL(SeamViewHandler.java:74) org.jboss.seam.faces.FacesManager.redirect(FacesManager.java:154) org.jboss.seam.faces.Redirect.execute(Redirect.java:139) org.jboss.seam.exception.DebugPageHandler.handle(DebugPageHandler.java:32) org.jboss.seam.exception.Exceptions.handle(Exceptions.java:75) org.jboss.seam.web.ExceptionFilter.endWebRequestAfterException(ExceptionFilter.java:114) org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:70) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de JBossWeb/2.0.1.GA. JBossWeb/2.0.1.GA
Je travaille avec la version 2.0.2.CR1 de seam
Merci
Partager