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

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

我看到该方法被调用,但某处@ResponseBody没有被正确翻译。 有人可以看看,让我知道问题是什么。 我已经在github上载了代码。 链接到github上的源代码

 @RequestMapping(value = "/find_user", method = RequestMethod.GET) public @ResponseBody List findUser(@RequestParam("term") String name) { log.info("Search string for user name: " + name); List users = new ArrayList(); users.add("Sam"); users.add("Dan"); return users; } 

浏览器屏幕截图下面有406响应

在此处输入图像描述

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

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

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

因此,解决此问题的方法之一是通过用.json替换.html来重命名映射中的URL。