spring实例化struts1或者struts2.x的action

方志朋 2012-11-01

spring实例化struts1或者struts2.x的action 
struts2.x

整合S2SH时做了个测试程序,总是报无法实例化Action的错误。郁闷。

测试部分代码是:

 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

StudentAction students = new StudentAction();

students.leader();

运行时总是显示Action不能实例化,开始很郁闷。看配置什么的都没问题啊。最后发现用

ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");

StudentBeanstudents=(StudentBean)ctx.getBean("studentBean");

students.findLeader();

就没有问题,郁闷中。。

后来发现应该是这样的。

Struts.xml中应该是这样:

<actionname="loginAction"class="loginAction">//此处的actionclass属性应该是applicationContext中spring实例化该action的beanid属性值。这样才是spring实例化的。

<resultname="leader">/Class_intro.jsp</result>

<resultname="cards">/Class_member.jsp</result>

</action>

applicationContext.xml中:

<beanid="loginAction"

class="com.struts.action.StudentAction"

scope="prototype">

<propertyname="studentBean"ref="studentBean"/>

</bean>

struts1.x

<action name="treeForm" path="/treeAction" scope="request"

parameter="actions"

type="org.springframework.web.struts.DelegatingActionProxy">

<forwardname="select"

path="/platform/common/treeSelect.jsp"/>

<forwardname="defeat"path="/common/error.jsp"/>

  </action>

applicationContext.xml中:

<beanid="treeAction"

class="com.struts.action.treeAction"

scope="prototype">

<propertyname="studentBean"ref="studentBean"/>

</bean>

相关推荐