Struts 1.2.9 到 spring MVC 迁移 - ActionForms 的处理范围
Struts 1.2.9 to spring MVC migration - Handling Scope of ActionForms
我们正在将 Struts 1.2.9 应用程序迁移到 Spring MVC。
我们被困在定义为 "session" 的 ActionForm 范围的一点上。默认情况下,这些在 "request" 范围内,并理解迁移到 Spring,我们可以将它们重用为默认设置在 "request" 范围内的模型对象。
但是我不知道如何处理 "session" 范围。请指教。
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>
操作Class
//Code in com.xyz.myapp.actions.SvcCodeEditAction
if (request.equals(mapping.getScope())) {
request.setAttribute(mapping.getAttribute(), form);
} else {
setSessionAttribute(session,mapping.getAttribute(), form);
}
您可以通过在 bean class 声明上方使用 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 配置,您可以使用类似于此的 smth simmilar:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
还有一个很好的教程:
http://www.baeldung.com/spring-bean-scopes
然后,如果将 bean 添加到模型中,如果 bean 具有 @SessionScope
或 @Scope("session")
或任何其他 bean 范围声明,它将在会话中自动设置。默认情况下,bean 将被添加到请求范围。
我们正在将 Struts 1.2.9 应用程序迁移到 Spring MVC。
我们被困在定义为 "session" 的 ActionForm 范围的一点上。默认情况下,这些在 "request" 范围内,并理解迁移到 Spring,我们可以将它们重用为默认设置在 "request" 范围内的模型对象。
但是我不知道如何处理 "session" 范围。请指教。
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>
操作Class
//Code in com.xyz.myapp.actions.SvcCodeEditAction
if (request.equals(mapping.getScope())) {
request.setAttribute(mapping.getAttribute(), form);
} else {
setSessionAttribute(session,mapping.getAttribute(), form);
}
您可以通过在 bean class 声明上方使用 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 配置,您可以使用类似于此的 smth simmilar:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
还有一个很好的教程:
http://www.baeldung.com/spring-bean-scopes
然后,如果将 bean 添加到模型中,如果 bean 具有 @SessionScope
或 @Scope("session")
或任何其他 bean 范围声明,它将在会话中自动设置。默认情况下,bean 将被添加到请求范围。