2010-11-26 18 views
0

私のビューリゾルバ:Spring 3 MVCリダイレクト:別のコントローラにリダイレクトしようとすると404が表示されます

<bean id="htmlView" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

私のコントローラ:

@RequestMapping(value="/account/register", method=RequestMethod.POST) 
public String registerHandler(@Valid RegisterForm registerForm, BindingResult bindingResult) { 
    if (bindingResult.hasErrors()) { 
     return "/account/register"; 
    } 
    return "redirect:/account/profile"; 
} 

エラーがある場合は、アカウント登録ページに戻ります。いくつかの公式ドキュメントを読んだ後、リダイレクトは現在のサーブレットコンテキストにビューを解決しようとします。 「アカウント/プロフィール」は別のコントローラに存在するため、それをどうするか分からないようです。私もRedirectViewを返すことを試みました。どんな助けもありがとうございます。

+0

リダイレクトすると、アプリケーションのコンテキスト名を追加する必要があります。redirect:/ contextname/account/profile取得したURLが正しいかどうかを確認しますか? – Javi

+0

何が起こりますか?リダイレクト後にアドレスバーにどのURLが表示されますか? – axtavt

+0

私のアプリケーションパスは "/"なので、コンテキストはありません。 URLは「/account/account/profile.html」です。 "/ account"を削除すると、URLは "/profile.html"となります。 "account/profile"にすると、URLは.htmlのない "account/profile"になります。私が "/account/profile.html"にすると、ビュープレフィックスを追加しようとします。動作する組み合わせはないようです。 –

答えて

2

リダイレクト後に/account/account/profile.htmlが表示されているという事実はちょっと変わっています。万一、コントローラクラスの宣言(コントローラメソッドではなく)のいずれかに@RequestMapping("account")注釈がありますか?

別のトップレベルのディレクトリ(アカウントなど)を使用するように他のコントローラを変更すると、同じように動作しますか?

最後に、org.springframeworkのデバッグレベルのロギングを有効にしてください。どのURLパスがどのコントローラークラスで捕捉されているかがわかります。

+0

ニックドに感謝します。他の人のために、元の質問への私のコメントをいくつかの説明のために見てください。 –

関連する問題