2012-03-30 59 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