1. 程式人生 > >關於重定向RedirectAttributes的用法(轉)

關於重定向RedirectAttributes的用法(轉)

richtext ... redirect 傳參 body code path cnblogs control

原文地址:https://zhuanlan.zhihu.com/p/21353217?refer=pengsong-java

RedirectAttributes 是Spring mvc 3.1版本之後出來的一個功能,專門用於重定向之後還能帶參數跳轉的的工具類

他有兩種帶參的方式:

第一種:

redirectAttributes.addAttributie("prama",value); 這種方法相當於在重定向鏈接地址追加傳遞的參數,例如:

redirectAttributes.addAttributie("prama1",value1);

redirectAttributes.addAttributie("prama2",value2);

return:"redirect:/path/list"


以上重定向的方法等同於 return:"redirect:/path/list?prama1=value1&prama2=value2 " ,註意這種方法直接將傳遞的參數暴露在鏈接地址上,非常的不安全,慎用。

第二種:

redirectAttributes.addFlashAttributie("prama",value); 這種方法是隱藏了參數,鏈接地址上不直接暴露,但是能且只能在重定向的 頁面獲取prama參數值。其原理就是放到session中,session在跳到頁面後馬上移除對象。如果是重定向一個controller中是獲取不到該prama屬性值的。除非在controller中用(@RequestPrama(value = "prama")String prama)註解,采用傳參的方式。頁面獲值例如:


redirectAttributes.addFlashAttributie("prama1",value1);

redirectAttributes.addFlashAttributie("prama2",value2);

return:"redirect:/path/list.jsp"


在以上參數均可在list.jsp頁面使用EL表達式獲取到參數值${prama*}

controller獲得redirectAttributes重定向的值例如:

redirectAttributes.addFlashAttributie("prama1",value1);

redirectAttributes.addFlashAttributie("prama2",value2);

return:"redirect:/path/list/"

@RequestMapping("list")
public List<Student> list(@RequestPrama(value = "prama1")String prama1,
@RequestPrama(value = "prama2")String prama2,...
){
//TODO
//your code

}

通過在controller中的list方法體中可以獲取到參數值。

關於重定向RedirectAttributes的用法(轉)