事件處理
JSP應用程序是事件驅動型的程序。在JSF中處理事件令人驚奇的簡單。以下是處理步驟:
- 編寫事件監聽器。
- 在程序目錄下的WEB-INF/classes or WEB-INF/lib目錄中部署事件監聽器。
- 在表示組件(其事件被捕獲)的標記中,使用Core定制標記庫中定義的action_listener或者 valuechange_listener標記。
在JSF中的事件對象。 JSF中的所有事件對象必須提供javax.faces .event.FacesEvent類,以便這些事件被請求處理生命周期支持。FacesEvent類是java.util.EventObject的子類,并添加了getComponent方法,該方法返回引發該事件的UIComponent組件。
FacesEvent類有兩個子類:ActionEvent和 ValueChangeEvent。ActionEvent類激活諸如UICommand組件之類的UI組件。
ValueChangeEvent類會發出一個通知,告知本地UIInput組件的值被修改了。然而,如果新值沒有被成功地驗證為合法的,則不會發出ValueChangeEvent通知。被加入到該類中的兩個重要方法是getOldValue 和 getNewValue。getOldValue方法返回引發該事件的組件的舊值。getNewValue方法返回相應的新值。這兩種方法的返回值類型都是java .lang.Object。
第三,JSF中的事件監聽器。
為捕獲一個JSF事件,
需要使用一個事件監聽器。JSF程序中的所有監聽器都必須實現javax.faces.event.FacesListener接口。該接口提供java.util.EventListener接口,后者是必須由所有Java事件監聽器實現的接口。
Faces Listener接口有兩個子接口:ActionListener 和 ValueChangeListener。ActionListener接口是為了捕獲ActionEvent而必須被實現的接口。該接口添加了一個新的方法--processAction--該方法請求處理生命周期來調用。當為之注冊了ActionListener 的ActionEvent發生事件時,就會調用processAction。processAction方法的代碼如下:
1public ? void ?processAction(ActionEvent?
2??event)?
3? throws ?AbortProcessingException
4![]()
ValueChangeListener接口是為了捕獲ValueChangeEvent而實現的接口。該接口添加了一個方法:processValueChange。當ValueChangeEvent動作被其監聽者監聽到時,就會調用processValueChange方法。processValueChange方法的代碼如下:
1public ? void ?processValueChange(ValueChangeEvent
2??event)?
3throws ?AbortProcessingException
4![]()
5![]()
posted on 2006-09-28 10:32 土牛小屋 閱讀(528) 評論(0) 編輯 收藏 所屬分類: jsf技術