【发布时间】:2011-01-25 13:47:11
【问题描述】:
首先对不起我的英语。我在各种德语论坛上提出了我的问题,但我没有得到答案:-(也许你可以帮助我。
我使用 JSF 2.0。我们必须创建一个连接到存储所有信息的后端服务器的 Web 应用程序 - 这没问题。
我的问题是这个: 我有例如2个用户。 用户 1 登录系统 -> 一条消息被发送到后端服务器 -> 将收到带有用户信息的消息 -> 用户 ID 将设置为 1 用户 2 登录系统 -> ... -> 用户 ID 将设置为 2。 但是用户 1 的 ID 也将设置为 1。 这意味着两个用户共享我的 User 类的一个实例? 我认为每个用户都有自己的 java 类实例,其中只存储了 HIS 信息。
这里有一段代码:
login.xhtml
<h:body>
<f:view>
<h:inputText id="name" value="#{user.name}" />
<h:inputSecret id="passwort" value="#{user.password}" />
....
<h:commandButton id="login" action="#{communicator.validate}" />
您输入用户和密码,通信器向后端发送消息并接收此消息。
Communicator.java
@ManagedBean(name = "communicator")
@SessionScoped
public class Communicator implements EventReceiver {
@ManagedProperty(value = "#{user}")
private User user;
private BackendEvent backendEvent;
validate();
login();
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return this.user;
}
现在将收到来自后端的消息,其中包含所有用户信息:
private void handleLoginTell(LoginTell loginTell) {
logger.addToLog("handle LoginTell");
user.setSessionId(loginTell.getSessionId());
user.setName(loginTell.getLogin());
user.setLogged(true);
}
用户类只是一个简单的类,包含 getter/setter 方法和三个字段:用户名和密码以及 sessionid。
如果有两个用户访问我的网站,我认为将为每个用户创建一个新的生命周期,其中包含我的 sessionscoped bean 的新实例。 但是.. 在这里,我的用户似乎只共享一个 bean。但为什么? 你能解释一下我的错在哪里吗?
问候 强尼
【问题讨论】:
标签: jsf scope jsf-2 communication javabeans