0

我有一个名为的属性对象ixlTest,它有一个map. 该地图包含另一个地图,我需要将后者的对象绑定到我的页面模板文件中。相当复杂的对象图。

我基本上是在尝试这样做:

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

ixlTest是我页面中的一个属性对象 parameterGroups是一个成员变量ixlTest。这个变量是一个mapparameterGroups有一个带有 key 的条目testOptions,它有另一个map带有 key的条目,serverIp它是一个对象,它有一个名为value我需要在模板文件中绑定的变量。

我需要使用 Tapestry 的本机支持,而不需要其他库,而且我也不需要使用方法来抽象操作,因为我已经走过了那条路,而且效率很低。

谢谢你。

4

1 回答 1

1

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

Tapestry 的属性表达式语法没有用于取消引用映射的运算符;但是您可以调用该get()方法……但是 Tapestry 找出泛型的能力是有限的,这意味着您可能会收到有关缺少属性的错误。

我会将其编码为:

value="testValue"

在模板中,并且:

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

在课堂里。

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

于 2012-11-20T14:18:39.713 回答