我正在使用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是如何做到的?
答案 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();
}
答案 2 :(得分:0)