FacesContext
用于什么?
它究竟在哪里实施?
答案 0 :(得分:29)
引自JSF 2.0 specification的第6.1章:
的FacesContext
JSF定义了
javax.faces.context.FacesContext
用于表示的抽象基类 所有的背景信息 与处理传入相关联 请求,并创建 相应的回应。A
FacesContext
实例由JSF创建 实施,在开始之前 请求处理生命周期,由a 调用getFacesContext
方法FacesContextFactory
,如中所述 第6.6节“FacesContextFactory”。当请求处理生命周期时 已完成,JSF 实现将调用发布 方法,它给出了JSF 实施机会 释放任何获得的资源,如 以及池和回收 FacesContext实例而不是 为每个请求创建新的。
在课程javax.faces.context.FacesContext
和在课程com.sun.faces.context.FacesContextImpl
中实施的Mojarra以及在课程org.apache.myfaces.context.servlet.FacesContextImpl
中实施的MyFaces中指定。
答案 1 :(得分:4)
FacesContext包含与处理单个JavaServer Faces请求相关的所有每请求状态信息,以及相应响应的呈现。它被传递给请求处理生命周期的每个阶段,并可能被修改。
通过调用与当前Web应用程序关联的FacesContextFactory实例的getFacesContext()方法,FacesContext实例在请求处理开始时与特定请求相关联。在调用release()方法之前,实例保持活动状态,之后不允许进一步引用此实例。当FacesContext实例处于活动状态时,除了执行此Web应用程序的servlet容器用于处理此请求的线程之外,不得从任何线程引用它。
http://docs.oracle.com/javaee/6/api/javax/faces/context/FacesContext.html
答案 2 :(得分:4)
每次新请求都会创建一个新的FacesContext实例。 FacesContext的主要任务是提供与其相关的特定请求的所有信息。 例如:要在某些验证或转换失败后添加消息,您只需将消息添加到FacesContext,最终在屏幕上显示所需的消息。 您也可以通过调用
来查看甚至停止JSF生命周期 FacesContext.responseComplete();
答案 3 :(得分:2)
Facescontext是连接到framework-and的锚点 特定于集装箱的服务。例如,您可以获得 页面请求的基础httprequest和上下文对象 通过Facescontext访问您的支持bean。那 包括在其下运行网页请求的安全上下文。
JSF背后的一般理念是用户提供的组件 应该足够抽象,不要依赖于是否的细节 它们在传统的JSP环境中运行,或者更多 异国情调,所以如果bean中有Facescontext引用,那就是a 设计糟糕的潜在迹象,特别是因为预计豆类 将东西注入其中,而不是去寻找东西。
然而,有时由于某种原因,它很方便到达 退出支持bean并获取外围信息,所以它是 如果你需要它。