JSF的事件模型提供一个近似的桌面GUI事件方式,让熟悉GUI设计的人员也能快速上手Web程序设计。
如果您需要使用同一个方法来应付多种事件来源,并想要取得事件来源的相关信息,您可以让处理事件的方法接收一个javax.faces.event.ActionEvent事件参数,例如:UserBean.java
package bruce.zhao;
import javax.faces.event.ActionEvent;
public class UserBean {
private String name;
private String password;
private String errMessage;
private String outcome;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public void setErrMessage(String errMessage) {
this.errMessage = errMessage;
}
public String getErrMessage() {
return errMessage;
}
public void verify(ActionEvent e) {
if(!name.equals("justin") ||
!password.equals("123456")) {
errMessage = "名称或密码错误" + e.getSource();
outcome = "failure";
}
else {
outcome = "success";
}
}
public String outcome() {
return outcome;
}
}
在上例中,我们让verify方法
接收一个ActionEvent对象,当使用者按下按钮,会自动产生ActionEvent对象代表事件来源,我们故意在错误信息之后如上事件来源的字符串描述,这样就可以在显示错误信息时一并显示事件来源描述。
为了提供ActionEvent的存取能力,您的index.jsp可以改写如下:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html;charset=Big5"%>
<html>
<head>
<title>第一个JSF程序</title>
</head>
<body>
<f:view>
<h:form>
<h3>请输入您的名称</h3>
<h:outputText value="#{user.errMessage}"/><p>
名称: <h:inputText value="#{user.name}"/><p>
密码: <h:inputSecret value="#{user.password}"/><p>
<h:commandButton value="送出"
actionListener="#{user.verify}"
action="#{user.outcome}"/>
</h:form>
</f:view>
</body>
</html>
主要改变的是按钮上使用了actionListener属性,这种方法可以使用一个ActionListener,JSF会先检查是否有指定的actionListener,然后再检查是否指定了动作方法并产生预定义的ActionListener,并根据其传回值导航页面。
如果您要注册多个ActionListener,例如当使用者按下按钮时,顺便在记录文件中增加一些记录信息,您可以实现javax.faces.event.ActionListener,例如:LogHandler.java
package bruce.zhao;
import javax.faces.event.ActionListener;
....
public class LogHandler implements ActionListener {
public void processAction(ActionEvent e) {
// 处理Log
}
}
VerifyHandler.java
package bruce.zhao;
import javax.faces.event.ActionListener;
....
public class VerifyHandler implements ActionListener {
public void processAction(ActionEvent e) {
// 处理验证
}
}
这么一来,您就可以使用<f:actionListener>标签向组件注册事件,例如:
<h:commandButton value="送出" action="#{user.outcome}">
<f:actionListener type="bruce.zhao.LogHandler"/>
<f:actionListener type="bruce.zhao.VerifyHandler"/>
</h:commandButton>
<f:actionListener>会自动产生type所指定的对象,并呼叫组件的addActionListener()方法注册Listener。
分享到:
相关推荐
本教程旨在帮助初学者快速入门JSF,掌握其基本概念、架构和常用功能。 一、JSF概述 JSF是Java Community Process(JCP)制定的标准之一,它基于Model-View-Controller(MVC)设计模式,为Java EE平台提供了丰富的UI...
本指南将帮助初学者理解JSF的基本概念、架构和核心组件,以便快速入门。 一、JSF简介 JSF是Java EE标准的一部分,由Oracle公司维护。它提供了一种声明式的方式来处理Web页面和后端服务器之间的交互,减少了开发者...
### JSF入门知识点详解 #### 一、JSF概述 **1.1 简介JSF** JavaServer Faces (JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的复杂性,...
3. `<h:commandButton>`:创建一个提交按钮,触发动作事件。 4. `<h:form>`:定义一个表单,包含JSF组件并处理用户提交。 5. `<f:view>`:定义视图的上下文,可以设置字符编码和locale。 JSF标签通过EL(Expression...
本教程将带你深入了解JSF的基础知识,助你快速入门这一强大的框架。 **1. JSF简介** JSF是一个MVC(Model-View-Controller)框架,它简化了创建和维护动态Web页面的过程。JSF提供了组件模型,允许开发者使用预定义...
1. **JSF入门教程**:JSF的基础知识讲解,涵盖了JSF的基本概念、架构和工作原理。这个部分将教你如何配置JSF环境,创建第一个JSF应用,理解JSF生命周期,以及认识JSF的核心组件如输入字段、按钮、表单等。通过这个...
这样,JSF可以根据用户的动作执行相应的导航逻辑。 #### 1.5 JSF Expression Language (EL) JSF Expression Language 是一种轻量级的脚本语言,用于在JSF应用中访问和操作Java对象。EL允许你在JSP或XHTML页面中...
JSF支持多种类型的事件,包括动作事件(Action Events)、即时事件(Immediate Events)、值变事件(Value Change Events)和Phase事件(Phase Events)。事件处理机制允许用户界面组件响应用户操作,如点击按钮或...
**JSF(JavaServer Faces)入门知识详解** JavaServer Faces(JSF)是Java平台上的一个用于构建Web应用程序...这个修正版不仅包含了完整的JSF入门知识,还特别关注了用户体验的提升,使得导航更加流畅,学习更加便捷。
**JSF(JavaServer Faces)入门实例教程** JavaServer Faces(JSF)是Java平台上的一个用于构建Web应用程序的UI框架。它简化了用户界面组件的创建和管理,提供了MVC(模型-视图-控制器)架构,使得开发人员可以更...
本资料《JSF入门》简体中文版,针对初学者,提供了全面的学习资源,包括详细的演示代码,旨在帮助读者快速掌握JSF的基础知识和实践技巧。 首先,JSF的**组件模型**是其核心特性之一。JSF提供了一系列预定义的UI组件...
JavaScript Server Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。...在学习过程中,结合《JSF标签》和《JSF入门》的培训教程,能够更好地掌握JSF的精髓。
1. **JSF事件模型**:组件可以触发和监听各种类型的动作事件,如ActionEvent、ValueChangeEvent等,通过监听器方法进行处理。 2. **Ajax支持**:JSF 2.x引入了`<f:ajax>`标签,支持局部刷新和异步更新,提高用户...
JSF入门如果您是从使用的角度来看JSF,则您不用理会HTTP、数据转换等细节,JSF将细节都隐藏起来了,无论您是网页设计人员或是应用程序设计人员,都可以使用自己熟悉的方式来看JSF。 入门 藉由以下的几个主题,可以...
**JSF动作**,如`<h:commandButton>`,是用户界面中触发服务器端事件的元素。当用户点击这些按钮时,对应的动作方法会在后台被调用,从而执行特定的业务逻辑。 **Facelets** 是JSF 2.0引入的默认视图技术,它取代了...
JSF支持多种类型的事件处理,包括动作事件、即时事件和值变更事件等。 ##### 4.1 动作事件 动作事件是最常见的事件类型之一,通常发生在用户点击按钮或其他交互元素时。开发者可以通过定义ActionListener来处理...