日期:2014-05-19  浏览次数:20569 次

Struts2配置文件include的问题
当我把Struts2的配置文件拆分成多个struts配置文件,include最多能包含1级??下一级的内容将不可见?

现有struts.xml,struts-a.xml,struts-b.xml三个配置文件。
其中struts.xml为系统的主配置文件,为struts2框架自动调用。
XML code

<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <include file="../config/common/struts-a.xml" />
   ....
</struts>



struts-a.xml
XML code

<struts>
   <include file="struts-b.xml" />
   ....
</struts>



struts-b.xml
XML code

<struts>
   <package name="struts-abc" namespace="/public/common/test">
      <action name="abc" class="abc">
    <result name="success" type="dispatcher">/web/abc.jsp</result>
     </action>
   </package>
</struts>



那我在URL里调http://localhost:8080/dev/public/common/test/abc.action则发生异常,报
Java code

ERROR(Dispatcher.java:512)Dispatcher:512 - Could not find action or result
There is no Action mapped for namespace /public/common/test and action name abc. - [unknown location]




如果把struts-b.xml中的
XML code

   <package name="struts-abc" namespace="/public/common/test">
      <action name="abc" class="abc">
    <result name="success" type="dispatcher">/web/abc.jsp</result>
     </action>
   </package>


这段代码放到struts-a.xml中则正常。

请问这是什么原因引起的?还是struts2本身不支持?


------解决方案--------------------
我觉得是路径问题,你得struts-a.xml被include到struts.xml后,再去include下一级的struts-b.xml时是从struts.xml文件的当前路径开始的寻找struts-b.xml,而你的struts-a.xml中的file指定的路径肯定就有问题了。