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 写出的时候, 不应该有返回值, 则不会触发上述方法的调用,同事写的代码不小心。
博客详细分析了在使用SpringMVC时遇到的HttpMediaTypeNotAcceptableException异常,该异常发生在尝试通过@RestController接口导出Excel文件时。作者发现问题源于response写出内容时不应有返回值,这导致了SpringMVC不支持的MediaType。解决方案是避免触发AbstractMessageConverterMethodProcessor的writeWithMessageConverters方法,确保导出时不涉及返回值。

被折叠的 条评论
为什么被折叠?



