0

我的项目使用许多引导程序“折叠”按钮来显示和隐藏内容。结构是一致的,所以我相信这是一个很好的候选变成一个组件。

结构如下所示:

<button type="button" class="btn btn-toggle pull-right" data-toggle="collapse" data-target="#name_of_div_to_collapse">
<span class="caret"></span>
</button>

<div id="#name_of_div_to_collapse" class="btn_collapse"> 
Content to show and hide when the collapse button is toggled
</div>

我想将整个按钮变成一个可重用的组件,但是在为按钮的每个实例指定必要的唯一数据目标#name_of_div_to_collapse 时,我无法弄清楚如何做到这一点。这可以使用 Tapestry 吗?我可以从调用组件的 TML 传递一个指定数据目标名称的参数吗?

更新:

我现在可以使用以下代码打印具有唯一数据目标的按钮。我无法解决的是如何将跨度插入符号插入到 MarkupWriter 生成的标记中。

语言:

 <t:frontend.CollapseButton dataTarget="literal:#check_cases_collapse"/>

爪哇:

 @SupportsInformalParameters
public class CollapseButton {

@Parameter(required=true, allowNull=false, defaultPrefix=BindingConstants.ASSET)
private String dataTarget;

@Inject
private ComponentResources resources;

boolean beginRender(MarkupWriter writer)
{
     writer.element("button", "data-target", dataTarget, "class", "btn btn-toggle pull-right", "type", "button", "data-toggle", "collapse");
     resources.renderInformalParameters(writer);
     writer.end();
     return false;
}

}

这会生成以下输出,这几乎是我想要的:

<button data-toggle="collapse" type="button" class="btn btn-toggle pull-right" data-target="#check_cases_collapse"></button>

但我不知道如何使用 MarkupWriter 在按钮 HTML 中插入跨度插入符号。任何人?

4

2 回答 2

0

在我的情况下,我解决了这个问题:

button data-toggle="collapse" type="button" class="btn btn-toggle pull-right" 
data-target="#${check_cases_collapse_uuid}

在java中我把这个放在哪里:

@Property
private String collapsibleComponentUUID;

check_cases_collapse_uuid = UUID.randomUUID().toString();
于 2014-06-30T07:20:39.120 回答
0

事实证明 MarkupWriter 接受嵌套标记。java类的最终工作代码是:

@SupportsInformalParameters
public class CollapseButton {

@Parameter(required=true, allowNull=false, defaultPrefix=BindingConstants.ASSET)
private String dataTarget;

@Inject
private ComponentResources resources;

boolean beginRender(MarkupWriter writer)
{
     writer.element("button", "data-target", dataTarget, "class", "btn btn-toggle pull-right",    "type", "button", "data-toggle", "collapse");
     resources.renderInformalParameters(writer);
     writer.element("span", "class", "caret");
     writer.end();
     writer.end();
     return false;
}

}

仍然欢迎改进和优化。

于 2013-10-04T21:30:15.667 回答