FacesContext#getCurrentInstance() 在 Filter#doFilter() 中返回 null

Posted

技术标签:

【中文标题】FacesContext#getCurrentInstance() 在 Filter#doFilter() 中返回 null【英文标题】:FacesContext#getCurrentInstance() returns null in Filter#doFilter() 【发布时间】:2013-01-01 21:38:22 【问题描述】:

内部

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)

我想使用

FacesContext.getCurrentInstance().getExternalContext().getSession(false);

但我意识到FacesContext.getCurrentInstance() 返回null。我知道我可以改用((HttpServletRequest) req).getSession(false) 来获取会话,但我的具体问题是:为什么doFilter() 方法中的面孔上下文null

我正在使用 MyFaces 1.1。

【问题讨论】:

【参考方案1】:

FacesContext 作为对象直接绑定到 JSF 请求处理生命周期,因此仅在标准 JSF(用户驱动)请求-响应过程期间可用。实际对象本身存储在一个线程中,该线程在处理 JSF 请求期间运行,相对于 ManagedBean。

但是。 BalusC 概述了一些步骤,让您在处理生命周期here 之外获得对象。 :)

【讨论】:

以上是关于FacesContext#getCurrentInstance() 在 Filter#doFilter() 中返回 null的主要内容,如果未能解决你的问题,请参考以下文章

如何在过滤器中检索 FacesContext

FacesContext#getCurrentInstance() 在 Filter#doFilter() 中返回 null

JSF - JUnit FacesContext模拟测试

无法从 Servlet 过滤器中的 FacesContext 检索 Session

FacesContext.getCurrentInstance() 在 FacesServlet(?) 处理的请求中返回 null

FacesContext 在带有 JSF 2.3 的 Wildfly 14 中不可注入(Mojarra,主模块)