Java @ModelAttribute依赖项检查工作不正常

Java @ModelAttribute依赖项检查工作不正常,java,spring,spring-mvc,annotations,Java,Spring,Spring Mvc,Annotations,控制器中的@ModelAttribute方法是 @ModelAttribute("command") public A getA() { ... } @ModelAttribute public void prepareData(@ModelAttribute("command") A a) { ... } 我们使用的是Spring 4.2.6版本,这个问题已经在Spring的4.1.0版本中得到了解决。当我部署项目时,有时getA()在prepareData之前执行,有时prepareDa

控制器中的@ModelAttribute方法是

@ModelAttribute("command")
public A getA() {
...
}

@ModelAttribute
public void prepareData(@ModelAttribute("command") A a) {
...
}

我们使用的是Spring 4.2.6版本,这个问题已经在Spring的4.1.0版本中得到了解决。当我部署项目时,有时getA()在prepareData之前执行,有时prepareData()在getA()之前执行,但根据,它在从4.1.0开始的所有spring版本中都已修复。你能告诉我这里有什么遗漏吗

您应该只使用@modeldattribute标记“preparedData”,而不是同时标记这两个属性。标记为so意味着它将在调用任何请求或控制器方法之前执行

因此,如果“getA”是您的控制器方法,并且您希望在调用“A”之前对其进行预处理(在getA),那么您的方法应该是这样的

public A getA(@ModelAttribute("command") A a) { ... }

@ModelAttribute("command")
public A prepareData() { 
  return new A();//or some other way you want to populate values of A
}

您应该仅用@modeldattribute标记“preparedData”,而不是同时标记两者。标记为so意味着它将在调用任何请求或控制器方法之前执行

因此,如果“getA”是您的控制器方法,并且您希望在调用“A”之前对其进行预处理(在getA),那么您的方法应该是这样的

public A getA(@ModelAttribute("command") A a) { ... }

@ModelAttribute("command")
public A prepareData() { 
  return new A();//or some other way you want to populate values of A
}

感谢您的回复,请您浏览这些链接,并检查此处可用的测试用例@modeldattribute(“foo”)和@modeldattribute(“bar”)彼此不同,但如果您observe@Irfan这应该能很好地工作,模型属性相互依赖,但它不是同一个对象。您的意思是,我可以使用modelattribute注释任何数量的方法,并且可以具有相互依赖性,并且应该返回如下内容@modelattribute(“foo”)公共对象getFoo(){…}@modelattribute(“bar”)公共对象getBar(@modeldattribute(“foo”)Object foo){if(foo的某些条件){do stuff}}}感谢您的回复,您可以浏览这些链接,也可以查看@modeldattribute(“foo”)和@modeldattribute(“bar”)中可用的测试用例吗它们彼此不同,但如果您observe@Irfan这应该能很好地工作,模型属性相互依赖,但它不是同一个对象。您的意思是,我可以使用modelattribute注释任何数量的方法,并且可以具有相互依赖性,并且应该返回如下内容@modelattribute(“foo”)公共对象getFoo(){…}@modelattribute(“bar”)公共对象getBar(@modeldattribute(“foo”)对象foo){if(foo的某些条件){do stuff}}