406不可接受:弹簧3.2+;JSON+;AJAX

406不可接受:弹簧3.2+;JSON+;AJAX,ajax,json,jquery,spring-mvc,Ajax,Json,Jquery,Spring Mvc,搜索了数以吨计的网站,甚至stackoverflow,但没有找到解决这个问题的方法。看起来很多人都遇到过这个问题,但似乎缺少一个涵盖所有方面的统一解决方案。已经花了1.5天了 我看到该方法正在被调用,但在某个地方,@ResponseBody没有得到正确的翻译。有人能看一下,让我知道问题出在哪里吗。我已经在github上上传了代码 @RequestMapping(value=“/find_user”,method=RequestMethod.GET) public@ResponseBody列表fi

搜索了数以吨计的网站,甚至stackoverflow,但没有找到解决这个问题的方法。看起来很多人都遇到过这个问题,但似乎缺少一个涵盖所有方面的统一解决方案。已经花了1.5天了

我看到该方法正在被调用,但在某个地方,
@ResponseBody
没有得到正确的翻译。有人能看一下,让我知道问题出在哪里吗。我已经在github上上传了代码

@RequestMapping(value=“/find_user”,method=RequestMethod.GET)
public@ResponseBody列表findUser(@RequestParam(“术语”)字符串名){
log.info(“用户名搜索字符串:“+name”);
列表用户=新建ArrayList();
用户。添加(“Sam”);
用户。添加(“Dan”);
返回用户;
}
浏览器屏幕截图如下,406响应


请注意:啊!多痛苦啊。这个设置适用于Spring3.1.4,而不是3.2.X。天哪,它几乎要了我的命。我尽我所能尝试了,但仍然停留在那里。但我终于明白了。原因是Spring,下载Spring3.1.1并用3.1.1JAR替换所有JAR,它就可以工作了。你所有的配置都很好。

我也遇到了同样的问题。调试Spring后,我发现
ServletPathExtensionContentNegotiationStrategy
尝试根据URL中的扩展来确定媒体类型。(可能是因为在我的例子中,它无法从包含
*/*
Accept
头推断出它应该返回的媒体类型。)


因此,解决这一问题的一种方法是在映射中重命名URL,将
.html
替换为
.json

由于个人原因无法签出您的代码,但首先,为什么要添加jackson jar?似乎spring可以满足您的要求。@OQJF您是对的。无需添加这些jar[
jackson-mapper-asl-1.9.2和jackson-core-asl-1.9.12
],但没有这些jar的效果仍然相同。仍然得到
406
错误。当我回家时,我会检查你的代码并检查原因,无论如何我认为这只是一个小错误。@OQJF谢谢。我会非常感激的。它是如何工作的,我应该降级吗,它真正的痛苦,有人帮助,同样的问题,我还添加了jackson mapper和jackson core,但仍然是同样的问题,是春季问题吗?你确定吗?请回答:但是Spring3.2版本有什么问题?[link]()查看链接。。他们说升级。啊!!!我将降级。谢谢我很快就会尝试。有几个版本都有这个问题,似乎它仍然存在。再次感谢您关注这个问题。正在下载以前版本的Spring。请注意:此设置现在对我有效。。只需重新添加Jackson jar文件。用一个有用的事实纠正答案!!
@RequestMapping(value = "/find_user", method = RequestMethod.GET)
public @ResponseBody List<String> findUser(@RequestParam("term") String name) {
    log.info("Search string for user name: " + name);   
    List<String> users = new ArrayList<String>();
    users.add("Sam");
    users.add("Dan");
    return users;
}