在Spring和Struts结合使用的环境下,一般使用org.springframework.web.struts.DelegatingRequestProcessor来把request通过Spring委托struts处理,这样同时可以获得Spring的IoC带来的方便。
 
比如:
Struts配置文件:
<action
      path=”/SettlementAction”
      type=”com.tmca.cls.admin.clearing.ui.struts.SettlementAction
      name=”SettlementForm”
      scope=”request”
      input=”/WEB-INF/jsp/pages/admin/clearing/settlement.jsp
      unknown=”false
      validate=”true

    > 
</action>

Spring配置: 
<bean
      name=”/SettlementAction”
      class=”com.tmca.cls.admin.clearing.ui.struts.SettlementAction
  > 
    …
  </bean>

 
 
Spring会去在Struts中调用同名的Action,上面“/SettlementAction”首先被Spring配置,然后具体的request处理交给Struts的“/SettlementAction”这个Action。
 
但是这里有一个很严重的限制,本人现在还没有解决方案:Spring中“/SettlementAction”必须是Struts的Action类型。比如如果“com.tmca.cls.admin.clearing.ui.struts.SettlementAction”实现了Spring的“ApplicationListener”,或者被Proxy封装了,那么Spring会在运行时报错说该Bean不是一个Action类型的,而是一个“Proxy”类型的。也就是说,Spring中需要参与Struts的Action处理的类外围不能添加任何封装,它的instanceof Action结果必须返回True才能被Spring认可

评论联播

Your email address will not be published. Required fields are marked *