如何在不同的方法调用之间维护内存中的对象列表?

时间:2015-12-07 22:24:46

标签: java spring spring-mvc

我有这个问题,使用spring mvc,有一个List(或一个对象),我用一个方法生成它,这个列表是由用户输入创建的。创建之后,我从方法(在我的控制器上)重定向到另一个方法,发送此列表,稍后我将它添加到模型中以在视图中显示它...所有完美

所以,例如

我在methodA上创建了对象myObject。 从methodA我重定向到methodB发送myObject,methodB将它添加为modelAttribute并打印视图,让我们称之为viewA。

直到那时一切都很好。

如果我想从viewA调用方法,methodC和methodC将把我在methodB上发送的所有列表作为输入输入到viewA?

目前我这样做了。

将控制器的范围声明为session 声明myObject为public(类的变量)。 方法A,B,C很容易阅读,因为它是类的公共变量。

我想要做的是避免使用此控制器的作用域,而是让每个会话使用单例(就像默认情况下一样)。

知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

你不应该将它用作控制器中的公共字段,因为你的控制器是在多个请求之间共享的,当多个用户使用时,字段的状态不会保持一致。

因此要么使用会话,要么将对象的一些id传递给ui(隐藏的输入或cookie),并在下一个请求中重新创建对象。

答案 1 :(得分:0)

您可以尝试使用:

  1. HashMap< SessionId,List>当sessionId - 是您的用户会话的ID时,

  2. HashMap<字符串,列表>当字符串 - 用户名,

  3. ThreadLocal<列表>,但我不确定它是否正常工作,