无法排除struts2侦听器中的方法

无法排除struts2侦听器中的方法,struts2,interceptor,struts-config,interceptorstack,Struts2,Interceptor,Struts Config,Interceptorstack,在这个问题上,我的问题与那个家伙正好相反: 上面的问题涉及排除所有方法,我的问题是没有排除任何方法 我试图让我的authenticationInterceptor忽略我的登录操作的showLogin方法: <interceptors> <interceptor name="authorizationInterceptor" class="org.companyname.struts.interceptor.AuthorizationInterceptor"/>

在这个问题上,我的问题与那个家伙正好相反:

上面的问题涉及排除所有方法,我的问题是没有排除任何方法

我试图让我的authenticationInterceptor忽略我的登录操作的showLogin方法:

<interceptors>
    <interceptor name="authorizationInterceptor" class="org.companyname.struts.interceptor.AuthorizationInterceptor"/>
    <interceptor-stack name="appDefault">
        <interceptor-ref name="authorizationInterceptor"/>
        <interceptor-ref name="defaultStack">
            <param name="exception.logEnabled">true</param>
            <param name="exception.logLevel">ERROR</param>
        </interceptor-ref>              
    </interceptor-stack>
</interceptors>
<default-interceptor-ref name="appDefault" />

<action name="loginInitial" class="org.companyname.struts.action.LoginAction" method="showLogin">
    <interceptor-ref name="appDefault">
        <param name="authorizationInterceptor.excludeMethods">showLogin</param>             
    </interceptor-ref>
    <result name="success">/login.jsp</result>                      
</action>

真的
错误
显示登录
/login.jsp
但是,每次我转发到loginInitial时,拦截器都会抓住它,即使我的showLogin方法被排除在外

我已经检查了命名问题,并尝试在操作中的interceptor ref中放置几个不同的值,但似乎没有任何效果


当我转到LoginTial时,跳过授权拦截器的正确方法是什么?

我认为我的问题是我正在使用的拦截器类型,抽象拦截器。所以,我只是在我不希望被拦截的操作上使用不同的拦截器堆栈:

<interceptor-stack name="appDefaultWithAuth">               
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>              
    <interceptor-ref name="authorizationInterceptor"/>
</interceptor-stack>            

<interceptor-stack name="appDefaultNoAuth">             
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>                  
</interceptor-stack>

<default-interceptor-ref name="appDefaultWithAuth" />

<action name="loginInitial" class="org.company.struts.action.LoginAction" method="showLogin">
    <interceptor-ref name="appDefaultNoAuth"/>              
    <result name="success">/login.jsp</result>                      
</action>

真的
错误
真的
错误
/login.jsp

我认为我的问题在于我使用的拦截器的类型,即AbstractInterceptor。所以,我只是在我不希望被拦截的操作上使用不同的拦截器堆栈:

<interceptor-stack name="appDefaultWithAuth">               
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>              
    <interceptor-ref name="authorizationInterceptor"/>
</interceptor-stack>            

<interceptor-stack name="appDefaultNoAuth">             
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>                  
</interceptor-stack>

<default-interceptor-ref name="appDefaultWithAuth" />

<action name="loginInitial" class="org.company.struts.action.LoginAction" method="showLogin">
    <interceptor-ref name="appDefaultNoAuth"/>              
    <result name="success">/login.jsp</result>                      
</action>

真的
错误
真的
错误
/login.jsp

我对你的拦截器一无所知,所以不可能真正提供帮助。它是一个
MethodFilterInterceptor
?是什么让你认为
AbtractInterceptor
有一个
excludeMethods
参数?这来自
MethodFilterInterceptor
。我下面的示例详细介绍了AbstractInterceptor的使用,并显示了所作用的excludeMethods属性。坏榜样!我对你的拦截器一无所知,所以不可能真正帮助你。它是一个
MethodFilterInterceptor
?是什么让你认为
AbtractInterceptor
有一个
excludeMethods
参数?这来自
MethodFilterInterceptor
。我下面的示例详细介绍了AbstractInterceptor的使用,并显示了所作用的excludeMethods属性。坏榜样!