有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何修复Struts DispatchAction上的StackOverflower错误?

情况如下: 我练习创建一个迷你博客应用程序。我使用Strub的EventDispatchAction来处理所有与帖子相关的方法,比如更新和列出帖子

我有一个update()方法(http://mywebsite/post?update),它更新数据库,如果成功,它将转发给同一个action类,但我使用了另一个方法来处理它,list()方法(http://mywebsite/post?list),它列出了当前用户的所有帖子。问题是它不工作,并抛出一个:

javax.servlet.ServletException:

The server side component of the HTTP Monitor has detected a java.lang.StackOverflowError. This happens when there is an infinite loop in the web module. Correct the cause of the infinite loop before running the web module again.

你们知道怎么解决这个问题吗?任何帮助都将不胜感激

编辑:我解决了,伙计们。我只需要在我的forward参数中输入值,在我的情况下,我必须做:post?列表=列表而不是仅仅发布?列出(正常方式)。如果该方法没有值,我猜它将被忽略。Struts的行为如此奇怪。也许有人能解释一下


共 (1) 个答案

  1. # 1 楼答案

    是否不再有异常信息,比如堆栈跟踪

    你有list()方法的单元测试吗?堆栈溢出几乎总是由递归方法(或方法循环)引起的,但是如果没有关于堆栈跟踪的更多信息,就很难进一步诊断它

    如果在抛出异常后无法获得完整的堆栈跟踪,则可能需要在list()及其调用的方法中添加更多日志,以显示递归发生的位置

    编辑:好的,看看堆栈跟踪,看起来你有一个动作要么转发到它自己,要么转发到另一个动作,然后转发回第一个动作。考虑到堆栈跟踪中没有出现代码,似乎不涉及它。检查Struts配置中的循环

    堆栈跟踪的另一个有趣部分是“org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter”——这个应用程序是否在您的IDE中运行?如果在IDE中运行而不是,它还会失败吗