我正在开发我的第一个 java struts2 webapp,并希望能够将 bean 参数注入到任何被调用的任意类中。但我发现我只能用 struts 动作类来做到这一点......
假设我的 applicationContext.xml 文件中有这个 bean:
<bean id="BeanTest" class="BeanTest">
<property name="test" value="someval" />
</bean>
如果我有一个名为 BeanTest 的 struts 动作类设置(就像这样),并且我添加了一个设置器(public void setTest()),那么将设置测试参数并且我可以访问它。
import com.opensymphony.xwork2.ActionSupport;
public class BeanTest extends ActionSupport{
private String test;
public String execute(){
String str = getTest(); // returns "someval"
return "success";
}
public void setTest(String test){
this.test = test;
}
public String getTest(){
return test;
}
}
但是,假设我将 bean 更改为 BeanTest2,如下所示:
<bean id="BeanTest2" class="BeanTest2">
<property name="test" value="someval" />
</bean>
我有一个像这样的独立课程:
public class BeanTest2{
private test;
public void setTest(String test){
this.test = test;
}
public String getTest(){
return test;
}
}
如果我在 BeanTest 中创建 BeanTest2 的实例,并调用 getTest,它总是返回 null。
import com.opensymphony.xwork2.ActionSupport;
public class BeanTest extends ActionSupport{
public String execute(){
BeanTest2 bt = new BeanTest2();
String str = bt.getTest(); //returns null, but I want "someval"
return "success";
}
}
我想要做的是在 applicationContext 中设置一个 bean,以便我可以将它指向任意类,并且该类将始终获得我设置的任何 bean 参数(假设我已经为它们创建了设置器)。不幸的是,只有 struts 动作类能够获得这些 bean 属性。一切都没有准备好。
这个问题清楚吗?我觉得我错过了关于 bean 工作方式的一些明显的东西。