Spring MVC类似的二传手

时间:2015-05-12 02:08:46

标签: java spring spring-mvc

我有两个带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也会被调用。

1 个答案:

答案 0 :(得分:0)

不幸的是,没有简单的方法让Spring MVC区分 - 如果你提交一个名为title的字段,那么所有具有title的setter的复杂类型都将被设置。这可能是DTO可能提供帮助的地方,这种类型包含两种类型的字段,然后适当地实例化Foo OR Bar