如果没有使用json转换器,在ajax请求的返回方法声明@ResponseBody时,会出现以下错误
"NetworkError: 406 Not Acceptable - http://uc.com:8081/login/check"
/login/check请求映射的方法如下
@RequestMapping("/login/check") @ResponseBody public Map<String, String> loginCheck(HttpServletRequest req) { Map<String, String> rs = new HashMap<String, String>(); rs.put("result", "success"); rs.put("message", "登录成功"); return rs; }
因为@ResponseBody声明,需要jackson包来处理,解决方法如下
一、引入jackson包
在pom.xml中声明以导入jackson包
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.13</version> </dependency>
二、配置spring.xml
在Spring配置文件中加上一下内容
<!-- 注册json转换器,并自定义日期格式转换--> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper"> <bean class="org.mastiff.tools.ToolJacksonDateFormat"></bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
如果不需要额外配置(这里是日期格式处理),这里其实只需要一行
<mvc:annotation-driven/>
org.mastiff.ToolJacksonDateFormat类用于日期格式转换,将所有日期转换成yyyy-MM-dd HH:mm:ss格式,源码
package com.ywlaker.tools; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializerProvider; import org.codehaus.jackson.map.ser.CustomSerializerFactory; /** * @功能描述:jackson转json时格式化日期显示,全局设置 * @author yang.wei * @time 2015年8月18日 下午2:43:14 * @version 0.0.1 */ public class ToolJacksonDateFormat extends ObjectMapper { public ToolJacksonDateFormat() { CustomSerializerFactory factory = new CustomSerializerFactory(); factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){ @Override public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider arg2) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(date)); }}); this.setSerializerFactory(factory); } }
时间: 2024-10-12 10:25:26