Caused by: org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class com.pinzhi.dtm.common.core.util.R] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8'
时间: 2023-12-18 22:05:17 浏览: 228
这个错误提示表明在处理HTTP响应消息时,Spring无法找到一个合适的转换器来将响应对象转换为指定的Content-Type。在你的情况下,响应对象是一个类型为`com.pinzhi.dtm.common.core.util.R`的对象,而Content-Type被设置为`application/vnd.ms-excel;charset=utf-8`。
要解决这个问题,你需要在你的应用程序中定义一个适当的HTTP消息转换器,可以将`com.pinzhi.dtm.common.core.util.R`对象转换为`application/vnd.ms-excel;charset=utf-8`格式的响应。通常情况下,你需要在Spring的配置文件中定义一个自定义的消息转换器,并将其注册到应用程序的`WebMvcConfigurer`中。
例如,在你的`WebMvcConfigurer`实现类中,你可以添加如下代码:
```java
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MyHttpMessageConverter());
}
}
public class MyHttpMessageConverter extends AbstractHttpMessageConverter<R> {
public MyHttpMessageConverter() {
super(new MediaType("application", "vnd.ms-excel", Charset.forName("utf-8")));
}
@Override
protected boolean supports(Class<?> clazz) {
return R.class.isAssignableFrom(clazz);
}
@Override
protected R readInternal(Class<? extends R> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
throw new UnsupportedOperationException("Not supported");
}
@Override
protected void writeInternal(R r, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
// TODO: 将R对象转换为Excel格式的数据,并写入到outputMessage中
}
}
```
在上面的代码中,我们定义了一个名为`MyHttpMessageConverter`的自定义HTTP消息转换器,用于将`com.pinzhi.dtm.common.core.util.R`对象转换为`application/vnd.ms-excel;charset=utf-8`格式的响应。在实现`writeInternal`方法时,你需要将`R`对象转换为Excel格式的数据,并将其写入到`outputMessage`中。
阅读全文