JSF的重要目的是试图允许开发者象开发Swing一样开发Web,所以事件的概念非常重要(这也是Struts的不足之处)。基本上说来,JSF的事件可以分成两种类型:
阶段事件(Phase Event)和
Faces事件(Faces Event)。阶段事件主要用来处理请求生命周期的特定阶段中发生的事件。Faces事件则是负责处理组件事件的。Swing中的事件基本上可以和Faces事件相对应。之所以JSF事件中有阶段事件是因为Web中毕竟通过没有状态的HTTP协议来进行请求和响应,所以使用阶段事件来处理这些问题。
我们先关注一下和Swing事件相对应的 Faces事件。Faces事件也可以分成两种类型: 值变事件(Value Change Event)和 动作事件(Action Event)。值变事件主要关注的是组件属性值的变化(例如展开树节点,改变输入栏中的内容等等)。动作事件主要关注组件的激活(其实就是组件的状态)(例如按钮点击,超链接点击等等)。他们的关系图如下:Phase Event和Faces Event都继承于java.uti.EventObject. ValueChangeEvent和ActionEvent继承于FacesEvent.
使用JSF事件很容易:
我们先关注一下和Swing事件相对应的 Faces事件。Faces事件也可以分成两种类型: 值变事件(Value Change Event)和 动作事件(Action Event)。值变事件主要关注的是组件属性值的变化(例如展开树节点,改变输入栏中的内容等等)。动作事件主要关注组件的激活(其实就是组件的状态)(例如按钮点击,超链接点击等等)。他们的关系图如下:Phase Event和Faces Event都继承于java.uti.EventObject. ValueChangeEvent和ActionEvent继承于FacesEvent.
使用JSF事件很容易:
- 实现接口ValueChangeListener (实现processValueChanged()方法)或者接口ActionListener(实现processAction()方法)。
- 使用<f:valuechangelistener type="">
xml 代码
- <f:valueChangeListener>
- <f:actionListener>