我发现很多关于这个问题的问题,但我没有解决...... 我有这个方法:
@RequestMapping(value="/testInit")
public @ResponseBody Output test() throws Exception {
return new Output(true);
}
我有jackson libreary到classpath,进入applicationContext但是我仍然在这个jquery调用中得到406错误:
$.ajax({
url: "/testInit",
type: "get",
dataType: "json"
});
答案 0 :(得分:4)
您必须添加jar并将org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
和org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
添加到DispatcherServlet-servlet.xml
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
如上所示。
答案 1 :(得分:0)
当客户端请求服务器无法返回的内容类型时,将使用406 Not Acceptable
响应。换句话说,您的客户端(例如Web浏览器)正在发送与服务器功能不匹配的Accept
标头。
我猜测jQuery Ajax方法在设置dataType
标头时使用Accept
字段。 json
不是众所周知的内容类型 - 但application/json
是。
尝试将dataType: "json"
替换为dataType: "application/json"
。
答案 2 :(得分:0)
我解决了使用jackson-all.1.9.0.jar而不是jackson 2库。
答案 3 :(得分:0)
我能让我工作的唯一方法是将spring升级到3.1并在请求映射中添加一个产品。
@RequestMapping(value = "/rest/{myVar}", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public MyObject get(
@PathVariable String myVar) {
其他解决方案都不适合我
答案 4 :(得分:0)
我遇到了这个问题,最后被追踪到我正在使用的课上没有任何吸气剂。
即。这造成了406
public static class Pojo {
private int x;
public Pojo(int x) {
this.x = x;
}
}
但这并没有
public static class Pojo {
private int x;
public Pojo(int x) {
this.x = x;
}
public int getX() {
return x;
}
}
是的我正在使用一个名为Pojo的课程:) - 我只是在做一个虚拟的例子来检查杰克逊是否在我的新设置中工作