在 Tapestry 组件模板中,有没有一种简单的方法来渲染一些标记 X 次,其中 X 是组件的参数?
我在 Tapestry 文档中能找到的只有 Loop 组件:
<table class="navigation" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<tr>
<t:loop source="pageNames" value="pageName">
<td class="${tabClass}">
<t:pagelink page="pageName">${pageName}</t:pagelink>
</td>
</t:loop>
</tr>
</table>
但是,如果我只想渲染 X 次而不需要传递任何参数,那就太矫枉过正了。对于这个用例,我真的期待像(伪代码)这样的东西:
<table class="navigation" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<tr>
<t:loop times="${x}">
<!-- same markup every time -->
</t:loop>
</tr>
</table>
但似乎不存在这样的东西——或者是吗?
现在我的解决方法是提供一个给出大小 X 的 List 的存根实现,并将其用作我的循环源:
班级:
private int x;
public List<Object> getX() {
return new AbstractList<Object>() {
public Object get(int arg0) {
return null;
}
public int size() {
return x;
}
};
}
模板:
<t:loop source="x">
<!-- same markup each time -->
</t:loop>
但这很丑陋——肯定有更好的方法来做这么简单的事情吗?