Java + struts: Wizard überspringt Schritte

M

Michelle84

Mitglied
Thread Starter
Dabei seit
12.11.2005
Beiträge
60
Reaktionspunkte
1
Hallo,
Ich hab ein ziemlich blödes Problem.
Ich habe eine Webanwendung (Java und struts). Darin gibt es einen Wizard (IWizard). Der Wizard war soweit funktionstüchtig, dann musste ich daran einige kleine Änderungen (Reihenfolge ändern, ein neuer Schritt dazu) vornehmen. Jetzt ist das ganze fertig, aber funktioniert nicht richtig.
Im Firefox (Win und Mac) gehts einwandfrei, im IE habe ich jedoch das Problem, dass bei klick auf "next" anscheinend zwei requests abgesendet werden. D.h. der wizard wird einen Schritt vorgesetzt, aber bevor die Action zu Ende ausgeführt wird, setz ein andere request den Wizard nochmal eins vor und somit bekomme ich nur jeden zweiten Schritt. Und das ist auch nur im IE so. Es ist mir bisher ein Rätsel, warum und vor allem, wo der zweite request herkommt. Der entsprechende next-button sendet nämlich nur einmal.

Weiß jemand was man da tun kann? Oder gibt es eine Möglichkeit, abzufragen, wo genau der request abgesendet wurde (ausser "localhost"...)?
Leider ist der IE Referenzbrowser für das Projekt und es muss damit gehn...

Danke schonmal!
 
Du könntest ein Filter Servlet programmieren und jeden Request prüfen, ob er nicht eben schon mal für die aktuelle Session durchgeschickt wurde.
 
Das habe ich auch schon überlegt, ging aber nicht, weil die beiden Requests die da kommen unterscheidlich sind. Also es wird nich ein Request zweimal durchgeschickt, sondern es kommen zwei - nur woher? :confused:

Die einzige Lösung die ich bisher gefunden habe, war, dass ich einen Hack programmiert habe der dafür sorgt, dass der Wizard nur einmal in 0,5 Sekunden geforwarded werden kann. Davon war mein Chef allerdings nicht wirklich begeistert....
 
Ich würde für jeden Schritt einen Zustand hinterlegen, der erst dann korrekt gesetzt wird, wenn der Schritt wirklich abgearbeitet wurde. Dieses Flag kannst du dann im FilterServlet oder auch in der Action prüfen und den Request verwerfen oder auf den richtigen Schritt umleiten, wenn er noch nicht dran ist.
 
Ein Browser sendet normalweise keine zwei Requests für eine Aktion. Da Du der Code nicht vorliegt, kann man das mit Sicherheit nicht ausschliessen. Ich vermute auf flinke Finger, also ein Doppelklick. Dann hättest Du ein klassisches Race Problem, kannst Du mal nach googlen. Dafür gibt es in STRUTS 1.x einen Token, den man mitsenden kann. Das verfahren hat aber eine Macke in bestimmten Situationen und von daher muss Du den RequestProcessor umbauen.
 
Also ein Doppelklick liegt definitiv nicht vor - zum einen habe ich das ca 1000mal getestet und auch ohne Maus (also mit return-Taste), zum anderen wird der Button nach dem Klick disabled. Mir ist das ein vollkommenes Rätsel, wo der zweite request herkommt - deswegen suche ich einen Weg, das rauszufinden. Zumal es auch nur im IE passiert.

Umgehen/abfangen kann man das - sei es nun mit einem FilterServlet oder mit einer Abfrage, dass der Wizard nur einmal pro Sekunde geforwarded werden kann. Allerdings ging der Wizard bevor ich einen Schritt zugefügt habe fehlerfrei - ich habe an der entsprechenden JSP Seite und den Buttons (wo ich das Problem vermute) allerdings ncihts geändert. Und weil es mal ging, möchte mein Chef, dass cih den Fehler finde und nichts programmiere um den zu umgehen. Leider darf ich keinen Code posten...
 
Die meisten IDEs haben einen Request und Response Monitor, der könnte helfen. Spontan würde ich an JavaScript denken oder die Struts-config. Aber ohne den Code zu kennen, sind das alles Vermutungen.

Posten würde ich den Code hier auch nicht ... ;-)
 
Zurück
Oben Unten