项目场景:
例如:项目场景:导出Excel报错 但不影响功能
问题描述
例如:导出Excel的时候setContentType(“application/vnd.ms-excel”)
并且返回自定义的Result时报错但不影响功能。(无论是否成功都会报错)
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), t).sheet("模板").doWrite(data);
return 1;
}catch (IOException e){
e.printStackTrace();
return 0;
}
---------------------------
if (code == 1) {
return AjaxResult.success(fileName);
} else {
return AjaxResult.error("导出失败!");
}
----------------------------
exception: No converter for [class xxxxxx] with preset Content-Type 'application/vnd.ms-excel;charset=UTF-8']
原因分析:
没有转换器,
内含内含预设的内容类型[’application/vnd.ms-excel;charset=UTF-8’]
解决方案:
- 返回空 void
- 配置fastjson消息转换器
WebMvcConfigurer->configureMessageConverters
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//调用父类的配置
WebMvcConfigurer.super.configureMessageConverters(converters);
//创建FastJson的消息转换器
FastJsonHttpMessageConverter convert = new FastJsonHttpMessageConverter();
//创建FastJson的配置对象
FastJsonConfig config = new FastJsonConfig();
//对Json数据进行格式化
config.setSerializerFeatures(SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullNumberAsZero,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteNullBooleanAsFalse,
SerializerFeature.WriteMapNullValue,
//禁止循环引用
SerializerFeature.DisableCircularReferenceDetect);
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
config.setCharset(StandardCharsets.UTF_8);
convert.setFastJsonConfig(config);
convert.setSupportedMediaTypes(getSupportedMediaTypes());
converters.add(convert);
}
public List<MediaType> getSupportedMediaTypes() {
//创建fastJson消息转换器
List<MediaType> supportedMediaTypes = new ArrayList<>();
supportedMediaTypes.add(MediaType.APPLICATION_JSON);
supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML);
supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);
supportedMediaTypes.add(MediaType.APPLICATION_PDF);
supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML);
supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML);
supportedMediaTypes.add(MediaType.APPLICATION_XML);
supportedMediaTypes.add(MediaType.IMAGE_GIF);
supportedMediaTypes.add(MediaType.IMAGE_JPEG);
supportedMediaTypes.add(MediaType.IMAGE_PNG);
supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM);
supportedMediaTypes.add(MediaType.TEXT_HTML);
supportedMediaTypes.add(MediaType.TEXT_MARKDOWN);
supportedMediaTypes.add(MediaType.TEXT_PLAIN);
supportedMediaTypes.add(MediaType.TEXT_XML);
supportedMediaTypes.add(MediaType.ALL); //主要是这里
return supportedMediaTypes;
}