Spring MVC RedirectAttributes的用法解決辦法

RedirectAttributes是Spring mvc 3.1版本以後出來的一個功能,專門用於重定向以後還能帶參數跳轉的
他有兩種帶參的方式:
第一種: 
attr.addAttribute("param", value);  
這種方式就至關於重定向以後,在url後面拼接參數,這樣在重定向以後的頁面或者控制器再去獲取url後面的參數就能夠了,但這個方式由於是在url後面添加參數的方式,因此暴露了參數,有風險
例:session

1mvc

2url

3spa

4code

<br>對象

attr.addFlashAttribute("name""123");  <br>ci

attr.addFlashAttribute("success""success");<br>io

return "redirect:/index";<br>table


這樣就至關於:return "redirect:/index?name=123&success=success"

第二種: 
attr.addFlashAttribute("param", value);
這種方式也能達到從新向帶參,並且能隱藏參數,其原理就是放到session中,session在跳到頁面後立刻移除對象。因此你刷新一下後這個值就會丟掉
例:登錄

1

2

3

4

<br>

attr.addFlashAttribute("status","999");<br>

attr.addFlashAttribute("message","登陸失敗");<br>

return "redirect:/toLogin";<br>

這種方式確實能重定向帶參,可是有個問題,這個只能重定向到頁面上,也就是說重定向的這個頁面視圖,能用el表達式直接獲取你帶參的值,好比status 和message ,都能獲取。 但是我重定向到另外一個Controller的時候,這個控制器裏面無法獲取這兩個參數 我如今有個需求:登陸成功,直接重定向其餘頁面,登陸失敗,又得重定向到登陸頁面,直接return的還不行,可是又要帶狀態碼和提示等參數,因此想到用RedirectAttributes的addFlashAttribute 方式。可是重定向到/toLogin這個控制器裏面的時候,獲取不到addFlashAttribute 當初添加的屬性。

相關文章
相關標籤/搜索