2

私のタイムゾーンでこんにちは。

strutsフレームワークを使用してWebアプリケーションを開発しています。簡単に言うと、ユーザーがアプリケーションを呼び出すと、最初に呼び出されるアクションはSecurityActionであり、このアクションは2つのアクションのいずれかにリダイレクトされます。これがリダイレクトの方法です。

     if (user == "type_profile")
           forward = mapping.forward("action2Fwd");
     else
           forward = mapping.forward("action3Fwd");
     return forward;

struts-config.xmlに私は持っています

<global-forwards>
    <forward name="action2Fwd" path="/action2.do"/>
    <forward name="action3Fwd" path="/action3.do"/>
 </global-forwards>
<action path="/action2"
            type="com.teste.dummy.action2"
            name="actionForm" 
            validate="true"
            input="/action2.jsp">
 </action>

私の最初の質問:これは、アクションから別のアクションにリダイレクトするための最良の方法ですか?

2番目の質問:別のアクションにリダイレクトすると、actionFormが実行されますが、このリクエストが別のアクションからのものであることをどのように知ることができますか?

フォーム内で、リクエストが別のアクションからのものである場合、何も検証したくないので、このリクエストは「ブラウザ」からではなく別のアクションからのものであることを知っておく必要があります。1つの解決策は、リクエストに何らかのフラグを設定することです。または、このリクエストが別のアクションからのものであることを示すセッションスコープですが、これが最善の方法ですか?

4

2 に答える 2

1

フォームがどこから来ているかに基づいて検証を有効/無効にする必要がある場合、最も簡単な解決策はフォームにフラグを置くことです。

このフラグは、アプリケーション全体の動作を提供するために、カスタム リクエスト プロセッサによって処理できます。エレガントではありませんが、アクション基本クラスは手動で検証を呼び出すか、その存在に基づいていない可能性があります。

転送を定義してそれを返す以外に、アクション間で転送する優れた方法はありません。それがグローバルかどうかは二次的なものであり、アプリケーションのニーズに依存します。

于 2011-12-14T16:59:56.430 に答える
0

私は自分のプロジェクトの1つでそれをしなければなりませんでした。これが私の問題を解決した方法です。うまくいくことを願っています。

SelectCopyFromProjectAction.doJavaScript を使用して jsp からこのアクションを呼び出しました。このアクションは、より多くの作業を行う別のクラスを呼び出しました。

jspから

function selectThisCopyProject(){
    document[0].action = "SelectCopyFromProjectAction.do";
    submitForm2();
}       

struts.config

<action path="/SelectCopyFromProjectAction" type="*****.SelectCopyFromProjectAction" scope="request">
    <forward name="success" path="LoadProjectionCopyLOBAction.do?actionType=loadProjects" />
    <forward name="failure" path="/WEB-INF/jsp/project_list.jsp"/>
</action>

セカンダリ クラス ストラットに見られるように、新しいアクションを転送します。構成 <forward name="success" path="LoadProjectionCopyLOBAction.do" />

転送が「成功」の場合、構成で次のアクションが発生します。

<action path="/LoadProjectionCopyLOBAction" type="*******.LoadProjectionCopyLOBAction" name="ProjectCopyFormBean" validate="false" scope="request"  >
    <forward name="" .... />
</action>
于 2014-01-27T16:07:42.593 に答える