要使xwork的action交给spring管理,只要设置webwork.objectFactory=spring。注意这时候action由sping生成,但xwork会根据请求参数填充action里的变量.如果action里有一个变量在请求参数里面存在,并且spring也对其进行了设值,这时spring设置的值会被覆盖。可以从对象的初始化过程来解释。
假如存在一个
public class ProductAction extends ActionSupport{
private QueryVO queryVO ;
...
}
public class QueryVO {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
1.spring初始化一个action对象,并对action里面的属性进行设值,假如对queryVO设值了。
2.如果request里面有一个queryVO.name,则xwork会对重新new一个QueryVO对象,并将request里的name属性赋给它,最后把这个新new的QueryVO对象赋给action里的queryVO对象。如果request里没有queryVO相关的属性时,当然还是由spring设置的值。