JSF规范(一)

9 篇文章 0 订阅

本文是基于JSF规范的翻译而来,并省掉一些无关紧要的章节。如有不当之处请大家指正。

作者:youfly      email:seedcloned-pub@yahoo.com.cn

转载请注明出处:www.jfuns.com www.jfuns.cn http://blog.csdn.net/youfly

 

前言

本文描述的是JavaServer Faces 1.2 (JSF 1.2)规范,由JCP(Java Community Process)JSR-252的专家组开发(更多关于JCP的信息请参考 <http://www.jcp.org>)

 

UnifiedExpression Language (EL)

 

概述


2请求处理生命周期

每一个调用JSF组件树的请求都要经过定义好的由各个阶段组成的“请求处理生命周期”。在这里有三个情景需要考虑,每个情景都有它自己的阶段组成和活动。

JSF请求生成JSF响应

JSF请求生成JSF响应

JSF请求生成非JSF响应

 

下面是使用到的术语定义:

 

JSF响应(Faces Response)指由“请求处理生命周期”中的呈现响应阶段生成的响应。

JSF响应(Non-FacesResponse)—指不是由“请求处理生命周期”中的呈现响应阶段生成的响应. 例如由servlet生成或者由JSP呈现的不是通过JSF组件生成的响应。或者HTTP状态不是设成通常的200的响应(Redirect)

JSF请求(Faces Request)—指由先前的JSF响应发送的请求。例如由用户接口组件(user interfacecomponent)呈现的超级连接或form提交,其中的URI被处理(由组件或者呈现(renderer)生成)成用来标识处理请求的视图(view)

JSF请求(Non-FacesRequest)—一个不是指向JSF视图(Faces view)被发送到应用组件的请求 (例如servlet或者jsp页面).

 

当然你的应用程序可能接收到非JSF请求 (non-Faces requests)并且产生非JSF响应(non-Faces responses)。因为这些请求根本不会调用JavaServer Faces,它们的处理不在本规范的范围之内,因此不作更多的考虑和介绍。

请者注意:本单的动态行为描述向前引用了一些章节所描述的类和接口。当你碰到这些引用的时候,可能需要找到这些引用的类或接口用处并且忽略它们的定义。然后回到本单节完成行为描述的阅读。在后续的章节中你能够详细的学习到这些类或者接口的特性。

2.1请求处理生命周期情景

这里描述的每一个情景都有一个按照特定的顺序执行的各个阶段组成的生命周期。下面的章节分别介绍各个章节。

 

2.2.1JSFnon-Faces requests)请求生成JSF响应(faces responses

一个应用程序可能需要处理非JSF请求(Non-Faces Request),并用JSF响应(Faces Response)来呈现这个请求。为了达到这个目的,应用程序必须完成下面的一些活动。

 

获取一个faces对象引用,在第 2.4.1获取Faces对象引用介绍

创建一个新的视图(view), 在第 2.4.2 “创建和配置一个新的视图介绍。

通过调用FacesContextsetViewRoot()方法保存一个视图到FacesContext中。

调用取到的Lifecycle实例的render()方法。 通知JSF实现开始处理“请求处理生命周期”的呈现响应(Render Response)阶段。

 

2.2.2JSFfaces requests)请求生成JSF响应(faces responses

最常见的生命周期情况是先前的JSF响应包含将要提交的用户界面控制,利用请求的URI来印射到JSF实现的控制器中。具体在10.1.2 “ServletMapping”中描述。因为这些请求将被JSF实现作一些初始化的处理,因此应用需要经过一些特别的步骤它的事件监听器(event listeners),验证(validators),和应用行为(applicationaction)都将标准的“请求处理生命周期”所调用。下图描述了调用的流程:


“请求处理生命周期”各个阶段的具体行为分别在2.2章“标准请求处理生成周期”的各个子章节中介绍。请注意“请求处理生命周期”中每个阶段的处理结果,根据所感兴趣的事件,组件树广播所有的它生成的FacesEvents,共用的事件逻辑(在章节2.3“共用事件处理”中介绍)被执行。

2.2.2JSFfaces requests)请求生成非JSF响应(non-faces responses

通常基于JSF的应用程序利用“请求处理生命周期”的呈现响应(Render response)阶段来生成发送到客户端的响应。但是在一些环境中这个行为并不能满足人的要求,例如:

一个JSF请求需要重定向到一个不同的web应用 (通过调用HttpServletResponse.sendRedirect)

一个JSF请求使用其他技术生成响应 (例如一个servlet,或者不包含JSF组件的JSP页面)

 

在这种情况下应用程序应该使用标准的servletportlet API来生成响应的头和内容。因此有必要告诉JSF实现响应已经被生成,这样JSF实现就可以忽略“请求处理生命周期”的呈现阶段。可以在事件处理器和应用行为(Application Action)中调用FacesContext实例的responseComplete()来通知JSF响应已经被生成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值