Frage

ich habe folgende Frage: Ich brauche einen Parameter zu übergeben (zB ID), wenn ich ein Formular, und speichern Sie die Aktion des Formulars Wert zu beenden, diese zu dem Ergebnis = „Erfolg“ weiterleiten und ich brauche, dass die Aktion, die für den Erfolg mit dem kam nennen wird ID und andere Parameter, die später in dem nächsten Formular zu verwenden, um diese Informationen zu speichern (info-form2 und info.form1) ...

Beispiel:

FORM1 (USER) ==== "Erfolg" ====> FORM2 (ADDRESS)

userForm.html ===================> addressForm.html user_id = X ... (wobei X: Id übergeben Wurf von Useraction (Methode speichern) zu AddressAction (Methode: newaddress))

Bitte Ich schätze Ihre Hilfe

Vielen Dank im Voraus

War es hilfreich?

Lösung

Sie verwenden das Wort „nach vorn“, aber es klingt wie Sie auf eine neue Seite gehen wollen (address.html) mehr Informationen über die Adresse zu sammeln. Wenn dies der Fall ist, müssen Sie die Adresse Seite umgeleitet werden, nachdem der Benutzer Aktion abgeschlossen ist.

<action name="user" class="UserAction">
  <!-- Redirect to another namespace -->
  <!-- for Struts 2.2 --> <result type="redirectAction">
  <!-- for Struts 2.0 <result type="redirect-action"> -->
    <param name="actionName">collect-address</param>
    <param name="userId">${userId}</param>
  </result>
</action>

Die $ {userId} Syntax wird getUserId auf Ihrer Useraction nennen und diese Parameter übergeben, wie Sie in Ihrer Frage zeigten: addressForm.html user_id = X. sammeln-Adresse kann zu einem Erfolg führen, dass zu addressForm.html geht. Docs hier. Wenn Sie eine andere Aktion vermeiden wollen mit können Sie versuchen, den Ergebnistyp mit = „redirect“ und passieren Dinge durch diese Art und Weise.

Wenn Sie wirklich weiterleiten möchten, können Sie Aktion Verkettungs verwenden . Dies ist entmutigt von Ted Husted auf dem Struts2 Team aber es kann für Sie arbeiten.

Statt Aktion Verkettungs, versuchen Sie den gesamten Code zu bringen diese Anforderung in einer einzigen Aktion abzuschließen und Helfer oder Serviceklassen für Benutzer und Adresse verwenden zu trennen und den Code anstelle von „Aktion Chaining“ wiederverwendet werden.

Andere Tipps

Nicht ganz klar, was Sie tun mögen.

Sieht aus wie nach erfolgreicher Ausführung einer Aktion, die Anforderung an einen anderen Aktion weitergeleitet wird. In der ersten Aktion mögen Sie Parameter-ID zu übergeben, und dass in der zweiten Aktion verwenden. Da sowohl die Aktionen in der gleichen Anforderung verwendet werden immer rufen Sie den ID-Parameter in Anforderung wie folgt speichern

request.setAttribute ( "ID", iDValueObject);

In der zweiten Aktion, die Sie den Wert der ID wie folgt extrahieren

request.getAttribute ( "ID");

Dies sollte funktionieren:

  <!--  Package Default -->
    <package name="**default**" extends="struts-default,json-default" namespace="/">
        <action name="noOp" class="com.web.myapp.action.NoOpAction">
           <result name="success" type="chain">
                    <param name="requiresValidation">true</param>
                    <param name="actionName">userAuthentication</param>
                    <param name="namespace">/user</param>
          </result>
        </action>   
    </package>
    <!--  Package User -->
    <package name="user" extends="struts-default,json-default" namespace="/user">
    <action name="userAuthentication" class="com.web.myapp.action.AuthenticateAction">
    ...
    </action>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top