`
Supanccy2013
  • 浏览: 222989 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jsf 事件之 值更改事件(实现组建之间的联动)

    博客分类:
  • JSF
jsf 
阅读更多
    jsf的六个生命周期:请求--->回复视图-->应用请求值-->过程验证-->更新模型值-->调用应用程序-->呈现相应-->响应
    值更改事件发生在 阶段“过程验证”之后
    下面的实例实现:下拉框是一组国家列表,当选中一个国家时候,再另一个下拉框中填充该国家的主要城市,并且更改另一个输入框中显示的当前国家的名称:
1,后台bean模型
package com.jsf.bean;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
public class RegisterAction {
	    //改变下拉框后,输出框中的内容id
	    private String result;
	    //下拉框国家的id
	    private String selectedContent = null;
	    //国家列表
	    private ArrayList countryItems = null;
        //下拉框城市的id	    
	    private String selectCity = null;
	    //城市下拉框中的列表
	    private List cityItems = null;
	    //定义三个城市的类表
        private static List china = new ArrayList();
        private static List america = new ArrayList();
        private static List japan = new ArrayList();
        static{
        	china.add(new SelectItem("北京","北京",null));
        	china.add(new SelectItem("上海","上海",null));
        	china.add(new SelectItem("广州","广州",null));
        	china.add(new SelectItem("深圳","深圳",null));
        	america.add(new SelectItem("纽约","纽约",null));
        	america.add(new SelectItem("华盛顿","华盛顿",null));
        	america.add(new SelectItem("旧金山","旧金山",null));
        	america.add(new SelectItem("加州","加州",null));
        	japan.add(new SelectItem("东京","东京",null));
        	japan.add(new SelectItem("神户","神户",null));
        	japan.add(new SelectItem("广岛","广岛",null));
        	japan.add(new SelectItem("长崎","长崎",null));
        }
	    public String getSelectCity() {
			return selectCity;
		}
		public void setSelectCity(String selectCity) {
			this.selectCity = selectCity;
		}
		public String getSelectedContent() {
	    return selectedContent;
	    }
	    public List getCityItems() {
			return cityItems;
		}
		public void setCityItems(List cityItems) {
			this.cityItems = cityItems;
		}
		public void setSelectedContent(String selectedContent) { //保持下拉框的状态不改变
	    this.selectedContent = selectedContent;
	    }
	    public String getResult() {
	        return result;
	    }
	    public void setResult(String result) {
	        this.result = result;
	    }
	    //国家下拉类表中的值改变之后的action事件
	    public void myEvent(ValueChangeEvent e) { //下拉框改变时触发的事件
	    	System.out.println("you change the value fo ");
	        FacesContext context = FacesContext.getCurrentInstance();
	        String clientId = e.getComponent().getId();
	        if (clientId.equals("select")) {
	            setResult(e.getNewValue().toString());
	            if(e.getNewValue().toString().equals("中国")){
	            	setCityItems(china);
	            }
	            if(e.getNewValue().toString().equals("美国")){
	            	setCityItems(america);
	            }
	            if(e.getNewValue().toString().equals("日本")){
	            	setCityItems(japan);
	            }
	        }
	    }
	    //在创建bean之后,呈现视图之前给国家列表中的内容赋值
	    public Collection getCountryItems() { //给下拉框赋值
	        SelectItem aa= new SelectItem();
	        if (countryItems == null) {
	        countryItems = new ArrayList();
	        countryItems.add(new SelectItem("中国", "中国", null));
	        countryItems.add(new SelectItem("美国", "美国", null));
	        countryItems.add(new SelectItem("日本", "日本", null));
	        }
	        return countryItems;
	    }
	    public void setCountryItems(ArrayList<SelectItem> countryItems) {
	        this.countryItems = countryItems;
	    }

}


2,页面regist.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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en">
<h:head>
	<title>registForm</title>
</h:head>
<h:body>
	<h:form>
        <!--注意:onchange事件用来在值更改的时候提交表单,valueChangeListener用来在表单提交之后 jsf生命周期阶段“过程严重之后”更改另一个组建绑定的值-->
	    <h:selectOneMenu id="select" valueChangeListener="#{registForm.myEvent}" onchange="submit();"
              value="#{registForm.selectedContent}">
             <f:selectItems value="#{registForm.countryItems}"></f:selectItems>
        </h:selectOneMenu><br/>
        <h:selectOneMenu id="selectCity" 
              value="#{registForm.selectCity}">
             <f:selectItems value="#{registForm.cityItems}"></f:selectItems>
        </h:selectOneMenu><br/>
        <h:outputText id="result" value="#{registForm.result}"></h:outputText>
	</h:form>
</h:body>
</html>

分享到:
评论

相关推荐

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    JSF支持多种事件类型,这些事件可以在组件之间或应用程序级别触发。例如: - **组件级事件**:发生在特定UI组件上,如点击按钮或选择下拉框选项。 - **应用程序级事件**:在更广泛的范围内传播,可能涉及到多个组件...

    第8章 JSF事件处理(熊)课件及示例程序

    事件在JSF中是组件之间通信的方式,当组件的状态发生改变或者执行特定操作时,会触发相应的事件。监听器则负责响应这些事件,执行相关的业务逻辑。 1. **JSF事件类型**:JSF事件可以分为两类:基本事件和自定义事件...

    sun的jsf接口和实现的源文件下载

    9. **扩展性**:JSF设计为可扩展的,可以通过自定义渲染器、事件监听器、组件行为以及提供自己的FacesServlet实现来扩展其功能。 10. **依赖注入**:JSF 1.2虽然没有内置的依赖注入机制,但可以与其他框架(如...

    JSF标准的两个实现

    JSF规范定义了API和事件模型,而具体的实现则由不同的提供商完成。在JSF领域,有两个重要的实现:官方实现和Apache MyFaces实现。 **1. JSF官方实现** JSF的官方实现通常指的是Oracle公司提供的Mojarra项目。...

    JSF生命周期的事件处理

    其中,JSF的生命周期管理机制是其核心特性之一,它包括了一系列有序的阶段,每个阶段都可能触发不同的事件,这些事件需要被正确地处理。 #### 一、JSF生命周期概述 在深入了解JSF中的事件处理之前,我们先简要回顾...

    jsf实现登录功能

    在这个"jsf实现登录功能"的例子中,我们将探讨如何利用JSF来构建一个基本的用户登录系统。 首先,登录功能通常包括两部分:前端页面和后端逻辑。在JSF中,前端页面通常由XHTML文件(.xhtml)组成,这些文件结合了...

    jsf2.0 dataTable单行修改例子

    下面我们将深入探讨JSF 2.0 `dataTable`的使用以及实现单行修改的具体步骤。 首先,`dataTable`是基于Java的MVC(模型-视图-控制器)框架,用于在网页上呈现动态数据集合。在JSF 2.0中,`&lt;h:dataTable&gt;`是用于创建...

    JSF中文教程jsf

    JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面,并通过事件处理和数据绑定来实现业务逻辑。 在JSF中,**组件** 是UI的基础元素,如按钮、文本输入框等。这些组件可以通过XML(Facelets)或...

    jsf 实现

    标题:“jsf 实现” 描述:“国内比较好的jsf1.2实现,并且和ajax结合” 根据提供的标题、描述和部分未解析的内容,我们可以总结出关于JSF(JavaServer Faces)1.2版本的一些关键知识点,尤其是其在国内的实现与...

    用jsf做的登录注册的组件

    在JSF中,可以通过EL(Expression Language)来绑定组件值到后台Bean的属性,实现数据的双向绑定。 4. **验证**:JSF提供内置的验证机制,例如在注册时检查用户名是否已存在,密码是否符合复杂性要求等。这可以通过...

    jsf添加修改删除程序

    在"jsf添加修改删除程序"这个项目中,我们可以推测这是一个使用JSF技术实现的简单CRUD(创建、读取、更新、删除)应用。这样的应用通常包括用户界面元素,如表格展示数据,以及添加、编辑和删除记录的表单。下面我们...

    JSF2 规范的标准参考实现

    Mojarra是JSF规范的主要实现之一,它完全符合JSF 2的标准。`jsf-api.jar`包含了JSF 2的API接口,供开发者在应用程序中引用和调用。而`jsf-impl.jar`则包含了JSF 2的具体实现,实现了接口定义的功能,是运行时环境不...

    JSF+hibernate实现批量删除

    本篇文章将详细探讨如何利用JSF与Hibernate相结合来实现批量删除功能,以及在CRUD(创建、读取、更新和删除)操作中的应用。 首先,我们需要理解JSF的工作原理。JSF是一个基于组件的MVC(Model-View-Controller)...

    JSF实现的CRUD例子 myeclipse

    在阅读这个教程时,你可以了解JSF的基本组件,如UI输入组件(例如`h:inputText`)、命令组件(例如`h:commandButton`)以及如何处理用户事件。JSF的生命周期也会有所涉及,包括从视图渲染到模型更新的过程。 在JSF...

    jsf第三讲事件监听

    在JavaScript Server Faces (JSF) 中,事件监听是框架的核心特性之一,它允许开发者处理用户在Web界面中的交互。JSF事件模型基于JavaBeans事件模型,使得组件间能够通过事件进行通信,增强了组件间的协作能力。本...

    JSF包,jsf包,JSF包,jsf包

    **事件处理**:JSF支持事件处理机制,允许组件之间通信。当用户触发一个事件(如点击按钮),对应的事件处理器会被调用,这使得组件间的交互变得简单而直观。 **渲染器**:渲染器负责将JSF组件转化为实际的HTML或...

    core jsf 1.2 jsf 核心

    JSF事件模型允许在组件之间触发和监听事件。`ActionEvent`是JSF中最常见的事件类型,通常在命令组件(如按钮)被点击时触发。通过实现`ActionListener`接口,开发者可以处理这些事件。 ### 7. 视图状态管理 JSF...

    JSF开发文档

    动作事件通常与用户界面的按钮或者链接点击相关,即时事件是组件状态变化立即触发的事件,值变事件是在用户输入后触发验证的事件,而Phase事件则涉及到JSF请求处理生命周期的各个阶段。 JSF还能够与多种开发工具和...

    jsf实现增删改查的一个简单例子

    在这个"jsf实现增删改查的一个简单例子"中,开发者使用了JSF 2.2版本,这是一个功能丰富的更新,包括对CDI(Contexts and Dependency Injection)的更好支持,以及更多的性能优化和用户体验改进。 JSF 2.2的核心...

    JSF分页实现,内含建表语句

    在本项目中,我们主要探讨的是如何利用JavaServer Faces (JSF) 框架实现分页功能,并结合MySQL数据库和SQL语句进行数据管理。JSF是一种用于构建Web应用程序的MVC(Model-View-Controller)框架,它提供了一种组件化...

Global site tag (gtag.js) - Google Analytics