#java #tapestry
#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>();
Теперь я хочу добавить еще одну <td>
в файл tml и отобразить там значения списка через запятую).
Например :
<td>
enumeratedDynamicPropertyInfo.getClassNames.get(0).get(0),enumeratedDynamicPropertyInfo.getClassNames.get(0).get(1)
</td>
Ответ №1:
Выполнение этого, как предлагает silb, вероятно, является вашим лучшим вариантом. Если вы хотите сделать это в файле шаблона, вы можете выполнить итерацию по списку с помощью другого цикла:
<td>
<span t:type="Loop" t:source="enumeratedDynamicPropertyInfo.classNames"
t:value="var:currentClassName">
${var:currentClassName}
</span>
</td>
Вы могли бы использовать CSS для добавления необходимых запятых между элементами, чтобы сохранить шаблон простым.
Ответ №2:
Вы всегда можете создать метод Controller.formatProperty, который не принимает аргументов и возвращает форматированную строку. Он может извлекать текущее значение свойства из переменной цикла Controller.enumeratedDynamicPropertyInfo. Затем вызовите Controller.formatProperty из файла tml.