Spring MVC如何将表单值转换为对象?

时间:2012-02-01 11:42:48

标签: java forms spring-mvc

我正在使用Spring 3.0。

我知道当我的控制器被调用时,我的表单bean会被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没有使用我的任何setter来设置我的对象的属性。有什么办法可以强制Spring MVC使用setter来设置对象的属性吗?在Spring文档中哪里说Spring是如何做到的?

3 个答案:

答案 0 :(得分:0)

Spring MVC使用PropertyEditorSupport的实现。

答案 1 :(得分:0)

您需要使用@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

答案 2 :(得分:0)