今天做项目需要用导出数据到Excel,数据导出都正常就是后台报getOutputStream() has already been called for this response。
直接上代码:
@GetMapping("/export") @ResponseBody public AjaxResult export(@ModelAttribute VsTravelRecordDyg vsTravelRecordDyg , HttpServletResponse response) { Listlist = vsTravelRecordDygService.selectVsTravelRecordList(vsTravelRecordDyg); // 列名 List listName = Arrays.asList("部门名称", "姓名", "身份z"); // 列名 数据填充 List
之前的代码就是这样写的 直接就报错
改正之后:其它代码不变 返回值改为null 结果就不报错了。
@GetMapping("/export") @ResponseBody public String export(@ModelAttribute VsTravelRecordDyg vsTravelRecordDyg , HttpServletResponse response) { Listlist = vsTravelRecordDygService.selectVsTravelRecordList(vsTravelRecordDyg); // 列名 List listName = Arrays.asList("部门名称", "姓名", "身份z"); // 列名 数据填充 List
原因分析:
产生这样的异常原因:是web容器生成的servlet代码中有out.write(""),
这个和JSP中调用的response.getOutputStream()产生冲突.即Servlet规范说明,
不能既调用response.getOutputStream(),又调用response.getWriter(),
无论先调用哪一个,在调用第二个时候应会抛出IllegalStateException 有人说 我没调用啊 response.getWriter() ,源码里调用了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)