Spring @Controller Разделение отображений GET и POST - PullRequest
3 голосов
/ 23 мая 2011

Я использую 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 для определенных типов запросов?)

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Вы пробовали использовать в том же классе?Я думаю, что это сработало бы.Если вы хотите использовать ExceptionHandler, попробуйте HandlerExceptionResolver

2 голосов
/ 23 мая 2011

Причина, по которой я пытаюсь отделить контроллер для генерации формы от контроллера, сохраняющего форму, потому что я использую пружины @ExceptionHandler для обработки любых возникающих исключений времени выполнения, и я хотел бы обработать исключение дляотображение представления иначе, чем исключение для сохранения записи

Я мог бы представить, что ваш движок шаблонов представления будет генерировать исключения иерархии типов, отличные от исключений, с которыми сталкиваются при сохранении записей в вашем хранилище данных.Возможно, проще всего поместить эти методы в один и тот же класс, а затем просто решить вашу проблему @ExceptionResolver, сопоставив исключения типа механизма представления одним способом, а исключения БД - другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...