【发布时间】:2011-11-14 00:39:43
【问题描述】:
我希望能够为 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>
但它会跳过bankingAuthenticator 拦截器和验证。
【问题讨论】:
-
正确;如果您为单个操作指定
interceptor-ref,则必须为该操作指定 all 拦截器!您应该将您的解决方案添加为答案,然后接受它,以便未来的访问者可以从您的工作中受益:) -
您在上面编写的代码与您在答案中编写的代码有什么区别...您能告诉我我没有正确理解吗.....
-
@NIVESHSENGAR,区别在于上述代码中的存款操作中的拦截器名称是“defaultStack”,而答案中的那个是“secureBanking”。
-
你能告诉我这里的选择是什么吗?里面的方法在哪里?我尝试如下。但它仍然不排除
<action name="login"> <interceptor-ref name="secureStack"> <param name="workflow.excludeMethods">*</param> </interceptor-ref> <result>login.jsp</result> </action>
标签: struts2 interceptor interceptorstack