按名称访问模板中的属性



给定以下代码:

groovy:

binding = [key1: "val1"]
def f = new File('test.template')
engine = new GStringTemplateEngine()
template = engine.createTemplate(f).make(binding)
println template.toString()

测试模板:

<% keyName = "key1" %>

有没有办法通过test.template中的keyName访问val1?

此:

${ binding[keyName] }

不起作用(没有这样的属性:类的key1:groovy.lang.Binding)。有什么想法吗?也许包含属性的地图的名称不同?

我知道我可以写:

${ key1 }

但我需要使用变量keyName访问属性key1。

不确定这是否更好,但我得到了以下工作(有点)

Map binding = [ keyName: 'key1', key1: "val1", m: [key1:'val100', key2:'val2']]
def f = new File('test.template')
def engine = new groovy.text.GStringTemplateEngine()
def template = engine.createTemplate(f).make(binding)
println template.toString()

使用以下模板:

$keyName
$key1
<%= m[keyName] %>

但这依赖于一个子映射,该子映射包含您要查找的值。

我可以看到这样的场景,在绑定中,您传递一个要处理或显示的字段列表(而不是提前知道它们),因此您必须从一个已知变量中获取字段名称,然后可能通过子映射处理其他字段。

相关内容

  • 没有找到相关文章