戻り値にredirect:
プレフィックスが含まれている場合、viewResolver
はこれをリダイレクトが必要であることを示す特別な指示として認識します。ビュー名の残りの部分は、リダイレクト URL として扱われます。クライアントは新しいリクエストを this に送信しますredirect URL
。そのため、リダイレクト リクエストを処理するには、この URL にマッピングされたハンドラ メソッドが必要です。
次のようなハンドラ メソッドを記述して、リダイレクト リクエストを処理できます。
@RequestMapping(value="/home", method = RequestMethod.GET )
public String showHomePage() {
return "home";
}
logOut
そして、ハンドラー メソッドを次のように書き直すことができます。
@RequestMapping(value="/logOut", method = RequestMethod.POST )
public String logOut(Model model, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", "success logout");
System.out.println("/logOut");
return "redirect:/home";
}
編集:
showHomePage
アプリケーション構成ファイルの次のエントリを使用して、メソッドを回避できます。
<beans xmlns:mvc="http://www.springframework.org/schema/mvc"
.....
xsi:schemaLocation="...
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
....>
<mvc:view-controller path="/home" view-name="home" />
....
</beans>
これにより、 のリクエストが/home
というビューに転送されhome
ます。このアプローチは、ビューが応答を生成する前に実行する Java コントローラー ロジックがない場合に適しています。