0

Tapestry 循环文档显示了以下示例

<t:loop source="pageNames" value="pageName">
    <td class="${tabClass}">
        <t:pagelink page="pageName">${pageName}</t:pagelink>
    </td>
</t:loop>

其中 pageName 变量是从组件中获取的:

@Property
private String _pageName;

我对这样的财产没有用处。从组件中删除声明会使 Tapestry 伤心并抛出类似于

无法将“pageName”转换为组件参数绑定。类 ... 不包含名为“pageName”的属性(在属性表达式“pageName”中)。可用属性:...

如何在不为循环值声明属性的情况下使用循环标记?

4

2 回答 2

2

我认为您不必指定t:value,只需将其省略即可。在某些情况下,您只想使用t:index,这完全没问题。

根据评论编辑:

是的,没有办法在组件类中声明一个属性。当您不对组件类中的当前迭代值做任何事情时,它可能看起来有点不雅,这是真的。在这种情况下,我倾向于使用 getter 和 setter 而不是@Property注释,以避免“未使用”编译器警告。

于 2010-09-16T15:55:55.440 回答
2

您可以在模板中使用 var 前缀作为临时变量的前缀。所以在你的情况下,你只会说value="var:pagename". 如果 pagename 是诸如字符串或整数之类的原语,并且您可以使用以下语法在循环中的任何位置访问其值,则此方法可以正常工作${var:pagename}。但是,当您尝试访问其属性时,它会失败,例如pagename.name.

在此处查看可用绑定表达式的列表,以查看可以从中提取值的其他位置(例如消息目录)。

或者,您始终可以@SuppressWarnings("unused")在您的页面类中使用该属性来抑制编译器警告。

干杯。

于 2010-11-12T10:34:22.220 回答