这几日在做一个项目的模块的时候碰到一个问题。当时需要把一组对象批量传回到后台进行保存,但是spring MVC接收时只能接收一个对象,而不能自动接收一个对象数组。比如这样一个例子:一个学生小组有统一的小组编号属性,每个学生有自己的学号、姓名、性别等属性,现在需要一次添加一个学生小组到数据库,在form表单中小组编号只需填写一次,每个学生的独立属性需要分别进行填写,点击添加按钮时一次性进行添加,这样在后台就不能用student[] 来接收了,那怎么办呢?可以通过这样的方式进行处理,先定义学生类:
public class Student{
private String id;//学号
private String name;//姓名
private String sex;//性别
private String groupid;//小组编号
...//省略getter、setter方法
}
再定义一个小组类:
public class StudentArr{
private String groupid;//小组编号
private Student[] students;
...//省略getter、setter方法
}
当然前台form表单中也需要做出调整:<form id="StudentGroup_addForm" method="post">
<table">
<tr>
<th>小组编号</th>
<td colspan="3"><input name="groupid" /></td>
</tr>
<tr>
<th>姓名</th>
<td><input name="students[0].name" /></td>
<th>性别</th>
<td><input name="students[0].sex"/></td>
</tr>
<tr>
<th>姓名</th>
<td><input name="students[1].name" /></td>
<th>性别</th>
<td><input name="students[1].sex"/></td>
</tr>
<tr>
<th>姓名</th>
<td><input name="students[2].name" /></td>
<th>性别</th>
<td><input name="students[2].sex"/></td>
</tr>
<tr>
<th>姓名</th>
<td><input name="students[3].name" /></td>
<th>性别</th>
<td><input name="students[3].sex"/></td>
</tr>
<tr>
<th>姓名</th>
<td><input name="students[4].name" /></td>
<th>性别</th>
<td><input name="students[4].sex"/></td>
</tr>
</table>
</form>
在controller中就使用StudentArr来接收就可以了:@RequestMapping("/add")
public @ResponseBody Json add(StudentArr students) throws Exception {
...//
}