`
log_cd
  • 浏览: 1098592 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Tapestry5自定义组件

阅读更多
一、普通组件
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>
分享到:
评论

相关推荐

    tapestry5 自定义组件

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

    Tapestry简单入门.rar_java Tapestry_tapestry

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

    Tapestry 5 Building Web Applications.pdf

    - **自定义组件库**:展示如何创建自己的组件库以供复用。 ##### 4. **数据处理与表单** - **数据绑定**:讲解如何在组件中绑定数据模型,实现数据的双向绑定。 - **表单处理**:介绍如何使用 Tapestry 5 创建和...

    tapestry4.02中封装ext的GridPanel组件

    5. **资源文件**:`GridPanel.properties`和`GridPanel.script`可能是资源文件,前者可能包含组件的国际化文本,后者可能包含额外的JavaScript代码或配置信息,如GridPanel的扩展功能或自定义行为。 在实际应用中,...

    Tapestry5开发文档手册.doc

    同时,还会介绍如何利用Tapestry的内置Ajax功能创建自定义组件。 开发Tapestry 5 应用前,需要准备以下环境: - JDK 5.0 或更高版本 - Servlet容器,如Apache Tomcat 5.5 或更新版本 - Maven 2.0.8(可选,用于构建...

    Tapestry 5开发指南(英文)

    - **服务构建器**:Tapestry 5的服务架构允许自定义服务并管理其生命周期。服务可以通过服务构建器进行配置和装配,确保依赖关系的正确解决。 - **注入机制**:依赖注入使得类可以获取所需的其他服务,无需手动...

    tapestry5 build web application-alexander

    书中会详细讲解如何创建和使用自定义组件,以及如何管理组件的状态。 2. **页面生命周期**:Tapestry 5管理页面的创建、初始化、渲染等过程。书中会解释每个阶段的工作原理,以及如何在这些阶段中插入自定义逻辑。 ...

    Tapestry5.chm

    3. **模板与渲染**:讨论如何编写HTML模板,并将Java代码与之结合,以及如何自定义组件的渲染过程。 4. **URL映射**:说明Tapestry 5如何通过URL映射来处理HTTP请求,以及如何定义和使用页面和操作。 5. **服务...

    Tapestry5使用文档

    **自定义组件** 是 Tapestry5 强大的地方之一,下面列举了一些常用的自定义组件: 1. **上传组件 Upload**:支持同步上传。 2. **ajax 上传图片组件 Uploads**:支持异步上传,提高了交互性。 3. **二级省市级联...

    Tapestry5BuildingWebApplications

    - **自定义组件**:开发者可以根据需要扩展或创建自定义组件,以满足特定的应用需求。 - **国际化支持**:Tapestry5支持多语言应用,开发者可以通过配置文件轻松实现国际化。 - **性能优化**:了解如何利用缓存机制...

    Tapestry5 使用教程

    - **自定义组件**:开发者可以根据需求创建自定义组件,以实现特定的功能或界面布局。 - **事件处理**:Tapestry 支持事件驱动的开发模型,可以方便地响应用户操作。 - **Ajax 支持**:Tapestry 内置了对 Ajax 的...

    tapestry4和5学习资料

    这份文档可能包含了一些关键或高级的主题,比如性能优化、安全策略、自定义组件开发、MVC模式在Tapestry中的应用等。它是进一步提升Tapestry开发技能的重要参考资料。 6. **tapestry用户手册.pdf**: 用户手册...

    Tapestry.5.Building.Web.Applications.pdf

    在组件方面,Tapestry 5.0提供了丰富的内置组件,如表格、表单、链接等,同时支持自定义组件。文档会指导读者如何定义和使用这些组件,以及如何通过组件属性和事件传递数据。此外,还讲解了如何利用模板语言...

    Tapestry 5 Project 5.0.16 API

    1. **组件模型**:Tapestry 5的核心是组件,它们是可复用的代码单元,可以组合成复杂的Web界面。每个组件都有自己的生命周期,包括初始化、渲染和服务请求等阶段。组件可以通过HTML模板和Java类来定义。 2. **事件...

    Tapestry 5.1 实例教程(全部)

    2. **自定义组件**:通过扩展或创建新的组件,可以满足特定需求。理解组件的生命周期,包括初始化、渲染和更新过程。 3. **服务**:Tapestry的服务机制允许你定义和注入业务逻辑。学习如何创建、注册和使用服务,...

    tapestry table

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

    Tapestry5开发文档.pdf

    此外,还将探讨如何利用Tapestry的内建Ajax支持创建自定义组件。 为了开始使用Tapestry 5,你需要安装Java SE Development Kit (JDK) 5.0或更高版本,Servlet容器如Apache Tomcat 5.5或更新版本。如果选择使用Maven...

    Tapestry

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

    Tapestry 重要资料 教你认识tapestry

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

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

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

Global site tag (gtag.js) - Google Analytics