@ModelAttribute
1 ModelAttribute的应用场景
为了实现更改数据库中的一部分数据,并且敏感的数据并不会在页面传回服务器.
- 在未使用ModelAttribute注解前
- 使用ModelAttribute注解能实现
2 ModelAttribute的示例
在方法定义上使用 @ModelAttribute 注解:Spring MVC在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法。
在方法的入参前使用 @ModelAttribute 注解:
- 可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参
- 将方法入参对象添加到模型中
controller类方法:
/**
* 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用!
* 2. @ModelAttribute 注解也可以来修饰目标方法 POJO 类型的入参, 其 value 属性值有如下的作用:
* 1). SpringMVC 会使用 value 属性值在 implicitModel 中查找对应的对象, 若存在则会直接传入到目标方法的入参中.
* 2). SpringMVC 会一 value 为 key, POJO 类型的对象为 value, 存入到 request 中.
*/
@ModelAttribute
public void getUser(@RequestParam("id") Integer id ,Map<String,Object> map){
System.out.println("ModelAttribute Method");
if (id != null){
User user = new User(1,"hgx","123456",12,"[email protected]") ;
System.out.println("从数据库查到User:" + user);
map.put("user",user) ;
}
}
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user){
System.out.println("修改:"+user);
return SUCCESS ;
}
jsp页面:
<form action="/springmvc/testModelAttribute" method="post">
<input type="hidden" value="1" name="id">
<br>
username:<input type="text" name="username">
<br>
age:<input type="text" name="age">
<br>
email:<input type="text" name="email">
<br>
<input type="submit" value="submit">
</form>