我希望能够禁用Struts2中的一个操作的表单验证,但拦截器堆栈的其余部分仍然可以运行。
我有一个拦截器,用于检查用户是否登录,我总是希望执行该拦截器,但对于某些操作(例如输入信息),我不希望调用该操作的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拦截器和验证。
发布于 2011-11-15 08:50:20
我想出来了--解决方案看起来像这样:
<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操作方法。
https://stackoverflow.com/questions/8116076
复制相似问题