Как внедрить управляемый компонент в FacesContext? - PullRequest
2 голосов
/ 02 марта 2011

Как я могу заменить управляемый бин @ApplicationScoped своей собственной копией в FacesContext?Все, что у меня есть, это экземпляр FacesContext (я внутри JSFUnit).

1 Ответ

3 голосов
/ 03 марта 2011

Компоненты области приложения хранятся в карте приложения с именем управляемого компонента в качестве ключа.

Итак, это должно сделать:

FacesContext.getCurrentInstance().getExternalContext()
    .getApplicationMap().put("managedBeanName", new Bean());

Кстатиболее глубоко под JSF распространяется на Servlet API, карта приложения - это просто отображение атрибутов ServletContext.Полезно знать, когда случается, что у вас есть только ServletContext.И в той же строке карта сеанса отображается на атрибуты HttpSession, а карта запроса на HttpServletRequest атрибуты.Используйте их для сеанса и запрашивайте компоненты в области видимости соответственно.

...