0

有人可以告诉我如何在 Tapestry 中创建复合组件吗?我知道如何在 JSF 中使用 using 以及 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

4

1 回答 1

3

这就是我的做法:

侧边栏.tml

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

边栏.java

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

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

布局.tml

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

布局.java

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

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

自定义页面.tml

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

希望能帮助到你!

于 2012-04-25T08:22:09.017 回答