0

用户成功登录后,如何从 userindex 页面显示用户名。我应该将它传递给构造函数并使用它吗?或者有没有更好的解决方案?

4

1 回答 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 回答