检测到Struts2无限递归

时间:2016-11-24 16:18:47

标签: java recursion model-view-controller struts2 action

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

这是我得到的例外

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。

有链接处理异常或增加允许递归的最大数量或手动重置链历史记录的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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