我需要从另一个请求范围的bean& amp;来实例化一个会话bean。设置该bean的值。我怎么能从另一个bean那里做到这一点?
实际上我需要在用户成功登录后实例化usersession
bean。我需要设置该会话bean的user
托管属性。
答案 0 :(得分:3)
您需要以通常的方式手动实例化它并将其放入ExternalContext#getSessionMap()
:
UserSession userSession = new UserSession();
userSession.setUser(user);
externalContext.getSessionMap().put("userSession", userSession);
以正确的设计为名,我宁愿将工作委托给JSF,只需将其注入@ManagedProperty
:
@ManagedBean
@RequestScoped
public class Login {
@ManagedProperty("#{userSession}")
private UserSession userSession;
public String login() {
// ...
if (user != null) {
userSession.setUser(user);
}
// ...
}
}
答案 1 :(得分:2)
登录时设置user
bean的usersession
属性。它是否在登录前进行实例化并不重要,因为它的user
属性在登录完成之前将保持为空。
使用usersession
注释在请求处理的bean中注入@javax.inject.Inject
bean。