迭代Tapestry中的字符串列表

时间:2011-05-10 06:08:03

标签: java tapestry

我是Tapestry 5的新手,我坚持使用以下方案之一:

Controller.java

@Property
private List<EnumeratedDynamicProperty> enumeratedDynamicPropertyList;
@Property
private EnumeratedDynamicProperty enumeratedDynamicPropertyInfo;

.tml

<tr t:type="Loop" t:source="enumeratedDynamicPropertyList" t:value="enumeratedDynamicPropertyInfo" encoder="encoder">>
    <td>${enumeratedDynamicPropertyInfo.propertyName}</td>
    <td>${enumeratedDynamicPropertyInfo.description}</td>
    <td>${enumeratedDynamicPropertyInfo.type}</td>
</tr>

现在在EnumertedDynamicProperty中,我有一个字段具有以下定义:

private List<String> classNames = new ArrayList<String>();

现在我想在tml文件中再添加一个<td>,并在那里显示以逗号分隔的List值。 例如:

<td>
    enumeratedDynamicPropertyInfo.getClassNames.get(0).get(0),enumeratedDynamicPropertyInfo.getClassNames.get(0).get(1)
</td>

2 个答案:

答案 0 :(得分:4)

像silb建议的那样做可能是你最好的选择。如果您想在模板文件中执行此操作,可以使用另一个循环遍历列表:

<td>
    <span t:type="Loop" t:source="enumeratedDynamicPropertyInfo.classNames" 
       t:value="var:currentClassName">
       ${var:currentClassName}
    </span>
</td>

您可以使用CSS在元素之间添加必要的逗号,以使模板保持简单。

答案 1 :(得分:1)

您始终可以创建一个不带参数的Controller.formatProperty方法,并返回格式化的字符串。它可以从循环变量Controller.enumeratedDynamicPropertyInfo中检索属性的当前值。然后从tml文件中调用Controller.formatProperty。