日期:2014-05-20  浏览次数:20807 次

struts2 配置文件中自定义拦截器必须 defaultStack
我看一个系统的struts.xml文件中的拦截器配置是这么写的
XML code

<package name="default" extends="struts-default">
        <interceptors>
    <interceptor name="bean-scope" class="com.googlecode.scopeplugin.ScopeInterceptor"/>
        <interceptor-stack name="appdefault">
        <interceptor-ref name="bean-scope"/>
        <!-- 定义拦截器栈包含default-stack拦截器栈 -->
        <interceptor-ref name="basicStack"/>
        <interceptor-ref name="encoding"/>
        <interceptor-ref name="opinion"/>
    </interceptor-stack>
    </interceptors>

    <!-- 定义struts2默认拦截器 -->
    <default-interceptor-ref name="appdefault"/>
</package>


这里面是没有引入defaultStack的,只引入了basicStack

但是我在网上看点说一般都要引入defaultStack 如:
XML code

<package name="base" extends="struts-default">
       <!--定义自己的拦截器  -->
        <interceptors>
            <interceptor name="authority" class="fi.authority.access.interceptor.AuthorityInterceptor"/> 
            <!-- 定义默认拦截器 -->
            <interceptor-stack name="mydefault">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="authority" />
            </interceptor-stack>
        </interceptors>     
        <!-- 使用默认拦截器 -->
        <default-interceptor-ref name="mydefault" />       
        <global-results>
            <result name="login">/login.jsp</result>
            <result name="noauthority">/noauthority.jsp</result>
        </global-results>   
</package>



那么是不是必须引入defaultStack呢?如果不是必须,为什么,麻烦解释详细一点,或者给个相关解释的链接也行

------解决方案--------------------
defaultStack ,肯定是需要的,那个加载默认的配置,你现在只是定义了一个自己的,但是系统默认的你还没有加载进来。