我有一个具体的类A,它扩展了BaseA并实现了InterfaceA。我想使用基类或接口作为循环变量来遍历A列表。尝试这样的事情:
<t:loop source="listOfA" value="propertyOfTypeBaseA">
${propertyOfTypeBaseA.someField}
</t:loop>
给我一个错误“无法找到从A类到BaseA的强制”。当我将value设置为InterfaceA类型的属性时,会发生同样的事情。如果我使用Object作为循环变量类型,我可以让循环工作,但是我无法访问具体类或接口上的任何字段。
似乎Tapestry应该知道如何从一个对象强制执行它所实现的界面,但我也尝试过从A到BaseA / InterfaceA的强制执行,它仍然给了我这个错误,即使它实际上显示了强制清单。
有什么想法吗?
答案 0 :(得分:3)
如果接口不在Tapestry管理的包中,该接口将起作用。我现在知道,除了页面和组件之外,“基础”包是Tapestry管理的包。我把我的基类和接口放在那个包中,认为它们可以安全地从Tapestry的类加载器voodoo开始。将它们移出后,我仍然需要为基类提供强制,但不是为接口提供强制。