tapestry早就步入annotation时代了,公司用的还停留在3.0时代,不过3.0确实比较经典,tapestry4,5正在一步步迷失自己。
用tapestry无非就为了四个字:基于组件。
tapestry3自定义组件有两种方式,一种就是原始的print方式后台一点点画组件然后渲染到前台,还有种就是画好html模版,后台纯粹传参数来渲染组件。
先是第一种,第一种继承AbstractComponent,override方法renderComponent:
public class TestInsert extends AbstractComponent {
@Override
protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
writer.begin("span");
writer.attribute("style", "color:red");
writer.print("红色的span标签");
writer.end("span");
this.renderInformalParameters(writer, cycle);
}
}
定义个Test.jwc
<component-specification class="aronlulu.test.TestInsert"
allow-body="yes"
allow-informal-parameters="yes">
<description>
redSpan
</description>
</component-specification>
再在.application中定义位置:
<component-type type="Test" specification-path="/Test.jwc"/>
然后页面中即可直接调用组件:
<span jwcid="test@Test"></span>
很灵活,一次麻烦,以后就处处可以重用。
第二种,基于模板的组件,第二种就是继承BaseComponent(基于AbstractComponent):
public class TestSpanByHtml extends BaseComponent{
public String getValue(){
return "红色的span标签";
}
}
同样定义个TestByHtml.jwc
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<component-specification class="aronlulu.test.TestSpanByHtml"
allow-body="yes"
allow-informal-parameters="yes">
<component id="test" type="Insert">
<binding name="value">value</binding>
</component>
</component-specification>
再定义个html模板:
<html>
<body jwcid="$content$">
<hr>
<span style="color:red"><span jwcid="test"></span></span>
</body>
</html>
别忘了再定义上配置文件位置,然后页面就可以这样调用:
<span jwcid="test@TestByHtml"></span>。
以上就是两种定义方式,估计也是tapestry受欢迎的最主要原因吧,通过对页面组件化,然后用pool的概念管理组件,在较大规模系统扩展需求的时候确实会省很多的时间。
分享到:
相关推荐
在 Tapestry 5 框架中,自定义组件是扩展其功能的关键方式,它允许开发者根据特定需求创建个性化和可重用的 UI 元素。Tapestry 5 是一个强大的 Java Web 应用程序开发框架,它强调组件化、模块化以及声明式编程模型...
你可以直接使用这些组件,也可以根据需求自定义组件。自定义组件通常涉及以下几个方面: 1. **组件类**:定义组件的Java类,实现其逻辑。 2. **模板文件**:使用HTML和特殊的Tapestry标记来描述组件的外观。 3. **...
3. **配置模板**:编写对应的HTML/TML模板文件,如`GridPanel.tml`,在这个模板中,可以通过Tapestry的标记语言来创建GridPanel所需的DOM结构,并通过JavaScript将Tapestry的数据绑定到GridPanel中。 4. **设置...
Tapestry3是一个强大而灵活的Web应用开发框架,它通过组件化编程模型简化了复杂Web应用的构建过程。掌握Tapestry的核心概念和最佳实践,可以帮助开发者快速、高效地开发出高质量的Web应用程序。无论是新手还是有经验...
3. **组件创建**:介绍Tapestry的组件模型,如何创建自定义组件,以及使用内置组件如表单、链接等。 4. **页面和组件生命周期**:解释页面和组件的生命周期方法,如构造器、初始化和销毁方法。 5. **事件处理和数据...
3. **状态管理**:Tapestry 自动处理组件状态的保存和恢复,确保在多个请求间保持一致性。 4. **渲染**:Tapestry 将组件渲染成HTML响应,返回给客户端。 **四、Tapestry 的优势** 1. **强类型**:Tapestry 是基于...
一个关于table在tapestry里应用的例子
3. **BaseComponent类**:扩展了AbstractComponent,添加了模板定位和读取功能,大多数自定义组件会继承它。 4. **IPage接口**:表示Tapestry页面,通常会继承自BasePage。 5. **IRequestCycle, IMarkupWriter, ...
开发者通常不会直接实现这些接口,而是继承如`AbstractComponent`或`BaseComponent`这样的基础类来创建自定义组件。`IRequestCycle`、`IMarkupWriter`和`IEngine`是三个重要的接口,它们分别处理请求周期管理、HTML...
6. **自定义组件**:除了使用内置的组件之外,开发者还可以根据自己的需求创建自定义组件。这些组件可以继承自`BaseComponent`,并通过Java类进行实现。 #### 四、Tapestry与其他Web框架的对比 目前主流的Web框架...
3)自带验证,自定义验证,验证码的生成 4)Tree组件的使用,Grid的各种使用(修改样式,排序,隔行换色等等),Loop组件的使用 5)集合Spring4.0.5实现的增删改查 等等 如果你是新接触Tapestry框架的话,会对你有...
2. **自定义组件**:"AjaxServlet.page" 似乎是一个 Tapestry 页面定义,可能包含了一个与 AJAXServlet 相关的组件。开发者可能已经创建了一个自定义的 Tapestry 组件,该组件利用 ExtJS 的组件和 API 来增强其功能...
3. TabPanel.properties:这是Tapestry的资源文件,用于存储国际化字符串和其他配置信息。在TabPanel组件中,它可能包含TabPanel的标题和其他用户可见的文本,这些文本可以根据用户的语言环境自动调整。 4. ...
- **自定义组件**:教授如何创建自定义表单组件,以满足特定业务需求。包括组件的设计原则、开发流程以及如何实现复杂数字输入等。 - **组件库集成**:介绍了如何集成现有的第三方组件库到Tapestry应用中,以扩展...
- **自定义组件:**根据需求自定义组件,增强应用的功能性和灵活性。 **3. 页面设计:** - **设计页面布局:**使用Tapestry提供的组件设计页面布局。 - **添加交互逻辑:**为组件添加事件监听器,实现页面上的交互...
在安全性方面,Tapestry提供了自定义错误页面和异常页面的能力,这使得开发者可以为用户提供更友好的错误处理体验。同时,Tapestry还支持与Spring框架的整合,这为那些已经在使用Spring的项目提供了一种选择,使得在...
在实际应用中,Tapestry 提供了丰富的内置组件,如表格、表单、链接等,同时支持自定义组件,扩展性极强。它的模板语言结合了HTML 和Java 代码,使得界面设计与逻辑控制相分离,提高了开发效率。此外,Tapestry 还...
在深入探讨Tapestry 4的编程模型时,读者将学习如何使用Ivy或Maven来管理依赖,理解配置文件的结构,以及如何编写自定义组件。此外,书中还会涉及组件库的使用,包括内置的表单组件、导航组件等,这些组件可以帮助...
2. **自定义组件**:通过扩展或创建新的组件,可以满足特定需求。理解组件的生命周期,包括初始化、渲染和更新过程。 3. **服务**:Tapestry的服务机制允许你定义和注入业务逻辑。学习如何创建、注册和使用服务,...