Tapestry コンポーネント テンプレートで、マークアップを X 回 (X はコンポーネントのパラメーター) レンダリングする簡単な方法はありますか?
Tapestry のドキュメントで見つけることができるのは、ループ コンポーネントだけです。
<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>
しかし、これは非常に醜いです。確かに、これほど単純なことを行うためのより良い方法はありますか?