FacesContext用于什么?

时间:2011-05-03 05:19:22

标签: jsf jsf-2 facescontext

FacesContext用于什么?

它究竟在哪里实施?

4 个答案:

答案 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并获取外围信息,所以它是   如果你需要它。

参考:What is the use of Facescontext Context Object