在Tapestry 5中重用页面块

时间:2010-08-20 14:23:32

标签: tapestry

如何在页面之间重新使用TML标记块?我想将重复代码重构为一个组件,类似于标记文件或jsp include。

1 个答案:

答案 0 :(得分:3)

要创建Tapestry组件,您需要在Tapestry应用程序的组件包中创建一个组件类和(通常).tml文件。

在博客应用程序中呈现单个帖子的示例组件类:

package my.tapestry.basepackage.components;

...

public class Post {

    @Parameter(allowNull = false, required = true, 
            defaultPrefix = BindingConstants.PROP)
    private BlogPost post;

    public BlogPost getPost() {
        return post;
    }

}

相应的Post.tml:

<t:container xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
        xmlns:p="tapestry:parameter">
    <h2>${post.title}></h2>
    <p>
        <span t:type="ck/dateFormat" t:value="post.created" 
                t:pattern="d/M/yyyy" />
    </p>
    <div>
        ${post.text}
    </div>
</t:container>

然后,您可以在任何页面中使用您的组件,就像使用Tapestry的内置组件一样:

<div t:type="Post" t:post="post" />