如何在 FacesContext
中用我自己的副本替换 @ApplicationScoped
托管 bean?我所拥有的只是一个 FacesContext
的实例(我在 JSFUnit 中)。
最佳答案
应用程序作用域 bean 存储在 application map 中以托管 bean 名称作为键。
所以,应该这样做:
FacesContext.getCurrentInstance().getExternalContext()
.getApplicationMap().put("managedBeanName", new Bean());
顺便说一句,在JSF的更深处覆盖了Servlet API,应用程序映射只是ServletContext
的映射。属性。知道什么时候您手头只有 ServletContext
很有用。在同一行中,session map映射到 HttpSession
属性和 request map HttpServletRequest
属性。分别将它们用于 session 和请求范围的 bean。
关于java - 如何将托管 bean 注入(inject) FacesContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173087/