8

次の質問があります: フォームを終了し、アクションがフォームの値を保存するときにパラメーター (たとえば ID ) を渡す必要があります。これは result = "success" に転送され、呼び出されるアクションが必要です。成功すると、この情報を保存するために後で次のフォームで使用する ID とその他のパラメーターが付属しています (info-form2 および info.form1)...

例えば:

FORM1 (ユーザー) ==== 「成功」 ====> FORM2 (アドレス)

userForm.html ==================> addressForm.html?user_id=X ...(ここで、X : Id は UserAction (メソッド:save) のスローを AddressAction (メソッド:newAddress))

どうぞよろしくお願いします

前もって感謝します

4

3 に答える 3

29

「転送」という単語を使用しましたが、アドレスに関する詳細情報を収集するために新しいページ(address.html)に移動したいようです。この場合、ユーザーアクションの完了後に、アドレスページにリダイレクトする必要があります。

<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>

$ {userId}構文は、UserActionでgetUserIdを呼び出し、質問で示したようにそのパラメーターを渡します:addressForm.html?user_id=X。collect-addressは、addressForm.htmlに送信される成功結果をもたらす可能性があります。ここにドキュメント。別のアクションの使用を避けたい場合は、結果type = "redirect"を使用して、その方法で処理を渡すことができます。

本当に転送したい場合は、アクションチェーンを使用できます。これは、Struts2チームのTed Hustedによって推奨されていませんが、うまくいく可能性があります。

アクションチェーンの代わりに、このリクエストを完了するためのすべてのコードを1つのアクションにまとめ、ユーザーとアドレスのヘルパーまたはサービスクラスを使用して、「アクションチェーン」の代わりにコードを分離して再利用してください。

于 2009-04-24T19:26:52.083 に答える
3

何をしたいのかよくわかりません。

アクションが正常に実行された後、リクエストは別のアクションに転送されるようです。最初のアクションでは、パラメーターIDを渡し、2番目のアクションでそれを使用します。両方のアクションが同じリクエスト呼び出しで使用されているため、このようにリクエストにIDパラメータを保存できます

request.setAttribute( "ID"、iDValueObject);

2番目のアクションでは、次のようにIDの値を抽出できます。

request.getAttribute( "ID");

于 2009-04-24T05:52:25.783 に答える
0

これはうまくいくはずです:

  <!--  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>
于 2011-07-19T05:17:51.880 に答える