最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
java中@ModelAttribute注解的作用
时间:2022-06-29 01:41:05 编辑:袖梨 来源:一聚教程网
问题描述:当我们使用表单传值得时候,如果定义了,name,address,age。等属性,那么通过表单传过去的值就只有这3个属性,但是我们需要的name,pass,address,age等四个属性。那么在提交表单并赋值的时候就会出现,未得到的值为null的情况。如下图:
获取的pass为null
那么我们需要用@ModelAttribute注解来解决他:
实现代码如下:
@ModelAttribute
publicvoidgetUsers(@RequestParam(value="name",required=false) String name,Map
if(name!=null){
System.out.println("调用ModelAttribute");
//模拟从数据库中获取的对象。
User users =newUser("cjh","123","[email protected]","China");
System.out.println("从数据库中获取一个对象"+users);
map.put("user",users);
}
}
@RequestMapping("/getInfo")
publicString getServletAPI(User user){
String viewName ="hello";
System.out.println("修改:"+user);
returnviewName;
}
@ModelAttribute注解的方法,在这个控制器中不管其他任何一个方法被调用,都会执行。
以上代码的运行流程为:
1.首先执行@ModelAttribute注解修饰的方法,从数据库中查找出对应要修改的对象,把值放在map键值对中,key应该和处理请求的方法传入的参数名一样,如:此处定义的传入参数名为user,那么map.put(“user”,值(从数据库中查询的对象))。这个Map需要定义在方法入参的地方(代码如上)。
2.Spring MVC会从Map中找出user对象,并把表单请求参数赋值给该user对象,只有表单定义了的属性才会被替换,没定义的为null,不改变。所以要求@ModelAttribute修饰的方法中定义的key的名称要和控制器方法(@RequestMapping()修饰的方法)中入参的名称要一致。否则没效果。
3.Spring MVC 把上述对象传入目标方法的参数。
注意:在@ModelAttribute 修饰的方法中,放入到map时的键要和目标方法入参类型的参数名一致。
最终效果:
相关文章
- 云星穹铁道权益升级怎么玩 云崩铁权益升级活动介绍 12-03
- 以闪亮之名山中绘梦怎么玩 以闪亮之名滢然花梦套装活动介绍 12-03
- 以闪亮之名绿野梦歌礼包怎么样 以闪亮之名绿野梦歌拍照礼包介绍 12-03
- 光遇12.6有什么更新 光遇12月6日更新内容介绍 12-03
- 伍六七暗影交锋测试资格怎么获得 伍六七暗影交锋内测资格获取方法 12-03
- 无限暖暖晶莹诗集怎么样 12-03