使用groovy GStringTemplateEngine()循环模板 [英] looping a template using groovy GStringTemplateEngine()

查看:144
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆