解决办法:
把对应的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; }
