在spring中,如果一个controller要redirect到另一个controller中,一般有如下的办法
一个方法方法中增加redirect关键字,表示这是一个302,如果要带参数,简单粗暴的方法就是把参数都加到url后右面,跳转后的方法是可以刷新,参数可见,刷新不丢失
@RequestMapping("/ready")
public String ready(){
return "redirect:post?a=1&b=2";
}
如果用spring的方法,就是RedirectView和RedirectAttributes合起来使用,如下
@RequestMapping("/r1")
public ModelAndView post1(RedirectAttributes attributes) {
String url = "post";
attributes.addAttribute("name1", "中文11");
attributes.addFlashAttribute("name", "中文22");
attributes.addFlashAttribute("id", "chen");
RedirectView view = new RedirectView(url,true,false,true);
return new ModelAndView(view);
}
@RequestMapping("/r2")
public View post2(RedirectAttributes attributes) {
String url = "post";
Map map = new HashMap();
map.put("name", "中文111");
attributes.addFlashAttribute("name","中文2");
attributes.addFlashAttribute("map",map);
return new RedirectView(url,true,false,true);
}
如何接如参数呢,用ModelMap就可以取到session方式传的值,地址栏的值用一般的方式就可以了
@RequestMapping(value = "/post")
@ResponseBody
public String post(HttpServletRequest request, ModelMap map) {
String key = "name";
StringBuilder sb = new StringBuilder();
sb.append("request.getParameter(name)=" + request.getParameter(key) + "</br>");
sb.append("request.getParameter(name1)=" + request.getParameter(key+"1") + "</br>");
sb.append("ModelMap=" + map.get(key) + "</br>");
return sb.toString();
}
以上内容在 spring-webmvc 5.1.8.RELEASE 测试有效