springMVC的Map
可以通过目标方法的形参接收springMVC传进来的Map对象。
put进该map对象的键值对会被存入requestScope中,在目标页面可以很方便地用EL表达式获取。
SessionAttributes
在上述Map的基础上,为 类 添加@SessionAttributes 注解(不能修饰方法),可以通过属性名指定需要放到会话中的属性外,也可以通过模型属性的对象类型指定哪些模型属性需要放到会话中。
@ModelAttribute注解
有 @ModelAttribute注解 的方法,会在每个目标方法执行之前被springMVC调用!
示例代码:
@ModelAttribute
public void getUser(@RequestParam(value="id", required=false) Integer id, Map<String, Object> map ) {
User user = new User("tom", "123", "tom@qq.com");//模拟从数据库取得数据
user.setId(1);
map.put("user", user);
}
@RequestMapping("testModelAttributes")
public String testModelAttributes(User user) {
System.out.println("修改:" + user);
return SUCCESS;
}
- springMVC在执行testModelAttributes目标方法之前先执行getUser方法,该方法把对象放到map中。
- springMVC从map中取出User对象,并用表单的请求参数覆盖User对象中对应的属性。
- springMVC把上述对象传给目标方法的形参。
- 注意:在@ModelAttribute注解的方法中,放入到map的键值对的键必须和目标方法入参类型的首字母小写的字符串一致。
注意:
- 如果目标方法的入参使用了@ModelAttribute修饰,则map中的key要和@ModelAttribute中的value属性值相同。
- 如果目标方法所在类用了@SessionAttributes 注解,