Spring MVC 之 @ModleAttribute

问题:修改数据库中某对象,但是需要保留该对象的某个属性不变。
这里写图片描述

解决方案:
这里写图片描述

/*
 *由@ModelAttribute 标记的方法,会在每个目标方法执行前被Spring MVC调用!
   * @ModelAttribute 注解也可以来修饰目标方法POJO类型的入参,其value属性值有如下的作用:
 *1).SpringMVC 会使用value属性值在implicitModel 中查找对应的对象,若存在则会直接传入到目标方法的入参中。
 *2).SpringMVC 会以 value 为key ,POJO 类型的对象为value,存入到request中。
 */
@ModelAttribute
public void getUser(@RequestParam(value="id",required = false)Integer id,Map<String, Object> map){
    System.out.println("@modelAttribute执行");
    if(id != null){
        User user =  new User(1, "tom", "123456", "[email protected]", 12);
        System.out.println("模拟从数据库中获取对象"+user);
        map.put("abc", user);
    }
}
/*
 * 运行流程:
 * 1.执行@ModelAttribute注解修饰的方法:从数据库中取出对象,把对象放入到了Map中,键为:user
 * 2.SpringMVC 从Map中取出user对象,并把表单的请求参数赋给该User对象的对象属性
 * 3.SpringMVC 把上述对象传入目标方法参数。
 * 
 * 注意:在@ModelAttribue 修饰的方法中,放入到Map时的键需要和目标方法入参类型的第一个字母小写的字符串一致!
 */
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute("abc")User userl){
    System.out.println("修改:"+userl);
    return SUCCESS;
}

猜你喜欢

转载自blog.csdn.net/code_fighter/article/details/79185931
今日推荐