8

私はマネージドBeanを持っています(以下のSessionScope)

@ManagedBean(name="login")
@SessionScoped
public class Login implements Serializable {

   private String userSession;
   public Login(){
   }
}

このマネージド Bean では、ログイン機能のどこかに、電子メールをセッションとして保存します。

ChangePassword (ViewScoped) という別のマネージド Bean があります。userSession に保存されている電子メールの値にアクセスする必要があります。

そうする理由は、パスワードの変更機能を完了する前に、現在の userSession(email) を見つける必要があるためです。(その特定の電子メールのパスワードを変更する必要があります)

どうすればいいですか?JSF は初めてですが、助けていただければ幸いです。

4

4 に答える 4

17

一方のBeanをもう一方のBeanの管理プロパティとして注入するだけです。

@ManagedBean
@ViewScoped
public class ChangePassword {

    @ManagedProperty("#{login}")
    private Login login; // +setter (no getter!)

    public void submit() {
        // ... (the login bean is available here)
    }

    // ...
}

参照:

于 2012-09-10T18:24:05.143 に答える
2

JSF2 では、通常、次のような方法を使用します。

public static Object getSessionObject(String objName) {
    FacesContext ctx = FacesContext.getCurrentInstance();
    ExternalContext extCtx = ctx.getExternalContext();
    Map<String, Object> sessionMap = extCtx.getSessionMap();
    return sessionMap.get(objName);
}

入力パラメーターは、Bean の名前です。

于 2012-09-10T18:02:44.710 に答える
0

セッションスコープのBeanが次のような場合:

@ManagedBean(name="login")
@SessionScoped
public class Login implements Serializable {

   private String userSession;
   public Login(){
   }
}

このBeanの値には次のようにアクセスできます。

@ManagedBean(name="changePassword")
@ViewScoped
public class ChangePassword implements Serializable {

   @ManagedProperty(value="#{login.userSession}")
   private String userSession;
   public ChangePassword (){
   }
}
于 2012-09-11T07:05:48.933 に答える
0
public static Object getSessionObj(String id) {
   return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(id);
}

public static void setSessionObj(String id,Object obj){
   FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(id, obj);
}

それらをマネージド Bean に追加します。

于 2015-03-14T12:55:04.937 に答える