Повторять список строк в Tapestry

#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.