JSF生命周期监听器
来源:互联网 发布:python 弹出消息框 编辑:程序博客网 时间:2024/06/06 19:12
在 即時事 件 中我們提到,JSF的請求執行到回應,完整的過程會經過六個階段:
在每個階段的前後會引發javax.faces.event.PhaseEvent,如果您想嘗試在每個階段的前後捕捉這個事 件,以進行一些處理,則可以實作javax.faces.event.PhaseListener,並向 javax.faces.lifecycle.Lifecycle登記這個Listener,以有適當的時候通知事件的發生。
PhaseListener有三個必須實作的方法getPhaseId()、beforePhase()與afterPhase(),其中 getPhaseId()傳回一個PhaseId物件,代表Listener想要被通知的時機,可以設定的時機有:
其中PhaseId.ANY_PHASE指的是任何的階段轉換時,就進行通知;您可以在beforePhase()與afterPhase()中撰寫階段 前後撰寫分別想要處理的動作,例如下面這個簡單的類別會列出每個階段的名稱:
撰寫好PhaseListener後,我們可以在faces-config.xml中向Lifecycle進行註冊:
您可以使用這個簡單的類別,看看在請求任一個JSF畫面時所顯示的內容,藉此瞭解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 onlyfun.caterpillar;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> onlyfun.caterpillar.ShowPhaseListener </phase-listener> </lifecycle> ......</faces-config>
您可以使用這個簡單的類別,看看在請求任一個JSF畫面時所顯示的內容,藉此瞭解JSF每個階段的流程變化。
- JSF生命周期监听器
- jsf生命周期
- JSF生命周期
- JSF生命周期
- jsf生命周期
- JSF生命周期
- JSF---->JSF 生命周期
- JSF的生命周期 (图例JSF的生命周期)
- JSF 应用程序的生命周期
- JSF 应用程序的生命周期
- 关于jsf 生命周期
- JSF 应用程序的生命周期
- JSF生命周期(转)
- JSF生命周期概述
- JSF生命周期详解
- JSF生命周期图
- 简单介绍JSF生命周期
- 切入JSF的生命周期
- mysql免安装版配置(检查电脑服务列表里面有没有mysql服务,确认没有)
- C# 调用外部程序Process类
- windows程序
- 为 Linux 应用程序编写 DLL
- MySQL Server 启动时的 bug
- JSF生命周期监听器
- 用手机修改单片机时钟(1602显示)
- NFC应用(二)读写器模式
- JAVA对Oracle中BLOB、CLOB类型字段的操作说明
- Struts1
- Struts的Action访问spring的ApplicationContext的问题
- C#winform DataGridView 右键选中正行
- java中byte数组与int类型之间的相互转换(两种方式)
- Latex 页面设置 & 常见段落格式的设定