关于全局统一响应
来源:3-5 工程通用与配置两大基础模块(下)

csrdan
2022-03-23
老师好,遇到一个问题:
我在Controller层,对get请求返回一个字符串
发现会在全局统一响应的CommonResponse中抛出
“commerce service has error: [com.xxx.xxx.vo.CommonResponse cannot be cast to java.lang.String]” 错误
打断点测试,发现是在封装成 CommonResponse 时,当传入的data的数据类型是 String 时,会出现此报错
代码如下:
@GetMapping("/xxx/xxxx/xxxx")
public String mappingConfigInfo() {
return JSON.toJSONString(tableService.readMappingConfig(), SerializerFeature.WriteMapNullValue);
}
我的疑惑:为什么泛型 T 在接收 String 时,会出现上述错误,遇到这种问题有什么处理的方法呢?
谢谢!
写回答
2回答
-
csrdan
提问者
2022-06-21
找到解决办法,这个问题不是泛型接收String造成的,是controller返回String类型,进行统一包装造成的,用如下方式顺利解决了问题。
ps:它的说明没太看懂,但方法实测有效,文章链接:https://zhuanlan.zhihu.com/p/413133915。
附代码:
在mvc-config中增加一个配置类,代码如下:
@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(0, new MappingJackson2HttpMessageConverter()); } }
00 -
qq__8876
2022-03-23
你看看CommonResponseDataAdvice,应该是写得有问题,要把代码贴出来才能看到具体什么问题
00
相似问题