Java SpringMVC如何将表单值转换为对象?

Java SpringMVC如何将表单值转换为对象?,java,forms,spring-mvc,Java,Forms,Spring Mvc,我正在使用Spring3.0 我知道,当我的控制器被调用时,我的表单bean将通过计算请求参数并进行必要的转换而由Spring填充 假设我有以下标记 <form action="test"> <input type="text" name="user.username"/> <input type="submit" value="save"/> </form> 我的问题是SpringMVC没有使用任何setter来设置对象的属性。我可

我正在使用Spring3.0

我知道,当我的控制器被调用时,我的表单bean将通过计算请求参数并进行必要的转换而由Spring填充

假设我有以下标记

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



我的问题是SpringMVC没有使用任何setter来设置对象的属性。我可以强制SpringMVC使用setter来设置对象的属性吗?在Spring文档中,说明Spring是如何做到这一点的?

Spring MVC为此使用的实现。

您需要用
@ModelAttribute
注释您的方法参数:

public void myHandler( @ModelAttribute("myForm") MyForm myForm, ResultBinding result )
并具有提供模型对象实例的方法:

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

请参见:

您尝试过使用spring表单标记库吗?

这是否意味着Spring没有真正使用setter来设置属性?你能详细说明一下吗?我想它会将你的值注入到字段中,而不是使用setter,是的。Oracle文档(和)并不是100%清楚这一点,它实际上是有注释的。但这不是重点。我将表单值放入bean的属性中。问题是Spring没有使用setters方法来设置属性。
public class User
{
  private username;

  // Getters and setters included
}
public void myHandler( @ModelAttribute("myForm") MyForm myForm, ResultBinding result )
@ModelAttribute("myForm")
public MyForm getMyForm() {
  return new MyForm();
}