2012-06-08 17 views
7

私はStruts2を使用しています。私は、 "search_users"アクションを通じて更新される人物のリストを持つダイアログボックスを持っています。このリストの横には、フォームの送信時に「add_user」アクションを呼び出すことによって別の人物を追加するためのフォームがあります。Struts2の別のアクションにアクションをリダイレクトできないのはなぜですか?

私がしようとしているのは、add_userアクションが実行されると、リストは "search_user"アクションを使用して更新されます。

は、私はこのようなstruts.xmlで「リダイレクト」結果の型を使用してみました:

<action name="search_users" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLSubequipo" method="searchUsers"> 
      <result name="success">list.jsp</result> 
     </action> 

     <action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser"> 
      <result name="success" type="redirectAction">search_users</result> 
     </action> 

をしかし、それは動作しません。何が間違っているのですか?私が気づいていないstruts.xmlファイルに何かを追加する必要がありますか?構文的に正しい

"Caused by: There is no result type defined for type 'redirect-action' mapped with name 'success'. Did you mean 'redirectAction'? - result - file:/.../struts.xml:59:44 
    at ..." 
+0

Struts2.1xのようなリダイレクトアクションを開始すると、redirectActionのようなラクダのケーシングに変更されました。使用しているS2のバージョンもredirectActionでどうなっていますか? – mprabhat

+0

バージョンは2.3.1.2です。問題はstruts.xmlファイルの欠陥のためにビルドされないプロジェクトだけです。エラーメッセージにもう少し詳細が表示されます。 –

+0

for 2.3.1.2 redirectActionが正しいです – mprabhat

答えて

12

現在の構成:

<action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser"> 
    <result name="success" type="redirectAction">search_users</result> 
</action> 

documentationが正しい形式は次のとおりです。現在のStruts 2.3.20を使用して

<action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser"> 
    <result type="redirectAction"> 
     <param name="actionName">search_users</param> 
     <!--<param name="namespace">/secure</param> This is optional if your action where you are redirecting is in the same namespace you can leave this, if your action is in some other name space then provide the namespace--> 
    </result> 
</action> 
+0

ありがとう!それが私の問題を解決しました。私はそれを試しましたが、両方が同じパッケージに属していてもパッケージパラメータを含めました。私は助けに感謝します。 –

+0

助けを借りて嬉しく思っています:) – mprabhat

+1

あなたはどのようにあなたに成功のリダイレクトに行くと言っていますか? – Madrugada

0

私は大きなStrutsの男ではないんだけど、それはあなたのリダイレクトのように見えるのドキュメントに基づいていない:

この

は私が取得エラーメッセージを指定され http://struts.apache.org/2.1.6/docs/redirect-action-result.html

<package name="public" extends="struts-default"> 
    <action name="login" class="..."> 
     <!-- Redirect to another namespace --> 
     <result type="redirect-action"> 
      <param name="actionName">dashboard</param> 
      <param name="namespace">/secure</param> 
     </result> 
    </action> 
</package> 
+0

ありがとう、私はそれを試みましたが、どちらもうまくいきませんでした。投稿を編集してエラーメッセージを追加します。 –

+3

redirect-actionは古いバージョンのStruts2用であり、新しいバージョンではredirectAction(単語分離の規約の変更)を使用しています。さもなければ、あなたの例はうまくいくはずです。 –

2

、これは動作します:

<result type="redirectAction">myAction</result> 

私は以前のバージョンで確認されていません。