You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Groovy GStringTemplateEngine实现模板循环及空行问题排查

Groovy GStringTemplateEngine:实现循环模板并解决末尾空行问题

一、实现支持循环的模板

首先你需要修改你的模板文件(output.template),利用Groovy模板的脚本块语法来遍历传入的列表数据。模板内容应该写成这样:

env:
<% mapping.each { item -> %>
- name : ${item.name}
  value : ${item.value}
<% } %>

模板语法说明:

  • <% ... %> 用来包裹Groovy代码逻辑,这里用each遍历mapping列表中的每一项
  • ${item.name} 和 ${item.value} 用来输出当前遍历项的属性值

配合你提供的Groovy代码,运行后就能生成你想要的输出结构:

def f = new File('output.template')
def engine = new groovy.text.GStringTemplateEngine()
def mapping = [ 
    [ name : "param1", value : "1"], 
    [ name : "param2", value : "2" ] 
]
def template = engine.createTemplate(f).make(mapping)
println "${template}"

二、关于模板输出末尾的多余空行

这个问题并不是解决方案提供者没考虑到,也不是你本地系统的特殊问题——这是Groovy GStringTemplateEngine的正常行为:它会严格保留模板文件中的所有空白字符(包括换行)。

为什么会出现空行?

你的模板里,循环结束的<% } %>标签后面大概率带有一个换行符,或者循环内部的最后一行(value : ${item.value})后面的换行被保留了,当循环结束后,这个多余的换行就会变成输出末尾的空行。

解决方法

有两种简单的处理方式:

  1. 调整模板的空白结构:把循环结束标签和最后一行输出放在同一行,避免多余换行:
env:
<% mapping.each { item -> %>
- name : ${item.name}
  value : ${item.value}<% } %>
  1. 渲染后修剪空白:在输出模板内容时调用trim()方法,直接去掉首尾的空白和空行:
println "${template}".trim()

两种方式都能解决末尾空行的问题,你可以根据自己的模板风格选择合适的方案。

内容的提问来源于stack exchange,提问作者Here_2_learn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:44:10