以自己案子為例:
<interceptors>
<interceptor name="XX1Interceptor" class="XX1Interceptor" />
<interceptor name="XX2LogInterceptor" class="XX2LogInterceptor" />
<interceptor name="XX3Interceptor" class="XX3Interceptor" />
<interceptor name="XX4LogInterceptor" class="XX4LogInterceptor" />
<interceptor-stack name="XXXStack">
<interceptor-ref name="defaultStack" /> // 通常加入這個是為了讓原先action內的設定值不跑掉
<interceptor-ref name="XX1Interceptor" />
<interceptor-ref name="XX2Interceptor" />
<interceptor-ref name="XX3Interceptor" />
<interceptor-ref name="XX4LogInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="XXXStack" /> // 這邊則代表所有的action都會進入這邊所定義的interceptor內
(可參考此網站的講解 http://blog.csdn.net/forwayfarer/article/details/2955586 ...
特別擷取裡頭的這種範例及解釋 :
<interceptors>
<interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="myInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
<action name="register" class="edu.hust.action.RegisterAction">
<result name="input">/register.jsp</result>
<result>/result.jsp</result>
</action>
)
<global-results>
<result name="EXPORT" type="stream">
<param name="contentType">application/octet-stream;charset=UTF-8</param>
<param name="inputName">XXXXXStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
</result>
<result name="JSON" type="json">
<param name="contentType">text/html;charset=UTF-8</param>
<param name="ignoreHierarchy">false</param>
<param name="root">XXXObj</param>
<param name="excludeNullProperties">true</param>
</result>
<result name="ERROR" type="json">
<param name="contentType">text/html;charset=UTF-8</param>
<param name="ignoreHierarchy">false</param>
<param name="root">errorMsg</param>
</result>
</global-results>
============ </package>
(下面者兩個放置在</package>後 </struts>前)
<include file="conf/entry/struts-XXXXXXX1.xml"></include>
<include file="conf/common/struts-XXXXXXX2.xml"></include>
以上兩行用意是要匯入其他xml內所定義的action及其他內容
順道一提:
以上範例中include內的action都無定義result 的name ,全都仰賴global-results內的 result name 去做