spring-mvc (portlet): Wie kann ich eine PDF-Datei im geöffneten Dateidialog zurückgeben?

8

In meinem @ActionMapping erstelle ich eine PDF-Datei für den Benutzer. Jetzt habe ich mich gefragt, wie ich diese pdf an den Benutzer in Form eines Speichern / Öffnen Dateidialogfelds zurückgeben kann? Ich würde es vorziehen, einen Downloadlink zu zeigen, wenn die Generierung erfolgreich war.

Ich benutze spring-mvc 3.0.5 in Kombination mit Portlets. Aber wenn jemand einige Hinweise für eine normale Anwendung hat, dann kann ich es wahrscheinlich von dort aus herausfinden. Für 2.0 habe ich etwas über das Erweitern einer pdfgenerator-Klasse und das Twittern in der web.xml gelesen, aber seit heute brauchen wir nur POJO's ....

Bearbeiten: Code nach Adeels Vorschlag:

%Vor%     
jack 04.01.2011, 10:43
quelle

4 Antworten

8

Sie können diese Datei direkt in Ihre response writer schreiben und vergessen Sie nicht contentType zu ändern. Zum Beispiel

%Vor%

Nun, ich dachte, es ist ein HttpServletResponse was Sie haben, aber es ist nicht der Fall. Wenn Sie mit Portlet arbeiten, ist dies ein RenderResponse -Objekt. Nach der Suche im Internet habe ich einige Links gefunden, die Ihnen in dieser Hinsicht hilfreich sein könnten.

  • Nehmen Sie zunächst ein Beispiel für Lotus Form Server-Portlet , das zeigt, wie mehrere MIME-Typen zugelassen werden, während das Portlet mit portlet.xml konfiguriert wird.

  • Hier sind Spring Portlet-Dokumente , die zeigen, wie wir Konfigurieren Sie Portlet mit Portlet.xml. Es hat ein XML-Element über Mime-Typ, sehen Sie, wenn Sie den Wert application/pdf dort geben können.

Eine andere Idee besteht darin, Ihren Parameter in ActionResponse response anstelle von RenderResponse response zu ändern. Ich bin ein bisschen verschwommen hier, nicht sicher, was ist deine Superklasse? Welche Methode ist das? usw. ....

Für mich scheint es, dass das Problem erlaubt / nicht erlaubt Mime-Typen für die Portlet-Antwort.

    
Adeel Ansari 04.01.2011 10:45
quelle
4

im Frühjahr mvc, ResourceResponse-Antwort

%Vor%     
PeterR 21.06.2011 12:06
quelle
1

Hier ist die Antwort, nachdem ich es für eine Weile ausgearbeitet habe: PDF im Frühjahr Portlet MVC-Architektur - Liferay 6.0 .6

Die Lösung besteht darin, den Ressourcendienste-Mechanismus von JSR 286 zu verwenden. ResourceResponse res hat eine res.setContentType("application/pdf"); -Methode, so dass Sie damit beliebige Ressourcentypen bedienen können. Wenn Sie es als Anhang herunterladen möchten, verwenden Sie Folgendes:

res.addProperty(HttpHeaders.CONTENT_DISPOSITION,"attachment");

    
Ashok Felix 24.01.2012 19:51
quelle
0

Mein Code:

  

Ressourcenzuordnung ("getPDF")

%Vor%     
user2009177 24.01.2013 22:11
quelle