Bonjour,
Sur mon appli GWT on me demande de pouvoir importer des information cote client (fichier XML).
Dans un premier temps, je pensé (naïvement) pouvoir faire cela via un appel RPC classique...
Donc là j'arrive à generer mon fichier XML cote serveur (facilement même).
Mais voila, pour permettre au client de pouvoir l enregistrer il faut que je lui envoi...
J'ai trouvé cette discussion.
Mais n'ayant jamais vraiment fait de servlet (a part avec GWT et cypal) je n'arrive pas a faire un code qui fonctionne en me basant sur cet exemple.
Apparement, j ai un souci avec la class Attachement. De plus il y a un variable r qui sort un peu de nul part....
Lorsque je le lance malgré tout, le shell GWT genere un erreur:
" The development shell servlet received a request to generate a host page for module 'FileServlet' "
Donc il me manque quelque chose... mais quoi?
Code de mes tests:
Entrypoint:
la servlet:
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 package application.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.Frame; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; public class Application implements EntryPoint { private Frame frame; private Button clickMeButton; public void onModuleLoad() { RootPanel rootPanel = RootPanel.get(); clickMeButton = new Button(); rootPanel.add(clickMeButton); clickMeButton.setText("Télécharger"); clickMeButton.addClickListener(new ClickListener() { public void onClick(Widget sender) { getFrame().setUrl("/FileServlet?params=2"); } }); frame = new Frame(""); rootPanel.add(frame, 17, 122); frame.setSize("465px", "154px"); } public Frame getFrame() { return frame; } }
et enfin Application.gwt.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
44
45
46
47
48
49
50
51 package application.server; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //heu la je suis pas certain import com.sun.xml.internal.ws.api.message.Attachment; /** * Servlet implementation class OpenAttachment */ public class OpenAttachment extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public OpenAttachment() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); ServletOutputStream out = response.getOutputStream(); // il sort d ou ce r Attachment a = r.getAttachment(id); response.setContentType(a.getContentType()); response.setHeader("Content-Disposition", "attachment;filename=\"" + a.getFilename() + "\""); out.write(a.getData()); out.close(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
Merci d avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <module> <inherits name="com.google.gwt.user.User"/> <entry-point class="application.client.Application"/> <inherits name="com.google.gwt.user.theme.standard.Standard"/> <servlet class="application.server.ServiceImpl" path="/Serivce"/> <servlet path='/OpenAttachment' class='application.server.OpenAttachment'/> </module>![]()
Partager