web-dev-qa-db-ja.com

struts.xmlでのアクションリダイレクト

ストラットアクション内から別のアクションにリダイレクトできますか?したがって、アクションの結果は別のアクションになります。つまり、これがstruts.xmlのスニペットです。

    <action name="newRedirect" >
        <result>formsearch</result>
    </action>

    <action name="formsearch" class="com.event.action.SearchForm"
    method="execute">
        <result name="success">/form.jsp</result>
    </action>

ありがとう

12
blue-sky

はい。リダイレクトしたり、チェーンしたりできます。リダイレクトは最初から始まります。チェーンが値スタックに値を保持し、新しいアクションの変数を追加している間に、他のアクションを初めて呼び出したようなものです。

前に:

<action name="newRedirect" >
    <result type="redirect">/formsearch.action</result>
</action>

チェーンするには:

<action name="newRedirect" >
    <result type="chain">formsearch</result>
</action>

便宜上、リダイレクト結果タイプを「redirectAction」結果タイプに変更できます...これにより、次のように記述できます。

 <action name="newRedirect" >
    <result type="redirectAction">formsearch</result>
</action>

この最後のものはおそらくあなたが望むものです。

これで、警告、連鎖/アクションのリダイレクトが「goto」ステートメントとともに表示されます。悪ではありませんが悪用しやすいので、決定ロジック(複数のアクションをインターセプターに呼び出すアクションを決定するロジック)を移動するか、ロジックがほとんどセットアップに関連している場合は、アクションprepareメソッド(またはprepareメソッドに完全に)... prepareが呼び出される前にアクションにパラメーターが必要な場合は、paramsPrepareParamsStackを使用します。

22
Quaternion