• SpringMvc @ModelAttribute 的用法


    参考:Spring 3.x 企业应用开发实战   第15章:SpringMvc  页码:532

    ModelAttribute 从字面上解释就是模型的属性。

    对于MVC框架来说是模型数据是最重要的,因为控制(C)是为了产生模型数据(M),而视图(V)则是为了渲染模型数据。

    Spring Mvc提供了多种途径输出模型数据。

    1.ModelAndView  返回ModelAndView对象                  public  ModelAndView  request();

    2.@ModeAttribute  在入参的时候标准该注解,入参的对象就会放到数据模型中。 public String  request(@ModelAttribute(“user”)User user);

    3.Map 及Model   添加此类入参   public String request(Model model,Map map);

    4.@SessionAttribute

    从上可知 @ModelAttribute 注解就是用来输出模型数据的。 

    第一种用法:入参的时候加入注解

      @RequestMapping("testModelAttribute")
        public String testModelAttribute(@ModelAttribute("user") User user, ModelMap modelMap)
        {
            user.setUserName("mindong");
            modelMap.put("password",123456);
            return "test";
        }

    在test.jsp页面上使用  ${user.userName}<br> ${password}   就可以获取user的属性和你设置的属性了。

    第二种用法:在方法前加入注解

      @RequestMapping("testModelAttribute")
        public String testModelAttribute(@ModelAttribute("user") User user, ModelMap modelMap) 1
        { 
            user.setUserName("mindong");  
            modelMap.put("password",123456);
            return "test";
        }
    
        @ModelAttribute("user")
        public User initUser()
        {
            User user = new User();
            user.setUserId(1);
            user.setUserName("mindong");
            return user;
        }

    调用testModelAttribute方法时,会先去调用使用了@ModelAttribute的 initUser 方法,并将返回值添加到模型中,由于InitUser方法的@ModelAttribute 和 testModelAttribute方法入参的@ModelAttribute 属性相同,都是user。

    这是SpringMvc会将initUser中获得的属性先赋值给testModelAttribute的user,然后根据Http请求传参对user进行覆盖,这样得到一个整合版本的user对象。

  • 相关阅读:
    Cookie 干货
    element-ui 框架中使用 NavMenu 导航菜单组件时,点击一个子菜单会出现多个子菜单同时展开或折叠?
    数组遍历的方法
    前端网页字体
    样式小收藏:完成、错误、提示动态图标样式
    多语言网站利器 rel="alternate" hreflang="x"
    网页中文章显示一部分,然后“查看全文”
    仿水滴筹中快捷留言祝福、随机生成祝福
    TypeScript知识点
    前端项目经验
  • 原文地址:https://www.cnblogs.com/alway-july/p/8035562.html
Copyright © 2020-2023  润新知