其实前面一篇关于zTree返回JSON数据的文章已经有一种解决方案了,但是当我今天在新公司搭建新环境的时候,发现决然又不行了,所以我觉得那应该不是最优的解决方案。
说起来,我以前接触到的一个项目,根本没有配置spring的文件,就直接用@ResponseBody可以返回JSON数据,不知道其中的秘诀在什么地方,搞不懂了。
今天主要提供另一个解决@ResponseBody返回JSON数据,页面抛出406错误的解决方案。
第一步,引入包:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.2.3</version> </dependency>
第二步,修改Spring MVC的配置文件,增加如下代码:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean>
再次测试,解决问题。
测试代码如下:
1、JAVA代码
/** * 通过注解@ResponseBody返回JSON数据 * * @return */ @RequestMapping("getdatabyresponsebody.json") public @ResponseBody Map<String, Object> getAjaxDataByResponseBody() { System.out.println("通过注解@ResponseBody返回JSON数据"); Map<String, Object> map = new HashMap<String, Object>(); map.put("success", true); map.put("message", "Successfully returning the data."); return map; }
2、JS代码
function getAjaxDataByResponseBody(){ $.ajax({ url:‘ajax/getdatabyresponsebody.json‘, type:‘post‘, dataType:‘json‘, success:function(data){ alert(data.success); alert(data.message); }, error:function(){ alert(‘System is wrong.‘); } }); }
时间: 2024-10-20 11:12:46