最近,我不得不使用Groovy模板引擎来渲染从前端接收的一些字符串。一些字符串看起来像${condition_set[0].name}
,这里是问题所在:Groovy模板引擎将condition_set视为一个数组和一个'。就像方法调用符号。因此,它不能像condition_set [0] .name这样直接使用字符串并在引擎中找到绑定。有什么办法可以逃脱'[',']'和'。'吗?
答案 0 :(得分:0)
如果您收到的输入格式无法解析为简单的模板变量,则可以切换到GStringTemplateEngine
,这样您就可以使用普通Groovy代码的某些部分,这些部分可以轻松读取诸如{ {1}}。看下面的例子:
'condition_set[0].name'
与您之前的示例相比,最重要的变化是,我们现在在import groovy.text.GStringTemplateEngine
def text = '''
This is <%= getVariable("condition_set[]") %>
This is <%= getVariable("condition_set[0].name") %>
'''.trim()
def binding = ['condition_set[]': 'test', 'condition_set[0].name': 'TEMPLATE']
def engine = new GStringTemplateEngine()
println engine.createTemplate(text).make(binding)
对象上执行getVariable()
方法,而不是使用简单的模板变量。从Binding
开始的节很重要,这样<%=
方法调用的结果将返回到模板解析器。如果运行此示例,它将产生以下输出:
getVariable()
希望对您有帮助。