标签:
如果没有使用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包来处理,解决方法如下
在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配置文件中加上一下内容
<!-- 注册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);
}
}
标签:
原文地址:http://www.cnblogs.com/ywlaker/p/4798455.html