精选文章 解决 No converter found for return value of type 的问题

解决 No converter found for return value of type 的问题

作者:allen_jinjie 时间: 2021-02-05 09:43:13
allen_jinjie 2021-02-05 09:43:13
【摘要】最近测试一个导出功能的时候,后台日志报异常,但是页面的文件下载正常,网上搜了一些,都不是需要的答案。但是 java.lang.IllegalArgumentException: No converter found for return value of type 里面 Soumyajit Swain 的回答给了我一点提示。仔细看我的代码,原来是 Service 里面直接以流的方式把内存数据...

最近测试一个导出功能的时候,后台日志报异常,但是页面的文件下载正常,网上搜了一些,都不是需要的答案。但是 java.lang.IllegalArgumentException: No converter found for return value of type 里面 Soumyajit Swain 的回答给了我一点提示。仔细看我的代码,原来是 Service 里面直接以流的方式把内存数据响应给页面请求,等于结束了 HTTP 请求,但是我们的 Controller 还是一如既往地想返回一个通用的对象作为响应体。

报错信息:

08:43:09 WARN  [o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver] - Failure in @ExceptionHandler com.hebta.retrieval.person.controller.GlobalExceptionHandler#defaultErrorHandler(HttpServletResponse, Throwable)
org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class com.hebta.retrieval.person.common.BaseResponse] with preset Content-Type 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:317)
  at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)
  at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)
  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124)
  at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:407)

Service 里面是以文件流的方式写数据:

解决 No converter found for return value of type 的问题1

原来的 Controller 代码:

	@ResponseBody
	@ApiOperation(value = "数据导出")
	@PostMapping("export")
	public BaseResponse export(@RequestBody ExportDTO dto, HttpServletRequest request, HttpServletResponse response) {
		BaseResponse resp = new BaseResponse<>(RESPONSE_STATUS.SUCCESS);
		try { exportService.doExport(dto, request, response); resp.setStatus(RESPONSE_STATUS.SUCCESS); resp.setMsg("导出文件成功");
		} catch (Exception ex) { resp.setStatus(RESPONSE_STATUS.FAIL); resp.setMsg("导出文件失败");
		}
		return resp;
	}

知道了原因后,Controller 直接调用 Service 方法就行了,不需要返回什么。

	@ApiOperation(value = "数据导出")
	@PostMapping("export")
	public void export(@RequestBody ExportDTO dto, HttpServletRequest request, HttpServletResponse response) {
		try { exportService.doExport(dto, request, response);
		} catch (Exception ex) { ex.printStackTrace();
		}
	}

 

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:JetPack WorkManager

下一篇:CentOS:安装配置Scala、IDEA

您可能感兴趣

  • 解决VC中增加类文件的问题

    解决VC中增加类文件的问题  一、通过“AddToProject”向当前工作区A增加DibDoc类头文件及应用文件,在A的类A1中使用DibDoc类后编译,出现如下错误:  errorC2501:'CDibdoc':missing dec1-specifiers  于是作了以下处理,解决了出现的问题:  1.检查发现在类A1中,头文件包含#include"dibdoc.h"放在了#inclu...

  • Convert an UNSIGNED byte to a JAVA type

    In JAVA, a byte always considered as signed when converted to another type. We must mask the sign bit to JAVA, cast to an integer and process the masked bit if needed. The following method implemen...

  • 解决你MCSE最大的困惑

    解决你MCSE最大的困惑2001年4月12日9:32:2 启迪网   在NT 4.0系列考试中有三门课程可以使用中文考试,分别为70-58 Networking Essentials、70-59 TCP/IP on NT 4、70-67 NT 4.0 Server。然而目前NT 4.0考试已经全部作废,新推出的Win2K系列考试中目前还没有可以使用中文考试的,但依据微软的惯例可能会在今年晚些...

  • VC6.0编译问题

    VC6.0编译问题问:我用自己设计的类编了一个程序。当我在编译项中设置为debug编译时,程序运行一切正常,当为release时程序却出了问题.怎么会这样?答:1)为什么你既建立线程又将一个类成员作为线程处理?这样的话谁来调用你的析构函数?你不能试图将文档视窗类中的成员作为线程,象这样: Ccapi::SomeFunction() { AfxBeginThread(static_cast(T...

  • 问题多多的STL实现

    问题多多的STL实现     开始学VC的时候还不知道STL为何物,只知道什么CString之类的东西可以方便的出来字符串,从此享受着C++带来的好处。后来慢慢才看到STL的介绍,觉得真是个好东西,于是开始了STL的历程,当然用的STL也是VC6的实现。开始看书作些小程序,小项目还觉得可以挺不错的。    第一次发现VC的STL有问题是在作一个HTTP服务器的时候,由于需要在跨平平台上面实现...

  • 用XMLHTTP Post/Get HTML页面时的中文乱码问题之完全Script解决方案

    用XMLHTTP Post/Get HTML页面时的中文乱码问题之完全Script解决方案 关键词:VBScript, ASP, JavaScript, Java, XML 以前我曾经贴过一篇用XMLHTTP Post Form 的帖子,那里的代码中我Post E文的Value毫无问题,但是后来发现Post含有中文的表单时会出现乱码,原因当然是UTF-8 和GB2312 之间的转换问题了!T...

  • 关于中文问题

    不少朋友曾对虚拟小龙亭的中文显示提出了意见和建议,谨在此表示感谢。在jsp中,中文乱码常会让人心乱如麻。对于中文处理的常见对策,在网上经常可见的主要是下面2种:<%@ page contentType="text/html;charset=gb2312" %>或者: <%String Hi="你好";byte[] tmpbyte=Hi.getBytes("ISO8859_1");Hi=new...

  • Linux网络管理员手册(2) 第二章 TCP/IP网络的问题 IP地址 子网(Subnetworks) 域名服务器 解析

    Linux网络管理员手册(2) 2000-07-28 13:32发布者:netbull 阅读次数:4825 翻译:赵炯 gohigh@shtdu.edu.cn 第二章 TCP/IP网络的问题 我们将转至讨论一些你将遇到的一些细节上,当你将你的Linux机器连接到TCP/IP网络时就会用到这些细节,它涉及到IP地址、主机名、以及有时是路由选择问题。这一章给出了你所需的背景资料,以用于理解你的设...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
解决 No converter found for return value of type 的问题介绍:华为云为您免费提供解决 No converter found for return value of type 的问题在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多解决 No converter found for return value of type 的问题的相关内容。| 移动地址: 解决 No converter found for return value of type 的问题 | 写博客