Java - Spring MVC - Автоматически заполнять объект от отправки формы? - PullRequest
5 голосов
/ 05 февраля 2010

В ASP.NET MVC в контроллере я могу просто иметь объект из моей модели в качестве параметра в одном из моих методов, и отправка формы, обрабатываемая этим методом, автоматически заполняет объект.

Например:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(User u){...}

Пользовательский объект будет автоматически заполнен, чтобы быть из отправки формы.

Есть ли способ сделать это автоматически с помощью Spring MVC, и если да, то как мне это сделать?

Ответы [ 3 ]

3 голосов
/ 05 февраля 2010

В Spring MVC (с конфигурацией Spring MVC 2.5+ на основе аннотаций) это выглядит точно так же:

@RequestMapping(method = RequestMethod.POST)
public ModelAndView edit(User u) { ... }

Объект User будет заполнен автоматически. Вы также можете явно указать имя соответствующего атрибута модели с аннотацией @ModelAttribute (по умолчанию имя атрибута - это имя класса аргумента с декапитализированной первой буквой, т.е. "пользователь")

... (@ModelAttrbiute("u") User u) ...
1 голос
/ 05 февраля 2010

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/portlet/mvc/SimpleFormController.html#onSubmitAction(java.lang.Object)

Создайте контроллер формы, например PriceIncreaseFormController, и сделайте его расширенным SimpleFormController

переопределить метод public ModelAndView onSubmit(Object command) Есть много вариантов выше. Ищите правильный метод, который соответствует вашим потребностям. Для простого потока вышеуказанного метода должно быть достаточно.

Внутри метода вы можете набрать команду и получить класс Command.

commandObj = ((PriceIncrease) command)

commandObj будет иметь параметры, заполненные пружиной.

в вашем springapp-servlet.xml вы должны сообщить Spring о классе команд PriceIncrease следующим образом, а также вам нужно создать POJO для вашего класса команд.

<bean name="/priceincrease.htm" class="springapp.web.PriceIncreaseFormController">
    <property name="commandClass" value="springapp.service.PriceIncrease"/>

....

0 голосов
/ 05 февраля 2010

В Servlets нет, но в Spring MVC абсолютно. Взгляните на веб-фреймворк документы.

В частности Раздел 13.11.4 , 9-ая точка пули.

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