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

一.通过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. 【转】IOS中Json解析的四种方法

    原文网址:http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有 ...

  2. 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!

    摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...

  3. JAVA 中for-each循环使用方法

    for each循环还是第一次见,“java SE 5.0增加了一种功能很强的循环结构,可以用来一次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心”. 这种增强的for eac ...

  4. linux编译安装protobuf2.5.0

    1.下载安装包 https://github.com/google/protobuf/releases?after=v3.0.0-alpha-4.1 找到相应的版本下载 2.解压安装包 #.tar.g ...

  5. 第5章分布式系统模式 使用服务器激活对象通过 .NET Remoting 实现 Broker

    正在使用 Microsoft? .NET Framework 构建一个需要使用分布式对象的应用程序.您的要求包括能够按值或按引用来传递对象,无论这些对象驻留在同一台计算机上,还是驻留在同一个局域网 ( ...

  6. [hihocoder][Offer收割]编程练习赛43

    版本号排序 不知道什么傻逼原因,就是过不了 #pragma comment(linker, "/STACK:102400000,102400000") #include<st ...

  7. js原生_获取url键值对

    思路: 1.先对url进行处理,获取 ?后的字符串 postid=10457794&actiontip=保存修改成功') 2. 字符串通过&标识,不同参数转为数组 ["pos ...

  8. 读《Android电视机(机顶盒)初次开发的一些经验分享》后的笔记

    原文: http://blog.csdn.net/tanghongchang123/article/details/52982818 一.基本命令: 1.adb connect [ip] 2. adb ...

  9. 00--C++牛人的博客

    那些C++牛人的博客 这篇文章来自转载,转载的网址找不到了,   如果有人知道,可以在下面评论,   非常感谢,更感谢原作者. 现整理收集C++世界里那些“牛人”的个人博客.凡三类:一是令人高山仰止的 ...

  10. RabbitMQ学习之集群模式

    由于RabbitMQ是用erlang开发的,RabbitMQ完全依赖Erlang的Cluster,因为erlang天生就是一门分布式语言,集群非常方便,但其本身并不支持负载均衡.Erlang的集群中各 ...