我是一个尝试将应用程序从Struts1迁移到Struts2的新手。在迁移过程中,我面临以下问题: -
1)有一个Servlet,它扩展了Struts1的ActionServlet。有很多重写方法,其中super被称为process
,我想知道它等效于转换为Struts2。因为我没有在StrutsPrepareAndExecuteFilter中获得它的等价物。
2)我已将所有表单bean转换为模型Driven beans,并将所有Actions转换为扩展ActionSupport
的类。同时在struts.xml
中输入。
请就上述两个问题提出意见。
答案 0 :(得分:1)
process
在执行操作之前正在运行。覆盖框架类的目的是更改/扩展功能。大多数修改都与旧框架有关,可以删除。如果你需要使用一些在Struts2中无法替换的代码,那么你应该编写一个自定义拦截器。这是改变/扩展Struts2中的功能而不是类覆盖的常用方法。
您可以在Struts docs网站上阅读有关interceptors的更多信息。
您的体系结构应该没问题,但ModelDriven
可以替换为将bean注入控制器。见Nullpointerexception while setting a bean。
有时bean的范围很重要,例如Struts1默认使用会话范围。您可以使用拦截器注入sessionMap
,如果需要,可以将对象保存在会话中,或尝试像this问题中那样实现会话范围的bean。