gpt4 book ai didi

java - 如何修复 Struts DispatchAction 上的 StackOverflowError?

转载 作者:行者123 更新时间:2023-11-30 12:01:29 33 4
gpt4 key购买 nike

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

我有一个更新数据库的 update() 方法 ( http://mywebsite/post?update ),如果成功,它会转发到相同的操作类,但我使用了不同的方法来处理它,即 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.

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

编辑:伙计们,我解决了它。我只需要将值放在转发的参数中,在我的情况下我必须这样做:post?list=list 而不是 post?list(正常方式)。我猜如果它没有值,该方法将被忽略。为什么 Struts 会这样表现真的很奇怪。也许有人可以阐明这一点?

最佳答案

是否没有更多异常信息,如堆栈跟踪?

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

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

编辑:好的,查看堆栈跟踪,您似乎已经将一个 Action 转发给自己,或者转发给另一个 Action ,然后转发回第一个 Action 。看起来您的代码没有涉及,因为它没有出现在堆栈跟踪中。检查您的 Struts 配置是否有周期。

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

关于java - 如何修复 Struts DispatchAction 上的 StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/704639/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com