`
javawhf
  • 浏览: 7193 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

创建基于gwtext的数据绑定应用(2) 事件拦截器

 
阅读更多
事件拦截器是Dataset与被绑定对象的纽带,通过事件拦截器实现数据绑定
public interface DatasetInterceptor {
	public boolean doBeforeIntercept(Dataset dataset, String action, Object[] params);
	
	public void onIntercept(Dataset dataset, String action, Object[] params);
	
	public void doAfterIntercept(Dataset dataset, String action, Object[] params, int resultCode);
}


一个简单的数据绑定TextField,当Dataset发生ACTION_MOVE(当前记录行变动)事件时动态修改绑定字段内容,如下:
public class DatasetText extends TextField implements DatasetFormField {
	private Dataset dataset;
	private DatasetField field;
	
	private DatasetInterceptor interceptor;
	
	public DatasetText(Dataset dataset, DatasetField field) {
		this.dataset = dataset;
		this.field = field;
		this.init();
		this.bind();
	}
	
	public DatasetText(DatasetField field) {
		this(null, field);
	}
	
	private void init() {
		setFieldLabel(field.getTitle());
		setName(field.getName());
		setWidth(field.getEditWidth());
		if(dataset != null) {
			
			this.addListener(new TextFieldListenerAdapter(){

				@Override
				public void onBlur(Field field) {
					dataset.set(field.getName(), DatasetText.this.getText());
				}

				@Override
				public void onFocus(Field field) {
					DatasetText.this.selectText();
				}
				
			});
		}
	}

	@Override
	public void bind() {
		if(this.dataset == null) return;
		if(this.interceptor == null)
			this.interceptor = new DatasetInterceptorFormAdapter(Constants.ACTION_MOVE){
				@Override
				public void doAction(Dataset dataset, Object params) {
					Record rec = dataset.getRecordAtCursor();
					if(rec != null)
						DatasetText.this.setValue(rec.getAsString(field.getName()));
				}
			};
		this.dataset.addInterceptor(this.interceptor);
		Record rec = dataset.getRecordAtCursor();
		if(rec != null)
			this.setValue(rec.getAsString(field.getName()));
	}

	@Override
	public void unbind() {
		if(this.dataset == null) return;
		this.dataset.removeInterceptor(this.interceptor);
	}

	@Override
	public Dataset getDataset() {
		return this.dataset;
	}

	@Override
	public DatasetField getField() {
		return this.field;
	}
}
分享到:
评论

相关推荐

    gwtext学习三部曲

    GWT Ext不仅提供了丰富的组件,还包含数据绑定、事件处理、动画效果等功能。学习如何利用GWT Ext的API创建动态和交互性强的用户界面,以及如何实现数据模型与视图之间的双向绑定。同时,你将接触到GWT Ext的布局管理...

    gwtext编写的小系统

    GWText是一个基于Google Web Toolkit (GWT) 和EXT GWT (GXT) 框架的开源项目,用于构建富互联网应用程序(Rich Internet Applications, RIA)。这个“gwtext编写的小系统”是一个示例项目,旨在帮助初学者理解如何...

    GWTAPI文档 + GWTEXT文档 + GWTEXTUX文档

    此外,文档还会涵盖组件的事件处理、样式设置、数据绑定等方面,使得开发者能够构建出功能强大且交互性良好的Web应用。 GWTEXTUX则进一步扩展了GWTEXT的功能,专注于提供更高级的用户界面组件和用户体验。例如,它...

    GWT EXT 教程全集

    EXT-GWT则是基于GWT的组件库,提供了丰富的用户界面元素,让开发者能够构建出具有桌面应用般体验的Web应用。 在提供的资源中,我们首先看到的是"EXT-GWT2.0.1+API+DOC.chm",这是一个离线版的EXT-GWT API文档。这个...

    ext grid数据绑定

    本文将深入探讨"EXT Grid数据绑定"这一主题,包括数据查找和如何将查找结果重新填充到Grid中。 EXT Grid的核心是其数据模型(Data Model)和视图(View)。数据模型负责存储和管理数据,而视图则负责渲染这些数据到...

    gwt-ext开发文档

    4. **数据绑定和模型**:GWT Ext支持数据驱动的开发模式,文档会介绍如何创建和使用Models,以及如何将数据绑定到视图组件上。这通常涉及DataStore、Proxy和ModelKeyProvider等概念。 5. **事件处理**:事件处理是...

    gwt-ext培训教程

    GWT-Ext是一个基于Google Web Toolkit (GWT)的JavaScript库,它提供了丰富的用户界面组件和强大的数据绑定机制,使得开发者能够构建出交互性强、视觉效果优秀的Web应用程序。本教程将深入探讨GWT-Ext的核心概念、...

    Gwt-ext学习笔记

    2. **数据绑定**:Gwt-ext支持双向数据绑定,这意味着UI组件的状态可以直接与后端数据模型关联,任何一方的改变都会自动反映到另一方,简化了开发流程。 3. **事件处理**:学习如何注册事件监听器,处理用户交互,...

    一个Struts2的核心拦截器例子

    核心拦截器是Struts2框架的重要组成部分,它们允许开发者在动作执行前后插入自定义逻辑,以实现如日志、权限验证、数据校验等常见功能。下面将详细讲解Struts2的核心拦截器以及如何在项目中使用它们。 1. **Struts2...

    gwt-ext 实例

    5. **数据绑定**:gwt-ext支持数据绑定,可以使UI组件的状态与后台数据模型保持同步,减少手动更新UI的工作量。 6. **事件处理**:理解gwt-ext中的事件模型,包括监听器接口和事件分发机制,如何添加和处理用户交互...

    Gwt-Ext基础-中级-进阶

    7. **数据绑定**:Gwt-Ext的数据绑定机制,包括模型(Model)、视图(View)和控制器(Controller)的概念,以及如何实现数据的双向绑定。 在"中级篇"中,你将深入到以下内容: 1. **高级组件**:探索Gwt-Ext的...

    GWT-EXT2.0最佳实践教程,源代码打包供下载

    《GWT-EXT2.0最佳实践教程》源代码打包下载资源主要涵盖了Google Web Toolkit (GWT) 和EXT-JS 2.0的结合使用,提供了丰富的实践案例和示例代码,旨在帮助开发者深入理解和应用这两项技术。GWT是一款强大的JavaScript...

    CXF使用EndpointImpl发布WebService加入拦截器

    拦截器的使用不仅限于上述基本操作,还可以与其他CXF组件结合,如绑定工厂、数据绑定、协议处理器等,以实现更复杂的需求。总的来说,理解并熟练运用CXF拦截器对于任何CXF开发者来说都是一项重要的技能。

    GWT_2BEXT_2BSTRUTS2完整实例

    2. **交互集成**:GWT和EXT JS可以通过共享数据和事件来协同工作,例如,GWT应用可以触发EXT JS的UI更新,反之亦然。 **GWT与STRUTS2结合** GWT和STRUTS2的整合主要涉及服务器端的通信和数据交换。 1. **GWT-RPC...

    GWT-Ext超级Widget功能类库

    2. **数据绑定**:GWT-Ext支持双向数据绑定,使得UI组件的状态与后台数据模型可以自动保持同步,减少了手动处理数据更新的工作。 3. **布局管理**:库中的组件可以使用各种布局管理器(如绝对布局、流式布局、网格...

    数据绑定—wpf

    数据绑定是Windows Presentation Foundation(WPF)框架中的核心特性,它简化了用户界面(UI)与应用程序业务逻辑之间的数据交互。在WPF中,数据绑定允许开发者将UI元素的属性与数据源的属性关联起来,确保UI的更新...

    GWT-Ext_体验之旅.doc

    GWT-Ext 是一个基于 Google Web Toolkit (GWT) 和 ExtJS 的开源控件库,专为构建富互联网应用程序(RIA)提供强大的功能。它允许开发者使用纯 Java 语言进行界面开发,极大地提高了开发效率。GWT-Ext 的核心特点在于它...

    extjs最简单的数据绑定和修改

    总结,ExtJS的数据绑定和修改功能为开发人员提供了一种高效且灵活的方式,以创建高度动态的Web应用程序。通过理解并熟练运用模型、存储、数据绑定和数据修改的机制,开发者可以轻松地构建出与后台数据紧密集成的前端...

    springmvc传值对象及拦截器

    Spring MVC的拦截器基于AOP(面向切面编程)原理,它们通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`抽象类来定义。拦截器链的概念使得多个拦截器可以按照特定顺序执行,每个拦截器都可以决定...

    WPF数据绑定例子

    通过这个例子,初学者可以学习如何创建数据上下文,如何将控件(如TextBlock或TextBox)绑定到依赖属性,以及如何利用数据模板和转换器来实现更复杂的界面展示。同时,了解并实践双向绑定和验证规则的设置,对于深入...

Global site tag (gtag.js) - Google Analytics