Action wird 2 mal durchlaufen

Status
Nicht offen für weitere Antworten.

m_koob

Mitglied
Hallo, habe ein Problem mit einer Web-Anwendung, das ich zur Zeit absolut nicht nachvollziehen kann...

Ich habe eine Eingabemaske in einem Popup. Nach dem die Maske mit dem OK-Button abgeschickt wird, werden die Daten übertragen, danach soll das Popup geschlossen werden und das Eltern-Fenster neu geladen - das heisst die ForwardAction durchlaufen - werden, damit die neuen Daten auch im Eltern-Fenster angezeigt werden.
Das klappt auch soweit, allerdings wird die Action manchmal 2 mal duchlaufen, was zu komplikationen führt.
Dabei wird die Action nahe zu gleichzeitig gestartet, also nicht erst ein mal, und danach noch mal.
Es war mir auch bis jetzt nicht möglich diesen Fehler eindeutig reproduzierbar zu machen, sprich: obwohl ich beim testen immer das Gleiche gemacht habe, hatte ich den Fehler nicht immer an der gleichen Stelle.

Das Schliessen des Popups wird mit Hilfe von JavaScript realisiert:
Code:
function closeIt(){
	opener.location.reload();
	self.close();
}
...
<body onunload="closeIt();">
...
Diese Funktion wird aber immer nur ein mal durchlaufen...

Ich benutze:
apache-tomcat-5.5.23
jdk1.5.0_05
struts_5.1.1

Hab echt keine Idee woran das liegen könnte und bin für jede Anregeung, die mich der Lösung des Problems näher bringen könnte, sehr dankbar!


Grüße koobx
 
hallo,

ich kenn zwar deinen code jetzt nicht, aber wenn der benutzer den "ok"-Button betätigt, werden die Daten übertragen und lösen im Zielfenster ein Aufnehmen der Daten aus. Ich glaub dann wird das Fenster (je nach Implementierung) eigentlich eh neu geladen.

Handelt es sich bei dem Hauptfenster um eine normale JSP ? Was passiert wenn du das reload weglässt?
 
Also, das Popup sowohl die hauptseite sind eigenständige JSP-Seiten, durch bestätigen mit ok werden die eingegebenen Daten mit hilfe einer Action an das Model(auf welches die Applikation aufbaut) übertragen. Diese Action hat als Forward eine gekapselte JSP-Seite die nur das "Popup" schliesst:
Code:
<html>
<head>
<title>Ansrechpartner hinzufügen</title>

<script language="JavaScript">

<!--
   self.close();
//-->
</script>
</head>
Beim Schliessen der Popup-Seite wird dann mit Hilfe des oben beschriebenen JavaScript-Codes das Eltern-Fenster neu geladen. Wenn ich das reload weg lasse, passiert gar nichts! Die benötigten Daten stehen zwar in den Model-Klassen zur Verfügung, werden aber eben erst nach einem reload angezeigt!
 
Ok, hab den Fehler gefunden! Ein falscher Forward in der struts-config.xml war der Grund...
@grischan: thanx, dein post hat mich auf die Lösung gebracht!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben