Как разделить отображение запроса Spring MVC по значению параметра - PullRequest
9 голосов
/ 09 февраля 2012

В Spring MVC 3 я хочу обрабатывать один и тот же URL с двумя разными классами контроллеров - в зависимости от значения параметра url. @ RequestMapping у аннотации даже есть такое поле: params , и я подумал, что следующим будет два разных отображения (я использую отображение на уровне класса):

@RequestMapping(value = "/myurl", params = "name=val1")

и

@RequestMapping(value = "/myurl", params = "name=val2")

но это не так. Spring вызывает исключение для второго случая, когда контроллер для / myurl уже сопоставлен (по первому случаю).

Есть ли какое-то точное решение для разделения запросов на запросы по параметрам? Может быть расширение @RequestMapping или использование прокси в качестве контроллера и вызов различных контроллеров в зависимости от параметра ... Есть мысли?

UPDATE Это работает, но только на уровне методов, а не на уровне класса ... Это будет:

@Controller
@RequestMapping(value = "/myurl")
public class Class123 {

    @RequestMapping(value = {"edit.htm"}, params = "src=1")
    public String open1(Map<String, Object> map) throws Exception {....}

    @RequestMapping(value = {"edit.htm"}, params = "src=2")
    public String open2(Map<String, Object> map) throws Exception {....}
}

это не будет:

@Controller
@RequestMapping(value = "/myurl", params = "src=1")
public class Class123_1 {

    @RequestMapping(value = {"edit.htm"})
    public String open(Map<String, Object> map) throws Exception {....}
}


@Controller
@RequestMapping(value = "/myurl", params = "src=2")
public class Class123_2 {

    @RequestMapping(value = {"edit.htm"})
    public String open(Map<String, Object> map) throws Exception {....}
}

И я бы хотел разделить логику на разные классы.

1 Ответ

1 голос
/ 14 февраля 2012

Звучит как разница между использованием RequestMappingHandlerMapping (новинка в Spring 3.1) и DefaultAnnotationHandlerMapping (класс заменен на RequestMappingHandlerMapping).

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