Как Spring MVC превращает значения форм в объекты? - PullRequest
1 голос
/ 01 февраля 2012

Я использую Spring 3.0.

Я знаю, что когда мой контроллер вызывается, мой компонент формы заполняется Spring путем оценки параметров запроса и выполнения необходимых преобразований.

Допустим, у меня есть следующая разметка

<form action="test">
  <input type="text" name="user.username"/>
  <input type="submit" value="save"/>
</form>

И у меня есть следующие контроллер и классы:

public class MyController
{
  @RequestMapping(...)
  public void myHandler( @ModelAttribute MyForm myForm, ResultBinding result )
  {
    // do something here
  }
}

public class MyForm
{
  private User user;

  // Getters and setters included
}

public class User
{
  private username;

  // Getters and setters included
}

Моя проблема в том, что Spring MVC не использует мои сеттеры для установки свойств моих объектов. Могу ли я что-то сделать, чтобы заставить Spring MVC использовать сеттеры для установки свойств моих объектов? Где в документации Spring говорится, как Spring это делает?

Ответы [ 3 ]

0 голосов
/ 01 февраля 2012

Вам необходимо аннотировать параметр вашего метода с помощью @ModelAttribute:

public void myHandler( @ModelAttribute("myForm") MyForm myForm, ResultBinding result )

И есть метод для предоставления экземпляра объекта вашей модели:

@ModelAttribute("myForm")
public MyForm getMyForm() {
  return new MyForm();
}

См. Это: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib

0 голосов
/ 02 октября 2013

Вы пытались использовать библиотеку тегов Spring Form?
http://docs.spring.io/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.form

0 голосов
/ 01 февраля 2012

Spring MVC для этого использует реализации PropertyEditorSupport .

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