需求描述:我想弄一个学生表格,在每一行登记成绩,然后把这个表格一起提交给后台,那么我得把每个学生的学生id,分数一起提交,需要用到循环,挨个提交,如图所示
此时利用JSTL的挨个提交,后台接受数据有两种方法:
第一种:
1.
<form action="${basePath}/addScore" method="post" id="form" accept-charset="UTF-8">
<c:forEach var="i" begin="0" end="${requestScope.users.size()-1}" step="1">
<input type="hidden" name="rob_classList[${i}].reserve_id" id="reserve_id" value="${requestScope.reserve_id}"></input>
<input type="hidden" name="rob_classList[${i}].user_id" id="user_id" value="${requestScope.users.get(i).user_id}"></input>
<tr >
<td >${requestScope.users.get(i).institute }</td>
<td >${requestScope.users.get(i).major }</td>
<td >${requestScope.users.get(i).class_name }</td>
<td >${requestScope.users.get(i).login_name }</td>
<td >${requestScope.users.get(i).user_name}</td>
<td><input name="rob_classList[${i}].sumScore" id="sumScore" type="text"/></td>
</tr>
</c:forEach>
</form>
此时在foreach中利用迭代元素i来获取后台来的数据,并且把想传到后台的数据的name=数组元素的相应属性,如name=“rob_classList[${i}].sumScore”
2.在后台controller方法写成如下形式
@RequestMapping("addScore")
@ResponseBody
public ExecResult addScore(@Param("rob_classList") Rob_classList rob_classList) {
System.out.println("我进来了***********"+rob_classList.getRob_classList().size());
System.out.println(rob_classList.getRob_classList().get(2).getSumScore());
ExecResult er=new ExecResult();
er.setMsg("恭喜您,成功取消预约");
er.setSuccess(true);
return er;
}
其中@Param(“rob_classList”)要与前台数组对应
3.把你想要的传到后台的对象封装成数组
原对象:
public class Rob_class {
private int reserve_id;
private Date create_time;
private int rob_id;
private int user_id;
private int sumScore;
public int getSumScore() {
return sumScore;
}
public void setSumScore(int sumScore) {
this.sumScore = sumScore;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
private int person_number;
public int getPerson_number() {
return person_number;
}
public void setPerson_number(int person_number) {
this.person_number = person_number;
}
public int getReserve_id() {
return reserve_id;
}
public void setReserve_id(int reserve_id) {
this.reserve_id = reserve_id;
}
public Date getCreate_time() {
return create_time;
}
public void setCreate_time(Date create_time) {
this.create_time = create_time;
}
public int getRob_id() {
return rob_id;
}
public void setRob_id(int rob_id) {
this.rob_id = rob_id;
}
}
封装后的数组:
public class Rob_classList {
private List<Rob_class> rob_classList;
public List<Rob_class> getRob_classList() {
return rob_classList;
}
public void setRob_classList(List<Rob_class> rob_classList) {
this.rob_classList = rob_classList;
}
}
第二种:表单提交,以字段数组接收
1.前端页面
<h1>submitUserList_1</h1>
<form action="${pageContext.request.contextPath }/customer/saveCustomer" method="post">
用户名称:<input type="text" name="custName"/><br><br>
年龄:<input type="text" name="custAge"/><br><br>
用户名称:<input type="text" name="custName"/><br><br>
年龄:<input type="text" name="custAge"/><br><br>
<input type="submit" value="保存"><br><br>
</form>
2.controller方法:
@RequestMapping(value="/customer/saveCustomer",method=RequestMethod.POST)
public String saveCustomer(@Param("custName") String[] custName,@Param("custAge") Integer[] custAge) throws Exception{
for (int i = 0; i < custAge.length; i++) {
System.out.println(custAge[i]);
}
for (int i = 0; i < custName.length; i++) {
System.out.println(custName[i]);
}
return "redirect:/customer/listCustomer";
}