关于excel 导出 springboot 报错org.springframework.web.HttpMediaTypeNotAcceptableException

博客详细分析了在使用SpringMVC时遇到的HttpMediaTypeNotAcceptableException异常,该异常发生在尝试通过@RestController接口导出Excel文件时。作者发现问题源于response写出内容时不应有返回值,这导致了SpringMVC不支持的MediaType。解决方案是避免触发AbstractMessageConverterMethodProcessor的writeWithMessageConverters方法,确保导出时不涉及返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

项目都是@ RestController 返回结果都是json
通过response 导出 xlsx 报错

    @PostMapping(value = "/exportExcel")
    public Result<Void> exportExcel(@RequestBody List<String>  bizNos, HttpServletResponse response) {
        service.exportExcel(query, response);
        return Results.success();
    }
    @PostMapping(value = "/exportExcel")
    public void  exportExcel(@RequestBody List<String>  bizNos, HttpServletResponse response) {
        service.exportExcel(query, response);
    }

l第一种 导出 设置如下配置
response.setContentType(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”);
response.setContentType(“application/vnd.ms-excel”);

sprng mvc 报错Could not find acceptable representation

仔细分析了 如果通过response写出去话,不应该触发spring mvc HttpMediaTypeNotAcceptableException

最终定位了
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor#writeWithMessageConverters(T, org.springframework.core.MethodParameter, org.springframework.http.server.ServletServerHttpRequest, org.springframework.http.server.ServletServerHttpResponse)

这个方法 发现 Spring MVC的 MediaType 不支持上述的 content Type .

最后明白了response 写出的时候, 不应该有返回值, 则不会触发上述方法的调用,同事写的代码不小心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值