35

FacesContext用来做什么的?

它究竟在哪里实施?

4

4 回答 4

33

引用JSF 2.0 规范的第 6.1 章:

FacesContext

JSF 定义了 javax.faces.context.FacesContext 抽象基类,用于表示与处理传入请求相关的所有上下文信息,并创建相应的响应。

实例由FacesContext JSF 实现在开始请求处理生命周期之前通过调用 的getFacesContext方法 创建FacesContextFactory,如第 6.6 节“FacesContextFactory”中所述。

当请求处理生命周期完成时,JSF 实现将调用 release 方法,这使 JSF 实现有机会释放任何获取的资源,以及池和回收 FacesContext 实例,而不是为每个请求创建新实例。

它在 classjavax.faces.context.FacesContext和在 class 中实现的 Mojarra 和在 class中实现com.sun.faces.context.FacesContextImpl的 MyFaces 中指定org.apache.myfaces.context.servlet.FacesContextImpl

也可以看看:

于 2011-05-03T06:32:50.283 回答
5

FacesContext 包含与单个 JavaServer Faces 请求的处理以及相应响应的呈现相关的所有每个请求的状态信息。它被传递到请求处理生命周期的每个阶段,并可能被其修改。

在请求处理开始时,通过调用与当前 Web 应用程序关联的 FacesContextFactory 实例的 getFacesContext() 方法,FacesContext 实例与特定请求相关联。该实例保持活动状态,直到它的 release() 方法被调用,之后不允许进一步引用该实例。当 FacesContext 实例处于活动状态时,除了执行此 Web 应用程序的 servlet 容器用于处理此请求的线程之外,不得从任何线程引用它。

参考:

http://docs.oracle.com/javaee/6/api/javax/faces/context/FacesContext.html

于 2013-11-26T17:21:42.110 回答
5

A new instance of FacesContext gets created with every new request. The main task of FacesContext is to provide all the information regarding the particular request with which it is associated. For example : to add messages after certain validation or conversion failure, you can simply add the message to the FacesContext which ultimately displays the desired message on the screen. Also you can take a look and even stop the JSF lifecycle at any point by calling

    FacesContext.responseComplete();
于 2014-09-16T17:13:13.900 回答
3

Facescontext 是连接到框架和容器特定服务的锚点。例如,您可以通过 Facescontext 获取访问您的支持 bean 的页面请求的底层 httprequest 和上下文对象。这包括运行网页请求的安全上下文。

JSF 背后的一般理念是,用户提供的组件应该足够抽象,不依赖于诸如它们是在传统 JSP 环境中运行还是在更奇特的环境中运行的细节,所以如果 bean 中有 Facescontext 引用,它就是糟糕设计的潜在迹象,特别是因为预计 bean 会向其中注入东西,而不是出去寻找东西。

但是,有时出于某种原因,伸出支持 bean 并获取外围信息是很方便的,因此如果您需要它就在那里。

参考:Facescontext Context对象有什么用

于 2013-07-12T08:02:39.673 回答