controller跳转controller

来源:互联网 发布:java中的方法 编辑:程序博客网 时间:2024/05/20 02:30

1.不带参数跳转

1.1
同一个controller内部跳转

return "redirect:/toList";   //可以省略一层路径等价于    return new ModelAndView("redirect:/toList");

1.2
不同controller内部跳转

return return "redirect:/MESBcElectric/list"; //两层路径必须齐全

2.拼接参数跳转

2.1 自己拼接参数
RedirectAttributes attr

return "redirect:/MESBcElectric/list?name="+name+"&password="+password;//自己在路径后拼接需要传递到另一个controller中的参数

缺点:自己拼接的参数,若是中文,会出现乱码
2.2 利用类拼接参数

RedirectAttributes attr;
attr.addAttribute(“name”, value);

public String findlist(MESBcElectric mESBcElectric,RedirectAttributes attr){        //自动拼接参数        attr.addAttribute("process", mESBcElectric.getProcess());        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM");        Date date1 = mESBcElectric.getDate();        String date=sdf.format(date1);          attr.addAttribute("date",date);//将date由日期类型转化为字符串类型再进行拼接        return "redirect:/MESBcElectric/list";        跳转后链接地址为:return "redirect:/MESBcElectric/list?process="+mESBcElectric.getProcess()+"&date="+date;

利用类拼接的参数,不会出现中文乱码

3.带参数不拼接url页面

RedirectAttributes attr;
attr.addFlashAttribute(“name”, form.getName());
页面取值,直接用el表达式就能获得到,这里的原理是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会丢掉。

    @RequestMapping("/save")      public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)                     throws Exception {          String code =  service.save(form);          attr.addFlashAttribute("name", form.getName());//暂时存在session中            attr.addFlashAttribute("success", "添加成功!");          return "redirect:/index";        } @RequestMapping("/index")      public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)                     throws Exception {              return "redirect:/main/list";      }  

注意
attr.addAttribute(“a”, “a”); 和 attr.addFlashAttribute(“b”, “b”);的区别

1.使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面 ,如上代码即为http:/index.action?a=a 。

2.使用addFlashAttribute不会跟随在URL后面,会把该参数值暂时保存于session,待重定向url获取该参数后从session中移除,这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成.

重要知识

通过Controller跳转controller所带的参数会自动封装在下一个Controller的实体类对象中,无需再进行request获取

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子不自觉学习怎么办 不自觉的孩子怎么办 不学习的孩子怎么办 电脑不受老师控制怎么办 儿子不尊重老师怎么办 小孩不喜欢吃蔬菜怎么办 小孩不愿练钢琴怎么办 孩子不喜欢幼儿园老师怎么办 孩子不主动思考怎么办 我初一不想读书怎么办 初中孩子不爱学习怎么办 初一就不想读书怎么办 孩子懒得写作业怎么办 初中学生讨厌学习怎么办? 小学不写作业怎么办 幼儿园小朋友不愿意上学怎么办 幼儿园孩子不愿意上学怎么办 宝宝不愿意上幼儿园怎么办 孩子不爱上幼儿园怎么办 宝宝不爱上幼儿园怎么办 宝宝不爱去幼儿园怎么办 幼儿园宝宝不爱写字怎么办 小孩贪玩不爱学习怎么办 老师对幼儿不好怎么办 小孩不愿写作业怎么办 小孩怕老师厌学怎么办 幼儿园怕老师厌学怎么办 孩子很怕老师怎么办 孩子怕外教老师怎么办 家长打老师老师怎么办 被学生骂了怎么办 老师经常打孩子怎么办 老师每天打孩子怎么办 小孩不想去幼儿园怎么办 宝宝不想上幼儿园怎么办 小孩不爱学英语怎么办 孩子抵触学英语怎么办 初三了英语不好怎么办 孩子入园焦虑怎么办 家长总是说孩子怎么办 幼师打了小朋友怎么办