Java Struts 2结果类型将操作重定向到通配符操作方法

Java Struts 2结果类型将操作重定向到通配符操作方法,java,struts2,Java,Struts2,My action类包含以下操作方法: public class MyActionClass extends ActionSupport { public String valid(){ // } public String invalid(){ // } } 我的配置: <action name="*MyActionClass" class="action.MyActionClass" method="{1}"> <interceptor-

My action类包含以下操作方法:

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>

MyActionClass
无效的
/示例/valid.jsp
我的转发无效。令牌结果无效。我试图在同一个action类中转发到action方法


它给了我无限递归检测到的异常,我猜它正在变得无效。令牌一次又一次,我可以为这个转发禁用令牌侦听器吗?

以下任何选项都应该有效:

  • (首选选项)改为重定向到另一个操作类。让拦截器不应用于该动作类

  • 令牌拦截器中,您可以根据以下参数检查该令牌是否无效:

    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
    }
    

  • 通配符的使用是罪魁祸首,因此在重定向时使用相同的拦截器堆栈,从而导致无限递归。这将导致
    无效。配置
    令牌。