- 这样有个弊端,就是传中文可能会有乱码问题。
- 方式二:用RedirectAttributes,这个是发现的一个比较好用的一个类
- 这里用它的addAttribute方法,这个实际上重定向过去以后你看url,是它自动给你拼了你的url。
- 使用方法:
- attr.addAttribute("param", value);
- return "redirect:/namespace/toController";
- 这样在toController这个方法中就可以通过获得参数的方式获得这个参数,再传递到页面。过去的url还是和方式一一样的。
- (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", "添加出错!错误码为:"+rsp.getCode().getCode()+",错误为:"+rsp.getCode().getName());
- return "redirect:/maintenance/toAddConfigCenter";
- }
- }
- @RequestMapping("/index")
- public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)
- throws Exception {
- return "redirect:/main/list";
- }
- 页面取值不用我说了吧,直接用el表达式就能获得到,这里的原理是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会丢掉。
- 3. 总结
- 最底层还是两种跳转,只是spring又进行了封装而已,所以说跳转的方式其实有很多很多种,你自己也可以封一个,也可以用最原始的response来,也没有问题。好了,就到这儿。
- 其实也没有什么,但是知道了这个就很简单了,之前没搞懂,现在搞懂了,和大家分享。有问题的给我留言。
SpringMVC从Controller跳转到另一个Controller
最新推荐文章于 2019-03-07 23:12:37 发布