一、普通组件
1.java文件
package com.logcd.tapestry5.myapp.components;
import java.util.ArrayList;
import java.util.List;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
public class NavBar {
@Parameter(defaultPrefix = "literal", required = true)
private String pages;
@Inject
private ComponentResources resources;
@Property
private Page _pageAttr;
public List<Page> getPageNames() {
List<Page> pageList = new ArrayList<Page>();
String[] pageArr = pages.split(",");
for(int i=0;i<pageArr.length;i++){
Page page=new Page();
page.setName(pageArr[i].split("=")[0]);
page.setUrl(pageArr[i].split("=")[1]);
pageList.add(page);
page=null;
}
return pageList;
}
public String getTabClass() {
if (_pageAttr.name.equalsIgnoreCase(resources.getPageName()))
return "current";
return null;
}
public class Page{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
private String url;
}
}
2.NavBar.tml
<table class="navigation" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<tr>
<t:loop source="pageNames" value="pageAttr">
<td class="${tabClass}">
[<t:pagelink page="${pageAttr.url}">${pageAttr.name}</t:pagelink>]
</td>
</t:loop>
</tr>
</table>
3.页面使用
<span t:type='NavBar' pages="首页=Index,用户管理=user/CreateUser"/>
二、布局模板组件
1.java文件
package com.logcd.tapestry5.myapp.components;
import org.apache.tapestry5.annotations.IncludeStylesheet;
//用 "context:"前缀,如果存储在应用程序(webapp)的目录
//用"classpath:"前缀,如果存储在应用程序的classpath路径下
@IncludeStylesheet("context:styles/layout.css")
public class Layout {
}
2.tml文件
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<head>
<title>Tapestry 5 Demo Application</title>
<style type="text/css">
@import url(${asset:context:styles/myapp.css});
</style>
</head>
<body>
<div id="header">
<h1>Tapestry 5 Demo</h1>
<div id="navigator" style="float:right;margin-right:10px;">[<t:pagelink t:page="Index">首页</t:pagelink>]</div>
</div>
<div id="container">
<t:body/>
</div>
<div id="footer">
Design by <a href="#">XXX Design</a>
</div>
</body>
</html>
3.layout.css
div{
text-align:left;
}
#header{
width : 100%;
margin: 2px auto;
text-align:center;
background-color: #FFFFEC;
border:1px solid #f60;
height:10%;
}
#container{
margin:0 auto;
overflow:hidden;
background:#eee;
border:1px solid #f60;
width: 100%;
height:85%;
}
#footer{
clear:both;
width:100%;
margin:2px auto;
text-align:center;
background-color: buttonface;
border:1px solid #f60;
height:5%;
}
4.使用模板
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<p> 现在是: ${currentTime}. </p>
[<t:pagelink t:page="Index">refresh</t:pagelink>]
</p>
</t:layout>
分享到:
相关推荐
在 Tapestry 5 框架中,自定义组件是扩展其功能的关键方式,它允许开发者根据特定需求创建个性化和可重用的 UI 元素。Tapestry 5 是一个强大的 Java Web 应用程序开发框架,它强调组件化、模块化以及声明式编程模型...
你可以直接使用这些组件,也可以根据需求自定义组件。自定义组件通常涉及以下几个方面: 1. **组件类**:定义组件的Java类,实现其逻辑。 2. **模板文件**:使用HTML和特殊的Tapestry标记来描述组件的外观。 3. **...
- **自定义组件库**:展示如何创建自己的组件库以供复用。 ##### 4. **数据处理与表单** - **数据绑定**:讲解如何在组件中绑定数据模型,实现数据的双向绑定。 - **表单处理**:介绍如何使用 Tapestry 5 创建和...
5. **资源文件**:`GridPanel.properties`和`GridPanel.script`可能是资源文件,前者可能包含组件的国际化文本,后者可能包含额外的JavaScript代码或配置信息,如GridPanel的扩展功能或自定义行为。 在实际应用中,...
同时,还会介绍如何利用Tapestry的内置Ajax功能创建自定义组件。 开发Tapestry 5 应用前,需要准备以下环境: - JDK 5.0 或更高版本 - Servlet容器,如Apache Tomcat 5.5 或更新版本 - Maven 2.0.8(可选,用于构建...
- **服务构建器**:Tapestry 5的服务架构允许自定义服务并管理其生命周期。服务可以通过服务构建器进行配置和装配,确保依赖关系的正确解决。 - **注入机制**:依赖注入使得类可以获取所需的其他服务,无需手动...
书中会详细讲解如何创建和使用自定义组件,以及如何管理组件的状态。 2. **页面生命周期**:Tapestry 5管理页面的创建、初始化、渲染等过程。书中会解释每个阶段的工作原理,以及如何在这些阶段中插入自定义逻辑。 ...
3. **模板与渲染**:讨论如何编写HTML模板,并将Java代码与之结合,以及如何自定义组件的渲染过程。 4. **URL映射**:说明Tapestry 5如何通过URL映射来处理HTTP请求,以及如何定义和使用页面和操作。 5. **服务...
**自定义组件** 是 Tapestry5 强大的地方之一,下面列举了一些常用的自定义组件: 1. **上传组件 Upload**:支持同步上传。 2. **ajax 上传图片组件 Uploads**:支持异步上传,提高了交互性。 3. **二级省市级联...
- **自定义组件**:开发者可以根据需要扩展或创建自定义组件,以满足特定的应用需求。 - **国际化支持**:Tapestry5支持多语言应用,开发者可以通过配置文件轻松实现国际化。 - **性能优化**:了解如何利用缓存机制...
- **自定义组件**:开发者可以根据需求创建自定义组件,以实现特定的功能或界面布局。 - **事件处理**:Tapestry 支持事件驱动的开发模型,可以方便地响应用户操作。 - **Ajax 支持**:Tapestry 内置了对 Ajax 的...
这份文档可能包含了一些关键或高级的主题,比如性能优化、安全策略、自定义组件开发、MVC模式在Tapestry中的应用等。它是进一步提升Tapestry开发技能的重要参考资料。 6. **tapestry用户手册.pdf**: 用户手册...
在组件方面,Tapestry 5.0提供了丰富的内置组件,如表格、表单、链接等,同时支持自定义组件。文档会指导读者如何定义和使用这些组件,以及如何通过组件属性和事件传递数据。此外,还讲解了如何利用模板语言...
1. **组件模型**:Tapestry 5的核心是组件,它们是可复用的代码单元,可以组合成复杂的Web界面。每个组件都有自己的生命周期,包括初始化、渲染和服务请求等阶段。组件可以通过HTML模板和Java类来定义。 2. **事件...
2. **自定义组件**:通过扩展或创建新的组件,可以满足特定需求。理解组件的生命周期,包括初始化、渲染和更新过程。 3. **服务**:Tapestry的服务机制允许你定义和注入业务逻辑。学习如何创建、注册和使用服务,...
一个关于table在tapestry里应用的例子
此外,还将探讨如何利用Tapestry的内建Ajax支持创建自定义组件。 为了开始使用Tapestry 5,你需要安装Java SE Development Kit (JDK) 5.0或更高版本,Servlet容器如Apache Tomcat 5.5或更新版本。如果选择使用Maven...
开发者通常不会直接实现这些接口,而是继承如`AbstractComponent`或`BaseComponent`这样的基础类来创建自定义组件。`IRequestCycle`、`IMarkupWriter`和`IEngine`是三个重要的接口,它们分别处理请求周期管理、HTML...
3. **BaseComponent类**:扩展了AbstractComponent,添加了模板定位和读取功能,大多数自定义组件会继承它。 4. **IPage接口**:表示Tapestry页面,通常会继承自BasePage。 5. **IRequestCycle, IMarkupWriter, ...
3. **组件创建**:介绍Tapestry的组件模型,如何创建自定义组件,以及使用内置组件如表单、链接等。 4. **页面和组件生命周期**:解释页面和组件的生命周期方法,如构造器、初始化和销毁方法。 5. **事件处理和数据...