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#getCurrentInstance() 在 Filter#doFilter() 中返回 null
无法从 Servlet 过滤器中的 FacesContext 检索 Session
FacesContext.getCurrentInstance() 在 FacesServlet(?) 处理的请求中返回 null