0

ユーザーが正常にログインしたら、userindex ページからユーザー名を表示するにはどうすればよいですか。コンストラクターに渡して使用する必要がありますか? またはこれに対するより良い解決策はありますか?

4

1 に答える 1

1

ユーザーの ID (リクエストごとにユーザーを検索できるようにするため) または実際のユーザー オブジェクト自体を格納するセッション スコープの Bean を作成します。

@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 に答える