【问题标题】:looping a template using groovy GStringTemplateEngine()使用 groovy GStringTemplateEngine() 循环模板
【发布时间】:2018-03-23 07:30:26
【问题描述】:

我的要求是创建一个模板引擎来支持其中的循环

最终模板应如下所示:

#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}"

谁能帮我如何实现在模板内循环的要求以及我应该如何修改我的模板?

*更新:tim_yatesEduardo Melzer 提供的所有解决方案导致以下输出在模板末尾带有额外的空白行。这可能是什么原因?* 解决方案提供商是否无法看到这种行为,或者问题只是我的系统?

# groovy loop_template.groovy 
env:
  - name: param1
    value : 1 
  - name: param2
    value : 2 


root@instance-1:

【问题讨论】:

    标签: groovy template-engine


    【解决方案1】:

    将您的模板文件更改为如下所示:

    #cat output.template
    env:<% mapping.eachWithIndex { v, i -> %>
      - name : ${v.name}
        value : ${v.value}<% } %>
    

    如您所见,您的模板文件需要一个名为 mapping 的输入参数,因此您需要将主代码更改为如下内容:

        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
    

    【讨论】:

    • 没关系,文件以新的空行结尾,例如this link。但是,如果您的模板文件也有,那么您的结果将只有空行。
    • @Here_2_learn 哦,您可以在结果中使用trim 来删除空格和空行。喜欢:println "${Template}".trim()
    • 发布了这个问题的延续,stackoverflow.com/questions/49514779/…,你能帮我看看吗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2017-05-26
    • 2016-09-06
    • 1970-01-01
    • 2012-07-25
    • 2012-01-07
    • 2013-09-12
    相关资源
    最近更新 更多