问题:修改数据库中某对象,但是需要保留该对象的某个属性不变。
解决方案:
/*
*由@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;
}