У меня есть конкретный класс A, который расширяет BaseA и реализует InterfaceA. Я хочу просмотреть список A, используя базовый класс или интерфейс в качестве переменной цикла. Попытка что-то вроде этого:
<t:loop source="listOfA" value="propertyOfTypeBaseA">
${propertyOfTypeBaseA.someField}
</t:loop>
выдает ошибку "Не удалось найти принуждение от типа A к BaseA". То же самое происходит, когда я устанавливаю значение для свойства типа InterfaceA. Я могу заставить цикл работать, если я использую Object как тип переменной цикла, но тогда я не могу получить доступ ни к одному из полей в конкретном классе или интерфейсе.
Кажется, что Tapestry должен знать, как привести объект к интерфейсу, который он реализует, но я также попытался внести приведение из A в BaseA / InterfaceA, и он все равно дал мне эту ошибку, даже если он фактически отображал приведение список.
Есть идеи?