作者panasonic89 (panasonic)
看板java
标题[问题] 等待response才继续执行
时间Wed Aug 3 15:58:51 2016
网路上应该有类似的文章
可是看了老半天 试了几天还是不得其解... 因此向这边求助
首次发文, 若有不妥的地方再行告知. 会立马修正 谢谢
问题蛮单纯的
前端post一个form让controller执行後产生一份excel并进行下载
其中前端post资料出来後就要先锁住画面 等到excel准备好後才解锁 并下载
自己这边试过ajax 可是ajax无法处理串流回来的资料 自然不能下载
查了许多网站似乎都是说ajax无法做到download file
因此直接用js的submit做 但是这个方法又无从得知资料回来的时间
提供部分代码
view.js (submit版)
// lock ui
$("#form1").attr("action","<c:url value="/export"/>");
$("#form1").submit();
// unlock ui
view.js (ajax版)
//lock ui
$("#form1").ajaxSubmit({
url:'export',
dataType: 'bytesArray',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function(){
//unlock ui
},
});
MyController.java
@ResponseBody
@RequestMapping("/export")
public void export(@ModelAttribute("model")
MyFormBean form
,ModelMap model
,HttpServletResponse res) throws Exception {
// do something
res.setContentType("application/octet-stream");
res.addHeader("Content-disposition"
, "attachment;filename="
+ URLEncoder.encode("MyExcel.xls", "UTF-8"));
OutputStream fOut = res.getOutputStream();
workbook.write(fOut);
fOut.flush();
fOut.close();
}
因为本身算是半路出家.. 许多地方都不是很了解
用字有错误的地方再请大大们提醒一下 立马修正 谢谢您
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.59.250.101
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1470211133.A.55F.html
1F:→ ssccg: ajax可以下载档案(当然有些支援度问题),但是你的需求看起 08/03 17:18
2F:→ ssccg: 来是只要锁住画面到档案准备好就好? 没有要锁到档案下载好 08/03 17:19
3F:→ ssccg: 如果是的话我觉得拆成两步,先用ajax叫server准备资料并回 08/03 17:21
4F:→ ssccg: 传下载url,再用普通方式下载就好 08/03 17:21
5F:→ panasonic89: 我试试看 谢谢! 08/04 14:04