如何将托管bean注入FacesContext?

时间:2011-03-02 20:33:59

标签: java jsf jsfunit

如何在@ApplicationScoped中使用我自己的副本替换FacesContext托管bean?我只有一个FacesContext的实例(我在JSFUnit中)。

1 个答案:

答案 0 :(得分:3)

应用程序范围的bean存储在application map中,托管bean名称为密钥。

所以,这应该做:

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

顺便说一下,在JSF更深层次的Servlet API中,应用程序映射只是ServletContext属性的映射。有用的是知道什么时候你手上只有ServletContext。在同一行中,session map映射到HttpSession属性和request mapHttpServletRequest属性。将它们分别用于会话和请求范围的bean。