用户登录时JSF显示用户名

时间:2012-10-25 04:38:37

标签: jsf jdeveloper

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

1 个答案:

答案 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}"/>
相关问题