modelAttribute 详解

来源:互联网 发布:怎么看淘宝销量排行 编辑:程序博客网 时间:2024/06/01 19:07
ModelAttribute:

@ModelAttribute 绑定请求参数到命令对象

 

@ModelAttribute一个具有如下三个作用:

①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑

定流程,而且自动暴露为模型数据用于视图页面展示时使用;

②暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用

对象,如注册时需要选择的所在城市等,而且在执行功能处理方法(@RequestMapping 注解的方法)之前,自动添加

到模型对象中,用于视图页面展示时使用;

③暴露@RequestMapping 方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为


模型数据,用于视图页面展示时使用。




运行原理:
           
/*
在modelattribute修饰的方法中,放入到map时的键需要和目标方法入参类型的第一个字母小写的字符串一致
*/

@ModelAttribute
    public void getUser(@RequestParam(value="name",required=false)String name,
            Map<String, Object> map){

        if(name != null){
            //模拟从数据库中获取对象
            User user = new User("liu", "12");
            System.out.println("从数据库中获取一个对象"+user);
            map.put("user", user);
        }

    }


    @RequestMapping("testModelAttribute")
    public String testModelAttribute(User user){

        System.out.println("修改"+user);
        return "success";
    }

在某一个时刻,springmvc将modelattribute中的数据取出来,并且赋给test方法。

运行流程: 执行@modelattribute注解修饰的方法:从数据库中取出对象,将对象放入map中,键为user
 2: spring mvc 从map中取出user对象,并把表单的参数请求赋给该user对象的对应属性
3: springmvc 把上述对象传入目标方法的参数。





原创粉丝点击