最近的项目有用到将列表数据传输到后台,去研究了一下。如有不妥,请各路大神斧正。
项目需求展示:
将抽取到的专家保存到数据库表中,其中涉及到修改展示的list的数据,所以不能直接把后台传过来的数据直接保存。
如果点击重抽,重新生成一条数据显示,并在重抽的地方填写原因。页面如下
保存时需要保存相应数据,如有不参加需要填写原因。
前台jsp代码,简示如下,省去很多其他部分的代码。
<form action="expert/savezj?flag=pssh&paguid=${ProjectGuid}" id="saveForm" method="post" name="saveForm">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="table2">
<thead class="thead">
<tr>
<td width="25%">姓名</td>
<td width="45%">手机</td>
<td width="30%" class="nobg">是否重抽</td>
</tr>
</thead>
<tbody id="cqzj">
</tbody>
</table>
</form>
<div class="btn_box3">
<input class="all_btn sure" type="button" value="保存" onclick="save(this);"/>
</div>
javaScript
有些地方是业务逻辑需要的代码,忽略就好。
//展示数据的部分代码
for (var i = 0; i < data.length; i++) {
html += "<tr>" + "<td>" + "<input value='" + data[i].guid + "' name='expertList[" + i + "].guid' type='hidden'><input value='" + data[i].realname + "' name='expertList[" + i + "].realname' type='hidden'>" + data[i].realname + "</td>"
+ "<td id='" + data[i].guid + "'><input class='join' type='hidden' value='${ProjectGuid}' name='expertList[" + i + "].remark' /><a class='shenbao' onclick=heavy('" + data[i].guid + "','"+i +"','"+data[i].expertstype +"')>重抽</a></td>" + "</tr>";
}
//保存专家方法
function save(obj) {
var mytable = document.getElementById("cqzj")
for(var i=0;i<mytable.rows.length;i++){
if($('.join')[i].value==null||$('.join')[i].value==""){
alert("请填写无法参加的理由")
return false;
}
}
if($("#time").val()==''){
alert("请选择评审时间")
return false;
}
document.saveForm.action=$("#saveForm").attr("action")+"&tdate="+$("#tdate").val()+"&time="+$("#time").val();
$("#saveForm").ajaxSubmit({
type: "post",
dataType: "json",
success: function (resp) {
if (resp.succ) {
alert(resp.msg)
goback();
} else {
alert(resp.msg);
return false;
}
}
});
}
java 后台代码,简化如下
@ResponseBody
@RequestMapping(value = "save")
public Result save(ExpertList expertList,String flag,String paguid,String tdate,String time){
return new Result(Result.SUCC,null);
}
ExpertList 类用来存储前台过来的数据。Expert是专家的基本信息类,如名字、电话信息等。
public class ExpertList {
private List<Expert> expertList;
public List<Expert> getExpertList() {
return expertList;
}
public void setExpertList(List<Expert> expertList) {
this.expertList = expertList;
}
}
在save方法中ExpertList 可以获取到前台传过来的数据。
这个是通过form表单实现的。
好像还有一种方法,可以将数据放在页面创建对象obj中,转json后传递给后台。