Datei download mit Java, Struts 2 und AJAX
Möchte ich Datei download mit java,struts2 und ajax.
Auf meine html-Seite gibt es eine Schaltfläche namens "exportieren" klicken, auf dem ajax-Aufruf vorgenommen werden, die eine Abfrage ausführen, und erstellen .xls-Datei mit code und ich möchte Ihnen die Datei zum download für Benutzer ohne Speicherung auf der Festplatte.
Nicht jeder weiß, wie zu tun, dass mit struts2 und ajax in java?
Gibt es irgendein Beispiel zur Verfügung?
Lassen Sie mich wissen, wenn Ihr weitere details von mir...
Dank.
amar4kintu
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht haben, um AJAX verwenden, in diesem Fall. Gerade haben Sie Ihren button schicken Sie das Formular an Ihre Struts-Aktion, und die Aktion verwenden Sie die stream Ergebnis geben.
Beispiel:
In Ihrem Streben XML:
Ihre Aktion wird dann ein
public InputStream getInputStream()
weitergeben der Daten.Vermute ich, dass, was auch immer-Bibliothek, die Sie verwenden, um zu generieren, die Excel-Dateien (POI?) schreiben Sie die Ausgabe auf eine beliebige
OutputStream
.Einen quick-and-dirty Weg, um zu konvertieren, dass zu einem
InputStream
:Nur für Ihre Referenz, wir können das gleiche tun mit Annotation:
Als follow-up zu amar4kintu Frage bezüglich Dateien gespeichert ExportReport.Aktion statt report.xls das passiert im IE, wenn Sie das folgende format wird nicht gefolgt in Ihrem struts.xml Datei:
Scheint es, wie die
contentDisposition
Linie müssen insbesondere darauf hinweisen, dass die Datei eine Anlage und, dass das mit dem Namen ist von Anführungszeichen umgeben.Ich würde diese Art der annotation auf die Aktion Klasse:
Einen besseren Ansatz für Rohr outstream ein inputstream ist unten erklärt
im Gegensatz zu der Reaktion von ZoogieZork oben
Der Vorteil dieser Methode ist, dass der gesamte Puffer ist nicht im Speicher abgelegt, sondern ist vielmehr geleitet, mit einem kleinen internen Ringspeicher. Das ist besser, sowohl in Bezug auf Speicher-sowie CPU-overhead.
Referenz:
Konvertieren eines Java-Ausgabestrom zu einem InputStream
atlast, ich war in der Lage, es zu lösen, wie folgende..
Schrieb ich folgende Zeile in meine action-Funktion Klasse und ich war in der Lage, download-Datei mit dem Namen
report.xls
stattExportReport.action
. Ich weiß nicht genau .. warum?Folgende ist in meiner
struts.xml
- Datei. Ich entfernte<contentDispositin>
param, denn es war nicht die Arbeit vonstruts.xml
- Datei und ich habe es in meiner Aktion Java-Datei wie oben beschrieben.Hoffe, dies hilft jemand.
Dank.
amar4kintu