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



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

因此,例如

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

在那之前一切都很好。

如果我想从视图a调用一个方法,方法C,方法C将把我在方法B上发送给视图a的所有列表作为输入,该怎么办?

就在我这么做的那一刻。

将控制器的作用域声明为session将myObject声明为public(类的变量)。方法A、B、C很容易读取它,因为它是类上的公共变量。

我想做的是避免为这个控制器使用作用域,而是让它在每个会话中单独使用(就像默认情况下一样)。

知道怎么做吗?

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

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

您可以尝试使用:

  1. 哈希映射<SessionId,List>when SessionId-是用户会话的id,

  2. 哈希映射<字符串,列表>当字符串-用户名,

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

最新更新