我需要从另一个请求范围内的bean实例化一个会话bean,并为该bean设置值。我该如何从另一个bean做到这一点?
实际上,我需要在用户成功登录后实例化usersession
bean,并且需要设置该会话bean的user
托管属性。
最佳答案
您需要以常规方式手动实例化它并将其放在ExternalContext#getSessionMap()
中:
UserSession userSession = new UserSession();
userSession.setUser(user);
externalContext.getSessionMap().put("userSession", userSession);
以适当的设计名义,我宁愿通过将其注入为
@ManagedProperty
来将作业委派给JSF:@ManagedBean
@RequestScoped
public class Login {
@ManagedProperty("#{userSession}")
private UserSession userSession;
public String login() {
// ...
if (user != null) {
userSession.setUser(user);
}
// ...
}
}