【问题标题】:FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()) returns nullFacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()) 返回 null
【发布时间】:2011-06-14 17:52:21
【问题描述】:

我正在使用 Spring、Hibernate 和 JSF。

为了从应用程序上下文中获取一个 bean,我编写了:

public static Object findBean(String name) {
  return FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()).getBean(name);
 }

但是,FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()) 返回 null,因此在其上调用 getBean() 会引发 NullPointerException

我需要在任何地方定义任何东西吗?

已编辑

我需要从应用程序上下文中获取 bean,而不是 jsf bean

【问题讨论】:

  • null 到底是什么引用?这些是静态方法,它们不可能抛出 NPE。你不是说FacesContext#getCurrentInstance() 返回了null 并且NPE 实际上被扔进了getWebApplicationContext() 方法吗?
  • FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()) 返回 null。 FacesContext.getCurrentInstance() 不为空!

标签: java spring jsf


【解决方案1】:

如果您不在由FacesServlet 处理的请求中,则FacesContext.getCurrentInstance() 返回null。确保您正在处理通过该 servlet 传递的请求。

更新:如果 faces 上下文不为 null,那么应用程序上下文可能为 null 的原因是没有名为 org.springframework.web.context.WebApplicationContext.ROOT 的 servlet 上下文属性。这意味着弹簧没有正确初始化。确保您将弹簧ContextLoaderListener 映射到web.xmlDispatcherServlet

【讨论】:

  • 查看我对 BalusC 的评论 - FacesContext.getCurrentInstance() 不为空!我从中得到 com.sun.faces.context.FacesContextImpl。
  • 谢谢!我错过了 ContextLoaderListener
  • @Odelya 不错。顺便说一句,0 赞成票的接受答案似乎有点奇怪:)
  • @BalusC 谢谢。顺便说一句,你是如何添加少于 15 个字符的评论的? :)
猜你喜欢
  • 1970-01-01
  • 2012-02-26
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多