Bonjour à tous.
Mon problème est le suivant:
J'ai sur ma page GWT des données dans un GridPanel (et donc un Store).
Ces données, j'aimerai pouvoir les exporter dans un fichier pour que l'utilisateur puisse le télécharger (dans mon cas il s'agit d'un fichier excel).
Considérez que les données présentent dans mon GridPanel ne sont pas accessibles du côté serveur, je veux dire par là que les données n'existent QUE du côté client.
Ma question est donc la suivante: comment faire?
Voici ce que j'ai fait et qui forcément ne fonctionne pas:
Coté client:
Voici l'implémentation de mon service:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 exportService = (ExportServiceAsync) GWT.create(ExportService.class); ServiceDefTarget exportServiceEndpoint = (ServiceDefTarget) exportService; exportServiceEndpoint.setServiceEntryPoint("services/exportService"); AsyncCallback callback = new AsyncCallback() { public void onSuccess(Object result) { } public void onFailure(Throwable ex) { } }; exportService.exportMessages(donnée1, donnée2, xxx, xxx, xxx, callback);
Forcément, je me doutais bien que vu que GWT ne fait que des appels asynchrones celà n'allait pas fonctionner....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void exportMessages(String context, String type, String name, String keyword, String application) { try { this.getThreadLocalResponse().setContentType("application/vnd.ms-excel"); this.getThreadLocalResponse().setHeader("Content-Disposition", "attachment; filename=sampleName.xls"); WritableWorkbook w = Workbook.createWorkbook(this.getThreadLocalResponse().getOutputStream()); WritableSheet s = w.createSheet("Demo", 0); s.addCell(new Label(0, 0, "Hello World")); w.write(); w.close(); } catch (Exception e) { //throw new ServletException("Exception in Excel Sample Servlet", e); } }
Mais alors quid? Comment faire? Quelle est la solution (si simple sans framework...)?
Et petite question bonus également, comment à partir d'un Hyperlink pointer vers une url "à l'extérieur" par exemple un lien sur mon site qui pointe vers http://www.google.be ? C'est fou... mais il n'y a rien qui fonctionne....
Je vous remercie d'avance!
Partager