Tapestry - 复合材料组件?

时间:2012-04-24 22:57:28

标签: java tapestry

有人可以告诉我如何在Tapestry中创建复合组件吗? 我知道如何在JSF中使用以及使用ui:define。 但是如何使用挂毯?

我想创建以下设置:

sidebar.tml:应定义一些可替换变量,此处为“header”和“content”

<t:container>
The header is ${header}, and the content ist ${content}.
</t:container>

layout.tml:应定义侧边栏始终与

对齐的正确位置
//header
<t:sidebar /> 
//footer

customPage.tml:应该提供侧边栏的内容

<t:sidebar>
    <t:header>my header</t:header>
    <t:content>some content here</t:content>
</t:sidebar>

我知道不可能这样做,但我希望你明白我想做什么并可以帮助我?

tyvm

1 个答案:

答案 0 :(得分:3)

我就是这样做的:

sidebar.tml

<t:container>
The header is <t:delegate to="header"/>, and the content ist <t:delegate to="content"/>
</t:container>

Sidebar.java

public class Sidebar
{
    @Property
    @Parameter(required = true)
    private Block header;

    @Property
    @Parameter(required = true)
    private Block content;

layout.tml

//header
<t:sidebar header="sidebarHeader" content="sidebarContent"/> 
//footer

Layout.java

public class Layout
{
    @Property
    @Parameter(required = true)
    private Block sidebarHeader;

    @Property
    @Parameter(required = true)
    private Block sidebarContent;

customPage.tml

<t:layout>
    <p:sidebarHeader>my header</p:sidebarHeader>
    <p:sidebarContent>some content here</p:sidebarContent>
    rest of your content here
</t:layout>

希望它有所帮助!