# JSP aus Servlet aufrufen.



## jackler (29. Sep 2004)

Hallo,

ich habe folgendes Problem mit meiner Web-Applikation (Servlet und JSPs):

Beim Start der Webapp wird zunächst das Servlet (Controller.java) geladen, welches dann die Kontrolle über den RequestDispatcher-Mechanismus an eine JSP (overview.jsp) übergibt. Innerhalb dieser JSP wird der Inhalt einer DB-Tabelle dargestellt.

Jede Zeile der Tabelle bietet zusätzlich jeweils einen Button, über den ein separates Browser-Fenster mit einer weiteren JSP (edit.jsp) geöffnet werden kann. Wird nun diese JSP mit OK beendet (-> submit), so wird die Kontrolle wieder an das Servlet (Controller.java) übergeben, das nun evtl. Änderungen in die DB schreibt und anschliessend erneut die JSP (overview.jsp) lädt (jetzt aber mit den aktualisierten Daten).

Leider funktioniert der letzte Schritt (das erneute Laden der JSP overview.jsp) nicht - die DB wird aber korrekt aktualisiert (nur die JSP, die ich über den RequestDispatcher laden möchte, wird offenbar nicht geladen).

Mir ist aufgefallen, dass, wenn ich in der JSP edit.jsp das Attribut target in dem <form>-Tag verwende, zwar ein erneutes Browser-Fenster geöffnet wird - dieses aber mit den korrekten (aktualisierten) Daten dargestellt wird, d.h. verwende ich das target-Attribut, so funktioniert der Aufruf der JSP aus meinem Servlet (nur leider in einem separaten Browser-Fenster).

Kann mir jemand erklären, warum ich dieses target-Attribut benötige um die JSP erneut aus meinem Servlet zu laden, bzw. ob ich das irgendwie anders machen kann?

Danke schon mal

- Jack


----------



## traudel&irmgard (1. Okt 2004)

vielleicht liegt es daran, dass der ie noch cacht oder dass die jsp nicht neu geladen wird, weil keine änderung stattgefunden hat und der webserver somit davon ausgeht es sei die gleiche. vielleicht kannst es auch über ein session objekt machen?


----------



## jackler (6. Okt 2004)

Hier die Lösung meines Problems:

In den JSPs, die in einem seperatem Browser-Fenster angezeigt werden, verwende ich folgenden JavaScript-Code:


```
opener.name = "main";
```

Dadurch wird dem parent-Fenster ein Name zugeordnet und ich kann fortan im target-Attribut des form-Tags mich auf diesen Namen beziehen, sodass die Kontrolle wieder dem parent-Fenster obliegt (nachdem des child-Fenster geschlossen wurde).

- Jack


----------

