我有一个名为ixlTest
的属性对象,其map
。此映射包含另一个映射,我需要在页面的模板文件中绑定后者的对象。非常复杂的对象图。
我基本上是想这样做:
ixlTest.parameterGroups{'testOptions'}{'serverIp'}.value
ixlTest
是我页面中的属性对象
parameterGroups
是ixlTest
中的成员变量。此变量是map
。
parameterGroups
有一个包含密钥testOptions
的条目,其中包含另一个map
,密钥为serverIp
,该对象包含一个名为value
的变量,我需要它在我的模板文件中绑定。
我需要使用tapestry对它的本机支持,而不是其他库,我也不需要使用方法来抽象操作,因为我已经通过这条路并且效率非常低。
谢谢。
答案 0 :(得分:1)
有时候,最好将它放在页面上的Java(或Groovy或Scala)代码中,并从模板中引用它。
Tapestry的属性表达式语法没有用于取消引用映射的运算符;但是你可以调用get()
方法......但是Tapestry能够找出泛型,这意味着你可能会得到关于遗漏属性的错误。
我将其编码为:
value="testValue"
在模板中,并且:
public String getTextValue() {
return ixlTest.getParameterGroups().get("testOptions").get("serverId").getValue();
}
在课堂上。
由于您可以动态更改Java代码,这通常比将复杂表达式放入模板更好;在Java端重构事物可以破坏模板内部的复杂表达式,IDE不知道它们。