3

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

我看到该方法正在被调用,但某处@ResponseBody没有正确翻译。有人可以看看,让我知道问题是什么。我已经在github上上传了代码。链接到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 响应

在此处输入图像描述

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

4

2 回答 2

5

天哪,差点要了我的命。我尽我所能,仍然卡在那里。但最后我想通了。原因是Spring,下载Spring 3.1.1,将所有jar替换为3.1.1jar,就可以了。你所有的配置都很好。

于 2013-03-28T06:32:38.523 回答
2

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

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

于 2013-11-25T10:43:30.703 回答