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