No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel;

通常解决方案参考
https://blog.csdn.net/qq_42651201/article/details/120710224

我的报错 

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("文件下载失败");
    }
}

打出日志,查看日志,即可解决问题


 

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值