Struts2 Struts 2:仅从defaultStack拦截器中排除验证方法

Struts2 Struts 2:仅从defaultStack拦截器中排除验证方法,struts2,interceptor,interceptorstack,Struts2,Interceptor,Interceptorstack,我希望能够在Struts 2中为一个操作禁用表单验证,但使拦截器堆栈的其余部分仍然能够运行 我有一个拦截器,它检查用户是否登录,我总是希望执行该拦截器,但对于某些操作(例如输入信息),我不希望调用操作的validate 我试着做了如下的事情: <interceptors> <interceptor name="bankingAuthenticator" class="csc309.a4.banking.BankUserAuthenticator"/&g

我希望能够在Struts 2中为一个操作禁用表单验证,但使拦截器堆栈的其余部分仍然能够运行

我有一个拦截器,它检查用户是否登录,我总是希望执行该拦截器,但对于某些操作(例如输入信息),我不希望调用操作的
validate

我试着做了如下的事情:

<interceptors>

    <interceptor name="bankingAuthenticator"
        class="csc309.a4.banking.BankUserAuthenticator"/>

    <interceptor-stack name="secureBanking">
        <interceptor-ref name="bankingAuthenticator"/>
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>

</interceptors>

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

<action name="Deposit!*" method="{1}" class="csc309.a4.banking.Deposit">
    <result name="success">/banking/Deposit.jsp</result>
    <interceptor-ref name="defaultStack">
        <param name="workflow.excludeMethods">choose</param>
    </interceptor-ref>
</action>

/banking/Deposit.jsp
选择
但是它在
银行身份验证程序
拦截器和验证上都会跳过。

我发现了它——解决方案如下所示:

<action name="Deposit!*" method="{1}" class="csc309.a4.banking.Deposit">
    <result name="success">/banking/Deposit.jsp</result>
    <interceptor-ref name="secureBanking">
        <param name="workflow.excludeMethods">choose</param>
    </interceptor-ref>
</action>

/banking/Deposit.jsp
选择

通过将拦截器名称前置到参数名称,可以将拦截器参数限制为特定的拦截器。在这种情况下,只有
工作流
拦截器将排除
选择
方法;其他拦截器仍将为
选择
行动方法而开火。

正确;如果为单个操作指定
拦截器ref
,则必须为该操作指定所有拦截器!您应该将您的解决方案添加为答案,然后接受它,以便将来的访问者可以从您的工作中受益:)您上面编写的代码与您在答案中编写的代码有什么区别。。。你能告诉我我没有正确地理解它吗…@NIVESHSENGAR,区别在于存款操作中的拦截器名称在上面的代码中是“defaultStack”,在答案中是“secureBanking”。你能告诉我这里选择了什么吗?方法在哪里?我试着像下面那样。但它仍然没有排除
*login.jsp
Awesome;很高兴你明白了。