Groovy模板引擎在Java中转义了括号

时间:2018-09-28 10:23:42

标签: groovy

最近,我不得不使用Groovy模板引擎来渲染从前端接收的一些字符串。一些字符串看起来像${condition_set[0].name},这里是问题所在:Groovy模板引擎将condition_set视为一个数组和一个'。就像方法调用符号。因此,它不能像condition_set [0] .name这样直接使用字符串并在引擎中找到绑定。有什么办法可以逃脱'[',']'和'。'吗?

enter image description here

enter image description here

1 个答案:

答案 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()

希望对您有帮助。