【发布时间】:2011-07-13 05:21:27
【问题描述】:
来自 Struts2 我习惯于在超类(或 package-info.java)上声明 @Namespace 注释,继承类随后会获取其祖先的 @Namespace 注释中的值并将其添加到请求中动作的路径。我现在正在尝试在 Spring MVC 中使用 @RequestMapping 注释做类似的事情,如下所示(为简洁起见,代码被修剪):
package au.test
@RequestMapping(value = "/")
public abstract class AbstractController {
...
}
au.test.user
@RequestMapping(value = "/user")
public abstract class AbstractUserController extends AbstractController {
@RequestMapping(value = "/dashboard")
public String dashboard() {
....
}
}
au.test.user.twitter
@RequestMapping(value = "/twitter")
public abstract class AbstractTwitterController extends AbstractUserController {
...
}
public abstract class TwitterController extends AbstractTwitterController {
@RequestMapping(value = "/updateStatus")
public String updateStatus() {
....
}
}
-
/按预期工作 -
/user/dashboard按预期工作 - 但是,当我期望
/user/twitter/updateStatus工作时,它却没有工作,检查日志我可以看到一个看起来像这样的日志条目:
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - 将 URL 路径 [/tweeter/updateStatus] 映射到处理程序 '推特控制器'
是否有我可以启用的设置来扫描超类中的@RequestMapping 注释并构造正确的路径?
我还认为在package-info.java 中的包上定义@RequestMapping 是非法的?
【问题讨论】:
标签: java spring-mvc