用户成功登录后,如何在userindex页面显示用户名。我应该将它传递给构造函数并使用它吗?或者有更好的解决方案吗?
答案 0 :(得分:1)
创建一个会话范围的bean,用于存储用户的ID(以便您可以按请求查找用户)或实际的用户对象本身。
@Named // or @ManagedBean
@SessionScoped
public class SessionGlobals {
private Integer userId;
public boolean isLoggedIn() {
return userId != null;
}
public Integer getUserId() {
return userId;
}
public void login(int userId) {
this.userId = userId;
}
public void logout() {
this.userId = null;
}
在需要的地方注入此bean。登录和注销时,请调用上面的相应方法。
例如:
@Named // or @ManagedBean
@RequestScoped
public class RequestGlobals {
public User getUser() {
return sessionGlobals.isLoggedIn()
? userDao.findById(sessionGlobals.getUserId())
: null;
}
@Inject
private UserDao userDao;
@Inject
private SessionGlobals sessionGlobals;
}
并在您的页面或模板中:
<h:outputText value="Welcome, #{requestGlobals.user.firstName}"
rendered="#{sessionGlobals.loggedIn}"/>