`
bengan
  • 浏览: 201702 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSF中如何使用FacesContext类

阅读更多
在Faces API中有两个类是要经常使用的. 一个是FacesContext 一个是ExternalContext, 本篇文章讲解如何使用前者, 在下面的一篇文章中在继续讲解任何使用后者:

对每个JSF请求,FacesServlet对象都会为其获取一个javax.faces. context.
FacesContext类的实例。FacesServlet对象将下列3个取自Web容器的对象传给javax.faces.context.FacesContextFactory对象的getFacesContext方法,以此来做到这一点:

●javax.servlet.ServletContext
●javax.servlet.ServletRequest
●javax.servlet.ServletResponse
这意味着FacesContext的实例里包含了所有处理JSF请求所需的每个请求的状态信息。图3-1展示了FacesContext实例里封装的其他一些对象FacesContext实例里封装的其他一些对象。FacesContext实例及其封装的对象  获取当前实例 一个经常用到的方法是静态的getCurrentInsta
图3-1 

3.2.1  获取当前实例一个经常用到的方法是静态的getCurrentInstance方法,它返回当前的FacesContext实例。此方法的签名如下:public static FacesContext getCurrentInstance()下面的代码是一个用此方法获取FacesContext当前实例的例子:FacesContext facesContext = FacesContext.getCurrentInstance();

3.2.2  获取和修改组件树FacesContext实例里最重要的内容是请求页面的组件树。组件树是由javax.faces.tree.Tree类来表示的(本章后面的“使用Tree类”一节会讨论)。FacesContext实例的tree属性就是Tree对象。要获取或修改Tree对象,可使用tree属性的读取方法和赋值方法:public abstract Tree getTree()public abstract void setTree(Tree tree)

3.2.3  添加和获取消息在请求处理生命周期里,可能会遇到错误。比如,当验证器执行输入验证时,因为用户输入了不正确的值,验证可能失败;当组件试图把输入值转换为绑定到组件的模型对象所需的类型时,也可能会失败。所有消息都必须存放到FacesContext实例里以备后面进行处理。比如,您可能希望在页面里显示错误消息,从而为用户更正错误提供帮助。错误消息是由javax.faces.application.Message接口(第11章再详细讨论)来表示的,您可以通过使用FacesContext类的addMessage方法向FacesContext实例里添加Message对象。这个方法的签名如下:public abstract void addMessage(UIComponent component, Message message)如果component不为空,新加入的message就关联到component上。否则,它就不与任何特定组件的实例相关。举例来说,验证器在验证组件值失败时可调用FacesContext的addMessage方法,传入值无效的组件及一个包含特定错误消息的Message对象。所有添加到FacesContext实例的Message对象都被加入到一个集合里。可通过调用getMessages方法的两个重载方法之一来获取加入的Message对象:public abstract Iterator getMessages()public abstract Iterator getMessages(UIComponent component)第一种形式的调用在一个Iterator里返回所有Message对象,而第二种形式的调用则仅返回与给定UIComponent相关联的Message对象。

3.2.4  添加和获取请求处理事件UIComponent可以生成FacesEvent对象。比如,当单击一个UICommand组件时,它会生成一个ActionEvent对象(ActionEvent类是FacesEvent类的子类)。这个FacesEvent对象需要在FacesContext实例里保存起来,以备请求处理生命周期里的下一步处理事件时所用。可通过使用FacesContext类的addFacesEvent方法向FacesContext实例添加FacesEvent对象。此方法的签名如下:public abstract void addFacesEvent(FacesEvent event)要提取先前添加的FacesEvent对象,可调用getFacesEvents方法,其签名如下:public abstract Iterator getFacesEvents()此方法返回FacesEvent时的顺序与其在队列中的顺序一致。

3.2.5  向Response对象里写入信息为了向Response对象里写入信息,FacesContext类提供了两个属性,一个是javax.faces.Context.ResponseStream类型,另一个是javax.faces.context.ResponseWriter类型。ResponseStream类型的对象用于输出二进制数据,而ResponseWriter类型的对象则用于输出字符。这些属性的读取方法和赋值方法如下:public abstract ResponseStream getResponseStream()public abstract void setResponseStream(ResponseStream responseStream)public abstract ResponseWriter getResponseWriter()public abstract void setResponseWriter(ResponseWriter responseWriter)

3.2.6  获取和设置地区第11章将会讨论到,JSF支持国际化和本地化。这意味着您可以根据用户的地区决定发送什么样的回应信息。locale属性里存放了当前处理中所用的Locale对象。初始状况下,locale属性的值和网络浏览器里指定的地区是一样的,但可以修改这个值,从而发送输出所使用的地区将独立于浏览器所使用的地区。此属性的读取方法和赋值方法如下:public abstract Locale getLocale()public abstract void setLocale(Locale locale)

3.2.7  操作请求处理生命周期FacesContext类还提供了两个方法与请求处理生命周期进行交互:
●在当前阶段的处理完成后,调用renderResponse方法通知JSF实现把控制权转到呈现响应阶段。也就是说,处于当前阶段和呈现响应阶段之间的所有其他阶段都不再执行。
●调用responseComplete方法,告诉JSF实现此次请求的HTTP响应已经完成(比如在使用了HTTP重定向的情况下)。因此,当前阶段完成后,必须中止请求处理生命周期的处理。这些方法的签名如下:public abstract void renderResponse()public abstract void responseComplete()

3.2.8  获取其他请求状态信息其他每个请求的状态信息封装在ExternalContext对象里,可以使用getExternalContext方法获取该对象:public abstract ExternalContext getExternalContext()ExternalContext放在下一节讨
  • 大小: 9.6 KB
分享到:
评论
1 楼 feihumingyue 2012-09-14  
nice 很好啊

相关推荐

    jsf的facesContext上下文工具类

    jsf的facesContext上下文工具类

    JSF FacesContext 详解

    在 Faces API 中,FacesContext 和 ExternalContext 是两个经常使用的类,本文将详细介绍 FacesContext 的编程接口和使用方法。 FacesContext 的实例是在 FacesServlet 对象中创建的,每个 JSF 请求都会获取一个 ...

    JSF如何使用ExternalContext类

    本文将详细讲解如何在JSF中使用`ExternalContext`类。 首先,`ExternalContext`类主要提供了以下三种方法来获取Servlet环境中的核心对象: 1. **获取ServletContext对象**: - `getContext()`方法返回与当前请求...

    JSF框架中使用的设计模式介绍

    ### JSF框架中使用的设计模式介绍 #### 一、引言 JavaServer Faces(简称JSF)是Java平台上的一个标准Web应用程序框架,由Java Community Process(JCP)定义为Web应用程序开发的标准模型。JSF提供了丰富的功能来...

    jsf 中文帮助文档

    **JSF API** 是JSF框架的核心部分,提供了大量的接口、类和注解,供开发者在实际开发中使用。API文档详细解释了这些组件的工作方式,以及如何在项目中正确使用它们。通过API,你可以了解如`UIComponent`、`Managed...

    JSF开发介绍JSF开发介绍

    JSF的核心是UI组件,它们通过自定义标记在JSP页面中使用,这些标记与renderer关联,使得组件可以以多种方式呈现。例如,同一个UI组件可以用不同的renderer来呈现HTML或其他格式。UIComponent、Renderer和标记协同...

    JSF和Spring集成.doc

    - 这个类的主要功能是在 JSF 世界中查找 Spring 管理的 bean,同时也实现了在 Spring 中查找 JSF 组件的方法。 - `findBean(String beanName)` 方法用于从 Spring 中查找 bean,该方法通过当前 `FacesContext` ...

    jsf中文教程.chm

    **FacesContext**是JSF的核心对象,它在整个JSF请求处理过程中起到桥梁的作用,连接了视图、模型和控制器。 **国际化与本地化**在JSF中也得到了很好的支持,开发者可以轻松地为应用程序添加多语言支持。 **JSF与...

    jsf开发需要的相关jar包

    4. 使用Managed Beans:创建Java类作为 Managed Beans,它们是JSF应用中的业务逻辑载体,可以被JSF页面引用并进行数据操作。 5. 配置JSF:在`faces-config.xml`文件中配置应用的组件、转换器、验证器和导航规则。 ...

    从零开始,跟我学JSF,起步 JSF

    9. **实用工具和扩展**:可能涵盖一些JSF的实用工具类,如FacesContext,以及如何使用Mojarra和MyFaces等不同实现库的扩展功能。 通过深入学习和实践这些内容,你将能够从零基础逐渐掌握JSF的使用,为构建高效、可...

    jsf-api-2.0.3.jar.zip_jsf api_jsf jar包_jsf-api-2.0.3.jar_jsf-api

    在部署包含JSF功能的Web应用到Tomcat时,确保所有必要的库,如`jsf-api.jar`(通常与`jsf-impl.jar`一起使用,提供JSF实现),被正确地添加到Tomcat的类路径(ClassPath)中是至关重要的。如果缺失这些库,应用程序...

    jsf必需的jar包

    当开发者在项目中使用JSF并尝试导入`javax.faces.*`类时,如果编译器报红提示找不到相应的类,这通常意味着缺少了`jsf-api.jar`和`jsf-impl.jar`这两个必要的jar包。为了解决这个问题,你需要将这两个jar文件添加到...

    用jsf做的登录注册的组件

    这些组件可以直接在JSP或Facelets页面中使用,简化了前端开发。 3. **登录与注册**:登录注册功能通常包括用户名验证、密码比较、错误处理等。在JSF中,可以通过EL(Expression Language)来绑定组件值到后台Bean的...

    JSF国际化范例 源代码

    3. **Resource Bundle**:JSF使用`ResourceBundle`类来管理不同语言的资源文件。每个Locale对应一个资源文件,当应用检测到用户的Locale时,会加载相应的资源包。 4. **UIComponent的`bundle`属性**:在JSF的XHTML...

    jsf.jar包

    `jsf.jar`中的类和接口定义了JSF框架的基本行为,如FacesContext、UIComponent、ManagedBean等关键类,这些都是开发JSF应用的基础。 **jsf-api.jar** 文件则包含了JSF的公共API,这是开发人员编写JSF应用程序所必须...

    JSF API

    FacesContext是JSF框架中的核心类,它封装了与请求相关的所有信息,包括请求参数、视图状态、消息等。开发人员可以通过FacesContext获取当前请求的状态和执行各种操作。 4. **Managed Beans** Managed Beans是JSF...

    jsf学习必备——实用工具书

    压缩包中的"tlddoc"可能是指Tag Library Documentation,这是对JSF中使用的标签库的文档。TLD文件描述了库中每个标签的用途、属性、事件等信息,对于理解和使用特定库非常有用。例如,可能包含了关于PrimeFaces、...

    jsf-api.jar

    5. **FacesContext**: 是JSF框架的核心上下文对象,它存储了请求处理过程中的所有信息,包括用户请求、响应、组件树等。 6. **Lifecycle**: JSF有自己的一套生命周期,包括初始化、恢复视图、应用请求值、处理事件...

    jsf1.2 jar包下载

    1. **jsf-api.jar**:这个JAR文件包含了JSF API,即JSF规范定义的接口和类。开发者在编写JSF应用程序时,主要会引用这个API,它定义了诸如FacesContext、UIComponent、ValueExpression等核心组件和接口。通过这些API...

Global site tag (gtag.js) - Google Analytics