2012-03-30 80 views
2

我有多个XML配置。多个Struts 2配置文件

struts.xml的

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

    <package name="baseInterceptors" extends="struts-default"> 
    <interceptor name="..."> 
     ... 
    </interceptor> 
     ... 
    </package> 

    <package name="default" extends="struts-default,baseInterceptors"> 
    <action name="..."> 
     ... 
    </action > 
     ... 
    </package> 
</struts> 

的struts-user.xml

<struts> 
    <package name="user" extends="struts-default,baseInterceptors"> 
    <action name="..."> 
     ... 
    </action > 
    ... 
    </package> 
</struts> 

但是从baseInterceptors拦截器不在struts-user.xml可用。我怎么解决这个问题?

回答

2

按顺序处理配置文件:<include>baseInterceptorsdefault包被处理(读取:定义)之前被处理。

换句话说,包含的文件依赖于尚未定义的pacakges。

package configuration docs在靠近顶部的注释中解释了这一点,旁边有感叹号。


无关,但你已经复制了一些配置,这是一种误导/沉默寡言:baseInterceptors已经延伸struts-default,所以没有必要延长。考虑创建一个类似于application-default包的东西,所以显然应用程序中的所有内容都应该从中延伸。这消除了不必要的重复并传达了你的意图。

+0

我创建文件'struts-interceptors.xml'并将其包含在所有其他文件中。 Thx你 – gooogenot 2012-04-01 18:37:12

+0

@gooogenot很酷,很高兴你能解决它。不过,您不需要将其包含在所有其他文件中。 – 2012-04-01 18:46:16