`
topgun
  • 浏览: 23992 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Tapestry Components 通用PropertySelection

阅读更多

Tapestry Components

 

通用PropertySelection

示例代码:svn://portal/private/wen/tapestry/common-property-selection

  • 需要一个通用bo 的接口Selectable ,被选的对象要实现这个接口
  • 需要通用模型类 SelectableModel

实体建模时,如果一个bo 是另一个BO 的属性,界面上需要保存BO时需要参考选择一个bo,bo 就需要实现Selectable 接口

public class Department extends BaseObject implements Selectable {
}		
			

Selectable 接口如下:

public interface Selectable {
	public Long getId();
	public void setId(Long id);
	public String getName();
	public void setName(String name);
}			
			

在BO 操作的Form 页面上类,要有bo 对象(就是有getter setter)

	public abstract Selectable getDepartment();
	public abstract void setDepartment(Selectable department);	
			

bo 的待选内容怎样来的呢?要在BO 操作的Form 页面上类里做如下处理:

  • 定义一个IPropertySelectionModel 属性选择模型
  • 将bo 的列表放到这个模型中
  • 页面不存在了,可以将模型设为空
	private IPropertySelectionModel availDepts = null;

	public IPropertySelectionModel getAvailDepts() {
		if (null == availDepts) {
			availDepts = new SelectableModel(服务对象.getDepts());
		}
		return availDepts;
	}

	public void pageDetached(PageEvent pageEvent) {
		availDepts = null;
	}
			

这个模型基本是通用的,不用再自己写了,使用bo 列表new 出来就行了

public class SelectableModel implements IPropertySelectionModel, Serializable {

	private static final long serialVersionUID = 3528841813175496347L;
	protected List itemList;

	public SelectableModel(List list) {
		itemList = list;
	}

	public int getOptionCount() {
		return itemList.size();
	}

	public Object getOption(int index) {
		return itemList.get(index);
	}

	public String getLabel(int index) {
		return ((Selectable) itemList.get(index)).getName();
	}

	public String getValue(int index) {
		return Integer.toString(index);
	}

	public Object translateValue(String value) {
		return getOption(Integer.parseInt(value));
	}
}
			

最后在页面上定义组件,组件类型为PropertySelection,绑定两个参数,value 为bo,model 为属性选择模型<component id="deptSelect" type="PropertySelection">        <binding name="value" value="department"></binding>
        <binding name="model" value="availDepts"></binding>
</component>

  1. <component id="deptSelect" type="PropertySelection">  
  2.     <binding name="value" value="department"/>  
  3.     <binding name="model" value="availDepts"/>  
  4. </component>  
PropertySelection 组件设定默认值

例子:

在.page定义了如下组件:

<component id="departmentSelect" type="PropertySelection">
xml 代码
  1. <component id="departmentSelect" type="PropertySelection">  
  2. <binding name="value" value="department"/>  
  3. <binding name="model" value="availDepts"/>  
  4. </component>  

<binding name="value" value="department"></binding>
<binding name="model" value="availDepts"></binding>
</component>

只要在页面类中,设定department的初始值,该值就是选中的默认值。

原因:当该组件遍历'model' availDepts时,会使用public Object getOption(int index)方法读出列表,当 读出的对象与'value'中的值相等时,就选中该项。 哈哈..简单吧!:)

分享到:
评论
1 楼 StartCraft_MyLove 2007-04-01  
好久没有更新了

相关推荐

    Tapestry通用WEB框架

    Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...

    Sotacs Tapestry Components-开源

    提供了Tapestry Web框架的组件。 -NavigationBar:JavaScript导航栏-DynamicImage:Graphics2D绘制的图像-AjaxTextField:AJAX TextField -Include:在页面中包含内容-TransparentPNG:所有浏览器上的透明PNG

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    Tacos - Tapestry Components-开源

    Tacos为Tapestry Web应用程序开发框架提供了一个组件存储库。

    tapestry源码 api等

    9. **Tapestry-test**: 为Tapestry应用提供了通用的测试支持,包括模拟组件、服务和事件处理。 10. **Tapestry-internal-test**: 内部测试套件,用于验证Tapestry框架的内部工作原理和功能,这对于理解Tapestry的...

    tapestry5.3.3+spring+hibernate整合源码

    2. `src/main/java` - Java源代码目录,包含了业务逻辑、服务层(Spring Beans)、组件类(Tapestry Components)等。 3. `src/main/resources` - 配置文件存放处,如Spring的bean配置、Hibernate的实体映射文件...

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...

    tapestry3开发指南,带tapestry3所有jar包

    3. **工具和实用程序库**:可能包含一些辅助类库,用于日志、国际化、验证和其他通用功能。 4. **示例和文档**:可能还包括一些示例代码和开发指南,帮助开发者快速上手。 要开始使用Tapestry 3,开发者需要将这些...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    tapestry学习入门资料

    "tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...

    Tapestry Components and Libraries-开源

    jsrc包含一些有用的挂毯组件/库

    Tapestry4开发指南

    ### Tapestry4开发指南 #### 一、Tapestry4概览 Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了...

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    Tapestry开发

    &lt;tapestry:propertySelection name="country" label="Country" model="${countries}" /&gt; ``` **14. Table组件:** - **用途:**用于创建表格。 - **示例代码:** ```xml &lt;tapestry:table data-model="${users}...

    Tapestry API

    Tapestry API提供了`org.apache.tapestry5.corelib.components`包下的基础控件,如`Form`和`Submit`,它们作为控制器的一部分,帮助开发者实现MVC模式。 3. **事件与绑定** Tapestry支持事件驱动的编程,组件之间...

    tapestry5中文文档

    Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证、本地化、状态管理和URL映射等功能。Tapestry 5 强调易用性,不仅对终端用户友好,...

    tapestry5.2.6 jar包

    Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...

    tapestry-bin-5.1.0.5

    【标题】"tapestry-bin-5.1.0.5" 指的是Apache Tapestry的一个特定版本的二进制发行包。Tapestry是一个开源的Java Web应用程序框架,它提供了一种基于组件的开发方式,用于构建动态、交互式的Web应用。 【描述】...

    Tapestry 5 電子書

    《Tapestry 5 電子書》是关于Java Web开发框架Tapestry 5的一本详尽指南,由Packt Publishing在2007年出版。这本书旨在帮助开发者深入理解和掌握Tapestry 5的各个方面,从而利用其强大功能构建高效、可维护的Web应用...

Global site tag (gtag.js) - Google Analytics