有人可以告诉我如何在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

最佳答案

这是我的方法:

sidebar.tml

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


侧边栏

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>


希望能帮助到你!

08-03 17:28