使用基於註釋的控制器映射。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