多个选项卡上的相同会话

时间:2014-12-03 09:36:01

标签: java session

如果用户在具有相同会话的浏览器上打开多个标签,我会遇到一些问题。

  1. 用户打开标签1,导航至交易1001详细信息
  2. 右键单击并在同一浏览器上打开另一个标签,导航至交易1002详细信息
  3. 返回标签1,修改交易1001的详细信息。相反,交易1001的详细信息将被交易1002详细信息覆盖。
  4. 我正在使用WebSphere 8.0。该页面是请求范围的。

    关于什么是一个好的,易于维护的解决方案来防止这种情况的任何建议?

2 个答案:

答案 0 :(得分:4)

您正在保存会话/ Cookie中的交易详情,这是一个坏主意,ID等应作为表单中的隐藏字段传递。

答案 1 :(得分:0)

Ankit的投票结果,当您打开新标签页时,请确保您有一个特定于标签的ID作为隐藏输入字段,例如产品ID。

从现在开始,您可以采用两种方式,即无状态方法,根本不使用会话,从数据库中加载所有内容,更新,保存。无国籍是一种幸福,如果你能完美支持它。 第二种方法假定您使用特定于选项卡的ID来从会话中检索正确的日期,换句话说,特定于选项卡的ID将是会话密钥的一部分。

后一种方法意味着您已启用了会话范围,并且由于您提到您正在使用JSF,因此可以支持对话,请查看@ConversationScoped的文档。关键是

Any JSF request has exactly one associated conversation.

具体的例子取决于你使用的实现,应该在网上找到大量的例子,我的想法只是让你知道它的支持