주석 기반 컨트롤러 매핑 사용.스프링 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) {
}
}
이 매우 이상하고 매우 불편 :
나는로 변경. 누구나이 문제를 해결할 수있는 방법이 있습니까? 심지어 무슨 일이 벌어지고 있는지 디버그 할 수 있습니까?
나는 리졸버 (resolver)를 보았고, 이것이 성공했다. 이상하게도, 메서드에 대한 @DeleteMapping (주석)은 클래스 수준의 주석 (annotation)을 개선 한 것이라고 생각했습니다. 그렇지 않은 것 같습니다. – davetron5000