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

JSF入门十八(Phase事件)

    博客分类:
  • JSF
 
阅读更多

本文参考

http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630

 

JSF的请求执行到反应,完整的过程会经过六个阶段:
重建视图(Restore View)
依客户端传来的session数据或服务器端上的session数据,重建JSF视图组件。
套用请求值(Apply Request Values)
JSF视图组件各自获得请求中的属于自己的值,包括旧的值与新的值。

执行验证(Process Validations)
转换为对象并进行验证。
更新模型值(Update Model Values)
更新Bean或相关的模型值。
唤起应用程序(Invoke Application)
执行应用程序相关逻辑。
绘制响应页面(Render Response)
对先前的请求处理完之后,产生页面以反应客户端执行结果。

 

在每个阶段的前后会引发javax.faces.event.PhaseEvent,如果您想尝试在每个阶段的前后捕捉这个事件,以进行一些处理,则可以实现javax.faces.event.PhaseListener,并向javax.faces.lifecycle.Lifecycle登记这个Listener,以在适当的时候通知事件的发生。
PhaseListener有三个必须实现的方法getPhaseId()、beforePhase()与afterPhase(),其中getPhaseId()传回一个PhaseId对象,代表Listener想要被通知的时机,可以设定的时机有:

PhaseId.RESTORE_VIEW
PhaseId.APPLY_REQUEST_VALUES
PhaseId.PROCESS_VALIDATIONS
PhaseId.UPDATE_MODEL_VALUES
PhaseId.INVOKE_APPLICATION
PhaseId.RENDER_RESPONSE
PhaseId.ANY_PHASE

其中PhaseId.ANY_PHASE指的是任何的阶段转换时,就进行通知;您可以在beforePhase()与afterPhase()中编写阶段前后编写分别想要处理的动作,例如下面这个简单的类会列出每个阶段的名称:ShowPhaseListener.java

package bruce.zhao;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
public class ShowPhaseListener implements PhaseListener {
public void beforePhase(PhaseEvent event) {
String phaseName = event.getPhaseId().toString();
System.out.println("Before " + phaseName);
}
public void afterPhase(PhaseEvent event) {
String phaseName = event.getPhaseId().toString();
System.out.println("After " + phaseName);
}
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}

 编写好PhaseListener后,我们可以在faces-config.xml中向Lifecycle进行注册:faces-config.xml

<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<lifecycle>
<phase-listener>
bruce.zhao.ShowPhaseListener
</phase-listener>
</lifecycle>
......
</faces-config>

 您可以使用这个简单的类,看看在请求任一个JSF画面时所显示的内容,借此了解JSF每个阶段的流程变化。

分享到:
评论

相关推荐

    清晰版--JSF入门.pdf

    ### JSF入门知识点详解 #### 一、JSF概述 **1.1 简介JSF** JavaServer Faces (JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的复杂性,...

    《JSF入门》简体中文版.pdf

    JSF支持多种类型的事件,包括动作事件(Action Events)、即时事件(Immediate Events)、值变事件(Value Change Events)和Phase事件(Phase Events)。事件处理机制允许用户界面组件响应用户操作,如点击按钮或...

    JSF入门(中文pdf)

    本资源提供了一份详细的JSF入门中文PDF教程,旨在帮助初学者快速理解并掌握JSF的核心概念和基本用法。 JSF的核心理念在于简化Java Web开发,通过组件化的方式将界面、业务逻辑和数据模型进行解耦。在JSF中,UI组件...

    JSF基础教程 简体中文

    JSF入门如果您是从使用的角度来看JSF,则您不用理会HTTP、数据转换等细节,JSF将细节都隐藏起来了,无论您是网页设计人员或是应用程序设计人员,都可以使用自己熟悉的方式来看JSF。 入门 藉由以下的几个主题,可以...

    《JSF入门 - 简体中文版》.pdf

    除了上述事件之外,JSF还定义了一些特殊的事件,称为Phase事件。这些事件在整个JSF请求处理周期的不同阶段发生,允许开发者在特定的时间点插入自定义的行为。 综上所述,JSF提供了一种强大而灵活的方式来构建企业级...

    《JSF入门》简体中文版

    ### JSF入门知识点详解 #### 一、JSF概述与入门 **1.1 JSF简介** JavaServer Faces (简称JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的...

    JSF入门文档

    ### JSF入门知识点详解 #### 一、JSF概述 **JSF**(JavaServer Faces)是一种基于Java EE标准的Web应用程序开发框架,旨在简化企业级Web应用的开发过程。JSF通过提供一套易于使用的标签库和强大的服务器端组件,使得...

    JSF入门精通超级好的教程

    ### JSF入门精通教程知识点概览 #### 一、JSF简介 - **JSF (JavaServer Faces)**:一种基于Java EE平台的标准组件框架,用于构建动态网页应用程序。 - **解决的问题**:JSF旨在解决Web开发中常见的问题,如处理...

    jsf入门手册

    ### JSF入门手册知识点解析 #### 一、JSF概览与入门 ##### 1.1 JSF简介 JavaServer Faces(简称JSF)是一种基于Java的Web应用程序框架,主要目的是简化Web应用的开发和维护过程。JSF通过提供一组标准化的用户界面...

    JSF教程入门

    - **4.4 Phase事件**:了解JSF请求处理周期的不同阶段,以及如何监听和响应这些阶段的事件。 通过以上知识点的介绍,初学者可以系统地掌握JSF的基本概念和技术要点,为进一步深入学习和实践打下坚实的基础。

    有关JSF框架简洁中文教程

    JSF框架中文教程,包括JSF入门、Backing Beans、Beans 上的 List, Map、JSF Expression Language、JSF 生命周期、Phase 事件、TableModel 类别、等有关jsf的知识。

Global site tag (gtag.js) - Google Analytics