Java FacesContext中getExternalContext中的NullpointerException
我尝试从FacesContext获取外部上下文,如下所示,并获得NullPointerException:Java FacesContext中getExternalContext中的NullpointerException,java,jsf,Java,Jsf,我尝试从FacesContext获取外部上下文,如下所示,并获得NullPointerException: ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); 什么可能导致问题 只有在返回null时才会导致该错误。任何访问或调用null引用的尝试都将导致NullPointerException。另见: 当应用程序试图在需要对象的情况下使用null时引发。这些措施包括: 调用null
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
什么可能导致问题 只有在返回null
时才会导致该错误。任何访问或调用null
引用的尝试都将导致NullPointerException
。另见:
当应用程序试图在需要对象的情况下使用null
时引发。这些措施包括:
- 调用
对象的实例方法null
- 访问或修改
对象的字段null
- 将
的长度视为数组null
- 像数组一样访问或修改
的插槽null
- 将
作为一个null
值抛出李>Throwable
null
对象的其他非法使用
FacesContext#getCurrentInstance()
返回null
只能在该行代码未在JSF上下文中执行的情况下,即在FacesServlet
提供服务的HTTP请求期间运行未的代码时,才可能导致返回null
,谁负责将FacesContext
创建为ThreadLocal
。例如,在普通servlet、servlet过滤器或servlet侦听器中,或者在运行FacesServlet
的HTTP请求期间未执行的任何其他代码
如何正确地解决这一问题取决于问题中未明确的功能需求。通常,您要么确保HTTP请求通过FacesServlet
,要么通过更适合代码当前运行的上下文的其他方式访问您正在查找的信息。只有在返回null
时才会导致此问题。任何访问或调用null
引用的尝试都将导致NullPointerException
。另见:
当应用程序试图在需要对象的情况下使用null
时引发。这些措施包括:
- 调用
对象的实例方法null
- 访问或修改
对象的字段null
- 将
的长度视为数组null
- 像数组一样访问或修改
的插槽null
- 将
作为一个null
值抛出李>Throwable
null
对象的其他非法使用
FacesContext#getCurrentInstance()
返回null
只能在该行代码未在JSF上下文中执行的情况下,即在FacesServlet
提供服务的HTTP请求期间运行未的代码时,才可能导致返回null
,谁负责将FacesContext
创建为ThreadLocal
。例如,在普通servlet、servlet过滤器或servlet侦听器中,或者在运行FacesServlet
的HTTP请求期间未执行的任何其他代码
如何正确地解决这一问题取决于问题中未明确的功能需求。通常,您要么确保HTTP请求通过
FacesServlet
,要么通过更适合代码当前运行环境的其他方式访问您正在查找的信息。非常感谢您提供的高度详细的帐户:)。由于这是我实现的所有代码行(与jsf相关),我想我需要启动HTTP请求。你能给我推荐一种最简单的方法吗?正如前面所说,这实际上取决于这行代码运行的上下文和功能需求。那行代码到底在哪里运行?您认为ExternalContext
适合做什么?ExternalContext
只是围绕ServletContext
、HttpServletRequest
、HttpSession
和HttpServletResponse
的一个门面。如果其中任何一个在代码运行的上下文中可用,只需直接使用其中一个即可。请随意提出一个新问题,详细描述功能需求。基本上,我需要能够使用ExternalContext#redirect将用户从我的屏幕转移到不同屏幕中的另一个工具。同样,代码当前运行的上下文是什么?例如,它是否在servlet过滤器的doFilter()方法中?如果是,请将提供的ServletResponse
参数强制转换为HttpServletResponse
,并使用其sendRedirect()方法。如果您真的坚持使用JSF ish方式进行检查或回答,非常感谢您提供的高度详细的说明:)。由于这是我实现的所有代码行(与jsf相关),我想我需要启动HTTP请求。你能给我推荐一种最简单的方法吗?正如前面所说,这实际上取决于这行代码运行的上下文和功能需求。那行代码到底在哪里运行?您认为ExternalContext
适合做什么?ExternalContext
只是围绕ServletContext
、HttpServletRequest
、HttpSession
和HttpServletResponse
的一个门面。如果其中任何一个在代码运行的上下文中可用,只需直接使用其中一个即可。请随意提出一个新的问题,其中您描述了功能