Struts 1.2.9春季MVC迁移-ActionForms的处理范围

时间:2018-06-28 06:00:11

标签: spring-mvc migration struts

我们正在将Struts 1.2.9应用程序迁移到Spring MVC。

我们被困在定义为“会话”的ActionForm范围的某一点上。默认情况下,它们在“请求”范围内,并且了解迁移到Spring的情况,我们可以将它们作为默认情况下在“请求”范围内设置的模型对象重用。

但是在如何处理“会话”范围上迷路了。请告知。

struts-config.xml

<action path="/editSvc" scope="session"
    type="com.xyz.myapp.actions.SvcCodeEditAction" name="svcCodeForm"
    validate="false" parameter="reqCode">
    <forward name="success" path="/WEB-INF/jsp/svccode_edit.jsp" />
</action>

动作类

//Code in com.xyz.myapp.actions.SvcCodeEditAction
  if (request.equals(mapping.getScope())) {
        request.setAttribute(mapping.getAttribute(), form);
    } else {
        setSessionAttribute(session,mapping.getAttribute(), form);
    }

1 个答案:

答案 0 :(得分:0)

通过在bean类声明上方使用Spring @Scope(“ session”)批注,您可以获得几乎相同的功能。

在spring 3.0版本的参考指南中对此进行了很好的解释:

https://docs.spring.io/spring-framework/docs/3.0.0.M3/reference/html/ch04s04.html

通常,如果将spring-webmvc和spring-web添加到项目中,则可以使用

@Bean
@Scope("session")
public SomeBean someBean() {
    return new SomeBean();
}

或者,如果您更喜欢使用xml而不是java config,则可以使用smth simmilar来做到这一点:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>

还有一个很好的教程:

http://www.baeldung.com/spring-bean-scopes

然后,如果您将Bean添加到模型中,则当Bean具有@SessionScope@Scope("session")或其他任何范围声明时,它将在会话中自动设置。默认情况下,将Bean添加到请求范围。