1、后台代码:
@RequestMapping(value="/public/batchRecharge",method=RequestMethod.POST)
public String batchRecharge(HttpServletRequest request, HttpServletResponse response) throws Exception{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("batrechexcel");
String sourceName = multipartFile.getOriginalFilename(); // 原始文件名
//String fileType = sourceName.substring(sourceName.lastIndexOf("."));
String base = request.getSession().getServletContext().getRealPath("/") + "batchrecharge" + File.separator + "uploadedExcel";
File file = new File(base);
if(!file.exists()){
file.mkdirs();
}
String path=base + File.separator + sourceName;
multipartFile.transferTo(new File(path));
Set<PhoneSize> phoneSizes = readBatchRechargeExcel(path);
String account = getLoginUser().getAccount();
String resultJson = this.batReChMainService.doBatchRecharge(phoneSizes,account);
attr("resultJson",resultJson);
return "flow/batchrecharge/batchrecharge";
}
2,、前台代码:用一个隐藏的input把后台传过来的数据藏起来,然后再去读它
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@include file="/pages/include/base-head.jsp"%>
<%-- <script type="text/javascript" src="${skin}/js/flow/batchrecharge.js"></script> --%>
</head>
<body>
<form id="dataform" method="post" enctype="multipart/form-data" action="${contextPath}/flow/public/batchRecharge" onsubmit="return verification()">
<table style="align:center">
<tbody>
<tr>
<td>
批量充值Excel模板:
<img src="${skin}/image/flow/exceltemplate.png"/>
</td>
</tr>
<tr><td> </td></tr>
<tr>
<td>
<input type="file" name="batrechexcel"/>
<input type="submit" value="确认批量充值"/>
</td>
</tr>
<tr><td> </td></tr>
<tr id="shangjieguo" style="display:none">
<td>充值结果:<span id="totalresult" style="color:red"></span>
</td>
</tr>
<tr id="xiajieguo" style="display:none">
<td>错误描述:<br/>
<span id="errordes" style="color:red"></span>
<span id="incompleteDataString" style="color:red"></span>
</td>
</tr>
<tr>
<td>
<input type="hidden" id="resultJson" value='${resultJson}'/>
</td>
</tr>
</tbody>
</table>
</form>
<script>
function verification(){
var batrechexcel = $("input[name='batrechexcel']").val();
if(batrechexcel == ""){
$("#shangjieguo").show();
$("#totalresult").text("请选择要导入的Excel文件");
$("#xiajieguo").css("display","none");
return false;
}else{
return true;
}
}
$(function(){
var straf = $("#resultJson").val();
var str = JSON.parse(straf);
if(str.result == "allsuccess"){
$("#shangjieguo").show();
$("#totalresult").text("全部受理成功:"+"总共充值数:"+str.totalNumber+" ,充值成功数:"+str.successNumber+" ,充值失败数:"+str.failNumber+" ,格式不对数:"+str.incompleteDataNumber);
}else if(str.result == "allfail"){
$("#shangjieguo").show();
$("#xiajieguo").show();
$("#totalresult").text("全部受理失败:"+"总共充值数:"+str.totalNumber+" ,充值成功数:"+str.successNumber+" ,充值失败数:"+str.failNumber+" ,格式不对数:"+str.incompleteDataNumber);
$("#errordes").html(str.failreason);
$("#incompleteDataString").html(str.incompleteDataString);
}else if(str.result == "null"){
$("#shangjieguo").show();
$("#totalresult").text("数据为空或数据大于1万");
}else if(str.result == "partfail"){
$("#shangjieguo").show();
$("#xiajieguo").show();
$("#totalresult").text("部分受理失败:"+"总共充值数:"+str.totalNumber+" ,充值成功数:"+str.successNumber+" ,充值失败数:"+str.failNumber+" ,格式不对数:"+str.incompleteDataNumber);
$("#errordes").html(str.failreason);
$("#incompleteDataString").html(str.incompleteDataString);
}
});
</script>
</body>
</html>
3、var str = ${resultJson};(可以,但是不可行)
如果直接把${resultJson}放在 var str中,则str直接是一个js对象,无需转化,但是刚进页面时,var str = ${resultJson}会报错,影响下面js语句的执行,所以是不可行的办法
4、
var straf = '${resultJson}';
var str = JSON.parse(straf);(可以)
5、
var straf = new String('${resultJson}');(可以)
var str = JSON.parse(straf);
6、
var straf = "${resultJson}";
var str = JSON.parse(straf);(不可以)