本文主要是介绍若依AjaxResult的get(AjaxResult.CODE_TAG)有时返回的200,有时返回的字符串“200“,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个项目是多模块项目,之前通过web json格式,多模块之前传输用的RestTemplate,但是对接其它系统时要用XML就添加了XML的依赖。
原来
原来ajaxResult.get(AjaxResult.CODE_TAG).equals(200)能返回true,
现在get(AjaxResult.CODE_TAG).equals(200)返回false。
现在
现在get(AjaxResult.CODE_TAG).equals(200)返回false。
现在get(AjaxResult.CODE_TAG).equals("200")返回true,很奇怪,必须得用字符串。
配置RestTemplate
@Configuration
public class AppConfig {@Beanpublic RestTemplate restTemplate() {RestTemplate restTemplate = new RestTemplate();// 确保添加了正确的HttpMessageConverterList<HttpMessageConverter<?>> messageConverters = new ArrayList<>();messageConverters.add(new MappingJackson2HttpMessageConverter());restTemplate.setMessageConverters(messageConverters);return restTemplate;}
}
配置后恢复正常了。
问题解析
添加XML依赖后,可能改变了RestTemplate默认的消息转换器(HttpMessageConverter)的行为或顺序。当你的服务接收到响应后,如果没有适当的配置,RestTemplate可能使用不适当的转换器处理响应数据,导致数据类型的差异。
- 原始行为:在添加XML依赖之前,可能MappingJackson2HttpMessageConverter(处理JSON)是默认的转换器,它将数字200(来自JSON响应)直接转换成Java中的Integer类型。
- 变化后的行为:添加XML依赖后,可能引入了额外的转换器(如处理XML的转换器),这可能影响了响应的解析方式。如果RestTemplate默认使用了一个将所有数字视为字符串的转换器,那么即使响应体中是数字200,它也可能被解析为字符串"200"。
解决方案
在AppConfig中显式设置了RestTemplate的消息转换器,只添加了MappingJackson2HttpMessageConverter。这确保了不论XML依赖如何,解析JSON时都将使用这个转换器。这个转换器将正确地将JSON中的数字200解析为Java的Integer,从而get(AjaxResult.CODE_TAG).equals(200)返回true。
这篇关于若依AjaxResult的get(AjaxResult.CODE_TAG)有时返回的200,有时返回的字符串“200“的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!