SF中的FacesContext对象详解

JSF

中的

FacesContext

对象详解

 

 

Faces API

中有两个类是要经常使用的

一个是

FacesContext 

一个是

ExternalContext.

首先讲解如何使用

FacesContext . 

对每个

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.2.1 

 

获取当前实例

 

一个经常用到的方法是静态的

getCurrentInstance

方法,

它返回当前的

FacesContext

实例。

此方法的签名如下:

 

public static FacesContext getCurrentInstance() 

下面的代码是一个用此方法获取

FacesContext

当前实例的例子:

 

FacesContext facesContext = FacesContext.getCurrentInstance(); 

 

3.2.2 

 

获取和修改组件树

 

FacesContext

实例里最重要的内容是请求页面的组件树。

组件树是由

javax.faces.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

使

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() 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值