将 Struts 1 中的 Action 转换为 Struts 2 等效项

Converting Action in Struts 1 to Struts 2 equivalent

我正在尝试将应用程序从 Struts 1 迁移到 Struts 2。在迁移过程中,我面临以下问题:

  1. 有一个 Servlet 扩展了 Struts1 的 ActionServlet。有许多覆盖方法,其中 super 被称为 process(),我想知道它等效于转换为 Struts2。因为我没有在 StrutsPrepareAndExecuteFilter.

    中得到它的等价物
  2. 我已将所有表单 bean 转换为 ModelDriven bean,并将所有 Action 转换为扩展 ActionSupport 的 class。还为此在 struts.xml 中输入。

请提供您对以上两个问题的解决方案。

动作执行前process是运行。覆盖框架 类 的目的是 change/extend 功能。大多数修改都与旧框架有关,可以删除。如果您需要使用一些无法在 Struts2 中替换的代码,那么您应该编写一个自定义拦截器。这是 change/extend Struts2 中的功能而不是 类 覆盖的正常方法。

您可以在 Struts 文档站点上阅读有关 interceptors 的更多信息。

您的架构应该没问题,但是 ModelDriven 可以替换为将 bean 注入控制器。参见 Nullpointerexception while setting a bean

有时 bean 的范围很重要,例如 Struts1 默认使用会话范围。如果需要的话,你可以用拦截器注入一个 sessionMap 蚂蚁让你的对象保持在会话中,或者像我在 this 问题中所做的那样尝试实现一个会话范围的 bean。