将变量作为参数传递给方法
pass variable to a method as a parameter
我的 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 '('.
您不能在 属性 表达式中使用 binding prefixes(如 var:
)。
您只能在表达式前面使用前缀,让 Tapestry 知道它应该如何解释余数(冒号后的部分)。
参考 属性 表达式的 NBF 语法以查看内部允许的内容:
Tapestry Documentation > User Guide > Property Expressions.
属性 表达式的创建只是为了支持非常基本的结构。如果您需要更复杂的表达式,您应该在 java class 中创建相应的方法,并使用 prop:
绑定前缀引用它们。
Template expansions 您已经提到 (${...}
) 与参数绑定的工作方式相同:
Under the covers, expansions are the same as parameter bindings. The
default binding prefix for expansions is "prop:" (that is, the name of
a property or a property expression), but other binding prefixes are
useful, especially "message:" (to access a localized message from the
component's message catalog).
我的 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 '('.
您不能在 属性 表达式中使用 binding prefixes(如 var:
)。
您只能在表达式前面使用前缀,让 Tapestry 知道它应该如何解释余数(冒号后的部分)。
参考 属性 表达式的 NBF 语法以查看内部允许的内容:
Tapestry Documentation > User Guide > Property Expressions.
属性 表达式的创建只是为了支持非常基本的结构。如果您需要更复杂的表达式,您应该在 java class 中创建相应的方法,并使用 prop:
绑定前缀引用它们。
Template expansions 您已经提到 (${...}
) 与参数绑定的工作方式相同:
Under the covers, expansions are the same as parameter bindings. The default binding prefix for expansions is "prop:" (that is, the name of a property or a property expression), but other binding prefixes are useful, especially "message:" (to access a localized message from the component's message catalog).