Jen*_*rer 4 struts2 interceptor interceptorstack
我希望能够在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>
Run Code Online (Sandbox Code Playgroud)
但它在bankingAuthenticator拦截器和验证上都会跳过.
我想通了 - 解决方案看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
通过将拦截器名称添加到参数名称,可以将拦截器参数限制为特定拦截器.在这种情况下,只有workflow拦截器会排除该choose方法; 其他拦截器仍将触发choose动作方法.
| 归档时间: |
|
| 查看次数: |
3538 次 |
| 最近记录: |