org.springframework.http.converter.HttpMessageNotWritableException:
No converter for [class com.xxx.dto.Result] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8'
我的问题根因
controller处理逻辑有问题,导致报错,然后被全局异常捕捉,再然后返回了错误信息
也就是说本来没有返回值的方法,最终有返回值class com.xxx.dto.Result ,就会抛出以上错误。
我的解决方案
把controller里面的报错解决,让逻辑正常执行,不报错,不被全局异常捕捉即可
以上为我遇到的问题根因和解决方案
另外还有种情况 也可能会报以上错误,就是表格列的 index的值重复
@ExcelProperty(value = "字段", index = 0)
以下是具体的分析步骤,可看,可略过。
我的代码情况:
1. controller内无返回值,因此不适用通常解决方案
public void downloadExt(HttpServletResponse response, DataQuery qry) throws IOException {
try {
// 查询数据 导出数据逻辑
} catch (Exception e) {
throw new BsException("文件下载失败");
2. 再细看日志,报错内其他信息
org.springframework.http.converter.HttpMessageNotWritableException:
No converter for [class com.xxx.dto.Result] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8'
发现虽然接口代码没有返回值,但是 前端请求接口的时候 的确返回了 com.xxx.dto.Result 对象
3. 查看代码是否有全局异常处理
public class ExceptionHandler implements GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public Result errorException(Exception e) {
log.error(e.getMessage(), e);
return Result.fail(xxxx);
经查看,是全局异常处理捕捉了第1步的controller抛出的异常,然后返回了Result对象,导致下载报错。
但是 根因不在这里,而是在导出的controller代码里面报错了
public void downloadExt(HttpServletResponse response, DataQuery qry) throws IOException {
try {
**// 查询数据 导出数据逻辑**
} catch (Exception e) {
log.info(null, e);
throw new BsException("文件下载失败");
}
}
打出日志,查看日志,即可解决问题
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;
EasyExcel导出报错
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.util.LinkedHashMap] with preset Content-Type 'text/html;charset=UTF-8'];
ServletContext attribute. Are you running in a Servlet container that suppor
意思是:对于预设内容类型为“多部分/表单数据”的[class org.jeecg.common.api.vo.Result]没有转换器
response.setContentType("application/json;charset=utf-8");
已解决:No converter for XXX with preset Content-Type ‘application/vnd.ms-excel;charset=utf-8‘
起因是导出excel文件,发现下载的excel文件无法正常打开,总是提示文件损坏,需要修复,于是在代码中加入了以下代码
//2007版本excel导出
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
文件可以正常打开了,内容也没
情景:从项目中拿到一个客户的demo工程,或者导入一个别人的工程,编译时出现 Error:No such property: GradleVersion for class: JetGradlePlugin:
原因:这是gradle的版本太高导致的
解决办法:
第一步:打开工程的build.gradle,注意不是app/build.gradle
第二步:修改dependencies
第三步:打开工程的gradle/wrapper/gradle-wrapper.properties:
第四步:修改distributionUrl,注意这个版本要和第二步中的版本对应,可参考下面改至相应版本,想
这个错误通常是因为在使用某些库或框架时,尝试将一个Java对象转换为Excel文件时出现的。
你可以尝试使用专门的Java库,如Apache POI或jExcelApi来处理Excel文件。这些库可以让你更容易地创建、读取和修改Excel文件,同时也提供了更多的配置选项。
如果你已经在使用这些库或框架,并且仍然遇到此错误,那么可能需要检查你的代码是否正确地使用了这些库,并且是否正确地设置了Content-Type。你可以检查文档或者寻求相关的帮助来解决此问题。
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;
14803
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;
m0_61089588:
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;
Expiring 1 record(s) for 2:xxx ms has passed since batch问题研究
杨小胖要减肥:
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;
org.springframework.http.converter.HttpMessageNotWritableException:
No converter for [class com.xxx.dto.Result] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8'
我的问题根因:
根本原因是controller处理逻辑有问题,导致报错,然后被全局异常捕捉,再然后返回了错误信息
错误信息对象是class com.xxx.dto.Result