如何在2个不同的页面中使用单个命令对象而不使其成为单例

时间:2011-02-01 07:21:39

标签: java spring spring-mvc

如何在执行服务器进程的同时在jsp中将类对象从一个页面传输到另一个页面,

例如,让我们有一个page1.jsp它有一个类Page

的commandObject page1

然后我在page1.jsp,

中填写了一些值

然后我希望将同一个对象转移到另一个页面,例如page2.jsp 在该页面上,我填充page1对象的剩余值,然后将其保存到数据库。

2 个答案:

答案 0 :(得分:2)

在第1页的控制器的post方法中,再次将命令对象添加到模型中,并返回第2页的视图名称。

听起来您正在描述一个简单的对话工作流程。如果您的工作流程变得更加复杂,我建议您查看Spring Webflow

答案 1 :(得分:0)

如果您不想(或不能)使用Singleton bean,那么使用requestsession范围怎么样?它们是为这种情况定制的。

  

3.5.4.2请求范围

     

考虑以下bean   定义:

<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
  

Spring容器   创建一个新的实例   LoginAction bean使用   每个loginAction bean定义   和每个HTTP请求。那就是   loginAction bean的作用域是HTTP   请求级别。你可以改变   实例的内部状态   尽可能多地创建,因为   从其创建的其他实例   loginAction bean定义不会   看到这些状态的变化;他们是   特别是个人请求。   请求完成处理后,   作用于请求的bean   被丢弃了。


  

3.5.4.3会话范围

     

考虑以下bean   定义:

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

Spring容器   创建一个新的实例   UserPreferences bean使用   userPreferences bean的定义   单个HTTP会话的生命周期。   换句话说,userPreferences   bean有效地限定在HTTP上   会话级别。与请求范围一样   豆子,你可以改变内部   创建的实例的状态   知道这一点,尽你所能   其他HTTP会话实例   还使用从中创建的实例   相同的userPreferences bean定义   在状态中看不到这些变化,   因为它们特别适合   个人HTTP会话。当HTTP   会话最终被丢弃了   作用于该特定的bean   HTTP会话也被丢弃。

<强>来源: