查阅资料,大都表示需要 加入依赖的jar,jackson-core-asl-1.9.12.jar,jackson-mapper-asl-1.9.12.jar问题解决。
经测试不是这个错误不是必须依赖这两个 jar。
如下配置正常返回数据
pom.xml
<!-- Jackson JSON Processor -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
springMvc.xml 中
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<value>text/xml;charset=utf-8</value>
<value>text/plain;</value>
<value>text/json;charset=utf-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
Controller中
@RequestMapping(value = "checkLogin", method = RequestMethod.POST)
@ResponseBody
public ResultDto checkLogin(String name, String password, int role) {
return loginService.checkLogin(name, password, role);
}
-------------------------------------------------------------------------------
ResultDTO对象缺少部分 get 方法导致 格式化 JSON 对象时出错。
移除 上面2个 jar 与返回对象的 get 方法进行测试,报406错误码。
debug 代码 于 ServletInvocableHandlerMethod.class 中捕获异常 "Could not find acceptable representation"
添加 get 方法后测试正常返回该对象的 JSON 字符
public class ResultDto {
private boolean succeed;
private Object data;
public ResultDto(boolean succeed) {
this.succeed = succeed;
}
public ResultDto(boolean succeed, Object data) {
this.succeed = succeed;
this.data = data;
}
/*
public boolean isSucceed() {
return succeed;
}
public Object getData() {
return data;
}
*/
public void setSucceed(boolean succeed) {
this.succeed = succeed;
}
public void setData(Object data) {
this.data = data;
}
}