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



