我们正在将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);
}
答案 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添加到请求范围。