不带参数
@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET }) public String testredirect(HttpServletResponse response){ return "redirect:/index"; }
带参数
@RequestMapping("/testredirect") public String testredirect(Model model, RedirectAttributes attr) { attr.addAttribute("test", "参数");//跳转地址带上test参数 attr.addFlashAttribute("u2", "参数");//跳转地址不带上u2参数 return "redirect:/user/users"; }
· 使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面,如上代码即为http:/index.action?test=参数
· 使用addFlashAttribute不会跟随在URL后面,会把该参数值暂时保存于session,待重定向url获取该参数后从session中移除,这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成.
· spring mvc设置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect=true,这样可以提高效率,避免不必要的检索。
这篇文档对您是否有帮助?