JSF提供一个好处就是事件,例如可以对组件的值的改变提供一个 Listener,和Swing有点相象.
下面以实例说明:
为一个组件定义一个侦听器有两种方法:
第一种方法:侦听方法所在类不用实现任何接口。
public void idChange(ValueChangeEvent event) {
System.out.println("ID的值改变了!");
FacesContext.getCurrentInstance().renderResponse();
}
这个方法只需要定义在BEAN中就可以了。接受一个Event参数。
页面中这样写:
<h:inputText value="#{roseBean.rose.id}" valueChangeListener="#{roseBean.idChange}" onchange="this.form.submit()" immediate="true"/>
第二种方法:侦听方法实现javax.faces.event.ValueChangeListener接口。
public class RoseIdChange implements ValueChangeListener {
public void processValueChange(ValueChangeEvent arg0)
throws AbortProcessingException {
System.out.println("change");
FacesContext.getCurrentInstance().renderResponse();
}
}
页面的写法是这样的:
<h:inputText value="#{roseBean.rose.id}" onchange="this.form.submit()" immediate="true">
<f:valueChangeListener type="cn.xiangyunsoft.web.jsf.listener.RoseIdChange" />
</h:inputText>
在这两种方法中的页面代码中都有 immediate="true" 这个属性,它表示为是即时事件。
在处理方法中都有
FacesContext.getCurrentInstance().renderResponse();
表示这个方法处理完成之后直接跳到JSF生命周期的最后一个阶段。
但是这样还有一个问题就是:
如果在BEAN里面有一个list属性,是从数据库里取出来的数据,在页面上经表格的形式体现,每当这个值变事件发生的时候都会从数据库中重得取数据,(当然这个BEAN的scop 是request),这样就多一次访问数据库,如果不是在getList()中直接连接数据,通过其他方法取数放到list中,这个值变事件就不会发生,或发生后表格的数据就没有了。
看来只能用ajax了!
<!---->
Technorati : jsf
分享到:
相关推荐
### JSF事件类型 JSF支持多种事件类型,这些事件可以在组件之间或应用程序级别触发。例如: - **组件级事件**:发生在特定UI组件上,如点击按钮或选择下拉框选项。 - **应用程序级事件**:在更广泛的范围内传播,...
**事件处理** 在JSF中是通过事件监听器实现的。当用户与组件交互时,会触发特定的事件,相应的监听器方法会被调用,从而执行相应的处理逻辑。 **生命周期** 是JSF处理请求的关键过程,包括初始化、恢复视图、应用...
- **阶段事件**:JSF 的生命周期分为多个阶段,每个阶段都有对应的事件,开发者可以通过监听这些事件来进行特定的处理。 综上所述,JSF 作为一种成熟的 Java Web 应用框架,不仅提供了一套完整的工具和 API 来简化 ...
在《JSF中文教程》的.chm文件中,读者可以深入学习到这些概念,通过实例和示例代码了解如何在实际项目中应用JSF。该教程将帮助初学者快速上手JSF,同时为有经验的开发者提供参考,提升他们的JSF开发技能。
在深入了解JSF中的事件处理之前,我们先简要回顾一下JSF的生命周期,这对于理解后续的事件处理逻辑至关重要。JSF的生命周期分为以下五个主要阶段: 1. **恢复视图(Restore View)**:在这个阶段,JSF容器会根据...
2. **事件驱动**:用户交互触发事件,JSF会处理这些事件并调用对应的处理方法。 3. **可扩展性**:JSF允许开发者自定义组件和行为,以适应特定需求。 4. **与Java EE集成**:JSF可以与其他Java EE技术如EJB、JPA、...
**JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化、事件驱动的方式来构建用户界面。本教程旨在帮助读者深入理解和熟练掌握JSF技术,以便于高效地开发企业级的Web应用。 **1...
本教程将深入探讨JSF的核心概念以及如何在JSF应用中传递参数,帮助开发者更好地理解和掌握这一技术。 首先,让我们理解**JSF的基本架构**。JSF的核心组件包括视图、控制器和模型,它们共同构成了MVC(Model-View-...
例如,JSF中的数据绑定和事件处理机制都与Java的反射和事件监听器机制密切相关。 在JSF中,**组件树** 是一种核心概念,它是页面所有UI组件的逻辑表示。每个组件都有自己的属性和事件,可以通过EL(Expression ...
在这个过程中,JSF框架负责管理组件状态,处理用户事件,并与后端业务逻辑进行交互。 JSF提供了一种声明式编程模型,允许开发者通过XML配置文件(如faces-config.xml)来定义组件、导航规则和转换验证规则。此外,...
在JSF中,UI组件(View)可以直接映射到后端的数据源(Model),并可以通过事件处理(Controller)进行交互。这使得开发者可以更专注于业务逻辑,而无需过多关注底层的HTTP通信细节。 首先,JSF的组件库是其一大...
**JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...
- `a4j:ajaxListener`:监听JSF事件并触发Ajax请求。 - `a4j:region`:定义页面上的Ajax作用域。 - `a4j:commandLink` 和 `a4j:commandButton`:替代JSF的`h:commandLink`和`h:commandButton`,支持Ajax操作。 - `a4...
在JavaServer Faces (JSF)框架中,事件处理是一个关键机制,它允许开发者响应用户界面(UI)中的交互事件。本文将深入探讨JSF中的事件处理,主要包括ActionController(行为控制器)与事件监听器如ActionListener和...
在未来的发展中,有可能所有的J2EE应用服务器都需要支持JSF。 Java Server Faces技术好处 引入了基于组件和事件驱动的开发模式,使开发人员可以使用类似于处理传统界面的方式来开发Web应用程序。提供了行为与...
4. **事件监听**:确保在JSF页面中,主复选框的变化能够触发`onSelectAllChanged`方法。这通常通过`f:ajax`标签实现。 ```xml ``` 5. **标签`源码`和`工具`**:这两个标签可能暗示了文章会分享有关如何阅读和...
学习这部分,你需要了解如何导入和使用JSF的库,例如`javax.faces.*`和`org.primefaces.*`,以及它们提供的功能,如数据验证、转换器、事件处理等。 4. **Ajax4JSF使用手册**:Ajax4JSF是JSF的一个扩展,它为JSF...
JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在组态档案中,您只要修改组态档案,就可以修改 Bean 之间的相依关系。 o Backing Beans o Beans 的组态与设定 o Beans 上的 List, Map 数据转换与...
JSF事件模型允许在组件之间触发和监听事件。`ActionEvent`是JSF中最常见的事件类型,通常在命令组件(如按钮)被点击时触发。通过实现`ActionListener`接口,开发者可以处理这些事件。 ### 7. 视图状态管理 JSF...