Java JSF每个用户一个会话

Java JSF每个用户一个会话,java,jsf,session,Java,Jsf,Session,我刚开始学习JSF,我想知道这个问题。 我有16个复选框。当我打开页面时,我哥哥也在打开页面,看起来我们有相同的会话。当我单击其中一个复选框时,它也会在我兄弟的浏览器上被选中。 选中的复选框保存在private ArrayList selectedBoes=new ArrayList()中 我的ManagedBean ist会话已完成 为什么会发生这种情况以及如何避免 我兄弟的会话ID是cdbbb126e96060ddb924b9d5e591。我的是cd9a5c4180bd9dfef0ec8db


我刚开始学习JSF,我想知道这个问题。 我有16个复选框。当我打开页面时,我哥哥也在打开页面,看起来我们有相同的会话。当我单击其中一个复选框时,它也会在我兄弟的浏览器上被选中。 选中的复选框保存在
private ArrayList selectedBoes=new ArrayList()中
我的ManagedBean ist会话已完成

为什么会发生这种情况以及如何避免

我兄弟的会话ID是cdbbb126e96060ddb924b9d5e591
。我的是cd9a5c4180bd9dfef0ec8db2ac4d

那么唯一可能的原因是您实际上没有将它们存储在会话范围中。这些症状表明您正在将它们存储在应用程序范围中,或者甚至将其声明为
static
(因此,问题中的代码根本不代表真正的代码;您注释中的代码表明,您使用了不同的属性名称,显然您试图从头开始键入,您不应该这样做,您应该复制粘贴真正的代码)


请注意,当您使用CDI的
@Named
而不是JSF的
@ManagedBean
时,它将默认为应用程序范围,除非使用
javax.enterprise.context
范围注释指定。因此,如果您使用的是JSF自己的
javax.faces.bean.SessionScoped
注释,它不受CDI,则它仍在应用范围内。

我们需要更多数据(可能还有代码):-您是否将数据保存在某个地方(数据库、文件)?-当您提到“我的兄弟”时,你是说另一台计算机,还是什么?无论我打开它还是另一台计算机打开它,结果都是一样的。选中的复选框保存在
private ArrayList selectedBoes=new ArrayList()中
如何在应用程序中启动会话?我不确定你的意思..我对JSF真的很陌生。在xhtml文件中,我只有
Put
我的会话ID是{session.ID}

在页面中,让我们知道您和您的兄弟看到了什么。正如我所说,我是JSF新手,不知道如何保存它的会话范围。代码是真实的。我唯一更改的是列表的名称。我没有声明任何内容是静态的,我使用@ManagedBean。对于@SessionScoped,我使用
导入javax.faces.bean.SessionScoped
。我是否应该将其更改为
javax.enterprise.context.SessionScoped
?那么问题是由目前为止提供的信息中不可见的其他地方引起的。也许您只是没有运行您认为正在运行的代码?
javax.faces.bean.SessionScoped
javax.enterprise.context.SessionScope之间有什么区别一个来自JSF,另一个来自CDI。