Allen_Zsj

导航

SpringMVC @ModelAttribute注解

/**
* @ModelAttribute标记的方法会永远最先执行
* 执行流程:
* 1、执行@ModelAttribute注解修饰的方法:从数据库中去出对象,把对象放入到Map中。
* 2、SpringMVC从Map中取出User对象,并把表单的请求参数赋值给该User对象的对应属性。
* 3、SpringMVC把上述对象传入目标方法的参数。
* 上述需要完成的是:当修改对象的末一个属性时,不修改的属性表单没有传,就会导致最后的
* 存储结果变为null;使用@ModelAttribute注解,可以先取到对象的所有属性值,然后再去修改。
*/

index.jsp:

<!--
测试@ModelAttributes:模拟修改操作:、
1、原始数据为:1,Tom,123456,tom@atguigu.com,12
2、密码不能修改
3、表单回显,模拟操作直接在表单填写对应的属性值
-->
<form action="springmvc/testModelAttributes" method="post">
<input type="hidden" name="id" value="1"/>
username:<input type="text" name="username" value="Tom"/>
<br><br>
email:<input type="text" name="email" value="tom@atguigu.com"/>
<br><br>
age:<input type="text" name="age" value="12"/>
<br><br>
city:<input type="text" name=privnce value="beijing"/>
<br><br>
<input type="submit" value="Submit"/>
</form>

 

@Controller:
@ModelAttribute
public void getUser(@RequestParam(value = "id",required=false) Integer id,Map<String,Object>map){
if(id != null){
User user = new User(1, "Tom", 12, "123456");
System.out.println("模拟数据库获取对象:" + user);
map.put("user", user);
}
}

@RequestMapping("/testModelAttributes")
public String testModelAttributes(User users){
System.out.println("修改user信息:" + users);
return SUCCESS;
}

posted on 2018-01-08 15:14  Allen_Zsj  阅读(128)  评论(0编辑  收藏  举报