Как получить бобы из области видимости
Я хочу спросить, помещаю ли я управляемый bean-компонент в область действия сеанса, затем он сохраняется в сеансе.
@ManagedBean
@SessionScoped
public class SessionScopedBean implements Serializable {
.......
} //end of class SessionScopedBean
Затем он сохраняется в сеансе, и во время сеанса я могу получить его, используя
session.getAttribut("SessionScopedBean");
Это даст мне объект SessionScopedBean, и когда сессия будет уничтожена, я получу ноль. Теперь я хочу спросить, есть ли мой боб в поле зрения Scope, тогда как мне его получить? подобно
@ManagedBean
@ViewScoped
public class ViewScopedBean implements Serializable {
.......
} //end of class ViewScopedBean
Теперь, если представление сохраняется, тогда этот компонент находится в состоянии просмотра, и когда представление изменяется, этот компонент будет уничтожен. Теперь я хочу спросить, как я могу получить этот компонент из состояния просмотра, если представление сохраняется. подобно
view.getAttrubute("ViewScopedBean"); //just a code. No actual implementation.
Спасибо
1 ответ
Они хранятся на карте вида как доступные UIViewRoot#getViewMap()
:
Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
ViewScopedBean viewScopedBean = (ViewScopedBean) viewMap.get("viewScopedBean");
// ...
Эквивалентно, вы должны также использовать абстракцию карты сеанса, которая доступна ExternalContext#getSessionMap()
(в конечном итоге вы хотите иметь ноль javax.servlet
импортировать объявления по всему коду JSF):
Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
SessionScopedBean sessionScopedBean = (SessionScopedBean) sessionMap.get("sessionScopedBean");
// ...
Смотрите также:
Не связанный с конкретной проблемой, это может быть не лучшим способом. смотреть на @ManagedProperty
если возможно.