2009-02-24 22 views
2

我有一个扩展BaseA并实现InterfaceA的具体类A.我想循环使用基类或接口作为循环变量的A列表。尝试这样的事情:如何在Tapestry 5中使用基类或接口与网格或循环组件?

<t:loop source="listOfA" value="propertyOfTypeBaseA"> 
    ${propertyOfTypeBaseA.someField} 
</t:loop> 

给我一个错误“无法找到从A类型到BaseA的强制”。当我将值设置为InterfaceA类型的属性时,会发生同样的情况。如果我使用Object作为循环变量类型,我可以让循环工作,但是我无法访问具体类或接口上的任何字段。

似乎Tapestry应该知道如何从一个对象强制实现它的一个接口,但我也尝试了从A到BaseA/InterfaceA的强制,它仍然给了我那个错误,尽管它实际上表现出了强制在列表中。

任何想法?

回答

3

如果该接口不在Tapestry管理的包中,该接口将工作。我现在知道,除了页面和组件之外,“基础”包是Tapestry管理的包。我已经把我的基类和接口放在该包中,认为它们可以从Tapestry的classloader voodoo安全。在将它们移出后,我仍然需要为基类贡献一个强制,但不是为界面提供强制。