我的操作类包含以下操作方法:
public class MyActionClass extends ActionSupport {
public String valid(){
//
}
public String invalid(){
//
}
}
我的配置:
<action name="*MyActionClass" class="action.MyActionClass" method="{1}">
<interceptor-ref name="token"/>
<interceptor-ref name="basicStack"/>
<result type="chain" name="invalid.token" type="redirectAction">
<param name="actionName">MyActionClass</param>
<param name="method">invalid</param>
</result>
<result name="Completed">/example/valid.jsp</result>
</action>
我转发到invalid.token结果无效。我正试图在同一个动作类中转发动作方法。
它给了我无限递归检测到的异常,我猜它一次又一次无效。我可以为这个转发禁用令牌拦截器吗?
答案 0 :(得分:2)
以下任何选项都应该有效:
(首选选项)改为重定向到另一个操作类。不要将拦截器应用于该动作类。
在TokenInterceptor
中,您可以根据参数检查它是否是无效令牌:
Map params = ActionContext.getContext().getParameters();
if (params.containsKey("method") && params.get("method").equals("invalid")){
invocation.invoke(); //Pass on the invocation
} else {
//Do your interceptor logic here
}