Struts2:这里是否没有为每个请求创建Action?

时间:2012-09-05 02:51:26

标签: struts2

将Struts 2.1.6与Tiles一起使用。

我注意到我的Struts 2操作中有一些奇怪的行为。我在其中一个动作中设置了断点(比如view())。当我第一次启动应用程序服务器时,单击我的Web应用程序中执行此操作的链接,调试器在断点处停止,我可以解决问题,发生异常并在UI上显示消息。 / p>

然而,当我再次点击同一链接时,调试器没有点击断点,UI显示相同的错误消息。我点击其他链接和其他调试点工作完全正常。当我再次点击同一个URL时,会显示相同的消息。我必须重新启动服务器并再次重复该过程。

是某些东西被缓存了吗?你认为没有创建struts动作的新实例吗?我该如何解决这个问题?我还没有发布任何代码,因为我不确定您可能需要哪些具体信息......

我在会话中存储一些对象用于分页目的,这可能是问题吗?

1 个答案:

答案 0 :(得分:1)

我从你的描述中读到的似乎问题就在你的代码中。每个请求struts2创建一个动作类的新实例以及请求和响应并将它们放在值栈中,所以无论结果是什么最后一次执行时,新请求总是最终创建一个新实例。

根据Framework架构创建新实例,因为Action也可用作数据传输对象(模型)。

我建议您检查一下配置,看看到底出现了什么问题。

作为旁注,您使用的是Strts2-spring插件,使用插件需要设置scope=prototype其他弹出默认情况下将创建单例操作实例,并且将一次又一次地使用相同的Action实例