8

次のコントローラーを作成しました。

@RequestMapping(value="/logOut", method = RequestMethod.GET )
    public String logOut(Model model, RedirectAttributes redirectAttributes)  {
        redirectAttributes.addFlashAttribute("message", "success logout");
        System.out.println("/logOut");
        return "redirect:home.jsp";
    }

このコードを変更して、ページ上でhome.jsp記述${message}および表示できるようにする方法"success logout"

4

1 に答える 1

11

戻り値に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 コントローラー ロジックがない場合に適しています。

于 2013-10-08T14:21:40.853 に答える