java - 如何将托管 bean 注入(inject) FacesContext?

标签 java jsf jsfunit

如何在 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/

相关文章:

jsf - 在字符串值中评估 EL 表达式

带有支持 bean 的 JSF 复合组件

java - Glassfish 3 安全性 - 使用 JDBC 领域的基于表单的身份验证

unit-testing - 没有 Maven 和 JBoss AS 的 JSFUnit

java - 使用 JTable 的 ClassCastException?

java - 多线程程序无法运行

java - 网页元素解析

Java 8 Nashorn - 将 engine.eval ("print(' hello world')) 捕获到 String 对象中?