我有两个带String title
字段的类。他们有类似的名词setTitle()
。当我在POST请求中将它们用作对象参数时,字段值将重写为Foo和Bar中的新值。在请求之前,Foo会在Controller
中填充。
public class Foo{
// ...
String title;
public void setTitle(String title){
this.title=title;
// ...
}
public class Bar {
// ...
String title;
public void setTitle(String title){
this.title=title;
// ...
}
}
@ModelAttribute
public void populateFoo(Model model){
Foo foo = Foo.getFromDb()
model.addAttribute(foo);
}
@RequestMapping
public String somePost(Foo foo, Bar bar, ...){
Bar newBar = new Bar();
newBar.setTitle(bar.getTitle());
}
当我在setTitle()
上调用newBar
时,setTitle()
上的方法Foo
也会被调用。
答案 0 :(得分:0)
不幸的是,没有简单的方法让Spring MVC区分 - 如果你提交一个名为title
的字段,那么所有具有title
的setter的复杂类型都将被设置。这可能是DTO可能提供帮助的地方,这种类型包含两种类型的字段,然后适当地实例化Foo
OR Bar
。