Tapestry loop documentation显示以下示例
<t:loop source="pageNames" value="pageName">
<td class="${tabClass}">
<t:pagelink page="pageName">${pageName}</t:pagelink>
</td>
</t:loop>
从组件中获取pageName变量:
@Property
private String _pageName;
我对这样的财产毫无用处。从Component中删除声明会使Tapestry感到悲伤,并抛出类似于
的异常无法将'pageName'转换为组件参数绑定。 Class ...不包含名为'pageName'的属性(在属性表达式'pageName'中)。可用属性:...
如何在不声明循环值的属性的情况下使用循环标记?
答案 0 :(得分:2)
我认为您不必指定t:value
,只是将其删除。在某些情况下,您只想使用t:index
,这完全没问题。
根据评论进行修改:
是的,没有办法在组件类中声明属性。当你不对组件类中的当前迭代值做任何事情时,它看起来有点不优雅,这是真的。在这种情况下,我倾向于使用getter和setter而不是@Property
注释来避免“未使用的”编译器警告。
答案 1 :(得分:2)
您可以使用var前缀在模板中为临时变量添加前缀。所以在你的情况下,你只需说value="var:pagename"
。如果pagename是诸如字符串或整数之类的基元,则可以正常工作,并且可以使用以下语法${var:pagename}
在循环中的任何位置访问其值。但是,当您尝试访问其属性时失败,例如pagename.name
。
查看here以获取可用绑定表达式的列表,以查看可以从中提取值的其他位置(例如消息目录)。
或者您可以始终在页面类中使用@SuppressWarnings("unused")
来覆盖编译器警告。
干杯。