【发布时间】:2014-12-01 00:44:04
【问题描述】:
仍在学习 JSF 和 Java,并且无法理解如何访问会话 bean 属性。
我有一个LoggedUser 会话bean,它设置登录的用户(使用登录方法)。
@ManagedBean(name="loggedUser")
@Stateless
@LocalBean
@SessionScoped
public class LoggedUser {
@EJB
UserEJB userEJB;
@PersistenceContext
private EntityManager em;
private UserEntity loggedUser;
private String loginUserName;
private String loginPassword;
public LoggedUser() {}
public UserEntity getLoggedUser() {
return loggedUser;
}
public void setLoggedUser(UserEntity loggedUser) {
this.loggedUser = loggedUser;
}
public String authenticate() {
if (loggedUser == null) {
return "login.xhtml";
} else {
return "";
}
}
public String login() {
if (userEJB.validateLogin(loginUserName, loginPassword)) {
setLoggedUser(userEJB.fetchUser(loginUserName));
return "index.xhtml";
}
return "";
}
public String getLoginUserName() {
return loginUserName;
}
public void setLoginUserName(String loginUserName) {
this.loginUserName = loginUserName;
}
public String getLoginPassword() {
return loginPassword;
}
public void setLoginPassword(String loginPassword) {
this.loginPassword = loginPassword;
}
}
我希望能够从应用程序的其他区域查看已登录的用户。我认为我错误地注入了它,因为当我在不同的 bean 中时,loggedUser 总是为空,例如......
@Stateless
@LocalBean
public class HistoryEJB {
@PersistenceContext
EntityManager em;
@ManagedProperty(value = "#{loggedUser}")
private LoggedUser loggedUser;
public LoggedUser getLoggedUser() {
return loggedUser;
}
public void setLoggedUser(LoggedUser loggedUser) {
this.loggedUser = loggedUser;
}
public void testLoggedUser() {
loggedUser.getLoggedUser();
// Just an example but would be null here - why?
}
}
如何从应用程序的其他区域访问此属性?感谢您的帮助。
【问题讨论】: