Spring MVC isFormSubmission () эквивалентен для аннотаций? - PullRequest
2 голосов
/ 13 мая 2009

В Spring MVC легко выразить такую ​​концепцию, как «Пользователь отправляет форму, если он использует POST или если он включает параметр« isSubmit »». Вы бы просто расширили SimpleFormController и переопределили метод isFormSubmission.

Однако Spring MVC теперь использует такие аккуратные аннотации, как @RequestMapping, для обработки запросов. @RequestMapping имеет очевидный фильтр того, использовал ли кто-то GET или POST, но я не вижу никакой внутренней поддержки всей полезной логики, предоставляемой SimpleFormController. Это все еще доступно мне с аннотациями?

Ответы [ 4 ]

1 голос
/ 18 мая 2009

Итак, после небольшого исследования есть несколько способов справиться с этой ситуацией.

Первый способ - использовать SimpleFormController с аннотацией @RequestMapping на уровне класса. Менее известное, но довольно классное свойство @RequestMapping заключается в том, что он прекрасно знает, как обращаться с классами, реализующими интерфейс Spring * Controller. Единственным недостатком здесь является то, что я все еще использую старые интерфейсы и классы MVC, и они будут устаревшими в Spring 3.0.

Второй путь был отмечен Кгианнакакисом выше. Просто создайте метод @RequestMapping для каждого способа, которым может быть вызван submit, и пусть все они просто вызывают один метод submit, либо в стиле конструктора, либо с помощью какого-то частного метода. Просто и легко понять. Спасибо, кгианнакакис!

0 голосов
/ 15 сентября 2009

Остальные перечисленные ответы работают нормально для метода, аннотированного @RequestMapping.

Однако, если вы хотите добиться того же самого в методе, аннотированном @InitBinder, вы можете просто сделать это:

@InitBinder
public void initBinder(HttpServletRequest request) {
    if ("POST".equals(request.getMethod()){
        //Do something
    }
}
0 голосов
/ 17 августа 2009

Вот один пример использования отображений пути:

    @RequestMapping(params = "formAction=APPROVE", method = RequestMethod.POST)
    public String myMethod ()....

Этот метод будет вызываться только для тех POST, где есть поле с именем "formAction" со значением "APPROVE".

0 голосов
/ 13 мая 2009

Копирование с здесь :

Path mappings can be narrowed through parameter conditions: a sequence of 
"myParam=myValue" style expressions, with a request only mapped if each such 
parameter is found to have the given value. "myParam" style expressions are 
also supported, with such parameters having to be present in the request
(allowed to have any value). Finally, "!myParam" style expressions indicate 
that the specified parameter is not supposed to be present in the request.

Вы можете использовать параметры RequestMapping только для определения желаемой функциональности. Контроллер аннотаций не реализует никакого интерфейса для работы.

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