Struts 2: Parameter zwischen Aktionen

8

Ich habe folgende Frage: Ich muss einen Parameter übergeben (zum Beispiel ID), wenn ich ein Formular beende und die Aktion die Werte des Formulars speichere, dies wird an das Ergebnis weitergeleitet="Erfolg" und ich brauche, dass die Aktion, die beim Erfolg aufgerufen werden soll, mit kommt ID und andere Parameter zur späteren Verwendung im nächsten Formular zum Speichern dieser Informationen (info-form2 und info.form1) ...

zum Beispiel:

FORM1 (USER) ==== "Erfolg" ==== & gt; FORM2 (ADRESSE)

userForm.html ===================== & gt; addressForm.html? user_id = X ... (wobei X: Id den Wert von UserAction übergeben hat (Methode: save) an AddressAction (Methode: newAddress))

Bitte ich werde Ihre Hilfe zu schätzen wissen

Vielen Dank im Voraus

    
Roman C 24.04.2009, 04:29
quelle

3 Antworten

29

Sie haben das Wort "forward" verwendet, aber es klingt so, als wollten Sie auf eine neue Seite (address.html) gehen, um mehr Informationen über die Adresse zu erhalten. Wenn dies der Fall ist, müssen Sie nach Abschluss der Benutzeraktion auf die Adressseite umleiten.

%Vor%

Die Syntax $ {userId} ruft getUserId für Ihre UserAction auf und übergibt diesen Parameter, wie Sie in Ihrer Frage gezeigt haben: addressForm.html? user_id = X. collect-address kann ein Erfolgsergebnis haben, das an addressForm.html geht. Docs hier. Wenn Sie eine andere Aktion vermeiden möchten, können Sie mit dem Ergebnistyp="redirect" und Dinge auf diese Weise passieren.

Wenn Sie wirklich weiterleiten möchten, können Sie Action Chaining verwenden. Dies ist entmutigend von Ted Husted im Struts2-Team , aber es könnte für Sie funktionieren .

Anstatt Action-Chaining zu verwenden, versuchen Sie, den gesamten Code zum Vervollständigen dieser Anfrage in eine einzige Aktion zu bringen und Hilfs- oder Serviceklassen für Benutzer und Adresse zu verwenden, um den Code zu trennen und wiederzuverwenden statt "Aktionskette".

    
Barett 24.04.2009, 19:26
quelle
3

Nicht sehr klar, was Sie tun möchten.

Nach erfolgreicher Ausführung einer Aktion wird die Anfrage an eine andere Aktion weitergeleitet. In der ersten Aktion übergeben Sie die Parameter ID und verwenden diese in der 2. Aktion. Da beide Aktionen im selben Request-Aufruf verwendet werden, können Sie den ID-Parameter in der Anforderung wie folgt speichern

request.setAttribute ("ID", iDValueObject);

In der zweiten Aktion können Sie den Wert der ID wie folgt extrahieren

request.getAttribute ("ID");

    
Bhushan Bhangale 24.04.2009 05:52
quelle
0

Das sollte funktionieren:

%Vor%     
Rahul Saini 19.07.2011 05:17
quelle