如何在@ApplicationScoped
中使用我自己的副本替换FacesContext
托管bean?我只有一个FacesContext
的实例(我在JSFUnit中)。
答案 0 :(得分:3)
应用程序范围的bean存储在application map中,托管bean名称为密钥。
所以,这应该做:
FacesContext.getCurrentInstance().getExternalContext()
.getApplicationMap().put("managedBeanName", new Bean());
顺便说一下,在JSF更深层次的Servlet API中,应用程序映射只是ServletContext
属性的映射。有用的是知道什么时候你手上只有ServletContext
。在同一行中,session map映射到HttpSession
属性和request map到HttpServletRequest
属性。将它们分别用于会话和请求范围的bean。