【问题标题】:How does Spring MVC turn form values into objects?Spring MVC 如何将表单值转化为对象?
【发布时间】:2012-02-01 11:42:47
【问题描述】:

我正在使用 Spring 3.0。

我知道当我的控制器被调用时,Spring 通过评估请求参数并进行必要的转换来填充我的表单 bean。

假设我有以下标记

<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 是如何做到这一点的?

【问题讨论】:

    标签: java forms spring-mvc


    【解决方案1】:

    Spring MVC 为此使用 PropertyEditorSupport 的实现。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 其实是有注释的。但这不是重点。我正在将表单值放入我的 bean 的属性中。问题是Spring没有使用setters方法来设置属性。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2021-07-06
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      相关资源
      最近更新 更多