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

一.通过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. 2017-3-9 leetcode 283 287 289

    今天操作系统课,没能安心睡懒觉23333,妹抖龙更新,可惜感觉水分不少....怀念追RE0的感觉 =================================================== ...

  2. [HTML] 微信wap开发---页面自适应大小

    <meta name="viewport" content="width=device-width, initial-scale=0.5, minimum-scal ...

  3. H3BPM表单设计器公式设计参考

    表单设计器公式设计参考 整体说明 Ø 公式以javascript方式解析,最终支持JS语法或计算方式: Ø 公式变量以数据项为主,以{}符号表示数据项,例如数据项A,表示为{A}:如果是子表中的数据项 ...

  4. LUA 创建文件和文件夹

    创建文件: os.execute('mkdir e:\\aa') 创建文件夹: os.execute("cd.>e:\\wang.ini")

  5. 第6章 服务模式 在 .NET 中实现 Service Interface

    上下文 您 的应用程序部署在 Microsoft Windows? 操作系统上.您决定将应用程序的某一块功能作为 ASP.NET Web Service 公开.互操作性是一个关键问题,因此您无法使用仅 ...

  6. Codeforces Round #447

    QAQ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> ...

  7. &nbsp; 等等空格用法

    平时经常用到 空格转移字符,记住一个   表示一个字符就可以了. Non-Breaking SPace 记住它是什么的缩写,更有助于我们记忆和使用.下面的字符转义自己视图翻译一下. 记录一下,空格的转 ...

  8. 用apt-get install一个软件的时候出现错误: 无法解析或打开软件包的列表或是状态文件

    用apt-get install一个软件的时候出现了一个错误: E: Encountered a section with no Package: header E: Problem with Mer ...

  9. 5G开启百亿“机器人”时代 安全与标准仍待统一

    5G开启百亿“机器人”时代 安全与标准仍待统一 5G将会给物联网产业带来滚雪球效应,这将是数以百亿计“机器人”之间的网络. 在5G的助推下,物联网应用正在加速落地. 6月12日,CES Asia 20 ...

  10. 【数据分析】算法+Echarts小练

    ''' 处理逻辑: 按number去处理 先遍历所有的number挨个去找有没有在列表里的,在列表里的拿出另外一个append 把number去除的列表 ''' li = [] with open(r ...