问题
使用ResponseBodyAdvice统一返回报cannot be cast to java.lang.String
的错误,如下图所示。
解决方法
方案1
网上给出的方案是:在beforeBodyWrite方法中添加类型判断,如果是String类型,则对returnValue进行一次序列。
方案2
因为在所有的 HttpMessageConverter
实例集合中,StringHttpMessageConverter
要比其它的 Converter
排得靠前一些。我们需要将处理 Object
类型的 HttpMessageConverter
放得靠前一些,这可以在 Configuration
类中完成:
代码如下:
@Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.configureMessageConverters(converters); converters.add(0, new MappingJackson2HttpMessageConverter()); } }