Вопрос по jsf-2, jsf, managed-bean, parameter-passing – Как получить доступ к свойству одного управляемого компонента в другом управляемом компоненте

8

У меня есть управляемый компонент (SessionScope, как следует)

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

   private String userSession;
   public Login(){
   }
}

В этом управляемом файле где-то в функции входа в систему я сохраняю электронную почту как сеанс.

У меня есть другой управляемый компонент, называемый ChangePassword (ViewScoped). Мне нужно получить доступ к значению электронной почты, которая хранится в пользовательской сессии.

Причиной этого является то, что мне нужно узнать текущую пользовательскую сессию (электронную почту), прежде чем я смогу завершить функцию смены пароля. (Нужно изменить пароль для этого конкретного электронного письма)

Как мне это сделать? Новичок в JSF, ценю любую помощь!

Ваш Ответ

4   ответа
17

нта.

@ManagedBean
@ViewScoped
public class ChangePassword {

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

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

    // ...
}
Смотрите также:Связь в JSF 2.0 - внедрение управляемых bean-компонентов друг в друга
2

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

Входным параметром является имя вашего компонента.

Хотя это работает, это довольно неуклюжий подход для получения управляемого bean-объекта сессионной области в управляемом bean-компоненте. BalusC
Все еще учусь ... и вы, @BalusC, обычно решаете мои проблемы. (В большинстве случаев другие уже спрашивали, о чем я хочу спросить, а вы отвечали.) Kennet
0

если ваш сессионный компонент имеет вид:

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

   private String userSession;
   public Login(){
   }
}

вы можете получить доступ к значениям этого компонента, например:

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

   @ManagedProperty(value="#{login.userSession}")
   private String userSession;
   public ChangePassword (){
   }
}
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);
}

Похожие вопросы