用户成功登录后,如何从 userindex 页面显示用户名。我应该将它传递给构造函数并使用它吗?或者有没有更好的解决方案?
问问题
2399 次
1 回答
1
创建一个会话范围的 bean,该 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}"/>
于 2012-10-25T04:45:26.530 回答