首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts 2:仅从defaultStack拦截器中排除验证方法

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

Stack Overflow用户
提问于 2011-11-14 08:39:44
回答 1查看 3.7K关注 0票数 4

我希望能够禁用Struts2中的一个操作的表单验证,但拦截器堆栈的其余部分仍然可以运行。

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

我试着做了如下的事情:

代码语言:javascript
复制
<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>

但是它跳过了bankingAuthenticator拦截器和验证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-15 08:50:20

我想出来了--解决方案看起来像这样:

代码语言:javascript
复制
<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>

截取程序参数可以通过将截取程序名称前缀到参数名称来限制到特定的截取程序。在这种情况下,只有workflow拦截器会排除choose方法;其他拦截器仍然会触发choose操作方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8116076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档