Hallo
ich habe in meiner Webapplikation mit iText ein PDF erstellet und stelle es dem Benutzer im response des Servers zu verfügung. Das Klappt auch super. Der Ablauf ist folgender wenn ich auf einen Button drücke wird folgende Action aufgerufen
Hier der Struts Eintrag zu der Action die aufgerufen wird wenn man auf den Button gedrückt hat
Der Forward verweist dann auf eine andere Action die wiederum soll einfach nur ein anderes Formular aufrufen.
So führe ich das ganze aus passiert folgendes . Nachdem der Button gedrückt wurde erscheint ein Fenster wo darauf hingewiesen wird das ein pdf erstellt wurde . In diesem Dialog kann man entweder Speichern, Abbrechen oder Öffnen. Wenn ich das PDF abspeicher das klappt auch Problemlos. Danach kommt ein weiterer Dialog mit Öffnen und Schließen.
Den beende ich mit schließen. Nun sollte das Programm ja eigentlich weiter machen mit dem Aufbau des Formulars aber leider bleibt es an der Stelle stehen wo es angefangen hat das PDF zu erstellen aber das auch nur in der Internet Explorer Anzeige. Schaut man in der Konsolenausgabe nach so hat das Programm korrekt weiter gemacht.
Das Problem ist jetzt wieso ist die Anzeige im Internet Explorer stehen geblieben ? Wenn ich dann Im Internet Explorer auf aktualisieren gehe so gelange ich zu der Seite zurück wo der Button gedrückt wurde ( was vom Prinzip her ja falsch ist , weil ich ja bereits ein anderes Formular aufgebaut habe).
Wo liegt der Fehler
ich habe in meiner Webapplikation mit iText ein PDF erstellet und stelle es dem Benutzer im response des Servers zu verfügung. Das Klappt auch super. Der Ablauf ist folgender wenn ich auf einen Button drücke wird folgende Action aufgerufen
Code:
public class BasHLADruckenAction extends BaseAction {
/* (Kein Javadoc)
* @see de.bsdwest.basweb.webcore.control.SecureAction#executeSecure(org.apache.struts.action.ActionMapping, de.bsdwest.basweb.webcore.form.BaseForm, javax.servlet.http.HttpServletRequest)
*/
public ActionForward executeSecure(ActionMapping mapping, BaseForm baseForm, HttpServletRequest request) throws Exception{
BasHLAProduktSessionModel sesPModel = (BasHLAProduktSessionModel)
SessionLocator.getInstance(BasHLAProduktSessionModel.class,
request.getSession());
BasHLASessionModel sesModel = (BasHLASessionModel) SessionLocator
.getInstance(BasHLASessionModel.class, request.getSession());
Document doc = new Document ( ) ;
HttpServletResponse res = getResponse();
res.setContentType("application/pdf");
res.setHeader("Content-Disposition",
" attachment; filename=\"example.pdf\"");
res.setHeader("Expires", "0");
res.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
res.setHeader("Pragma", "public");
Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(document, baos);
document.open();
document.add(new Paragraph("Hallo"));
document.close();
res.setContentLength(baos.size());
ServletOutputStream out = res.getOutputStream();
baos.writeTo(out);
out.flush();
return mapping.findForward(MAPPING_FORWARD);
}
}
Hier der Struts Eintrag zu der Action die aufgerufen wird wenn man auf den Button gedrückt hat
Code:
<action path="/basHLA/BasHLADrucken" type="de.bsdwest.basweb.basHLA.control.BasHLADruckenAction" scope="request" name="basHLAProduktsuche" validate="false">
<set-property property="roleKey" value="basHLA_HLA" />
<forward name="forward" path="/basHLA/BasHLAProduktsuche.do?neueSuche=ja"></forward>
</action>
Der Forward verweist dann auf eine andere Action die wiederum soll einfach nur ein anderes Formular aufrufen.
So führe ich das ganze aus passiert folgendes . Nachdem der Button gedrückt wurde erscheint ein Fenster wo darauf hingewiesen wird das ein pdf erstellt wurde . In diesem Dialog kann man entweder Speichern, Abbrechen oder Öffnen. Wenn ich das PDF abspeicher das klappt auch Problemlos. Danach kommt ein weiterer Dialog mit Öffnen und Schließen.
Den beende ich mit schließen. Nun sollte das Programm ja eigentlich weiter machen mit dem Aufbau des Formulars aber leider bleibt es an der Stelle stehen wo es angefangen hat das PDF zu erstellen aber das auch nur in der Internet Explorer Anzeige. Schaut man in der Konsolenausgabe nach so hat das Programm korrekt weiter gemacht.
Das Problem ist jetzt wieso ist die Anzeige im Internet Explorer stehen geblieben ? Wenn ich dann Im Internet Explorer auf aktualisieren gehe so gelange ich zu der Seite zurück wo der Button gedrückt wurde ( was vom Prinzip her ja falsch ist , weil ich ja bereits ein anderes Formular aufgebaut habe).
Wo liegt der Fehler