关于全局统一响应

来源: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

//img.mukewang.com/szimg/62b1634209838e8510420662.jpg

附代码:

在mvc-config中增加一个配置类,代码如下:

@Configurationpublic 
class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(0, new MappingJackson2HttpMessageConverter());
    }
}


0
0

qq__8876

2022-03-23

你看看CommonResponseDataAdvice,应该是写得有问题,要把代码贴出来才能看到具体什么问题
0
0

Spring Cloud / Alibaba 微服务架构实战

从架构设计到开发实践,手把手实现

1210 学习 · 674 问题

查看课程