【问题标题】:how can I maintain a List of objects in memory between different methods calls?如何在不同方法调用之间维护内存中的对象列表?
【发布时间】:2016-03-12 16:45:18
【问题描述】:

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

所以,例如

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

在那之前一切都好。

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

当时我这样做了。

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

我想要做的是避免使用这个控制器的范围,而是让每个会话都有它单例(就像默认情况下一样)。

知道怎么做吗?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

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

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

    【讨论】:

    • 那么,启用 Scope 注释可能是一个可能的解决方案?
    • 是的,然后从请求的会话中获取对象
    【解决方案2】:

    你可以尝试使用:

    1. HashMap 当 sessionId - 是你的用户会话的 id,

    2. HashMap当String-用户名,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多