zoukankan      html  css  js  c++  java
  • Spring MVC 页面跳转时传递参数

    Markdown

    页面仍然使用 JSP,在跳转时如果想传递参数则需要用到类 RedirectAttributes。

    首先看看如何打开一个普通页面:

    // 登录页面(每个页面都要独立的 Action 来支持其呈现)
    @RequestMapping(value = "/Index", method = RequestMethod.GET)
    public String Index(Model model)
    {
        model.addAttribute("name", "Tom");
        return "UserLogin/Index";
    }
    

    很简单,直接为 Model 对象添加属性对即可,然后在 JSP 页面里,通过 ${name} 就可以得到它的值 Tom。

    那么,在页面发生了跳转的情况下该如何传递属性对参数呢?这时 RedirectAttributes 就要隆重上场了。
    先上一段代码:

    // 登录动作
    @RequestMapping(value = "/Login", method = RequestMethod.POST)
    public String Login(UserLoginDTO userLoginDTO, RedirectAttributes attr)
    {
        System.out.println("--Login");
        System.out.println("accountId = " + userLoginDTO.getAccountId());
        System.out.println("pwd = " + userLoginDTO.getPwd());
      
        if (userLoginDTO.getAccountId() == "")
        {
            attr.addFlashAttribute("msg", "帐号不能为空");
            return "redirect:/UserLogin/Index";
        }
      
        if (userLoginDTO.getPwd() == "")
        {
            attr.addFlashAttribute("msg", "密码不能为空");
            return "redirect:/UserLogin/Index";
        }
      
        attr.addFlashAttribute("msg", "登录一切正常");
        System.out.println(attr);
        return "redirect:/UserLogin/LoginSuccess";
    }
    

    Login 方法的第二个参数已不再是 Model 了,而是 RedirectAttributes,在方法体中,随着代码的各种判断,需要去往的页面也不相同,随之需要传递的消息也可以自由变化,比如:

    attr.addFlashAttribute("msg", "帐号不能为空");
    return "redirect:/UserLogin/Index";
    

    在用法上与 Model 很相似,都是属性对,上述代码将跳转至 Index.jsp 页面。
    众所周知,在 Spring MVC 里页面呈现之前都需要经由对应的方法来引导,接下来为了验证这里的属性对是否真的已传递出去,可以通过以下代码来验证:

    // 登录页面(每个页面都要独立的 Action 来支持其呈现)
    @RequestMapping(value = "/Index", method = RequestMethod.GET)
    public String Index(Model model)
    {
        System.out.println("--Index");
        System.out.println(model);
        return "UserLogin/Index";
    }
    

    打印出来的结果是:

    --Index
    {msg=帐号不能为空}
    

    可以看到,attr.addFlashAttribute() 已将参数传递出去。在 JSP 页面里用法不变,即 ${msg} 就可以得到它的值。

  • 相关阅读:
    url
    松弛时间
    Linux下为当前用户添加 PYTHONPATH 环境变量
    ElasticSearch集群的安装(windows)
    软件开发安全
    java,判断手机设备跟adb建立连接
    question
    氚云后台代码小栗子,流程表单新增完成反写源单状态
    November Challenge 2020 Division 1
    February Challenge 2021 Division 1 选做
  • 原文地址:https://www.cnblogs.com/ramantic/p/7575341.html
Copyright © 2011-2022 走看看