原生tapestry5 v5.3.6地图绑定

时间:2012-11-11 17:02:27

标签: binding map tapestry

我有一个名为ixlTest的属性对象,其map。此映射包含另一个映射,我需要在页面的模板文件中绑定后者的对象。非常复杂的对象图。

我基本上是想这样做:

ixlTest.parameterGroups{'testOptions'}{'serverIp'}.value

ixlTest是我页面中的属性对象 parameterGroupsixlTest中的成员变量。此变量是mapparameterGroups有一个包含密钥testOptions的条目,其中包含另一个map,密钥为serverIp,该对象包含一个名为value的变量,我需要它在我的模板文件中绑定。

我需要使用tapestry对它的本机支持,而不是其他库,我也不需要使用方法来抽象操作,因为我已经通过这条路并且效率非常低。

谢谢。

1 个答案:

答案 0 :(得分:1)

有时候,最好将它放在页面上的Java(或Groovy或Scala)代码中,并从模​​板中引用它。

Tapestry的属性表达式语法没有用于取消引用映射的运算符;但是你可以调用get()方法......但是Tapestry能够找出泛型,这意味着你可能会得到关于遗漏属性的错误。

我将其编码为:

value="testValue"

在模板中,并且:

public String getTextValue() {
    return ixlTest.getParameterGroups().get("testOptions").get("serverId").getValue(); 
}

在课堂上。

由于您可以动态更改Java代码,这通常比将复杂表达式放入模板更好;在Java端重构事物可以破坏模板内部的复杂表达式,IDE不知道它们。