两种方法创建自己定义标签:

一.通过AbstractComponent父类渲染,此种方法直接在java类中编写页面脚本。然后输出。

1.编写java类com/ailk/ech/ecop/view/test/jwc/LiuzfTest2.java

package com.ailk.ech.ecop.view.test.jwc;

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle; public abstract class LiuzfTest2 extends AbstractComponent{
public abstract String getLink();
public abstract String getValue();
@Override
protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
// TODO Auto-generated method stub
writer.begin("a");
writer.attribute("href", getLink());
writer.print(getValue());
renderInformalParameters(writer, cycle);
}
}

2.编写jwc配置文件web\ecop\test\jwc\LiuzfTest2.jwc。定义组件參数和映射的java类

<?

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 allow-body="yes" allow-informal-parameters="yes" class="com.ailk.ech.ecop.view.test.jwc.LiuzfTest2">
<parameter name="value" direction="in" type="java.lang.String"/>
<parameter name="link" direction="in" type="java.lang.String"/>
</component-specification>

3.在application中引入组件

<component-type type="LiuzfTest2" specification-path="/ecop/test/jwc/LiuzfTest2.jwc"/>

4.然后就能够使用了,使用效果。输出一个<a href="http://www.baidu.com">test2</a>

<span jwcid="@LiuzfTest2" link="http://www.baidu.com" value="test2" />

二.通过BaseComponent父类渲染,此种方法须要定义html规范,通过html规范输出html代码,无需在java类中输出html

1.编写java类LiuzfTest3.java

package com.ailk.ech.ecop.view.test.jwc;

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle; public abstract class LiuzfTest3 extends BaseComponent{
public abstract String getLink();
public abstract String getValue();
}

2.编写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 allow-body="yes" allow-informal-parameters="yes" class="com.ailk.ech.ecop.view.test.jwc.LiuzfTest3">
<parameter name="value" direction="in" type="java.lang.String"/>
<parameter name="link" direction="in" type="java.lang.String"/>
</component-specification>

3.编写html规范,html文件与jwc配置文件放在同一个文件夹下

<html>
<body jwcid="$content$">
<hr>
<a jwcid="@Any" href="ognl:link"><span jwcid="@Insert" value="ognl:value"></span></a>
</body>
</html>

4.在application中引入这个组件

<component-type type="LiuzfTest3" specification-path="/ecop/test/jwc/LiuzfTest3.jwc"/>

5然后就能够使用了,效果也是输出一个链接

<td><span jwcid="@LiuzfTest3" link="http://www.baidu.com" value="test3"  /></td>

tapestry3创建自己定义组件的更多相关文章

  1. 【翻译】在Ext JS和Sencha Touch中创建自己定义布局

    原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...

  2. android学习七(创建自己定义控件)

    前面学习的是android的基本控件和布局的使用,可是主要的控件和布局有时候并不能实现复杂的布局.我们来看下各种控件和布局的关系. 可见全部的控件都是直接或者间接的继承自View的,全部的布局都是直接 ...

  3. angular4-自定义组件

    在 Angular 中,我们可以使用 {{}} 插值语法实现数据绑定. 新建组件 $ ng generate component simple-form --inline-template --inl ...

  4. React中类定义组件constructor 和super

    刚开始学习React没多久,在老师的教程里看到了类组件的使用示例,但是和资料上有些冲突,而引发了一些疑问: 类组件中到底要不要定义构造函数constructor()? super()里边到底要不要传入 ...

  5. android 自己定义组件随着手指自己主动画圆

    首先自己定义一个View子类: package com.example.androidtest0.myView; import android.content.Context; import andr ...

  6. Android自己定义组件系列【5】——进阶实践(2)

    上一篇<Android自己定义组件系列[5]--进阶实践(1)>中对任老师的<可下拉的PinnedHeaderExpandableListView的实现>前一部分进行了实现,这 ...

  7. 使用react定义组件的两种方式

    react组件的两种方式:函数定义,类定义 在定义一个组件之前,首先要明白一点:react元素(jsx)是react组件的最基本的组成单位 组件要求: 1,为了和react元素进行区分,组件名字首必须 ...

  8. React 中的 定义组件的 两种方式

    React 中创建 Components 的方式有两种:Function and Class 定义一个组件最简单的方法就是写一个 JavaScript 函数 function Welcome(prop ...

  9. react 的定义组件(了解)

    react 中定义组件的方法 1. 定义组件 React.createClass() (被淘汰了) 定义组件中的函数 methods 的中的 this 统统指向 组件 2. 函数定义组件 定义的组件时 ...

随机推荐

  1. 关于sql2008的数据库导入问题的收集

    在下载一个源程序的时候,常常会一起下下来一个数据库,即一个.MDF文件和一个.LDF文件,那么我们如何添加到我们的SQL Server 2008中呢?下面是一些详细的步骤: 1.将.MDF和.LDF文 ...

  2. 记录,javascript中对象的属性名是字符串,却可以不用引号

    问题描述:今日看书,里面介绍js的对象的属性名是包括空字符串在内的所以字符串 问题来了,我们平时定义的对象如下,是没有引号""or’'的 var someone  = {    f ...

  3. C# 获取操作系统相关信息

    1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘 ...

  4. Hadoop MapReduce编程 API入门系列之网页流量版本1(二十一)

    不多说,直接上代码. 对流量原始日志进行流量统计,将不同省份的用户统计结果输出到不同文件. 代码 package zhouls.bigdata.myMapReduce.areapartition; i ...

  5. udacity_javascript设计模式

    javascript设计模式 的学习记录 在优达学城上找到的 <javascript设计模式> 他主要是带动我们的思考 在 <第二章 分离重构> 中使用了 model octo ...

  6. 第八课: - 从Microsoft SQL数据库读取

    第 8 课 如何从Microsoft SQL数据库中提取数据 In [1]: # Import libraries import pandas as pd import sys from sqlalc ...

  7. 关于安卓调用wcf的一些问题

    最近公司有个项目需要和别的系统做对接,对方开放的是webservice接口,搞了很久终于搞出来了,在此记录一下 获取数据的service public class SoapService implem ...

  8. 关于table排版

    colspan和rowspan这两个属性用于创建特殊的表格. colspan是“column span(跨列)”的缩写.colspan属性用在td标签中,用来指定单元格横向跨越的列数:   在浏览器中 ...

  9. 前端手机验证码cookie存储

    注册的时候经常会有手机验证码的输入这个环节,在第一次点击发送了验证码只后,比如倒计时只走了10秒钟,然后刷新的话,倒计时要还是存在的,这个时候就要有一个cookie的存在了. html的代码 < ...

  10. Win7系统无法记住网络访问的凭据怎么办?

    访问内网其他IP时已经打勾记住我的凭据了,但是注销或者重启Win7系统之后,又得重新输入用户名跟密码怎么办? 下面就为大家介绍一下如何让Win7系统记住网络访问的凭据. 以上问题还会引发,重启后无法正 ...