我的项目使用许多引导程序“折叠”按钮来显示和隐藏内容。结构是一致的,所以我相信这是一个很好的候选变成一个组件。
结构如下所示:
<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 中插入跨度插入符号。任何人?