最近学习springmvc,想从jsp传送两个java对象的数据给Controller自动装配,在网上查了好久都是List对象的传送,最后终于查到了多个java对象的传送。
这里以用户(User)与用户详细信息(UserDetail)的更新为例,更新用户信息时,同时传送User以及UserDetail。
UserDetail以User的id为主键以及外键:
@Component
public class User {
private int id;
private String name;
private int age=0;
//getter and setter
}
@Component
public class UserDetail {
private int id;
private String sex;
private String phone;
private String address;
//getter and setter
}
关键方法:
UserController
@RequestMapping(value="/",method=RequestMethod.POST)
public ModelAndView updateUser(User user,UserDetail userDetail){
System.out.println("================="+user.getId()+"================");
System.out.println("================="+user.getName()+"================");
System.out.println("================="+userDetail.getSex()+"================");
System.out.println("================="+userDetail.getPhone()+"================");
System.out.println("================="+userDetail.getAddress()+"================");
userService.updateUser(user,userDetail);
}
@InitBinder("user")
public void userBinder(WebDataBinder webDataBinder){
webDataBinder.setFieldDefaultPrefix("user.");
}
@InitBinder("userDetail")
public void userDetailBinder(WebDataBinder webDataBinder){
webDataBinder.setFieldDefaultPrefix("userDetail.");
}
(“user.”);来标明jsp中用来传送参数,看清楚上面有“.”。
这里用@InitBinder来绑定参数,InitBinder里面的参数通过测试,好像是以类名称的驼峰式命名,我做了一下的实验:
- 我以@Compoment(“User”)来命名UserBean,但是@InitBinder的参数一样得为驼峰式的”user”才有效
- 我修改了updateUser方法中的参数名,把User user改为User users,结果还是得为驼峰式的”user”才能接收到值
jsp页面:
<div class="modal-body">
编号:<input type="text" name="" id="editId" readonly="true"/><br>
姓名:<input type="text" name="" id="editName" /><br>
年龄:<input type="text" name="" id="editAge" /><br>
性别:<input id="editSex" type="radio" name="" value="男"/>男
<input id="editSex" type="radio" name="" value="女"/>女<br>
电话:<input type="text" name="" id="editPhone"/><br>
地址:<input type="text" name="" id="editAddress"/>
</div>
结果:
=================15================
=================大金================
=================男================
=================123456789================
=================广州大学城================