2012-03-19 17 views
1

最初のアクションの成功に対して別のアクションを実行しようとしていますが、リクエストされたリソースが利用できないというエラーが表示されます。 struts.xmlファイルから以下のコードを確認してください。アクションの成功時のアクションの実行

<action name="login" class="org.shobhan.action.LoginAction" > 
<result name="success" type="dispatcher">/showProfile</result> 
<result name="error" type="redirect">/Login.jsp</result> 
</action> 
<action name="showProfile" class="org.shobhan.action.ShowProfileAction" > 
<result name="success">/profile.jsp</result> 
</action> 

私は両方のJavaファイルLoginActionとShowProfileActionが同じフォルダに存在します。

答えて

4

は、アクションにリダイレクトactionRedirect result typeを使用します。

<result type="redirectAction">showProfile</result> 
0

あなたの成功の呼び出しにファイル拡張子を付けるべきではありませんか?

+0

like /showProfile.jsp –

+0

私は.actionで試してみましたが、動作しませんでした。 – NotesArt

1
<result name="success" type="dispatcher">/WEB-INF/showProfile.jsp</result>  
<result name="error" type="dispatcher">/WEB-INF/Login.jsp</result> 

上記の操作では別のアクションは呼び出されませんが、これらのJSPがWEB-INFにある場合は機能します。

Dispatcherはjsp(この場合はwell)に解決され、リダイレクトは最初から呼び出しを開始します。 /Login.jspはURLから呼び出し可能ですか?つまり、CONTEXT_ROOT/Login.jspにアクセスできますか?そうであればそれを転送することができますが、そうでない場合は不可能です。

一般に、エラー後にリダイレクトするのは良いことではありません。これは、フィールドエラー(およびその他の有用な変数やメッセージ)が削除されるためです。

アクションを呼び出す場合は、Action redirect in struts.xmlを参照してアクションを呼び出す方法といくつかのアドバイスを参照してください。

PS:ディスパッチャはデフォルトの型であり、あなたは、単に書くことができるので、成功はデフォルトの名前です...

<result>/WEB-INF/showProfile.jsp</result>  
<result name="error">/WEB-INF/Login.jsp</result> 
関連する問題