• Spring MVC RedirectAttributes取值方法


    RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的
    他有两种带参的方式:
    第一种: 
    attr.addAttribute("param", value);  
    这种方式就相当于重定向之后,在url后面拼接参数,这样在重定向之后的页面或者控制器再去获取url后面的参数就可以了,但这个方式因为是在url后面添加参数的方式,所以暴露了参数,有风险
    例:

    <br>
    attr.addFlashAttribute("name""123");  <br>
    attr.addFlashAttribute("success""success");<br>
    return "redirect:/index";<br>

    这样就相当于:return "redirect:/index?name=123&success=success"

    第二种: 
    attr.addFlashAttribute("param", value);
    这种方式也能达到重新向带参,而且能隐藏参数,其原理就是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会丢掉
    例:

    <br>
    attr.addFlashAttribute("status","999");<br>
    attr.addFlashAttribute("message","登录失败");<br>
    return "redirect:/toLogin";<br>
     

    这种方式确实能重定向带参,但是有个问题,这个只能重定向到页面上,也就是说重定向的这个页面视图,能用el表达式直接获取你带参的值,比如status 和message ,都能获取。 可是我重定向到另一个Controller的时候,这个控制器里面没法获取这两个参数

    解决办法1:

    @RequestMapping("flash1")
    public String flash(RedirectAttributes redirectAttributes) {
    redirectAttributes.addFlashAttribute("username", "Biao");
    return "redirect:flash2";
    }

    @RequestMapping("flash2")
    public String flash2(@ModelAttribute("username") String username) {
    System.out.println("拿到的username="+username);
    return "username: " + username;
    }

    解决办法2

    @RequestMapping("/zh")
        public String reZh(RedirectAttributes attr){
            attr.addAttribute("time","ssssss");
            attr.addFlashAttribute("hi","hello");
            return "redirect:/date?time={time}";
      }
    
    
      @GetMapping("/date")
       public String toDate(@RequestParam(value = "time",required = false)String s,HttpServletRequest request){
            Object hi = RequestContextUtils.getInputFlashMap(request).get("hi");
            System.out.println(hi);
            return s;
        }
  • 相关阅读:
    vue-cli创建项目 一直downloading解决办法
    Win7点击文件夹右键可打开cmd控制台,并获取当前目录

    js apply/call/caller/callee/bind使用方法与区别分析
    click() bind() live() delegate()区别
    域名与IP对应,解决只能IP访问不能域名访问的问题
    element.style{}
    git
    new
    js 数组函数
  • 原文地址:https://www.cnblogs.com/cndou/p/11618054.html
Copyright © 2020-2023  润新知