`
snail_gtt
  • 浏览: 48212 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tapestry自定义组件

阅读更多
Tapestry最大的优势就是:可重复使用组件。

自定义组件的组成:
*.html  +  *.jwc  +  *.java
jwc文件类似于page文件的功能,  java类必须继承BaseComponent接口

  jwc文件
<?xml version="1.0"?>
<!DOCTYPE component-specification PUBLIC
	"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
	"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<component-specification allow-body="no" allow-informal-parameters="yes" class="">
</component-specification>

allow-body 参数含义是该组件是否有body
allow-informal-parameters 参数指定该组件是否能够使用HTML参数(这里的HTML参数是指没有该组件没有定义的普通的HTML参数)
class 参数含义是指定该自定义组件的类,也可以通过在.application配置文件中指定
*.application
<?xml version="1.0"?>
<!DOCTYPE application PUBLIC
	"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
	"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<application name="Components">
	<meta key="org.apache.tapestry.component-class-packages" value="..."/>
</application>


e.g.1.
Copyright.html
<html>
<body jwcid="$content$">
<hr>
Copyright <span jwcid="year">2005</span>. Foo Inc All rights  reserved.
</body>
</html>

Copyright.jwc
<component-specification allow-body="no">
    <description>It renders a copyright notice.</description>
    <!-- allow-body="yes",允许嵌套,配置了allow-body="yes"以后可以不创建html模板 -->
    <!-- allow-informal-parameters="yes",使用不规则参数,在引用中定义的html属性 -->
    <component id="year" type="Insert">
        <binding name="value" value="currentYear"/>
    </component>
</component-specification>

Copyright.java
public abstract class Copyright extends BaseComponent {
	
	public int getCurrentYear(){
		return new GregorianCalendar().get(GregorianCalendar.YEAR);
	}
}

Home.html
<span jwcid="copyright@Copyright">Copyright notic<b>Hello!</b></span>


自定义组件的组件类也可以继承AbstractComponent接口.BaseComponent是Abstract Component的子类,AbstractComponent类中的renderComponent()方法是可以在类中自定义的, Basecomponet类中renderComponent()方法是表现该组件的模板(.html)中的内容.故继承AbstractComponent接口的自定义组件可以没有模板(.html),其内容可以在类中自定义.如:
public class Box extends AbstractComponent {

	protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle){
		writer.begin("table");
		writer.attribute("border", 1);
		renderInformalParameters(writer,cycle);
		writer.begin("tr");
		writer.begin("td");
		renderBody(writer, cycle);
		writer.end();
		writer.end();
		writer.end();
	}
}
分享到:
评论

相关推荐

    tapestry5 自定义组件

    在 Tapestry 5 框架中,自定义组件是扩展其功能的关键方式,它允许开发者根据特定需求创建个性化和可重用的 UI 元素。Tapestry 5 是一个强大的 Java Web 应用程序开发框架,它强调组件化、模块化以及声明式编程模型...

    Tapestry简单入门.rar_java Tapestry_tapestry

    你可以直接使用这些组件,也可以根据需求自定义组件。自定义组件通常涉及以下几个方面: 1. **组件类**:定义组件的Java类,实现其逻辑。 2. **模板文件**:使用HTML和特殊的Tapestry标记来描述组件的外观。 3. **...

    tapestry table

    一个关于table在tapestry里应用的例子

    tapestry4.02中封装ext的GridPanel组件

    本文将深入探讨Tapestry 4.02版本中对ExtJS的GridPanel组件进行封装的相关知识点。 首先,Tapestry是一个基于Java的开源Web应用框架,它提供了组件化开发的方式,使得开发者可以构建出结构清晰、可维护性强的大型...

    Tapestry

    开发者通常不会直接实现这些接口,而是继承如`AbstractComponent`或`BaseComponent`这样的基础类来创建自定义组件。`IRequestCycle`、`IMarkupWriter`和`IEngine`是三个重要的接口,它们分别处理请求周期管理、HTML...

    tapestry-project-4.1.5

    在实际应用中,Tapestry 提供了丰富的内置组件,如表格、表单、链接等,同时支持自定义组件,扩展性极强。它的模板语言结合了HTML 和Java 代码,使得界面设计与逻辑控制相分离,提高了开发效率。此外,Tapestry 还...

    关于Tapestry的一些个人总结

    6. **自定义组件**:除了使用内置的组件之外,开发者还可以根据自己的需求创建自定义组件。这些组件可以继承自`BaseComponent`,并通过Java类进行实现。 #### 四、Tapestry与其他Web框架的对比 目前主流的Web框架...

    Tapestry In Action

    - **自定义组件**:教授如何创建自定义表单组件,以满足特定业务需求。包括组件的设计原则、开发流程以及如何实现复杂数字输入等。 - **组件库集成**:介绍了如何集成现有的第三方组件库到Tapestry应用中,以扩展...

    Tapestry 重要资料 教你认识tapestry

    3. **BaseComponent类**:扩展了AbstractComponent,添加了模板定位和读取功能,大多数自定义组件会继承它。 4. **IPage接口**:表示Tapestry页面,通常会继承自BasePage。 5. **IRequestCycle, IMarkupWriter, ...

    tapestry官方中文文档及中文字典

    3. **组件创建**:介绍Tapestry的组件模型,如何创建自定义组件,以及使用内置组件如表单、链接等。 4. **页面和组件生命周期**:解释页面和组件的生命周期方法,如构造器、初始化和销毁方法。 5. **事件处理和数据...

    tapestry 实例

    每个页面都有一个唯一的URL,页面组件可以包含文本、图像、链接等基本元素,也可以包含自定义的复杂组件。 2. **组件服务**:Tapestry 提供了一种服务容器,允许开发者创建和管理可重用的服务。这些服务可以在组件...

    extjs_tapestry.rar_extjs tapestry_extjs_tapestry_tapestry

    2. **自定义组件**:"AjaxServlet.page" 似乎是一个 Tapestry 页面定义,可能包含了一个与 AJAXServlet 相关的组件。开发者可能已经创建了一个自定义的 Tapestry 组件,该组件利用 ExtJS 的组件和 API 来增强其功能...

    tapestry学习资料汇总

    Tapestry提供了丰富的内置组件,如表单、链接、表格等,以及自定义组件的能力。 2. **MVC模式与Tapestry** 虽然Tapestry不是传统的Model-View-Controller(MVC)架构,但其设计思想与之相似。在Tapestry中,组件...

    tapestry的文档

    在安全性方面,Tapestry提供了自定义错误页面和异常页面的能力,这使得开发者可以为用户提供更友好的错误处理体验。同时,Tapestry还支持与Spring框架的整合,这为那些已经在使用Spring的项目提供了一种选择,使得在...

    tapestry4.02中封装ext的TabPanel组件

    在本文中,我们将深入探讨 Tapestry 4.02 框架中封装的 Ext TabPanel 组件。Tapestry 是一个开源的Java Web 应用程序开发框架,它允许开发者使用简单的Java类和模板语言来创建动态、交互式的Web应用。而 Ext 是一个...

    Tapestry开发

    - **自定义组件:**根据需求自定义组件,增强应用的功能性和灵活性。 **3. 页面设计:** - **设计页面布局:**使用Tapestry提供的组件设计页面布局。 - **添加交互逻辑:**为组件添加事件监听器,实现页面上的交互...

    tapestry4开发指南

    在深入探讨Tapestry 4的编程模型时,读者将学习如何使用Ivy或Maven来管理依赖,理解配置文件的结构,以及如何编写自定义组件。此外,书中还会涉及组件库的使用,包括内置的表单组件、导航组件等,这些组件可以帮助...

    Tapestry中的Table和Tree的完整教程

    Tapestry是一款强大的Java Web应用程序框架,它提供了一种组件化的开发方式,使得开发者能够创建出高度可维护和可扩展的网页应用。在这个完整的教程中,我们将深入探讨Tapestry中的Table和Tree组件,这两种组件在...

    Tapestry开发指南

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、类型安全和高可测试性。本开发指南将深入探讨Tapestry的核心概念、工作原理以及如何利用它来构建高效、可维护的Web应用。 1. ...

Global site tag (gtag.js) - Google Analytics