已解决:No converter for [class XXX] with preset Content-Type ‘XXX‘

http://localhost:8085/api/v1.0/user/export org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class cn.com.wind.server.model.vo.Response] with preset Content-Type 'multipart/form-data;charset=utf-8'

最近在开发过程中写一个导出数据对象的接口,使用的 EasyExcel 插件,导出一个对象的二进制流供前端使用。在写的过程中发现报了上述错误 No converter for [class cn.com.wind.server.model.vo.Response] with preset Content-Type 'XXX'

错误中提示的很清楚,无法转换,目标对象 Response,这个对象是API统一出口,即Controller接口的返回值,意思就是你的Excel返回无法转换成Response对象,肯定无法转换。

所以说,解决方案:返回值为 void。

@PostMapping("/export")
public Response exportUserInfo(@RequestBody UserRequest request, HttpServletResponse response){
	userService.exportUserInfo(request, response);
	return Response.success("ok");
}

修改为

@PostMapping("/export")
public void exportUserInfo(@RequestBody UserRequest request, HttpServletResponse response){
	userService.exportUserInfo(request, response);
}

我在网上搜索该问题时发现很多版本,看了下解决问题的方法大多如此,问题如下:

  • No converter for [class XXX] with preset Content-Type ‘application/vnd.ms-excel;charset=utf-8‘
  • No converter for [class ] with preset Content-Type 'application/octet-stream;charset=UTF-8'

参考文章:文章一文章二

### 解决方案 当遇到 `No converter for class with Content-Type null` 的错误时,通常是因为Spring MVC无法找到适合的HTTP消息转换器来处理响应对象。这可能由于缺少必要的依赖项或未正确配置消息转换器。 为了确保JSON数据能够被正确序列化并返回给客户端,在项目中应引入Jackson库作为依赖项[^3]: 对于Maven构建工具而言,需在pom.xml文件内加入如下依赖声明: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version><!-- 版本号可根据实际情况调整 --> </dependency> ``` 另外一种方法是在Java配置类上标注@EnableWebMvc注解,并通过重写configureMessageConverters()方法显式注册MappingJackson2HttpMessageConverter实例到Spring容器中[^2]: ```java import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.List; @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); converters.add(jsonConverter); } } ``` 上述措施可以有效解决因缺乏适当的消息转换器而导致的内容类型为空的问题。如果仍然存在问题,则建议检查控制器层的方法签名以及@RequestMapping注解中的produces属性设置是否恰当。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值