关于spring 中controller之间redirect参数的问题

2 篇文章 0 订阅
1 篇文章 0 订阅

在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");
        //通过session传参的方法,参数在地址栏中不可见,刷新失效
        attributes.addFlashAttribute("name", "中文22");
        attributes.addFlashAttribute("id", "chen");
        //最后一个参数如果为true是采用地址传参的方法,false是session传参的方法
        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();
         //form 表单提交可以取到值,或是地址栏传参的方式
        sb.append("request.getParameter(name)=" + request.getParameter(key) + "</br>");
        sb.append("request.getParameter(name1)=" + request.getParameter(key+"1") + "</br>");
        //用redirectView的addFlashAttribute方法加的值,一次有效,刷新消失
        sb.append("ModelMap=" + map.get(key) + "</br>");
        return sb.toString();
    }

以上内容在 spring-webmvc 5.1.8.RELEASE 测试有效

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值