我刚开始学习JSF,我想知道这个问题。
我有16个复选框。当我打开页面并且我的兄弟也打开它时,似乎我们有相同的会话。当我点击其中一个复选框时,我的兄弟浏览器也会检查它。
选中的复选框保存在private ArrayList<String> selectedBoes = new ArrayList<String>();
中
我的ManagedBean是SessionScoped。
为什么会发生这种情况以及如何避免它?
答案 0 :(得分:2)
我的兄弟会话ID是
cdbbb126e96060ddb924b9d5e591
。我的是cd9a5c4180bd9dfef0ec8db2ac4d
然后唯一可能的原因是你实际没有将它们存储在会话范围内。症状表明您要么将它们存储在应用程序范围中,要么将其声明为static
(因此问题中的代码根本不代表实际代码;注释中的代码表明或者更少或更多,你使用了不同的属性名称,显然你试图从头顶键入它,你不应该这样做,你应该复制真正的代码。)
请注意,当您使用CDI的@Named
而不是JSF的@ManagedBean
时,它将默认为应用程序范围,除非使用javax.enterprise.context
范围注释另行指定。因此,如果您使用的是JSF不支持的JSF自己的javax.faces.bean.SessionScoped
注释,那么它仍将在应用程序范围内。