将变量作为参数传递给方法

时间:2015-04-16 15:31:49

标签: java tapestry

我的tml文件中有以下代码:

<t:loop source="navItem.subPages" value="var:subPage">
    <t:any element="li" class="prop:classForPageName">
        <t:pagelink page="var:subPage">${getMenuPageName(var:subPage)}</t:pagelink>
    </t:any>
</t:loop>

将问题var:subPage传递给方法${getMenuPageName(var:subPage)}时遇到问题,因为这会引发异常:

Could not convert 'getMenuPageName(var:subPage)' into a component parameter binding: Error parsing property expression 'getMenuPageName(var:subPage)': line 1:15 no viable alternative at input '('.

1 个答案:

答案 0 :(得分:1)

您不能在属性表达式中使用binding prefixes(如var:)。

你只能在表达式前使用前缀让Tapestry知道它应该如何解释余数(冒号后的部分)。

请参阅NBF语法了解属性表达式以查看内部允许的内容:

Tapestry Documentation > User Guide > Property Expressions

创建属性表达式以支持非常基本的构造。如果您需要更复杂的表达式,您应该在java类中创建相应的方法,并使用prop:绑定前缀来引用它们。

您提到的{p> Template expansions${...})与参数绑定的工作方式相同:

  

在封面下,扩展与参数绑定相同。该   扩展的默认绑定前缀是“prop:”(即,名称)   属性或属性表达式),但其他绑定前缀是   有用,尤其是“消息:”(从中访问本地化的消息)   组件的消息目录)。

相关问题