Struts2 检测到无限递归

Struts2 Infinite recursion detected

我有一个 struts2 链结果重定向到自身,但它不会创建无限循环,因为有一个条件最终会计算为 false,然后递归将停止。我必须使用 chain 而不是 redirectAction,因为我需要一个 POST 请求,而 redirectAction 无法做到。

这是我得到的异常

Could not execute action
Infinite recursion detected: [/view/myAction!myMethod, /view/myAction, /view/myAction] - [unknown location]
    at com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:214)

我已经通过了无限循环检测所基于的xwork jar。它会查看链历史记录,如果找到操作名称,则会抛出异常。最大递归被硬编码为 1.

有没有办法在链接时处理异常或增加允许递归的最大数量或手动重置链历史?

我找到了一种从拦截器操纵链历史的方法

    final ActionContext context = invocation.getInvocationContext();
    LinkedList<String> chainHistory = (LinkedList<String>) context.get("CHAIN_HISTORY");
    // context.put("CHAIN_HISTORY", null);