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>
- <component id="deptSelect" type="PropertySelection">
- <binding name="value" value="department"/>
- <binding name="model" value="availDepts"/>
- </component>
PropertySelection 组件设定默认值
例子:
在.page定义了如下组件:
<component id="departmentSelect" type="PropertySelection">xml 代码
- <component id="departmentSelect" type="PropertySelection">
- <binding name="value" value="department"/>
- <binding name="model" value="availDepts"/>
- </component>
<binding name="value" value="department"></binding>
<binding name="model" value="availDepts"></binding>
</component>
只要在页面类中,设定department的初始值,该值就是选中的默认值。
原因:当该组件遍历'model' availDepts时,会使用public Object getOption(int index)方法读出列表,当 读出的对象与'value'中的值相等时,就选中该项。 哈哈..简单吧!:)
分享到:
相关推荐
Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...
提供了Tapestry Web框架的组件。 -NavigationBar:JavaScript导航栏-DynamicImage:Graphics2D绘制的图像-AjaxTextField:AJAX TextField -Include:在页面中包含内容-TransparentPNG:所有浏览器上的透明PNG
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...
Tacos为Tapestry Web应用程序开发框架提供了一个组件存储库。
9. **Tapestry-test**: 为Tapestry应用提供了通用的测试支持,包括模拟组件、服务和事件处理。 10. **Tapestry-internal-test**: 内部测试套件,用于验证Tapestry框架的内部工作原理和功能,这对于理解Tapestry的...
2. `src/main/java` - Java源代码目录,包含了业务逻辑、服务层(Spring Beans)、组件类(Tapestry Components)等。 3. `src/main/resources` - 配置文件存放处,如Spring的bean配置、Hibernate的实体映射文件...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...
3. **工具和实用程序库**:可能包含一些辅助类库,用于日志、国际化、验证和其他通用功能。 4. **示例和文档**:可能还包括一些示例代码和开发指南,帮助开发者快速上手。 要开始使用Tapestry 3,开发者需要将这些...
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
jsrc包含一些有用的挂毯组件/库
### Tapestry4开发指南 #### 一、Tapestry4概览 Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了...
Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
<tapestry:propertySelection name="country" label="Country" model="${countries}" /> ``` **14. Table组件:** - **用途:**用于创建表格。 - **示例代码:** ```xml <tapestry:table data-model="${users}...
Tapestry API提供了`org.apache.tapestry5.corelib.components`包下的基础控件,如`Form`和`Submit`,它们作为控制器的一部分,帮助开发者实现MVC模式。 3. **事件与绑定** Tapestry支持事件驱动的编程,组件之间...
Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证、本地化、状态管理和URL映射等功能。Tapestry 5 强调易用性,不仅对终端用户友好,...
Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...
【标题】"tapestry-bin-5.1.0.5" 指的是Apache Tapestry的一个特定版本的二进制发行包。Tapestry是一个开源的Java Web应用程序框架,它提供了一种基于组件的开发方式,用于构建动态、交互式的Web应用。 【描述】...
《Tapestry 5 電子書》是关于Java Web开发框架Tapestry 5的一本详尽指南,由Packt Publishing在2007年出版。这本书旨在帮助开发者深入理解和掌握Tapestry 5的各个方面,从而利用其强大功能构建高效、可维护的Web应用...