使用基于注释的控制器映射。Spring MVC对控制器映射非常困惑
@Controller
public class AlertsController {
@RequestMapping(value="create", method=RequestMethod.GET)
public void create(HttpServletRequest request, Model model) {
}
}
当访问alerts/create
,我得到的消息Does your handler implement a supported interface like Controller?
。这看起来很奇怪,与文档所说的相反。
所以,我在RequestMapping
添加到类:
@Controller
@RequestMapping("/alerts")
public class AlertsController {
@RequestMapping(value="create", method=RequestMethod.GET)
public void create(HttpServletRequest request, Model model) {
}
}
那么,这工作。我不应该需要@RequestMapping
,但我确实需要。现在,事情变得怪异。我真的想这个到`/型材/警报,所以我把它改成这样:
@Controller
@RequestMapping("/profile/alerts")
public class AlertsController {
@RequestMapping(value="create", method=RequestMethod.GET)
public void create(HttpServletRequest request, Model model) {
}
}
,我得到一个404去profile/alerts/create
的时候,但它仍然被映射到/alerts/create
出于某种原因? ?!?!
我将其更改为:
@Controller
@RequestMapping("foobar")
public class AlertsController {
@RequestMapping(value="create", method=RequestMethod.GET)
public void create(HttpServletRequest request, Model model) {
}
}
这是很奇怪的,令人难以置信的不便。任何人都有办法解决这个问题,甚至可以调试发生了什么?
我有视图解析器,这确实奏效。奇怪的是我认为方法上的@ RequestMapping注解是对类级注释的改进;它似乎不是。 – davetron5000 2009-11-28 14:45:20