JSF 預構建應用程序事件示例

2018-02-22 12:21 更新

JSF教程 - JSF預構建應用程序事件示例


以下代碼顯示如何處理應用程序級事件。

JSF在JSF應用程序生命周期中有處理應用程序特定任務的系統(tǒng)事件偵聽器。

  • 應用程序啟動時觸發(fā)PostConstructApplicationEvent。它可以用于在應用程序啟動后執(zhí)行初始化任務。
  • 應用程序即將關閉時,PreDestroyApplicationEvent觸發(fā)。它可以用于在應用程序即將關閉之前執(zhí)行清除任務。
  • PreRenderViewEvent在顯示JSF頁面之前觸發(fā)。它可用于驗證用戶并提供對JSF View的受限訪問。

我們可以通過實現(xiàn)SystemEventListener接口來處理系統(tǒng)級事件,并在faces-config.xml中注冊system-event-listener類。

我們還可以通過傳遞f:event的監(jiān)聽器屬性中的托管bean方法的名稱來使用方法綁定來處理系統(tǒng)級事件。

以下代碼顯示了如何實現(xiàn)SystemEventListener接口。

public class CustomSystemEventListener implements SystemEventListener {
   @Override
   public void processEvent(SystemEvent event) throws 
      AbortProcessingException {
      if(event instanceof PostConstructApplicationEvent){
         System.out.println("Application Started. 
            PostConstructApplicationEvent occurred!");
      }      
   }
}

然后我們可以在faces-config.xml中注冊系統(tǒng)事件的自定義系統(tǒng)事件偵聽器

<system-event-listener>
   <system-event-listener-class>
      cn.w3cschool.common.CustomSystemEventListener
   </system-event-listener-class>
   <system-event-class>
      javax.faces.event.PostConstructApplicationEvent
   </system-event-class>              
</system-event-listener>

下面的代碼顯示了處理系統(tǒng)級事件的方法綁定方式。

public void handleEvent(ComponentSystemEvent event){
   data="Hello World";
}

使用上面的方法

<f:event listener="#{user.handleEvent}" type="preRenderView" />

例子

以下代碼來自MyListener.java。

package cn.w3cschool.common;

import javax.faces.application.Application;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.PostConstructApplicationEvent;
import javax.faces.event.PreDestroyApplicationEvent;
import javax.faces.event.SystemEvent;
import javax.faces.event.SystemEventListener;

public class MyListener implements SystemEventListener{

  @Override
  public void processEvent(SystemEvent event) throws AbortProcessingException {

    if(event instanceof PostConstructApplicationEvent){
      System.out.println("PostConstructApplicationEvent is Called");
    }
    
    if(event instanceof PreDestroyApplicationEvent){
      System.out.println("PreDestroyApplicationEvent is Called");
    }
    
  }

  @Override
  public boolean isListenerForSource(Object source) {
    //only for Application
    return (source instanceof Application);
    
  }
  
}

以下代碼來自demo.xhtml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html">
 
    <h:body>
      <h2>This is start.xhtml</h2>

 
    </h:body>
</html>
下載 Pre_PostConstructApplicationEvent.zip

運行

將生成的WAR文件從目標文件夾復制到Tomcat部署文件夾,并運行Tomcat-Install-folder/bin/startup.bat。

Tomcat完成啟動后,在瀏覽器地址欄中鍵入以下URL。

http://localhost:8080/simple-webapp/demo.xhtml
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號