我的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 '('.
答案 0 :(得分:1)
您不能在属性表达式中使用binding prefixes(如var:
)。
你只能在表达式前使用前缀让Tapestry知道它应该如何解释余数(冒号后的部分)。
请参阅NBF语法了解属性表达式以查看内部允许的内容:
Tapestry Documentation > User Guide > Property Expressions
创建属性表达式以支持非常基本的构造。如果您需要更复杂的表达式,您应该在java类中创建相应的方法,并使用prop:
绑定前缀来引用它们。
${...}
)与参数绑定的工作方式相同:
在封面下,扩展与参数绑定相同。该 扩展的默认绑定前缀是“prop:”(即,名称) 属性或属性表达式),但其他绑定前缀是 有用,尤其是“消息:”(从中访问本地化的消息) 组件的消息目录)。