【发布时间】:2016-05-26 05:54:57
【问题描述】:
我有以下控制器:
@RestController
@RequestMapping(value = "/base/url")
public class MyController {
@RequestMapping(
value = "/child/url",
method = RequestMethod.POST
)
@ResponseBody
public String mmm() {
return "Ok";
}
}
现在它可以工作了(服务器响应 Ok),但我认为 @ResponseBody 是多余的,因为我们使用了 @RestController 并删除了 @ResponseBody 注释
我看到以下服务器响应:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body>
<h2>HTTP ERROR 404</h2>
<p>Problem accessing /base/url/child/url/Ok. Reason:
<pre> Not Found</pre>
</p>
<hr />
<i>
<small>Powered by Jetty://</small>
</i>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
</body>
</html>
你能解释一下这种行为吗?
附言
春季版:4.1.6.RELEASE
附言
我只找到了与 mvc config 相关的这部分:
<context:annotation-config/>
<context:component-scan base-package="base.package"/>
【问题讨论】:
-
这很有趣。似乎@RestController 没有绕过 viewResolver
-
我昨天确实遇到了同样的问题!仅当我包含
viewResolver和多余的@ResponseBody注释时才解决。 -
确保你不是在调用
/base/url/child/url/Ok,而是/base/url/child/url -
@jfcorugedo 我绝对确定
-
这与 mvc 无关。如果没有
<mvc:annotation-driven />,您正在使用旧的不推荐使用的类...添加'` 以启用支持 @RestController的新类。旧的不会并将@RestController视为@Controller。
标签: java spring rest spring-mvc controller