控制器中的@ModelAttribute方法是
@ModelAttribute("command")
public A getA() {
...
}
@ModelAttribute
public void prepareData(@ModelAttribute("command") A a) {
...
}
我们正在使用Spring 4.2.6版本和As per Spring forum此问题已在4.1.0版本的spring中得到解决。当我部署项目时有时getA()在prepareData之前执行,有时prepareData()在getA()之前执行,但根据jira for above issue,它已在从4.1.0开始的所有spring版本中修复。你能否建议我在这里遗漏任何东西。
答案 0 :(得分:2)
您应该只使用@ModelAttribute标记'preparedData'而不是两者。标记这意味着它将在调用任何请求或控制器方法之前执行。
因此,如果'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
}