轉載自:https://www.cnblogs.com/jpfss/p/8651303.htmlhtml
springMVC controller間跳轉 重定向 傳遞參數的方法spring
spring MVC框架controller間跳轉,需重定向。有幾種狀況:不帶參數跳轉,帶參數拼接url形式跳轉,帶參數不拼接參數跳轉,頁面也能顯示。
經常使用的方法:
(1)從一個controller中的方法跳轉到另外一個controller中的方法不須要傳遞參數
方式一:使用ModelAndView
return new ModelAndView(「redirect:/toList」);
這樣能夠重定向到另外一個controller的toList這個方法
方式二:返回String
return 「redirect:/ toList 「;
這是不帶參數的重定向。
( 2)第二種狀況,須要攜帶參數時參數能夠拼接url
方式一:本身手動拼接url
new ModelAndView(「redirect:/toList?param1=」+value1+」¶m2=」+value2);
這樣有個弊端,就是傳中文可能會有亂碼問題。
方式二:用RedirectAttributes,這個是發現的一個比較好用的一個類 , SpringMVC 本身的類
這裏用它的addAttribute方法,這個實際上重定向過去之後你看url,是它自動給你拼了你的url。
使用方法:
public String save(RedirectAttributes attr)
attr.addAttribute(「param」, value);
return 「redirect:/namespace/toController」;
這樣在toController這個方法中就能夠經過得到參數的方式得到這個參數,再傳遞到頁面。過去的url仍是和方式一
同樣的。
得到參數的方式:
request.getParameter(「productActivityId」);
(3)帶參數不拼接url頁面也能拿到值(重點是這個)
通常我估計重定向到都想用這種方式:
@RequestMapping(「/save」)
public String save(@ModelAttribute(「form」) Bean form,RedirectAttributes attr)
throws Exception {
String code = service.save(form);
if(code.equals(「000」)){
attr.addFlashAttribute(「name」, form.getName());
attr.addFlashAttribute(「success」, 「添加成功!」);
return 「redirect:/index」;
}else{
attr.addAttribute(「projectName」, form.getProjectName());
attr.addAttribute(「enviroment」, form.getEnviroment());
attr.addFlashAttribute(「msg」, 「添加出錯」);
return 「redirect:/maintenance/toAddConfigCenter」;
}
}
addFlashAttribute() springMVC3中 該方法將信息放到session中,在頁面直接用el表達式就能夠得到.session在跳到頁面後
立刻移除對象。因此你刷新一下後這個值就會丟掉。
總結
本質仍是兩次跳轉,spring進行了封裝;markdown