アクティブなユーザー (アクティブなセッションを持つユーザー) を一覧表示する機能を JSF 2 アプリケーションに追加しようとしました。このために、アプリケーション スコープのマネージド Bean を使用してユーザーのリストを保存し、ログインが成功するまでにそれぞれを追加することにしました。次に、jsf ページから (アプリケーション スコープのマネージド Bean に保存されている) アクティブなユーザー リストにアクセスします。ただし、次の問題を解決する方法を理解できた場合に限ります。
アプリケーション スコープ Bean : AppBean.java
@ManagedBean(name = "appBean")
@ApplicationScoped
public class AppBean implements java.io.Serializable {
private List<User> connectedUsers = new ArrayList<User>();
public AppBean() {
}
public List<User> getConnectedUsers() {
return connectedUsers;
}
public void setConnectedUsers(List<User> connectedUsers) {
this.connectedUsers = connectedUsers;
}
}
ログイン Bean:
@Named(value = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {
@ManagedProperty("#{appBean}")
private AppBean appBean;
private User userInSession;
public LoginBean() {
}
public String authenticate() {
if (this.authClearsOut()) {
if (appBean != null)
appBean.getConnectedUsers().add(userInSession);
else System.out.println("appBean = null !!!!");
return "/next_screen.xhtml?redirect=true";
}
else return "/login.xhtml?authentication=failed";
}
public AppBean getAppBean() {
return appBean;
}
public void setAppBean(AppBean appBean) {
this.appBean = appBean;
}
}
ここで 2 つの問題があります。1) LoginBean.java の 6 行目をプライベート AppBean appBean = new AppBean(); に変更しない限り、appBean は null です。2) ユーザー userinSession が (List) connectedUsers に追加されることはありません。
ここで何が問題なのですか?