Я использую Spring MVC с настройкой аннотации.У меня есть класс контроллера для обработки HTTP GET-вызовов:
@Controller
@RequestMapping("/form")
public class FormController {
@RequestMapping(value = "/{table}/{identifier}/edit", method = RequestMethod.GET)
public ModelAndView getEditView(ModelMap map, @PathVariable String table, @PathVariable Object identifier) {
//generate the view for this record
}
, и контроллер для обработки формы отправляет на этот URL-адрес
@Controller
@RequestMapping("/form")
public class FormSaveController {
@RequestMapping(value = "/{table}/{identifier}/edit", method = RequestMethod.POST)
public ModelAndView saveView(WebRequest request, @PathVariable String table, @PathVariable Object identifier) {
//save the updated values and redirect to view
}
Когда я пытаюсь запустить свой контейнер, Spring жалуется
Caused by: java.lang.IllegalStateException: Cannot map handler 'FormSaveController' to URL path [/form/{table}/{identifier}/edit]: There is already handler of type [class com.company.web.FormController] mapped.
Похоже, что то, что я пытаюсь сделать, не поддерживается в Spring.Причина, по которой я пытаюсь отделить контроллер для генерации формы от контроллера, сохраняющего форму, потому что я использую Springs @ExceptionHandler
для обработки любых возникающих исключений времени выполнения, и я хотел бы обработать исключение для отображения представления иначе, чемисключение для сохранения записи.
Есть ли другой способ обработки того, что я пытаюсь сделать (использовать аннотацию Springs @ExceptionHandler
для определенных типов запросов?)