406不可接受:Spring 3.2 + JSON + AJAX

时间:2013-03-28 01:50:33

标签: ajax json jquery spring-mvc

搜索了大量网站甚至堆栈溢出但未找到解决此问题的方法。看起来很多人都遇到过这个问题,但似乎缺少一个统一的解决方案,包含了所有方面。已经花了1.5天就可以了。

我看到该方法已被调用但某处@ResponseBody未正确翻译。有人可以看看,让我知道问题是什么。我已经在github上载了代码。 Link to source code on github

@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;
}

下面的浏览器屏幕显示406响应

enter image description here

请注意:啊!多么痛苦此设置适用于Spring 3.1.4,而不适用于3.2.X

2 个答案:

答案 0 :(得分:5)

上帝,它几乎杀了我。我尽我所能,仍然坚持到那里。但最后我想通了。原因是Spring,下载Spring 3.1.1并用3.1.1jars替换所有的jar,它的工作原理。你所有的配置都很好。

答案 1 :(得分:2)

我也遇到了同样的问题。调试Spring后,我发现ServletPathExtensionContentNegotiationStrategy尝试根据URL中的扩展名确定媒体类型。 (可能是因为在我的案例中,它无法推断出应该从包含Accept的{​​{1}}标题中返回哪种媒体类型。)

因此,解决此问题的方法之一是通过将*/*替换为.html来重命名地图中的网址。