解决办法:
把对应的action的返回设置为空,即可轻松解决。
例如:
@ActionAnnotation(name = "生成结婚报告文档并下载", group = "查询")
public ModelAndView createMarriage(HttpServletRequest request, HttpServletResponse response) throws Exception {
Management management = managementService.query(request.getParameter("mm_id"));
Map<String, Object> model = new HashMap<String, Object>();
model.put("management", management);
model.put("management", management);
String view = SystemParameter.get("marriage");
Template template = freeMarkerConfigurer.getConfiguration().getTemplate(SystemParameter.get("tempDirSoldier") + "/marriage.ftl", "utf-8");
String temp = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
File file = new File(getServletContext().getRealPath(view));
FileUtils.writeStringToFile(file, temp, "utf-8");
response.setContentType("text/html; charset=GBK");
response.setContentType("application/x-msdownload"); //设置response的编码方式
response.setContentLength((int) file.length()); //写明要下载的文件的大小
response.setHeader("Content-Disposition", "attachment;filename=" + new String(view.getBytes("gbk"), "iso-8859-1"));//解决中文乱码
FileInputStream fis = new FileInputStream(file); //创建输入流
BufferedInputStream buff = new BufferedInputStream(fis); //创建文件缓冲
OutputStream out = response.getOutputStream();
byte[] b = new byte[1024]; //设置缓冲大小
long k = 0; //用于判断文件长度是否为0
while (k < file.length()) {
int j = buff.read(b, 0, 1024);
k += j; // 累计文件长度
out.write(b, 0, j);
}
out.flush(); //将文件数据刷新到用户名电脑上
fis.close();
out.close();
file.delete(); // 删除临时文件
return null;
}