我有这个问题,使用spring mvc,有一个List(或一个对象),我用一个方法生成它,这个列表是由用户输入创建的。创建之后,我从方法(在我的控制器上)重定向到另一个方法,发送此列表,稍后我将它添加到模型中以在视图中显示它...所有完美
所以,例如
我在methodA上创建了对象myObject。 从methodA我重定向到methodB发送myObject,methodB将它添加为modelAttribute并打印视图,让我们称之为viewA。
直到那时一切都很好。
如果我想从viewA调用方法,methodC和methodC将把我在methodB上发送的所有列表作为输入输入到viewA?
目前我这样做了。
将控制器的范围声明为session
声明myObject为public(类的变量)。
方法A,B,C很容易阅读,因为它是类的公共变量。
我想要做的是避免使用此控制器的作用域,而是让每个会话使用单例(就像默认情况下一样)。
知道怎么做吗?
答案 0 :(得分:1)
你不应该将它用作控制器中的公共字段,因为你的控制器是在多个请求之间共享的,当多个用户使用时,字段的状态不会保持一致。
因此要么使用会话,要么将对象的一些id传递给ui(隐藏的输入或cookie),并在下一个请求中重新创建对象。
答案 1 :(得分:0)
您可以尝试使用:
HashMap< SessionId,List>当sessionId - 是您的用户会话的ID时,
HashMap<字符串,列表>当字符串 - 用户名,
ThreadLocal<列表>,但我不确定它是否正常工作,