使用groovy GStringTemplateEngine()循环模板 [英] looping a template using groovy GStringTemplateEngine()
问题描述
我的要求是创建一个模板引擎以支持其中的循环.
最终模板应如下所示:
#cat output.template
env:
- name : param1
value : 1
- name : param2
value : 2
我有伪代码来解释我的要求
def f = new File('output.template')
def engine = new groovy.text.GStringTemplateEngine()
def mapping = [
[ name : "param1",
value : "1"],
[ name : "param2",
value : "2" ]
] // This mapping can consists of a multiple key value pairs.
def Template = engine.createTemplate(f).make(mapping)
println "${Template}"
有人可以帮助我如何达到在模板内部循环的要求以及我应该如何修改模板?
* UPDATE: tim_yates
或 Eduardo Melzer
提供的所有解决方案导致以下输出,模板末尾带有多余的空行.可能是什么原因?* 解决方案提供商是否看不到此行为,或者问题仅在于我的系统?
*UPDATE : All the solutions provided by tim_yates
or by Eduardo Melzer
has resulted in following output with extra blank lines at the end of template. What could be the reason for that?* Are the solution providers not able to see this behavior or the issue is my system only?.
# groovy loop_template.groovy
env:
- name: param1
value : 1
- name: param2
value : 2
root@instance-1:
推荐答案
更改模板文件,使其看起来像这样:
Change your template file to look like this:
#cat output.template
env:<% mapping.eachWithIndex { v, i -> %>
- name : ${v.name}
value : ${v.value}<% } %>
如您所见,您的模板文件需要一个名为mapping
的输入参数,因此您需要将主代码更改为以下内容:
As you can see, your template file expects an input parameter called mapping
, so you need change your main code to something like this:
def f = new File('output.template')
def engine = new groovy.text.GStringTemplateEngine()
def mapping = [
[ name : "param1", value : "1"],
[ name : "param2", value : "2"]
] // This mapping can consists of a multiple key value pairs.
def Template = engine.createTemplate(f).make([mapping: mapping])
println "${Template}"
输出:
#cat output.template
env:
- name : param1
value : 1
- name : param2
value : 2
这篇关于使用groovy GStringTemplateEngine()循环模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!