Springboot+vue项目导出文件报错

Springboot+vue项目导出文件controller层代码:

@RestController //可以返回JSON和视图  @Controller只能返回视图  @ResponseBody只能返回JSON
@RequestMapping("/user")
public class UserController {
    //导出接口
    @GetMapping("/export")
    public boolean export(HttpServletResponse response) throws Exception {
        //从数据库查出所有数据
        List<User> list = userService.list();
        // ExcelWriter excelWriter = ExcelUtil.getWriter("diskpath");//直接写到磁盘路径
        //写出到浏览器
        ExcelWriter excelWriter = ExcelUtil.getWriter(true);
        // 自定义标题别名
        excelWriter.addHeaderAlias("id", "ID");
        excelWriter.addHeaderAlias("username", "用户名");
        excelWriter.addHeaderAlias("nickname", "昵称");
        excelWriter.addHeaderAlias("password", "密码");
        excelWriter.addHeaderAlias("address", "地址");
        excelWriter.addHeaderAlias("phone", "电话");
        excelWriter.addHeaderAlias("email", "邮箱");
        excelWriter.addHeaderAlias("createTime", "创建时间");
        excelWriter.addHeaderAlias("avatarUrl", "头像");

        //  一次性写出list内的所有对象到excel,使用默认样式,强制输出标题
        excelWriter.write(list, true);
        // 设置浏览器响应的格式
//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
//        String fileName = URLEncoder.encode("用户信息", StandardCharsets.UTF_8);
//        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");

        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        String fileName = URLEncoder.encode("用户信息", "UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        // 获取并绑定输出流
        ServletOutputStream outputStream = response.getOutputStream();
        excelWriter.flush(outputStream, true);

        //关闭流对象和ExcelWriter对象
        outputStream.close();
        excelWriter.close();
        return true;
    }
}

报错信息:

2022-02-28 20:37:53.026  WARN 71664 --- [nio-9090-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Failure while trying to resolve exception [org.springframework.http.converter.HttpMessageNotWritableException]
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
[nio-9090-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.lang.Boolean] with preset Content-Type 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'] with root cause

org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.lang.Boolean] with preset Content-Type 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'

说是response请求关闭后服务器端就不能在用了,最后发现是函数返回值的原因,如图函数export的返回值应该是void,不应该是boolean
在这里插入图片描述
response请求关闭后,函数的返回值信息已经无法通过response传达给前端接口了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值